A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Iteração – Capítulo 5 Programming from Specifications Carroll Morgan Prentice-Hall, 1994 Integrantes: Alex Motta Carlos Nascimento Paulo Maia.

Apresentações semelhantes


Apresentação em tema: "Iteração – Capítulo 5 Programming from Specifications Carroll Morgan Prentice-Hall, 1994 Integrantes: Alex Motta Carlos Nascimento Paulo Maia."— Transcrição da apresentação:

1

2 Iteração – Capítulo 5 Programming from Specifications Carroll Morgan Prentice-Hall, 1994 Integrantes: Alex Motta Carlos Nascimento Paulo Maia

3 Descrição Operacional Iteração = repetição; Um comando é executado enquanto uma certa condição é válida; Estrutura: do G 0 → prog 0 ║G 1 → prog 1... ║ G n → prog n od.

4 Descrição Operacional “Loops” infinitos Ex : do true → skip od “Loop” infinito = abort Uma iteração finaliza quando todas as suas guardas forem falsas Pode não ocorrer em certos estados iniciais

5 Descrição Operacional  Ex : Do 2 | n → n := n ÷ 2 od Iterações podem ser desmembradas sem afetar seu significado: do G 0 → prog = if G 0 then prog; do G 0 → prog od fi

6 Descrição Operacional = if G 0 then prog; if G 0 then prog; do G 0 → prog od fi

7 Definição de Invariante Abstrair o número de repetições Fórmula que, se inicialmente for verdadeira, também será verdadeira a cada iteração, inclusive no final A iteração mantém a invariante e estabelece adicionalmente a negação das guardas

8 Invariante - Exemplo do 2 | n -> n := n ÷ 2 od Qual a invariante? pt n = ( ∃ k : N n = 2 ^ k)

9 Invariante - Alguns Raciocínios Formalmente: inv é um invariante de do G  prog od se w: [inv  G, inv]  prog Assumindo-se terminação: w: [inv, inv  G]  do G  prog od

10 Lei de Refinamento: Informalmente Exemplo: n :[ pt n, pt n  2 | n)]   do 2 | n  n := n  od

11 Lei de Refinamento: Informalmente Terminação tem que ser considerada Por causa disso w :[ true ^ true, true ]  skip  concluímos que w :[ true, true ^ false ]  do true -> skip od >>>>>> absurdo!

12 Terminação de Iterações: Variantes Variante: Exemplo: do 2 | n  n := n  od termina porque Cada repetição decrementa n e n não pode se tornar negativo >>>>> n é o variante da iteração Expressão inteira que é decrementada por cada repetição, mas nunca abaixo de um limite inferior fixo (geralmente 0).

13 Especificando o Decréscimo do Variante Um comando que decrementa uma variável inteira n := n - 1 Especificação n :[n = n - 1] X n :[n < n] X n :[n = N, n < N]

14 Especificando o Decréscimo do Variante Variáveis com subscrito 0 (variáveis iniciais) n :[ n < n 0 ] Novas leis de refinamento Lei 5.1 Fortalecimento da pós-condição Se pre[w\w 0 ]  pos’  pos, então w :[ pre, pos]  w :[ pre, pos’] Lei 5.2 Atribuição Se (w = w 0 )  x = x 0  pre  pos[w\E], então w,x:[ pre, pos]  w := E

15 Especificando o Decréscimo do Variante Lei 5.3 Comando skip Se (w = w 0 )  pre  pos, então w :[ pre, pos]  skip As leis anteriores ainda valem

16 Variáveis Iniciais e o Quadro Se uma variável x não está no quadro, então ela pode ser referenciada na pós condição tanto como x quanto como x o Lei 5.4 Contração do quadro w,x :[ pre, pos]  w :[ pre, pos[x 0 \ x] ]

17 Refinamento da Regra para Iteração Lei 5.5 - Iteração: seja inv, o invariante, qualquer fórmula; seja V, o variante, qualquer expressão inteira. Então se GG é a disjunção das guardas, w: [inv, inv Λ ¬ GG]  do ( ž i. G i  w: [inv, inv Λ G i, inv Λ (0 ≤ V < V 0 )]) od. inv e G i → não possuem variáveis iniciais. V = V[w\w 0 ].

18 Refinamento da Regra para Iteração Lei 5.5 – Iteração (abreviada): w: [inv, inv Λ ¬ GG]  do ( ž i. G i  w: [G i, inv Λ (0 ≤ V < V 0 )]) od. Lei 5.6 – Especificação do variante: seja inv, o invariante, qualquer fórmula; seja V, o variante, qualquer expressão inteira. Então se GG é a disjunção das guardas, w: [pre, inv, post]  w: [pre Λ inv, inv Λ post].

19 Lista de Verificação da Iteração Características das iterações: A invariante é verdade inicialmente O invariante e a negação da guarda são suficientes. O corpo da iteração mantém a invariante, contanto que a guarda seja verdadeira O variante é decrementado pela execução do corpo da iteração, contanto que a guarda e a invariante sejam verdadeiras O variante não pode ficar menor que zero pelo corpo da iteração, contanto que a guarda e a invariante sejam verdadeiras

20 Exercício de Fixação Desenvolver o seguinte programa usando cálculo de refinamento: do 2 | n  n := n  od Invariante: pt n, onde pt n = ( ∃ k : N n = 2 ^ k) Variante: n

21 Exercício de Fixação n : [ pt n, n = 1 ]  Lei 1.1 (Lei do Fortalecimento da pós) n : [ pt n, pt n ^ ¬ (2 | n )] Obrigação de Prova: pt n ^ ¬ (2 | n )]  n = 1  Lei 5.5 (Lei da Iteração) do 2 | n  n : [ 2|n ^ pt n, pt n ^ 0 ≤ n < n 0 ] od

22 Exercício de Fixação  Lei 5.6 (Lei da especificação da invariante) do 2 | n  n : [ 2|n, pt n, 0 ≤ n < n 0 ] od  Lei 5.2 (Lei da atribuição com variável inicial) n := n  2 Obrigação de Prova: ( n = n 0 ) ^ (2 | n ) ^ pt n  pt (n  2  ^ (0 ≤ n  < n ) [ n\ n  2  ]


Carregar ppt "Iteração – Capítulo 5 Programming from Specifications Carroll Morgan Prentice-Hall, 1994 Integrantes: Alex Motta Carlos Nascimento Paulo Maia."

Apresentações semelhantes


Anúncios Google