Semântica Formal

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Semântica Formal - Presentation Transcript

    1. 1 Semˆntica Formal a Carlos A. P. Campani 22 de julho de 2005
    2. 2 Copyright c 2005 Carlos A. P. Campani. ´ E garantida a permiss˜o para copiar, distribuir e/ou a modificar este documento sob os termos da Licen¸a de c Documenta¸ao Livre GNU (GNU Free Documentation c˜ License), Vers˜o 1.2 ou qualquer vers˜o posterior a a publicada pela Free Software Foundation; sem Se¸oes c˜ Invariantes, Textos de Capa Frontal, e sem Textos de Quarta Capa. Uma c´pia da licen¸a ´ inclu´ na se¸ao o c e ıda c˜ intitulada “GNU Free Documentation License”. veja: http://www.ic.unicamp.br/~norton/fdl.html.
    3. 3 S´ mula u 1. Introdu¸ao c˜ 2. Abordagens de semˆntica formal a 3. Linguagem exemplo While 4. Sintaxe abstrata
    4. 4 5. Revis˜o de Prova de Teoremas a (a) Prova de Implica¸ao c˜ (b) Prova por Redu¸˜o ao Absurdo ca (c) Prova por Indu¸˜o ca i. Indu¸˜o Sobre os Naturais ca ii. Indu¸ao Sobre o Tamanho de uma Seq¨ˆncia c˜ ue iii. Indu¸ao Estrutural c˜
    5. 5 6. Semˆntica de express˜es a o (a) N´meros e Numerais u (b) Descrevendo Estados (c) Express˜es aritm´ticas o e (d) Express˜es booleanas o 7. Propriedades da Semˆntica a (a) Vari´veis Livres a (b) Substitui¸ao c˜
    6. 6 8. Semˆntica Operacional a (a) Semˆntica Natural a i. Propriedades da Semˆntica a ii. Fun¸˜o Semˆntica ca a (b) Semˆntica Operacional Estruturada a i. Propriedades da Semˆntica a ii. Fun¸˜o Semˆntica ca a (c) Um Resultado de Equivalˆncia e
    7. 7 9. Semˆntica Denotacional a (a) Composicionalidade (b) Ponto Fixo (c) Defini¸ao da Semˆntica c˜ a (d) Requisitos sobre o Ponto Fixo (e) Teoria de Pontos Fixos (f) Existˆncia e (g) Um Resultado de Equivalˆncia e
    8. 8 10. Semˆntica Axiom´tica a a (a) Provas Diretas de Corre¸˜o de Programas ca i. Semˆntica Natural a ii. Semˆntica Operacional Estruturada a iii. Semˆntica Denotacional a (b) Asser¸oes para Corre¸ao Parcial c˜ c˜ (c) Corre¸ao e Completude do Sistema Formal c˜ (d) Asser¸oes para Corre¸ao Total c˜ c˜
    9. 9 Bibliografia • Nielson, H. & Nielson, F. Semantics with Applications: a formal introduction. dispon´ em: ıvel http://www.daimi.au.dk/~bra8130/Wiley_book/ wiley.html; • lˆminas para impress˜o: http: a a //www.ufpel.edu.br/~campani/semantica4.ps.gz.
    10. 1 ¸˜ INTRODUCAO 10 1 Introdu¸˜o ca Semˆntica formal preocupa-se em especificar a rigorosamente o significado ou comportamento de programas, partes de hardware, etc. Sintaxe descreve as estruturas de uma linguagem; Semˆntica descreve o significado destas estruturas. a
    11. 1 ¸˜ INTRODUCAO 11 A necessidade de uma semˆntica formal (matem´tica) a a para linguagens de programa¸ao justifica-se pois: c˜ • pode revelar ambig¨idades na defini¸˜o da linguagem u ca (o que uma descri¸˜o n˜o formal n˜o permitiria ca a a revelar); • ´ uma base para implementa¸ao (s´ e c˜ ıntese), an´lise e a verifica¸ao formal. c˜
    12. 2 ABORDAGENS 12 2 Abordagens Semˆntica Operacional Significado de uma constru¸˜o a ca da linguagem ´ especificado pela computa¸ao que ela e c˜ induz quando executada em uma m´quina hipot´tica a e (interessa como o efeito da computa¸ao ´ produzido); c˜ e Semˆntica Denotacional Significados modelados por a objetos matem´ticos que representam o efeito de a executar uma estrutura (somente o efeito interessa, n˜o como ´ produzido); a e Semˆntica Axiom´tica Especifica propriedades do a a efeito da execu¸ao das estruturas como asser¸˜es c˜ co (alguns aspectos da execu¸ao s˜o ignorados). c˜ a
    13. 2 ABORDAGENS 13 Tipos de Semˆntica Operacional: a • Semˆntica Operacional Estruturada (especifica mais a detalhes da execu¸ao); c˜ • Semˆntica Natural (simplifica a nota¸ao e esconde a c˜ detalhes, ao tomar um passo maior).
    14. 3 LINGUAGEM EXEMPLO WHILE 14 3 Linguagem Exemplo While n ∈ Num x ∈ Var a ∈ Aexp b ∈ Bexp S ∈ Stm
    15. 3 LINGUAGEM EXEMPLO WHILE 15 a ::= n|x|a1 + a2 |a1 ∗ a2 |a1 − a2 b ::= true|false|a1 = a2 |a1 ≤ a2 |¬b|b1 ∧ b2 S ::= x:=a|skip|S1 ; S2 |if b then S1 else S2 |while b do S
    16. 3 LINGUAGEM EXEMPLO WHILE 16 ex1: z:=x; x:=y; y:=z ex2: y:=1; while ¬(x = 1) do (y:=y∗x; x:=x−1)
    17. 4 SINTAXE ABSTRATA 17 4 Sintaxe Abstrata z:=x; x:=y; y:=z S ƒƒƒƒƒ ÐÐ  ƒƒƒƒ ÐÐ ƒƒƒA S bb ; S www Ò Ð www ÐÒÒ  b0 Ò b ÐÐÐ  w8 z := a S bb ; S aa ÑÑ bb1 ÑÑ  a a0  ÐÑÑ  ÐÑ x x := a y := a   y z
    18. 4 SINTAXE ABSTRATA 18 S „„„„„ ÓÓ  „„„„ ÑÓ „„„A S ww ; www S` Ð ÐÐÐ  ww8 ÐÒÒÒ  ``0 ` Sd ; S b y := a ÐÐÐ  dd1 ~ ~~  b1  b  z := a x := a z   x y
    19. 4 SINTAXE ABSTRATA 19 Usando nota¸ao linear: c˜ • z:=x; (x:=y; y:=z) (mais ` direita); a • (z:=x; x:=y); y:=z (mais ` esquerda). a
    20. 4 SINTAXE ABSTRATA 20 Exerc´ıcio: Construa a ´rvore sint´tica de a a y:=1; while ¬(x = 1) do (y:=y∗x; x:=x−1).
    21. 5 ˜ REVISAO DE PROVA DE TEOREMAS 21 5 Revis˜o de Prova de Teoremas a 5.1 Prova de Implica¸˜o ca Para provar A → B, assuma A (hip´tese) e deduza B. o A (hip´tese) o ... ... . . . B A→B
    22. 5 ˜ REVISAO DE PROVA DE TEOREMAS 22 ex: Provar que se um n´mero inteiro ´ divis´ por 6 u e ıvel ent˜o tamb´m o ´ por 2. a e e Seja n ∈ Z, tal que n ´ divis´ por 6: e ıvel 1. n ´ divis´ por 6 (hip´tese); e ıvel o 2. n = 6.k, onde k ∈ N; 3. n = 2.3.k; 4. n = 2.k , onde k = 3.k e k ∈ N 5. n ´ divis´ por 2; e ıvel 6. Logo, vale o enunciado.
    23. 5 ˜ REVISAO DE PROVA DE TEOREMAS 23 5.2 Prova por Redu¸˜o ao Absurdo ca Para provar A, suponha ¬A e mostre que isto resulta em uma contradi¸ao (absurdo). c˜ ex: Provar que se um n´mero somado a si mesmo resulta u o n´mero original, ent˜o este n´mero ´ zero. u a u e Suponha que este n´mero ´ x e que: u e x+x=x∧x=0 ent˜o a 2x = x ∧ x = 0 Logo, 2 = 1 (absurdo).
    24. 5 ˜ REVISAO DE PROVA DE TEOREMAS 24 5.3 Prova por Indu¸˜o ca 5.3.1 Indu¸˜o Sobre os Naturais ca P (0) P (n) → P (n + 1) n∈N ∀nP (n) Base P (0); Passo P (n) → P (n + 1); • P (n) ´ a hip´tese indutiva; e o • Ent˜o, tenta-se provar P (n + 1); a Conclus˜o ∀nP (n). a
    25. 5 ˜ REVISAO DE PROVA DE TEOREMAS 25 ex: Provar que o quadrado de um n´mero natural sempre u ´ maior ou igual ao n´mero. e u Base 0 ≤ 02 ; Passo Assumir n ≤ n2 . Ent˜o: a n + 1 ≤ n2 + 1 ≤ n2 + 1 + 2n = (n + 1)2 Conclus˜o ∀n ∈ N n ≤ n2 . a
    26. 5 ˜ REVISAO DE PROVA DE TEOREMAS 26 ıcio: Prove que para todo n ∈ N, 2n > n. Exerc´ n(n+1) Exerc´ ıcio: Prove que 1 + 2 + 3 + · · · + n = 2 .
    27. 5 ˜ REVISAO DE PROVA DE TEOREMAS 27 5.3.2 Indu¸˜o Sobre o Tamanho de uma ca Seq¨ˆncia ue 1. Prove que a propriedade vale para todas as seq¨ˆncias de comprimento 0 (base); ue 2. Prove que a propriedade vale para todas as outras seq¨ˆncias: Assuma que a propriedade vale para ue todas as seq¨ˆncias de tamanho menor ou igual a k ue (hip´tese indutiva) e mostre que vale para seq¨ˆncias o ue de tamanho k + 1.
    28. 5 ˜ REVISAO DE PROVA DE TEOREMAS 28 5.3.3 Indu¸˜o Estrutural ca Aplica-se sobre as estruturas de uma linguagem: 1. Prove que a propriedade vale para todas as estruturas atˆmicas (ex: P (x:=a) e P (skip)); o 2. Prove que a propriedade vale para qualquer programa: Assuma que vale para as estruturas que formam um comando, e mostre que vale para o comando composto (ex: P (S1 ) ∧ P (S2 ) → P (S1 ; S2 )).
    29. 6 ˆ ˜ SEMANTICA DE EXPRESSOES 29 6 Semˆntica de Express˜es a o 6.1 N´ meros e Numerais u N : Num → Z Se n ∈ Num ent˜o escrevemos N [[n]], e usamos [[ e ]] para a enfatizar que N ´ uma fun¸˜o semˆntica. e ca a
    30. 6 ˆ ˜ SEMANTICA DE EXPRESSOES 30 N [[0]] = 0 N [[1]] = 1 N [[n 0]] = 2∗N [[n]] N [[n 1]] = 2∗N [[n]]+1 Observa¸˜o: 0 ´ o numeral (0 ∈ Num) e 0 ´ o n´mero ca e e u (0 ∈ Z).
    31. 6 ˆ ˜ SEMANTICA DE EXPRESSOES 31 6.2 Descrevendo Estados Estado representa uma associa¸ao entre vari´veis e seus c˜ a valores. State = Var → Z ex: [x → 5, y → 7, z → 0].
    32. 6 ˆ ˜ SEMANTICA DE EXPRESSOES 32 6.3 Express˜es aritm´ticas o e A : Aexp → (State → Z) A[[n]]s = N [[n]] A[[x]]s = s x A[[a1 + a2 ]]s = A[[a1 ]]s+A[[a2 ]]s A[[a1 ∗ a2 ]]s = A[[a1 ]]s∗A[[a2 ]]s A[[a1 − a2 ]]s = A[[a1 ]]s−A[[a2 ]]s Observa¸˜o: s ´ um estado. ca e
    33. 6 ˆ ˜ SEMANTICA DE EXPRESSOES 33 ex: seja s x = 3: A[[x + 1]]s = A[[x]]s+A[[1]]s = (s x)+N [[1]] = 3+1 = 4 Observa¸˜o: na primeira linha, + dentro do [[.]] pertence ca ` linguagem, + ` direita ´ a opera¸ao soma. 1 ´ o a a e c˜ e numeral (1 ∈ Num) e 1 ´ o n´mero (1 ∈ Z). e u
    34. 6 ˆ ˜ SEMANTICA DE EXPRESSOES 34 6.4 Express˜es booleanas o B : Bexp → (State → T) T = {tt, ff }
    35. 6 ˆ ˜ SEMANTICA DE EXPRESSOES 35 B[[true]]s = tt B[[false]]s = ff   tt se A[[a1 ]]s = A[[a2 ]]s B[[a1 = a2 ]]s =  ff se A[[a1 ]]s = A[[a2 ]]s   tt se A[[a1 ]]s ≤ A[[a2 ]]s B[[a1 ≤ a2 ]]s =  ff se A[[a1 ]]s > A[[a2 ]]s   tt se B[[b]]s = ff B[[¬b]]s =  ff se B[[b]]s = tt
    36. 6 ˆ ˜ SEMANTICA DE EXPRESSOES 36   tt se B[[b ]]s = tt e B[[b ]]s = tt 1 2 B[[b1 ∧ b2 ]]s =  ff se B[[b1 ]]s = ff ou B[[b2 ]]s = ff
    37. 7 ˆ PROPRIEDADES DA SEMANTICA 37 7 Propriedades da Semˆntica a 7.1 Vari´veis Livres a As vari´veis livres de uma express˜o a ´ definida como o a a e conjunto de vari´veis que ocorrem em a. a FV(n) = ∅ FV(x) = {x} FV(a1 + a2 ) = FV(a1 ) ∪ FV(a2 ) FV(a1 ∗ a2 ) = FV(a1 ) ∪ FV(a2 ) FV(a1 − a2 ) = FV(a1 ) ∪ FV(a2 )
    38. 7 ˆ PROPRIEDADES DA SEMANTICA 38 Teorema 1 Sejam s e s dois estados satisfazendo que s x = s x para todo x em FV(a). Ent˜o, A[[a]]s = A[[a]]s . a Prova: (por indu¸˜o sobre as express˜es aritm´ticas) ca o e 1. Base: caso n Sabemos que A[[a]]s = N [[n]] e A[[a]]s = N [[n]] e assim A[[a]]s = A[[a]]s ; caso x n´s temos A[[x]]s = s x e A[[x]]s = s x e, pela o hip´tese, s x = s x, j´ que x ∈ FV(x). Logo, o a A[[a]]s = A[[a]]s ;
    39. 7 ˆ PROPRIEDADES DA SEMANTICA 39 2. Passo: (supomos que o enunciado vale para a1 e a2 ) caso a1 + a2 Sabemos que A[[a1 + a2 ]]s = A[[a1 ]]s + A[[a2 ]]s e A[[a1 + a2 ]]s = A[[a1 ]]s + A[[a2 ]]s . Al´m disto, e FV(a1) ⊆ FV(a1 + a2 ) e FV(a2) ⊆ FV(a1 + a2 ). Usando a hip´tese indutiva, A[[a1 ]]s = A[[a1 ]]s e o A[[a2 ]]s = A[[a2 ]]s , e ´ f´cil ver que o enunciado e a vale para a1 + a2 ; casos a1 ∗ a2 e a1 − a2 similares ao anterior.
    40. 7 ˆ PROPRIEDADES DA SEMANTICA 40 Exerc´ ıcio: Definir o conjunto FV(b) das vari´veis livres a em uma express˜o booleana b. a Exerc´ıcio: Provar que, dados s e s satisfazendo s x = s x para todo x ∈ FV(b), B[[b]]s = B[[b]]s .
    41. 7 ˆ PROPRIEDADES DA SEMANTICA 41 7.2 Substitui¸˜o ca Substitui¸˜o denota a opera¸˜o em que se troca cada ca ca ocorrˆncia de uma vari´vel y de uma express˜o a por e a a uma outra express˜o a0 . a Nota¸ao: a[y → a0 ]. c˜
    42. 7 ˆ PROPRIEDADES DA SEMANTICA 42 n[y → a0 ] = n   a se x = y 0 x[y → a0 ] =  x se x = y (a1 + a2 )[y → a0 ] = (a1 [y → a0 ]) + (a2 [y → a0 ]) (a1 ∗ a2 )[y → a0 ] = (a1 [y → a0 ]) ∗ (a2 [y → a0 ]) (a1 − a2 )[y → a0 ] = (a1 [y → a0 ]) − (a2 [y → a0 ])
    43. 7 ˆ PROPRIEDADES DA SEMANTICA 43 Exerc´ıcio: Prove que A[[a[y → a0 ]]]s = A[[a]](s[y → A[[a0 ]]s]), para todo s. Exerc´ ıcio: Defina a substitui¸ao para express˜es c˜ o booleanas.
    44. 8 ˆ SEMANTICA OPERACIONAL 44 8 Semˆntica Operacional a • Express˜es aritm´ticas e booleanas apenas produzem o e um valor, mas n˜o mudam os estados; a • Comandos de programas While mudam o estado; • Semˆntica operacional preocupa-se mais em como os a programas s˜o executados do que meramente com os a resultados destas computa¸oes; c˜
    45. 8 ˆ SEMANTICA OPERACIONAL 45 • Abordagens: Semˆntica natural descreve como os resultados a gerais s˜o obtidos; a Semˆntica operacional estruturada descreve como a passos individuais da computa¸˜o ocorrem; ca
    46. 8 ˆ SEMANTICA OPERACIONAL 46 • Os significados dos comandos da linguagem ser˜oa descritos por meio de um sistema de transi¸˜es; co • Existem dois tipos de configura¸oes: c˜ S, s significando que o comando S ser´ executado a a partir do estado s; s representando um estado terminal (ou final).
    47. 8 ˆ SEMANTICA OPERACIONAL 47 8.1 Semˆntica Natural a [assns ] x:=a, s → s[x → A[[a]]s] [skipns ] skip, s → s S1 ,s →s , S2 ,s →s [compns ] S1 ;S2 ,s →s S1 ,s →s [if tt ] ns if b then S1 else S2 ,s →s se B[[b]]s = tt S2 ,s →s [if ff ] ns if b then S1 else S2 ,s →s se B[[b]]s = ff S,s →s , while b do S,s →s [whilett ] ns while b do S,s →s se B[[b]]s = tt [whileff ] ns while b do S, s → s se B[[b]]s = ff
    48. 8 ˆ SEMANTICA OPERACIONAL 48 esquema de axioma ou axioma como em [assns ]; regra como em [compns ]; ´rvore de deriva¸˜o ´ a aplica¸ao dos axiomas e regras a ca e c˜ para deduzir uma transi¸˜o S, s → s . ca Observa¸˜o: x ´ uma meta-vari´vel. ca e a
    49. 8 ˆ SEMANTICA OPERACIONAL 49 ex: (´rvore de deriva¸˜o) a ca (z:=x; x:=y); y:=z s0 = [x → 5, y → 7, z → 0] z:=x,s0 →s1 x:=y,s1 →s2 z:=x;x:=y,s0 →s2 y:=z, s2 → s3 (z:=x; x:=y); y:=z, s0 → s3 Observa¸˜o: s1 = s0 [z → 5], s2 = s1 [x → 7] e ca s3 = s2 [y → 5].
    50. 8 ˆ SEMANTICA OPERACIONAL 50 Como construir uma ´rvore de deriva¸˜o? a ca Resposta: da raiz para as folhas.
    51. 8 ˆ SEMANTICA OPERACIONAL 51 ex: y:=1; while ¬(x = 1) do (y:=y∗x; x:=x−1) e s = [x → 3, y → 0]
    52. 8 ˆ SEMANTICA OPERACIONAL 52 Raiz: y:=1; while ¬(x = 1) do (y:=y∗x; x:=x−1), s → s61 s61 = s[y → 6][x → 1]
    53. 8 ˆ SEMANTICA OPERACIONAL 53 ´rvore T : a y:=1, s → s13 T1 y:=1; while ¬(x = 1) do (y:=y∗x; x:=x−1), s → s61 s13 = s[y → 1] ´rvore T1 : a T2 T3 while ¬(x = 1) do (y:=y∗x; x:=x − 1), s13 → s61 Pois B[[¬(x = 1)]]s13 = tt
    54. 8 ˆ SEMANTICA OPERACIONAL 54 ´rvore T2 : a y:=y∗x, s13 → s33 x:=x−1, s33 → s32 y:=y∗x; x:=x − 1, s13 → s32 s33 = s[y → 3] s32 = s[y → 3][x → 2]
    55. 8 ˆ SEMANTICA OPERACIONAL 55 ´rvore T3 : a y:=y∗x,s32 →s62 x:=x−1,s62 →s61 y:=y∗x;x:=x−1,s32 →s61 T4 while ¬(x = 1) do (y:=y∗x; x:=x−1), s32 → s61 s62 = s[y → 6][x → 2]
    56. 8 ˆ SEMANTICA OPERACIONAL 56 ´rvore T4 (folha): a while ¬(x = 1) do (y:=y∗x; x:=x−1), s61 → s61 Pois B[[¬(x = 1)]]s61 = ff
    57. 8 ˆ SEMANTICA OPERACIONAL 57 Exerc´ ıcio: Construa a ´rvore de deriva¸˜o para o seguinte a ca programa: z:=0; while y ≤ x do (z:=z+1; x:=x−y) com s = [x → 17, y → 5].
    58. 8 ˆ SEMANTICA OPERACIONAL 58 A execu¸ao de um comando S no estado s: c˜ • termina se e somente se existe um estado s tal que S, s → s ; • entra em loop se e somente se n˜o existe um estado s a tal que S, s → s .
    59. 8 ˆ SEMANTICA OPERACIONAL 59 8.1.1 Propriedades da Semˆntica a S1 e S2 s˜o semanticamente equivalentes se a S1 , s → s se e somente se S2 , s → s para todos os estados s e s .
    60. 8 ˆ SEMANTICA OPERACIONAL 60 Provar que while b do S ´ semanticamente equivalente a e if b then (S; while b do S) else skip. Prova: (⇒) Se while b do S, s → s ent˜o a if b then (S; while b do S) else skip, s → s while b do S, s → s Poss´ ıveis ´rvores: a T1 T2 while b do S, s → s Onde T1 ´ a ´rvore com raiz S, s → s e T2 ´ a ´rvore e a e a com raiz while b do S, s → s e B[[b]]s = tt.
    61. 8 ˆ SEMANTICA OPERACIONAL 61 S1 , s → s S2 , s → s [compns ] S1 ; S2 , s → s Usando T1 e T2 como premissas da regra [compns ]: T1 T2 S; while b do S, s → s
    62. 8 ˆ SEMANTICA OPERACIONAL 62 S1 , s → s [if tt ] ns Se B[[b]]s = tt if b then S1 else S2 , s → s Obtemos: T1 T2 S;while b do S,s →s if b then (S; while b do S) else skip, s → s
    63. 8 ˆ SEMANTICA OPERACIONAL 63 Falta provar o caso B[[b]]s = ff . Neste caso, T ´ e simplesmente: while b do S, s →s Usando [skipns ]: skip, s →s
    64. 8 ˆ SEMANTICA OPERACIONAL 64 Usando [if ff ]: ns S2 , s → s [if ff ] ns Se B[[b]]s = ff if b then S1 else S2 , s → s skip, s → s if b then (S; while b do S) else skip, s →s
    65. 8 ˆ SEMANTICA OPERACIONAL 65 (⇐) Se if b then (S; while b do S) else skip, s → s ent˜o while b do S, s → s a Usando [if tt ]: ns S; while b do S, s → s if b then (S; while b do S) else skip, s → s e B[[b]]s = tt
    66. 8 ˆ SEMANTICA OPERACIONAL 66 Usando [compns ]: S,s →s while b do S,s →s S;while b do S,s →s if b then (S; while b do S) else skip, s → s Usando [whilett ]: ns S, s → s while b do S, s → s while b do S, s → s
    67. 8 ˆ SEMANTICA OPERACIONAL 67 No caso B[[b]]s = ff : skip, s → s if b then (S; while b do S) else skip, s → s es=s . Usando [whileff ]: ns while b do S, s →s Isto completa a prova.
    68. 8 ˆ SEMANTICA OPERACIONAL 68 Exerc´ ıcio: Prove que S1 ; (S2 ; S3 ) e (S1 ; S2 ); S3 s˜o a semanticamente equivalentes. Exerc´ ıcio: Mostre que S1 ; S2 , no geral, n˜o ´ a e semanticamente equivalente a S2 ; S1 .
    69. 8 ˆ SEMANTICA OPERACIONAL 69 Uma semˆntica ´ determin´stica se, para todos S, s, s e a e ı s : S, s → s e S, s → s implica s = s . Isto significa que para todo comando S e estado inicial s n´s podemos determinar um unico estado final s se a o ´ execu¸ao de S termina. c˜
    70. 8 ˆ SEMANTICA OPERACIONAL 70 Teorema 2 A semˆntica natural ´ determin´ a e ıstica.
    71. 8 ˆ SEMANTICA OPERACIONAL 71 8.1.2 Fun¸˜o Semˆntica ca a Sns : Smt → (State → State) Observa¸˜o: usa-se → para fun¸oes parciais. Ou seja: ca c˜ Sns [[S]] ∈ State → State dado por:   s Se S, s → s Sns [[S]]s =  undef caso contr´rio a Observa¸˜o: Sns [[while true do skip]]s = undef para ca todo s (fun¸˜o parcial). ca
    72. 8 ˆ SEMANTICA OPERACIONAL 72 8.2 Semˆntica Operacional Estruturada a ˆ • Enfase nos passos individuais da computa¸˜o; ca • Rela¸˜o de transi¸˜o: S, s ⇒ γ (a transi¸ao ca ca c˜ expressa o primeiro passo da computa¸ao), com dois c˜ poss´ ıveis resultados: – γ = S , s significando que a execu¸˜o de S n˜o ca a est´ completa e S , s ´ uma configura¸˜o a e ca intermedi´ria; a – γ = s significando que a execu¸ao de S terminou c˜ e o estado final ´ s ; e • Se diz que S, s emperrou se n˜o existe γ tal que a S, s ⇒ γ.
    73. 8 ˆ SEMANTICA OPERACIONAL 73 [assSOS ] x:=a, s ⇒ s[x → A[[a]]s] [skipSOS ] skip, s ⇒ s S1 ,s ⇒ S1 ,s [comp1 ] SOS S1 ;S2 ,s ⇒ S1 ;S2 ,s S1 ,s ⇒s [comp2 ] SOS S1 ;S2 ,s ⇒ S2 ,s [if tt ] SOS if b then S1 else S2 , s ⇒ S1 , s Se B[[b]]s = tt [if ff ] SOS if b then S1 else S2 , s ⇒ S2 , s Se B[[b]]s = ff [whileSOS ] while b do S, s ⇒ if b then (S; while b do S) else skip, s
    74. 8 ˆ SEMANTICA OPERACIONAL 74 Uma seq¨ˆncia de deriva¸˜o de um comando S iniciando ue ca no estado s ´: e • uma seq¨ˆncia finita ue γ0 , γ 1 , γ 2 , . . . , γ k de configura¸oes satisfazendo γ0 = S, s , γi ⇒ γi+1 c˜ para 0 ≤ i < k, e k ≥ 0, e ou γk ´ uma configura¸˜o e ca terminal ou ´ uma configura¸˜o emperrada; ou e ca • uma seq¨ˆncia infinita ue γ0 , γ 1 , γ 2 , . . . de configura¸oes satisfazendo γ0 = S, s e γi ⇒ γi+1 c˜ para i ≥ 0.
    75. 8 ˆ SEMANTICA OPERACIONAL 75 Nota¸ao: Usamos γ0 ⇒i γi para indicar i passos na c˜ seq¨ˆncia. Usamos γ0 ⇒∗ γi para indicar um n´mero ue u finito de passos.
    76. 8 ˆ SEMANTICA OPERACIONAL 76 ex: (z:=x; x:=y); y:=z e s0 = [x → 5, y → 7, z → 0]. Seq¨ˆncia de deriva¸ao: ue c˜ (z:=x; x:=y); y:=z, s0 ⇒ x:=y; y:=z, s0 [z → 5] ⇒ y:=z, (s0 [z → 5])[x → 7] ⇒ ((s0 [z → 5])[x → 7])[y → 5]
    77. 8 ˆ SEMANTICA OPERACIONAL 77 Cada passo da deriva¸˜o corresponde a uma ´rvore de ca a deriva¸˜o. Assim, para o primeiro passo ter´ ca ıamos: z:=x,s0 ⇒s0 [z→5] z:=x;x:=y,s0 ⇒ x:=y,s0 [z→5] (z:=x; x:=y); y:=z, s0 ⇒ x:=y; y:=z, s0 [z → 5]
    78. 8 ˆ SEMANTICA OPERACIONAL 78 ex: Seja s x = 3 e y:=1; while ¬(x = 1) do (y:=y∗x; x:=x−1). O primeiro passo ´: e y:=1; while ¬(x = 1) do (y:=y∗x; x:=x−1), s ⇒ while ¬(x = 1) do (y:=y∗x; x:=x−1), s[y → 1]
    79. 8 ˆ SEMANTICA OPERACIONAL 79 ´ Arvore: y:=1, s ⇒ s[y → 1] y:=1; while ¬(x = 1) do (y:=y∗x; x:=x−1), s ⇒ while ¬(x = 1) do (y:=y∗x; x:=x−1), s[y → 1] Observa¸˜o: usa-se [assSOS ] e [comp2 ]. ca SOS
    80. 8 ˆ SEMANTICA OPERACIONAL 80 Reescrevendo o la¸o como um condicional: c if ¬(x = 1) then ((y:=y∗x; x:=x−1); while ¬(x = 1) do (y:=y∗x; x:=x−1)) else skip, s[y → 1]
    81. 8 ˆ SEMANTICA OPERACIONAL 81 Segundo [if tt ], o passo seguinte resultar´ em: SOS a (y:=y∗x; x:=x−1); while ¬(x = 1) do (y:=y∗x; x:=x−1), s[y → 1]
    82. 8 ˆ SEMANTICA OPERACIONAL 82 Usando-se [assSOS ], [comp2 ] e [comp1 ], obtem-se a SOS SOS transi¸ao: c˜ (y:=y∗x; x:=x−1); while ¬(x = 1) do (y:=y∗x; x:=x−1), s[y → 1] ⇒ x:=x−1; while ¬(x = 1) do (y:=y∗x; x:=x−1), s[y → 3]
    83. 8 ˆ SEMANTICA OPERACIONAL 83 ´ Arvore: y:=y∗x,s[y→1] ⇒s[y→3] y:=y∗x;x:=x−1,s[y→1] ⇒ x:=x−1,s[y→3] (y:=y∗x; x:=x−1); while ¬(x = 1) do (y:=y∗x; x:=x−1), s[y → 1] ⇒ x:=x−1; while ¬(x = 1) do (y:=y∗x; x:=x−1), s[y → 3]
    84. 8 ˆ SEMANTICA OPERACIONAL 84 Usando [assSOS ] e [comp2 ] obtemos a pr´xima SOS o configura¸ao: c˜ while ¬(x = 1) do (y:=y∗x; x:=x−1), s[y → 3][x → 2] Continuando, chegaremos ao estado final s[y → 6][x → 1].
    85. 8 ˆ SEMANTICA OPERACIONAL 85 Exerc´ıcio: Seja s = [x → 17, y → 5]. Construa a seq¨ˆncia de deriva¸ao do comando: ue c˜ z:=0; while y ≤ x do (z:=z+1; x:=x−y)
    86. 8 ˆ SEMANTICA OPERACIONAL 86 Importante observar que a linguagem exemplo While n˜o a possui configura¸˜es emperradas. co A execu¸ao de um comando S no estado s: c˜ • termina se e somente se existe uma seq¨ˆncia de ue deriva¸ao finita come¸ando com S, s ; c˜ c • entra em loop se e somente se existe uma seq¨ˆncia ue de deriva¸˜o infinita come¸ando com S, s . ca c Dizemos que s execu¸ao de S em s termina com sucesso c˜ se S, s ⇒∗ s , para algum estado s . Na linguagem exemplo While a execu¸ao termina com sucesso se e c˜ somente se termina pois n˜o existem configura¸˜es a co emperradas.
    87. 8 ˆ SEMANTICA OPERACIONAL 87 8.2.1 Propriedades da Semˆntica a Lema 1 Se S1 ; S2 , s ⇒k s , ent˜o existe um estado s e a n´meros naturais k1 e k2 tal que S1 , s ⇒k1 s e u S2 , s ⇒k2 s , onde k = k1 + k2 . Prova: (por indu¸˜o sobre o tamanho da seq¨ˆncia de ca ue deriva¸˜o) ca Base: k = 0 (por vacuidade) Passo: Assumimos como hip´tese que o enunciado vale o para todo k ≤ k0 . Assumimos S1 ; S2 , s ⇒k0 +1 s ou S1 ; S2 , s ⇒ γ ⇒k0 s para alguma configura¸˜o γ. ca
    88. 8 ˆ SEMANTICA OPERACIONAL 88 O primeiro passo pode ser resultado de [comp1 ] ou SOS [comp2 ]: SOS 1. [comp1 ] e γ = S1 ; S2 , s , ou seja SOS S1 ; S2 , s ⇒ S1 ; S2 , s Logo, S1 , s ⇒ S1 , s e S1 ; S2 , s ⇒k0 s . Esta segunda seq¨ˆncia satisfaz a hip´tese indutiva. ue o Assim, existe um estado s0 e n´meros k1 e k2 tal que u S1 , s ⇒k1 s0 e S2 , s0 ⇒k2 s onde k1 + k2 = k0 . Logo, S1 , s ⇒k1 +1 s0 e S2 , s0 ⇒k2 s , e como (k1 + 1) + k2 = k0 + 1, est´ a provado o resultado;
    89. 8 ˆ SEMANTICA OPERACIONAL 89 2. [comp2 ] e γ = s . Assim, S1 , s ⇒ s e SOS S2 , s ⇒k0 s . O resultado fica provado fazendo-se k1 = 1 e k2 = k0 .
    90. 8 ˆ SEMANTICA OPERACIONAL 90 Exerc´ ıcio: Prove que se S1 , s ⇒k s ent˜o a S1 ; S2 , s ⇒k S2 , s , isto ´, a execu¸˜o de S1 n˜o ´ e ca a e influenciada pelo comando que o segue.
    91. 8 ˆ SEMANTICA OPERACIONAL 91 Teorema 3 A semˆntica operacional estruturada ´ a e determin´ ıstica.
    92. 8 ˆ SEMANTICA OPERACIONAL 92 8.2.2 Fun¸˜o Semˆntica ca a SSOS : Smt → (State → State) , dado por:   s Se S, s ⇒∗ s SSOS [[S]]s =  undef caso contr´rio a
    93. 8 ˆ SEMANTICA OPERACIONAL 93 8.3 Um Resultado de Equivalˆncia e Teorema 4 Para todo comando S da linguagem exemplo While n´s temos Sns [[S]] = SSOS [[S]]. o Este teorema expressa duas propriedades: 1. Se a execu¸˜o de S, come¸ando em algum estado, ca c termina em uma semˆntica, ent˜o ela tamb´m a a e termina na outra, e os estados resultantes s˜o iguais; a 2. Se a execu¸˜o de S, para algum estado, entra em ca loop em uma semˆntica ent˜o tamb´m entra em loop a a e na outra.
    94. 9 ˆ SEMANTICA DENOTACIONAL 94 9 Semˆntica Denotacional a Semˆntica Operacional Como ocorre a execu¸˜o do a ca comando; Semˆntica Denotacional O efeito da execu¸ao do a c˜ comando.
    95. 9 ˆ SEMANTICA DENOTACIONAL 95 • Na abordagem denotacional cada constru¸ao sint´tica c˜ a ´ mapeada, por uma fun¸˜o semˆntica, para um e ca a objeto matem´tico (de um modo geral uma fun¸ao); a c˜ • Exemplos de fun¸oes semˆnticas denotacionais: A c˜ a (mapeia express˜es aritm´ticas para fun¸oes em o e c˜ State → Z) e B (mapeia express˜es booleanas para o fun¸˜es em State → T); co
    96. 9 ˆ SEMANTICA DENOTACIONAL 96 • Fun¸oes Sns e SSOS s˜o exemplos de fun¸˜es c˜ a co semˆnticas que mapeiam comandos em fun¸oes em a c˜ State → State, no entanto, elas n˜o s˜o exemplos a a de fun¸oes denotacionais porque elas n˜o s˜o c˜ a a definidas de forma composicional ; • Na semˆntica denotacional, estruturas de la¸o de a c repeti¸˜o s˜o interpretadas usando-se pontos fixos: ca a – pontos fixos s˜o ra´ de uma equa¸˜o funcional ; a ızes ca – um funcional ´ uma fun¸˜o que mapeia uma fun¸ao e ca c˜ em outra fun¸˜o. ca
    97. 9 ˆ SEMANTICA DENOTACIONAL 97 9.1 Composicionalidade Significa expressar uma propriedade de uma estrutura em fun¸ao da composi¸ao das propriedades de suas c˜ c˜ sub-estruturas. ex: A[[a1 + a2 ]]s = A[[a1 ]]s+A[[a2 ]]s
    98. 9 ˆ SEMANTICA DENOTACIONAL 98 9.2 Ponto Fixo Um funcional mapeia uma fun¸˜o em outra fun¸ao. ca c˜ Seja F um funcional, ent˜o: a F g1 = g2 F g0 = g0 (ponto fixo) F k g0 = g0 ex: F g = se x = 0 ent˜o 1 caso contr´rio x∗g(x − 1), a a e o ponto fixo de F ´ a fun¸˜o fatorial. Ou seja, e ca F g0 = g0 e g0 ´ a fun¸ao fatorial. e c˜ Observa¸˜o: usamos uma linguagem de programa¸˜o ca ca funcional hipot´tica neste exemplo. e
    99. 9 ˆ SEMANTICA DENOTACIONAL 99 Seja g1 (x) = x2 . Ent˜o: a F g1 = se x = 0 ent˜o 1 caso contr´rio x ∗ (x − 1)2 = g2 a a e g1 = g2 . Seja g0 (x) = x!. Ent˜o: a F g0 = se x = 0 ent˜o 1 caso contr´rio x ∗ ((x − 1)!) = a a se x = 0 ent˜o 1 caso contr´rio x! = x! = g0 a a
    100. 9 ˆ SEMANTICA DENOTACIONAL 100 9.3 Defini¸˜o ca Sds [[x:=a]]s = s[x → A[[a]]s] Sds [[skip]] = id Sds [[S1 ; S2 ]] = Sds [[S2 ]] ◦ Sds [[S1 ]] Sds [[if b then S1 else S2 ]] = cond(B[[b]], Sds [[S1 ]], Sds [[S2 ]]) Sds [[while b do S]] = FIX F Onde F g = cond(B[[b]], g ◦ Sds [[S]], id).
    101. 9 ˆ SEMANTICA DENOTACIONAL 101 Explica¸ao: c˜ Sds [[x:=a]]s = s[x → A[[a]]s] Observa¸˜o: corresponde a [assns ] e [assSOS ]. ca Sds [[skip]] = id Observa¸˜o: id ´ a fun¸˜o identidade. ca e ca
    102. 9 ˆ SEMANTICA DENOTACIONAL 102 Sds [[S1 ; S2 ]] = Sds [[S2 ]] ◦ Sds [[S1 ]] Observa¸˜o: isto significa que o efeito da execu¸ao de ca c˜ S1 ; S2 ´ a composi¸ao funcional do efeito da execu¸ao de e c˜ c˜ S1 com o efeito da execu¸˜o de S2 . ca
    103. 9 ˆ SEMANTICA DENOTACIONAL 103 Sds [[S1 ; S2 ]]s = (Sds [[S2 ]] ◦ Sds [[S1 ]])s =   s  se existe s tal que       Sds [[S1 ]]s = s e Sds [[S2 ]]s = s     undef se Sds [[S1 ]]s = undef ou =   se existe s tal que       Sds [[S1 ]]s = s e     Sds [[S2 ]]s = undef
    104. 9 ˆ SEMANTICA DENOTACIONAL 104 Sds [[if b then S1 else S2 ]] = cond(B[[b]], Sds [[S1 ]], Sds [[S2 ]]) Observa¸˜o: a fun¸˜o auxiliar cond tem funcionalidade ca ca cond : (State → T) × (State → State) × (State → State) → (State → State) e ´ definida por: e   g s se p s = tt 1 cond(p, g1 , g2 )s =  g2 s se p s = ff
    105. 9 ˆ SEMANTICA DENOTACIONAL 105 Sds [[if b then S1 else S2 ]]s = = cond(B[[b]], Sds [[S1 ]], Sds [[S2 ]])s   s  se B[[b]]s = tt e Sds [[S1 ]]s = s ou     se B[[b]]s = ff e Sds [[S2 ]]s = s =  undef se B[[b]]s = tt e Sds [[S1 ]]s = undef ou      se B[[b]]s = ff e Sds [[S2 ]]s = undef
    106. 9 ˆ SEMANTICA DENOTACIONAL 106 Sds [[while b do S]] = FIX F Observe que: while b do S = if b then (S; while b do S) else skip e aplicando a defini¸ao de Sds ao lado direito resulta em: c˜ Sds [[while b do S]] = = cond(B[[b]], Sds [[while b do S]] ◦ Sds [[S]], id)
    107. 9 ˆ SEMANTICA DENOTACIONAL 107 • N˜o podemos usar esta ultima express˜o, pois ela a ´ a n˜o est´ definida de forma composicional ; a a • No entanto, isto expressa que Sds [[while b do S]] ´ o e ponto fixo do funcional definido por: F g = cond(B[[b]], g ◦ Sds [[S]], id) ou seja, Sds [[while b do S]] = F (Sds [[while b do S]]) • Agora, esta nova defini¸ao respeita a c˜ composicionalidade.
    108. 9 ˆ SEMANTICA DENOTACIONAL 108 Sds [[while b do S]] = FIX F e a funcionalidade da fun¸˜o auxiliar FIX ´ ca e FIX : ((State → State) → (State → State)) → (State → State)
    109. 9 ˆ SEMANTICA DENOTACIONAL 109 ex: Seja o seguinte comando: while ¬(x = 0) do skip O funcional correspondente ´: e   g s se s x = 0 (F g)s =  s se s x = 0
    110. 9 ˆ SEMANTICA DENOTACIONAL 110 Determina¸ao do funcional: c˜ Sds [[while ¬(x = 0) do skip]]s = (FIX F )s (F g)s = cond(B[[¬(x = 0)]], g ◦ Sds [[skip]], id)s   g ◦ S [[skip]]s se B[[¬(x = 0)]]s = tt ds =  id s se B[[¬(x = 0)]]s = ff   g s se s x = 0 =  s se s x = 0 Observa¸˜o: g ◦ Sds [[skip]]s = g ◦ id s = g s, pois ca g ◦ id = g.
    111. 9 ˆ SEMANTICA DENOTACIONAL 111 A fun¸ao g1 definida como: c˜   undef se s x = 0 g1 s =  s se s x = 0 ´ ponto fixo de F porque e   g s se s x=0 1 (F g1 )s =  s se s x=0   undef se sx=0 =  s se sx=0 = g1 s
    112. 9 ˆ SEMANTICA DENOTACIONAL 112 J´, por sua vez, g2 , definida como: a g2 s = undef para todo s n˜o ´ ponto fixo de F porque se s x = 0 ent˜o a e a (F g2 )s = s , enquanto que g2 s = undef.
    113. 9 ˆ SEMANTICA DENOTACIONAL 113 • Existem funcionais com mais de um ponto fixo. Um exemplo ´ F , j´ que qualquer fun¸˜o g de e a ca State → State satisfazendo g s = s se s x = 0 ´ e ponto fixo de F ; • Existem tamb´m funcionais que n˜o tem ponto fixo. e a Considere F1 definido como:   g se g = g2 1 F1 g =  g2 caso contr´rio a Se g1 = g2 ent˜o n˜o existe fun¸ao g0 tal que a a c˜ F1 g0 = g0 .
    114. 9 ˆ SEMANTICA DENOTACIONAL 114 Exerc´ ıcio: Determine o funcional F associado ao comando: while ¬(x = 0) do x:=x − 1
    115. 9 ˆ SEMANTICA DENOTACIONAL 115 Solu¸ao: c˜ Sds [[while ¬(x = 0) do x:=x − 1]]s = (FIX F )s (F g)s = cond(B[[¬(x = 0)]], g ◦ Sds [[x:=x − 1]], id)s   g ◦ S [[x:=x − 1]]s se B[[¬(x = 0)]]s = tt ds =  id s se B[[¬(x = 0)]]s = ff   g s[x → s x − 1] se s x = 0 =  s se s x = 0
    116. 9 ˆ SEMANTICA DENOTACIONAL 116 Exerc´ ıcio: Considere as seguintes fun¸˜es parciais: co 1. g1 s = undef para todo s 2.   s[x → 0] se s x ≥ 0 g2 s =  undef se s x < 0 3.   s[x → 0] se s x ≥ 0 g3 s =  s se s x < 0 4. g4 s = s[x → 0] para todo s 5. g5 s = s para todo s Determine quais s˜o pontos fixos de F . a
    117. 9 ˆ SEMANTICA DENOTACIONAL 117 Exerc´ ıcio: Considere o seguinte fragmento de programa: while ¬(x = 1) do (y:=y∗x; x:=x − 1) Determine o funcional F associado ao programa. Determine tamb´m ao menos dois pontos fixos de F . e
    118. 9 ˆ SEMANTICA DENOTACIONAL 118 9.4 Requisitos sobre o Ponto Fixo Perante o problema de haver mais de um ponto fixo, ou de n˜o existir nenhum, se faz necess´rio: a a • Definir os requisitos de um ponto fixo e mostrar que ao menos um ponto fixo preenche estes requisitos; • Mostrar que todos os funcionais obtidos da linguagem While tem um ponto fixo que satisfaz estes requisitos.
    119. 9 ˆ SEMANTICA DENOTACIONAL 119 Seja o comando while b do S. Quanto a termina¸ao, c˜ existem trˆs possibilidades: e 1. Ele termina; 2. Ele entra em loop localmente, ou seja, S entra em loop; 3. Ele entra em loop globalmente, ou seja, a estrutura while entra em loop.
    120. 9 ˆ SEMANTICA DENOTACIONAL 120 1. Caso em que o la¸o termina: Assim, existe uma c seq¨ˆncia de estados s0 , s1 , . . . , sn tal que ue   tt se i < n B[[b]]si =  ff se i = n e Sds [[S]]si = si+1 para i < n
    121. 9 ˆ SEMANTICA DENOTACIONAL 121 Seja g0 um ponto fixo de F . Logo, no caso i < n temos: g0 si = (F g0 )si = cond(B[[b]], g0 ◦ Sds [[S]], id)si = g0 (Sds [[S]]si ) = g0 si+1 No caso i = n, temos: g0 sn = (F g0 )sn = cond(B[[b]], g0 ◦ Sds [[S]], id)sn = id sn = sn
    122. 9 ˆ SEMANTICA DENOTACIONAL 122 Conclui-se que todos os pontos fixos satisfazem g0 s0 = sn , n˜o sendo poss´ tirar daqui nenhum a ıvel requisito.
    123. 9 ˆ SEMANTICA DENOTACIONAL 123 2. Caso em que o la¸o entra em loop localmente, ou c seja, S entra em loop: Existe uma seq¨ˆncia de ue estados s0 , s1 , . . . , sn tal que B[[b]]si = tt para i ≤ n e   s para i < n i+1 Sds [[S]]si =  undef para i = n
    124. 9 ˆ SEMANTICA DENOTACIONAL 124 Seja g0 um ponto fixo do funcional F . No caso i < n obtemos: g0 si = g0 si+1 e no caso i = n obtemos: g0 sn = (F g0 )sn = cond(B[[b]], g0 ◦ Sds [[S]], id)sn = (g0 ◦ Sds [[S]])sn = undef E novamente n˜o se obtem nenhum requisito. a
    125. 9 ˆ SEMANTICA DENOTACIONAL 125 3. Caso em que o la¸o entra em loop globalmente, ou c seja, a estrutura while entra em loop: Existe um seq¨ˆncia infinita de estados s0 , s1 , s2 , . . . tal que ue B[[b]]si = tt para todo i e Sds [[S]]si = si+1 para todo i Seja g0 um ponto fixo de F , ent˜o a g0 si = g0 si+1 para todo i ≥ 0. E temos g0 s0 = g0 si para todo i. Esta ´ a situa¸ao em que podemos ter v´rios pontos e c˜ a fixos diferentes.
    126. 9 ˆ SEMANTICA DENOTACIONAL 126 ex: S = while ¬(x = 0) do skip cujo funcional ´ e   g s se s x = 0 (F g)s =  s se s x = 0 Sabemos que qualquer fun¸ao g de State → State c˜ satisfazendo g s = s se s x = 0 ´ ponto fixo de F . No e entanto, nossa experiˆncia computacional nos diz que e   undef se s x = 0 0 Sds [[S]]s0 =  s0 se s0 x = 0 de forma a representar o comportamento do loop.
    127. 9 ˆ SEMANTICA DENOTACIONAL 127 Assim, nosso ponto fixo preferencial ´ e   undef se s x = 0 g0 s =  s se s x = 0 A propriedade distintiva deste ponto fixo ´ que para e qualquer outro ponto fixo g de F , se g0 s = s ent˜o a g s = s , mas n˜o o contr´rio. a a
    128. 9 ˆ SEMANTICA DENOTACIONAL 128 Generalizando para qualquer funcional F : O ponto fixo desejado deve ser alguma fun¸ao parcial c˜ g0 : State → State tal que: • g0 ´ um ponto fixo de F ; e • se g ´ outro ponto fixo de F , ent˜o g0 s = s e a implica g s = s , para todos os s e s .
    129. 9 ˆ SEMANTICA DENOTACIONAL 129 9.5 Teoria de Pontos Fixos • Desenvolver uma teoria que permita tratar com funcionais e pontos fixos; • Garantir a existˆncia do ponto fixo preferencial. e
    130. 9 ˆ SEMANTICA DENOTACIONAL 130 Seja a ordem sobre as fun¸oes parciais State → State: c˜ g1 g2 quando a fun¸˜o parcial g1 compartilha seus resultados ca com a fun¸˜o parcial g2 , ou seja, se g1 s = s ent˜o ca a g2 s = s , para todo s e s . g1 g2 significa que em todos os pontos em que g1 ´ e definido, g2 tamb´m o ´, e os seus valores s˜o iguais, mas e e a o inverso n˜o ´ exigido. g1 g2 pode ser lido como g1 ´ a e e menos ou igualmente definido que g2 ou g1 aproxima g2 .
    131. 9 ˆ SEMANTICA DENOTACIONAL 131 g 1 1 a 2 b 3 c g 2 1 a 2 b 3 c
    132. 9 ˆ SEMANTICA DENOTACIONAL 132 ex: g1 s = s para todo s   s se s x ≥ 0 g2 s =  undef caso contr´rio a   s se s x = 0 g3 s =  undef caso contr´rio a   s se s x ≤ 0 g4 s =  undef caso contr´rio a
    133. 9 ˆ SEMANTICA DENOTACIONAL 133 g1 g1 g2 g1 g2 g2 g3 g1 g3 g2 g3 g3 g3 g4 g4 g1 g4 g4 g2 g4 g4 g2
    134. 9 ˆ SEMANTICA DENOTACIONAL 134 Diagrama de Hasse: g1 e } ee }} ee }}} ee }} e g2 e g4 ee } ee }}} ee }} e }} g3
    135. 9 ˆ SEMANTICA DENOTACIONAL 135 Exerc´ ıcio: Sejam g1 , g2 e g3 , como a seguir definidos:   s se s x ´ par e g1 s =  undef caso contr´rio a   s se s x ´ um primo e g2 s =  undef caso contr´rio a g3 s = s 1. Determine a ordem entre estas fun¸˜es; co 2. Determine uma fun¸˜o parcial g4 tal que g4 ca g1 , g4 g2 e g4 g3 ; 3. Determine uma fun¸˜o parcial g5 tal que g1 g5 , ca g2 g5 e g5 g3 , e g5 n˜o ´ igual a g1 , g2 nem a g3 . a e
    136. 9 ˆ SEMANTICA DENOTACIONAL 136 Uma caracteriza¸ao alternativa da ordem c˜ em State → State ´e g1 g2 se e somente se graph(g1 ) ⊆ graph(g2 ) onde graph(f ) = {< x, y >∈ X × Y |f (x) = y} e f :X →Y.
    137. 9 ˆ SEMANTICA DENOTACIONAL 137 O conjunto State → State munido da ordem ´ um e exemplo de um conjunto parcialmente ordenado. Seja D um conjunto e d, d1 , d2 , d3 ∈ D. Um conjunto parcialmente ordenado ´ um par (D, D ), onde D ´ e e uma rela¸ao em D satisfazendo: c˜ 1. d D d (reflexividade); 2. d1 D d2 e d2 D d3 implica d1 D d3 (transitividade); 3. d1 D d2 e d2 D d1 implica d1 = d2 (anti-simetria).
    138. 9 ˆ SEMANTICA DENOTACIONAL 138 Um elemento d ∈ D satisfazendo d d para todo d ∈ D ´ chamado de elemento m´nimo de D. Podemos dizer que e ı ele n˜o cont´m informa¸˜o. a e ca
    139. 9 ˆ SEMANTICA DENOTACIONAL 139 Teorema 5 Se um conjunto parcialmente ordenado (D, D ) tem um elemento m´nimo d, ent˜o d ´ unico. ı a e´ Prova: Assuma que D tem dois elementos m´nimos d1 e ı d2 . Desde que d1 ´ elemento m´nimo, d1 d2 . Como d2 e ı tamb´m ´ elemento m´nimo, d2 d1 . Pela propriedade e e ı da anti-simetria de obtemos d1 = d2 .
    140. 9 ˆ SEMANTICA DENOTACIONAL 140 1 aa ÑÑ aa ÑÑ aa ÑÑÑ a 2 aa 3 aa aa ÑÑÑ aa aa ÑÑ aa a ÑÑ a 4 5
    141. 9 ˆ SEMANTICA DENOTACIONAL 141 ex: Seja S um conjunto n˜o vazio e defina: a P(S) = {K|K ⊆ S} chamado conjunto das partes. Ent˜o (P(S), ⊆) ´ um conjunto parcialmente ordenado a e porque • ⊆ ´ reflexiva: K ⊆ K; e • ⊆ ´ transitiva: se K1 ⊆ K2 e K2 ⊆ K3 ent˜o e a K1 ⊆ K3 ; • ⊆ ´ anti-sim´trica: se K1 ⊆ K2 e K2 ⊆ K1 ent˜o e e a K1 = K2 .
    142. 9 ˆ SEMANTICA DENOTACIONAL 142 No caso em que S = {a, b, c}, P(S) = {∅, {a}, {b}, {c}, {a, b}, {a, c}, {b, c}, {a, b, c}}, e temos: {a, b, c} t tt tt tt t tt ttt tt tt t {a, b} {a, c} {b, c} tt tt tt ttt tt ttt tt tt ttt t tt t tt t t tt ttt tt ttt t {a} t {b} {c} tt t tt ttt tt tt ttt tt tt tt ∅ (P(S), ⊆) tem um elemento m´ ınimo, ∅.
    143. 9 ˆ SEMANTICA DENOTACIONAL 143 Exerc´ıcio: Mostre que (P(S), ⊇) ´ um conjunto e parcialmente ordenado e determine o elemento m´ınimo. Desenhe o diagrama de Hasse no caso em que S = {a, b, c}.
    144. 9 ˆ SEMANTICA DENOTACIONAL 144 Lema 2 (State → State, ) ´ um conjunto e parcialmente ordenado. A fun¸˜o parcial ca ⊥ : State → State definida como ⊥ s = undef para todo s ´ o elemento m´nimo de State → State. e ı
    145. 9 ˆ SEMANTICA DENOTACIONAL 145 Prova: Primeiro provamos que ´ ordem parcial: e Reflexiva Trivialmente g g, porque g s = s implica g s=s; Transitiva Assumimos g1 g2 e g2 g3 . Assumimos g1 s = s e de g1 g2 concluimos g2 s = s , e ent˜o a g2 g3 fornece g3 s = s ; Anti-sim´trica Assumimos g1 g2 e g2 g1 . e Assumimos que g1 s = s . Ent˜o, g2 s = s segue de a g1 g2 , e neste caso ambas as fun¸˜es d˜o valores co a iguais. No caso em que g1 s = undef, ´ necess´rio e a que g2 s = undef, j´ que caso contr´rio, g2 s = s e a a de g2 g1 obteriamos g1 s = s , que ´ uma e contradi¸˜o. ca
    146. 9 ˆ SEMANTICA DENOTACIONAL 146 Finalmente, temos que provar que ⊥ ´ o elemento e ı ´ a m´nimo de State → State. E f´cil ver que ⊥ ´ um e elemento de State → State e trivialmente ⊥ g vale para todos g, dado que ⊥ s = s implica g s = s por vacuidade.
    147. 9 ˆ SEMANTICA DENOTACIONAL 147 Formalizando os requisitos de FIX F : • FIX F ´ ponto fixo de F , isto ´, F (FIX F ) = FIX F ; e e • FIX F ´ o menor ponto fixo de F , isto ´, se F g = g e e ent˜o FIX F g. a
    148. 9 ˆ SEMANTICA DENOTACIONAL 148 Exerc´ ıcio: Mostre que se F tem um menor ponto fixo g0 ent˜o g0 ´ unico. a e´ Exerc´ıcio: Determine o menor ponto fixo dos funcionais associados aos programas: 1. while ¬(x = 0) do x:=x − 1 2. while ¬(x = 1) do (y:=y ∗ x; x:=x − 1)
    149. 9 ˆ SEMANTICA DENOTACIONAL 149 • Seja (D, ), e assumimos um subconjunto Y ⊆ D; • Existe um elemento de D que resume toda a informa¸˜o de Y ; ca • Um elemento d ´ chamado de limite superior de Y se: e ∀d ∈ Y d d • Um limite superior d de Y ´ um menor limite e superior (ou supremo) se e somente se d ´ limite superior de Y implica que d e d • O supremo de Y tem pouca informa¸ao a mais que a c˜ presente nos elementos de Y .
    150. 9 ˆ SEMANTICA DENOTACIONAL 150 Exerc´ıcio: Mostre que se Y tem um supremo, ent˜o ele ´ a e unico. ´
    151. 9 ˆ SEMANTICA DENOTACIONAL 151 Nota¸ao: o (´nico) supremo de Y ´ denotado por c˜ u e Y.
    152. 9 ˆ SEMANTICA DENOTACIONAL 152 Um subconjunto Y ´ chamado de cadeia se ele ´ e e consistente no sentido que quaisquer dois elementos de Y compartilham informa¸ao um com o outro, ou seja, c˜ ∀d1 , d2 ∈ Y d1 d2 ∨ d2 d1
    153. 9 ˆ SEMANTICA DENOTACIONAL 153 ex: Considere o conjunto parcialmente ordenado (P({a, b, c}), ⊆). Ent˜o, o subconjunto a Y0 = {∅, {a}, {a, c}} ´ uma cadeia. Neste caso, {a, b, c} e {a, c} s˜o limites e a superiores de Y0 e {a, c} ´ o supremo. e contra-ex: O subconjunto {∅, {a}, {c}, {a, c}} n˜o ´ uma a e cadeia. Por que?
    154. 9 ˆ SEMANTICA DENOTACIONAL 154 ex: Seja gn : State → State definido como:   undef  se s x > n  gn s = s[x → −1] se 0 ≤ s x e s x ≤ n    s se s x < 0 e gn gm se n ≤ m. Seja Y0 = {gn |n ≥ 0}. Y0 ´ uma cadeia porque gn e gm se n ≤ m. A fun¸ao parcial c˜   s[x → −1] se 0 ≤ s x gs=  s se s x < 0 ´ o supremo de Y0 . e
    155. 9 ˆ SEMANTICA DENOTACIONAL 155 Exerc´ ıcio: Seja gn a fun¸ao parcial definida por: c˜   s[y → (s x)!][x → 1] se 0 < s x e s x ≤ n gn s =  undef se s x ≤ 0 ou s x > n Definimos Y0 = {gn |n ≥ 0}. Mostre que Y0 ´ uma cadeia. e Caracterize os limites superiores de Y0 e determine o supremo.
    156. 9 ˆ SEMANTICA DENOTACIONAL 156 Um conjunto parcialmente ordenado (D, ) ´ chamado e de cadeia completa parcialmente ordenada (ccpo) se Y existe para todas as cadeias Y de D. Ele ´ um reticulado e completo se Y existe para todos os subconjuntos Y de D.
    157. 9 ˆ SEMANTICA DENOTACIONAL 157 Exerc´ ıcio: Mostre que (P(S), ⊆) ´ um reticulado e completo e um ccpo para todos os conjuntos n˜o vazios S. a
    158. 9 ˆ SEMANTICA DENOTACIONAL 158 Contra-exemplo de ccpo: Seja Pfin (S) = {K ⊆ S|K ´ finito}. Considere (Pfin (N), ⊆). e Ent˜o a Y = {{0}, {0, 1}, {0, 1, 2}, . . . , {0, 1, 2, . . . , n}, . . .} ´ cadeia. A uni˜o cont´vel dos elementos Ai da cadeia ´ e a a e ∞ Ai = N , i=1 por´m ele n˜o pode ser o supremo da cadeia pois n˜o e a a pertence a ela.
    159. 9 ˆ SEMANTICA DENOTACIONAL 159 Teorema 6 Se (D, ) ´ um ccpo ent˜o existe um e a elemento m´nimo ⊥ dado por ⊥ = ∅. ı Prova: 1. ∅ ´ uma cadeia pois ∀d1 , d2 ∈ ∅ d1 e d2 ∨ d2 d1 (por vacuidade); 2. Como (D, ) ´ uma ccpo ent˜o existe e a ∅ pois ∅ ⊆ D ´ cadeia de D; e 3. ∅ d, d ∈ D, ent˜o a ∅ ´ elemento m´ e ınimo de D.
    160. 9 ˆ SEMANTICA DENOTACIONAL 160 Lema 3 (State → State, ) ´ um ccpo. O supremo e Y da cadeia Y de State → State ´ dado por: e graph( Y)= {graph(g)|g ∈ Y } isto ´, ( Y ) s = s se e somente se g s = s para algum e g ∈Y. Observa¸˜es: co • graph(f ) = {< x, y >∈ X × Y |f (x) = y} e f :X →Y; • State → State n˜o ´ um reticulado, mas ´ um ccpo a e e e suas cadeias possuem supremo.
    161. 9 ˆ SEMANTICA DENOTACIONAL 161 Sejam (D, ) e (D , ) duas ccpo’s e considere a fun¸ao c˜ (total) f : D → D . f ´ monotˆnica se e somente se e o d1 d2 implica f (d1 ) f (d2 ) para todos os d1 e d2 .
    162. 9 ˆ SEMANTICA DENOTACIONAL 162 Exerc´ıcio: Considere o ccpo (P(N), ⊆). Determine quais das seguintes fun¸˜es em P(N) → P(N) s˜o co a monotˆnicas: o • f1 (X) = NX • f2 (X) = X {27} • f3 (X) = X {7, 9, 13} • f4 (X) = {n ∈ X|n ´ primo} e • f5 (X) = {2∗n|n ∈ X}
    163. 9 ˆ SEMANTICA DENOTACIONAL 163 Exerc´ ıcio: Determine quais dos seguintes funcionais em (State → State) → (State → State) s˜o monotˆnicos: a o • F0 g = g   g se g = g2 1 • F1 g = onde g1 = g2  g2 caso contr´rio a   g s se s x = 0 • (F g) s =  s se s x = 0
    164. 9 ˆ SEMANTICA DENOTACIONAL 164 Teorema 7 Sejam (D, ), (D , ) e (D , ) trˆs e ccpo’s e sejam f : D → D e f : D → D duas fun¸˜es co monotˆnicas. Ent˜o, f ◦ f : D → D ´ uma fun¸˜o o a e ca monotˆnica. o Prova: Assumimos que d1 d2 . A monotonicidade de f resulta em f (d1 ) f (d2 ). A monotonicidade de f resulta em f (f (d1 )) f (f (d2 )), como queriamos provar. Observa¸˜o: Isto significa que a opera¸˜o de composi¸ao ca ca c˜ de fun¸oes preserva a monotonicidade. c˜
    165. 9 ˆ SEMANTICA DENOTACIONAL 165 Lema 4 Sejam (D, ) e (D , ) duas ccpo’s e seja f : D → D uma fun¸˜o monotˆnica. Se Y ´ cadeia de D ca o e ent˜o {f (d)|d ∈ Y } ´ uma cadeia de D . Al´m disto, a e e {f (d)|d ∈ Y } f( Y ) Observa¸˜o: Isto significa que: ca • a imagem de uma cadeia sob uma fun¸ao monotˆnica c˜ o tamb´m ´ uma cadeia; e e • o supremo desta segunda cadeia aproxima a imagem do supremo da primeira.
    166. 9 ˆ SEMANTICA DENOTACIONAL 166 Prova: Se Y = ∅ o enunciado ´ trivialmente v´lido porque e a {f (d)|d ∈ ∅} f (⊥) ∅ f (⊥) ⊥ f (⊥)
    167. 9 ˆ SEMANTICA DENOTACIONAL 167 Assumimos Y = ∅. Seja A = {f (d)|d ∈ Y } e sejam d1 , d2 ∈ A. Ent˜o, existe d1 , d2 ∈ Y tal que d1 = f (d1 ) e a d2 = f (d2 ). Desde que Y ´ cadeia ent˜o d1 d2 ou e a d2 d1 . Pela monotonicidade de f vale o mesmo entre d1 e d2 . Ou seja, A ´ cadeia de D . e
    168. 9 ˆ SEMANTICA DENOTACIONAL 168 Para a segunda parte da prova, assumimos d ∈ Y . Ent˜o, a d Y , e pela monotonicidade de f , f (d) f ( Y ). Desde que isto vale para todos os d ∈ Y , ent˜o f ( Y ) ´ a e limite superior de A.
    169. 9 ˆ SEMANTICA DENOTACIONAL 169 Estamos interessados em fun¸oes f que preservem os c˜ limites superiores de cadeias, ou seja, que satisfazem: {f (d)|d ∈ Y } = f ( Y ) (1) Uma fun¸ao f : D → D definida sobre duas ccpo’s c˜ (D, ) e (D , ) ´ cont´nua se ela ´ monotˆnica e (1) e ı e o vale para todas as cadeias n˜o vazias Y . a Observa¸˜o: Isto significa que obtemos a mesma ca informa¸ao independente de determinarmos o supremo c˜ antes ou depois de aplicar f .
    170. 9 ˆ SEMANTICA DENOTACIONAL 170 Se vale tamb´m ⊥ = f (⊥) ent˜o dizemos que f ´ estrita. e a e
    171. 9 ˆ SEMANTICA DENOTACIONAL 171 Lema 5 Sejam (D, ),(D , ) e (D , )trˆs ccpo’s e e sejam f : D → D e f : D → D duas fun¸˜es cont´ co ınuas. Ent˜o, f ◦ f : D → D ´ uma fun¸˜o cont´ a e ca ınua. Prova: Do Teorema 7 sabemos que f ◦ f ´ monotˆnica. e o Da continuidade de f obtemos: {f (d)|d ∈ Y } = f ( Y )
    172. 9 ˆ SEMANTICA DENOTACIONAL 172 Desde que {f (d)|d ∈ Y } ´ uma cadeia n˜o vazia de D e e a usando a continuidade de f obtemos: {f (d )|d ∈ {f (d)|d ∈ Y }} = f ( {f (d)|d ∈ Y }) que ´ equivalente a e {f (f (d))|d ∈ Y } = f (f ( Y )) provando o resultado.
    173. 9 ˆ SEMANTICA DENOTACIONAL 173 Exerc´ ıcio: Prove que se f e f s˜o estritas, f ◦ f tamb´m a e o ´. e
    174. 9 ˆ SEMANTICA DENOTACIONAL 174 Exerc´ ıcio: Mostre que o funcional associado ao programa while ¬(x = 0) do x:=x − 1 ´ cont´ e ınuo.
    175. 9 ˆ SEMANTICA DENOTACIONAL 175 Contra-exemplo de fun¸˜o cont´ ca ınua: Seja (P(N ∪ {a}), ⊆) um ccpo. Considere a fun¸˜o ca f : P(N ∪ {a}) → P(N ∪ {a}) definida como:   X se X ´ finito e f X=  X ∪ {a} se X ´ infinito e f ´ monotˆnica, j´ que X1 ⊆ X2 implica f X1 ⊆ f X2 . e o a No entanto, n˜o ´ cont´ a e ınua. Considere Y = {{0, 1, . . . , n}|n ≥ 0} que ´ uma cadeia, com e Y = N. Aplicando f obtemos: {f X|X ∈ Y } = Y = N e f ( Y ) = f N = N ∪ {a}.
    176. 9 ˆ SEMANTICA DENOTACIONAL 176 Teorema 8 Seja f : D → D uma fun¸˜o cont´nua sobre ca ı um ccpo (D, ) com elemento m´nimo ⊥. Ent˜o, ı a FIX f = {f n (⊥)|n ≥ 0} define um elemento de D e este elemento ´ o menor e ponto fixo de f . Observa¸˜es: co • f 0 = id e f n+1 = f ◦ f n para n ≥ 0; • Esta ´ a defini¸ao de ponto fixo desejado. e c˜
    177. 9 ˆ SEMANTICA DENOTACIONAL 177 Prova: 1. f 0 (⊥) = ⊥, e ⊥ d para todo d ∈ D. Por indu¸˜o ca podemos mostrar que f n (⊥) f n (d), j´ que f ´ a e monotˆnica. Segue que f n (⊥) f m (⊥) para n ≤ m. o Assim, {f n (⊥)|n ≥ 0} ´ uma cadeia de D e FIX f e existe porque D ´ um ccpo; e
    178. 9 ˆ SEMANTICA DENOTACIONAL 178 2. Precisamos mostrar que FIX f ´ um ponto fixo, isto e ´, f (FIX f ) = FIX f : e f (FIX f ) = f ( {f n (⊥)|n ≥ 0}) = {f (f n (⊥))|n ≥ 0} = {f n (⊥)|n ≥ 1} = ({f n (⊥)|n ≥ 1} ∪ {⊥}) = {f n (⊥)|n ≥ 0} = FIX f
    179. 9 ˆ SEMANTICA DENOTACIONAL 179 3. Para mostrar que FIX f ´ o menor ponto fixo basta e assumir que d ´ algum outro ponto fixo. Assim, e ⊥ d e pela monotonicidade de f obtemos f n (⊥) f n (d), para n ≥ 0. Como d ´ ponto fixo, e f n (⊥) d, e sabendo que FIX f ´ supremo da cadeia e {f n (⊥)|n ≥ 0}, FIX f d, o que prova o resultado.
    180. 9 ˆ SEMANTICA DENOTACIONAL 180 ex: Considere o funcional:   g s se s x = 0 (F g) s =  s se s x = 0 Tomamos ⊥ s = undef para todo s, que ´ o menor e elemento de State → State, para determinar os elementos de {F n (⊥)|n ≥ 0}.
    181. 9 ˆ SEMANTICA DENOTACIONAL 181 0 (F ⊥) s = (id ⊥) s = undef 1 (F ⊥) s = (F ⊥) s   ⊥ s se s x = 0 =  s se s x = 0   undef se s x = 0 =  s se s x = 0
    182. 9 ˆ SEMANTICA DENOTACIONAL 182 2 (F ⊥) s = F (F 1 ⊥) s   (F 1 ⊥) s se s x = 0 =  s se s x = 0   undef se sx=0 =  s se sx=0
    183. 9 ˆ SEMANTICA DENOTACIONAL 183 n n+1 No caso geral, nos temos F ⊥=F ⊥ para n > 0. Al´m disto, e n 0 1 1 {F ⊥|n ≥ 0} = {F ⊥, F ⊥} = F ⊥ 0 porque F ⊥ = ⊥. Assim, o menor ponto fixo de F ´ a e fun¸ao c˜   undef se s x = 0 g1 s =  s se s x = 0
    184. 9 ˆ SEMANTICA DENOTACIONAL 184 Exerc´ıcio: Determine o ponto fixo dos funcionais associados aos seguintes comandos: 1. while ¬(x = 0) do x:=x − 1 2. while ¬(x = 1) do (y:=y ∗ x; x:=x − 1)
    185. 9 ˆ SEMANTICA DENOTACIONAL 185 9.6 Existˆncia e Teorema 9 As equa¸˜es da semˆntica denotacional co a definem uma fun¸˜o total Sds em ca Stm → (State → State).
    186. 9 ˆ SEMANTICA DENOTACIONAL 186 9.7 Um Resultado de Equivalˆncia e Teorema 10 Para todo comando S da linguagem exemplo While, n´s temos SSOS [[S]] = Sds [[S]]. o
    187. 10 ˆ ´ SEMANTICA AXIOMATICA 187 10 Semˆntica Axiom´tica a a • Corre¸˜o parcial: estabelece certa rela¸ao entre os ca c˜ valores iniciais e finais das vari´veis (se o programa a terminar); • Corre¸˜o parcial+termina¸ao=corre¸˜o total ca c˜ ca
    188. 10 ˆ ´ SEMANTICA AXIOMATICA 188 10.1 Provas Diretas de Corre¸˜o de ca Programas 10.1.1 Semˆntica Natural a y:=1; while ¬(x = 1) do (y:=y ∗ x; x:=x − 1) Para todos os estados s e s , se y:=1; while ¬(x = 1) do (y:=y ∗ x; x:=x − 1), s → s ent˜o s y = (s x)! e s x > 0. a
    189. 10 ˆ ´ SEMANTICA AXIOMATICA 189 A prova tem trˆs est´gios: e a 1. Provar que se y:=y ∗ x; x:=x − 1, s → s e s x > 0 ent˜o (s y) ∗ (s x)! = (s y) ∗ (s x)! e s x > 0; a 2. Provar que se while ¬(x = 1) do (y:=y ∗ x; x:=x − 1), s → s ent˜o (s y) ∗ (s x)! = s y e s x = 1 e s x > 0; a 3. Provar que se y:=1; while ¬(x = 1) do (y:=y ∗ x; x:=x − 1), s → s ent˜o s y = (s x)! e s x > 0. a
    190. 10 ˆ ´ SEMANTICA AXIOMATICA 190 1. Considere y:=y ∗ x; x:=x − 1, s → s . De acordo com [compns ] existem transi¸˜es y:=y ∗ x, s → s e co x:=x − 1, s → s para algum s . De [assns ] temos s = s[y → A[[y ∗ x]]s] e s = s [x → A[[x − 1]]s ]. Combinando obtemos s = s[y → (s y) ∗ (s x)][x → (s x) − 1]. Assumindo s x > 0 calculamos (s y)∗(s x)! = ((s y)∗(s x))∗((s x)−1)! = (s y)∗(s x)! e desde que s x = (s x) + 1, isto prova a primeira parte;
    191. 10 ˆ ´ SEMANTICA AXIOMATICA 191 2. Podem ser usadas duas regras: • [whileff ]: Neste caso, s = s e B[[¬(x = 1)]]s = ff . ns Isto significa que s x = 1 e, como 1! = 1, n´so obtemos (s y) ∗ (s x)! = s y e s x > 0;
    192. 10 ˆ ´ SEMANTICA AXIOMATICA 192 • [whilett ]: Neste caso, B[[¬(x = 1)]]s = tt e ns y:=y ∗ x; x:=x − 1, s → s e while ¬(x = 1) do (y:=y ∗ x; x:=x − 1), s → s para algum s . A hip´tese indutiva diz que o (s y) ∗ (s x)! = s y e s x = 1 e s x > 0. Da primeira parte da prova vem que (s y) ∗ (s x)! = (s y) ∗ (s x)! e s x > 0. Combinando os resultados obtem-se (s y) ∗ (s x)! = s y e s x > 0 que prova a segunda parte;
    193. 10 ˆ ´ SEMANTICA AXIOMATICA 193 3. Considere para a prova da terceira parte y:=1; while ¬(x = 1) do (y:=y ∗ x; x:=x − 1), s → s De acordo com [compns ] existir´ um estado s tal que a y:=1, s → s e while ¬(x = 1) do (y:=y ∗ x; x:=x − 1), s → s Do axioma [assns ] obtemos s = s[y → 1] e da segunda parte sabemos que s x > 0 e s x > 0. Ent˜o, (s x)! = (s y) ∗ (s x)! vale e usando a a segunda parte da prova obtemos (s x)! = (s y) ∗ (s x)! = s y que prova a terceira e ultima parte. ´
    194. 10 ˆ ´ SEMANTICA AXIOMATICA 194 Exerc´ ıcio: Prove a corre¸ao parcial do programa: c˜ z:=0; while y ≤ x do (z:=z + 1; x:=x − y) Ou seja, se o programa p´ra no estado s a partir de um a estado s, com s x > 0 e s y > 0, ent˜o a s z = (s x) div (s y) e s x = (s x) mod (s y).
    195. 10 ˆ ´ SEMANTICA AXIOMATICA 195 10.1.2 Semˆntica Operacional Estruturada a Para todos os estados s e s , se y:=1; while ¬(x = 1) do (y:=y ∗ x; x:=x − 1), s ⇒∗ s ent˜o s y = (s x)! e s x > 0. a
    196. 10 ˆ ´ SEMANTICA AXIOMATICA 196 A prova tem dois est´gios: a 1. Prova-se por indu¸ao sobre o tamanho das seq¨ˆncias c˜ ue de deriva¸˜o que se ca while ¬(x = 1) do (y:=y ∗ x; x:=x − 1), s ⇒k s ent˜o s y = (s y) ∗ (s x)! e s x = 1 e s x > 0; a 2. Provar que se y:=1; while ¬(x = 1) do (y:=y ∗ x; x:=x − 1), s ⇒∗ s ent˜o s y = (s x)! e s x > 0. a
    197. 10 ˆ ´ SEMANTICA AXIOMATICA 197 10.1.3 Semˆntica Denotacional a Baseado em uma propriedade, como um predicado ψ sobre o ccpo (State → State, ), isto ´ e ψ : (State → State) → T
    198. 10 ˆ ´ SEMANTICA AXIOMATICA 198 ex: (fatorial) ψfat (Sds [[y:=1; while ¬(x = 1) do (y:=y∗x; x:=x−1)]]) = tt onde ψfat ´ definida como: e ψfat (g) = tt se e somente se, para todos os estados s e s , se g s = s ent˜o s y = (s x)! e s x > 0. a
    199. 10 ˆ ´ SEMANTICA AXIOMATICA 199 Um predicado ψ : D → T definido sobre um ccpo (D, ) ´ chamado de admiss´vel se e somente se n´s temos e ı o se ψ(d) = tt para todo d ∈ Y ent˜o ψ( Y ) = tt a para toda cadeia Y de D.
    200. 10 ˆ ´ SEMANTICA AXIOMATICA 200 Teorema 11 Seja (D, ) um ccpo e sejam f : D → D uma fun¸˜o cont´ ca ınua e ψ um predicado admiss´ sobre ıvel D. Se para todo d ∈ D ψ(d) = tt implica ψ(f d) = tt ent˜o ψ(FIX f ) = tt. a Observa¸˜o: Isto significa que se a aplica¸ao de f n˜o ca c˜ a muda o valor do predicado ψ ent˜o o ponto fixo de f a tamb´m fornece o mesmo valor para o predicado. Assim, e podemos generalizar o predicado para o ponto fixo de f .
    201. 10 ˆ ´ SEMANTICA AXIOMATICA 201 10.2 Asser¸oes para Corre¸˜o Parcial c˜ ca • As abordagens anteriores s˜o muito detalhadas para a um uso pr´tico pois elas s˜o muito pr´ximas da a a o semˆntica de linguagens de programa¸ao; a c˜ • Precisamos extrair as propriedades essenciais das constru¸˜es da linguagem; co
    202. 10 ˆ ´ SEMANTICA AXIOMATICA 202 • Podemos especificar estas propriedades dos programas como asser¸˜es na forma {P } S {Q}, que co significa: 1. Se P vale no estado inicial e 2. a execu¸˜o de S termina quando inicia neste estado ca 3. ent˜o Q vale no estado em que S p´ra. a a • Observe que {P } S {Q} n˜o garante a termina¸ao. a c˜
    203. 10 ˆ ´ SEMANTICA AXIOMATICA 203 {P } S {Q} P chamada de precondi¸˜o; ca Q chamada de p´s-condi¸˜o. o ca
    204. 10 ˆ ´ SEMANTICA AXIOMATICA 204 ex: {x = n} y:=1; while ¬(x = 1) do (y:=x ∗ y; x:=x − 1) {y = n! ∧ n > 0} Observa¸˜o: h´ dois tipos de vari´veis: ca a a 1. vari´veis do programa. ex: x e y; a 2. vari´veis l´gicas. ex: n. a o
    205. 10 ˆ ´ SEMANTICA AXIOMATICA 205 Nota¸ao: c˜ P1 ∧ P2 para P onde P s = (P1 s) e (P2 s) P1 ∨ P2 para P onde P s = (P1 s) ou (P2 s) ¬P para P onde P s = ¬(P s) P [x → A[[a]]] para P onde P s = P (s[x → A[[a]]s]) P1 ⇒ P2 para ∀s ∈ State P1 s implica P2 s
    206. 10 ˆ ´ SEMANTICA AXIOMATICA 206 [assP ] {P [x → A[[a]]]} x := a {P } [skipP ] {P } skip {P } {P } S1 {Q}, {Q} S2 {R} [compP ] {P } S1 ;S2 {R} {B[[b]]∧P } S1 {Q}, {¬B[[b]]∧P } S2 {Q} [if P ] {P } if b then S1 else S2 {Q} {B[[b]]∧P } S {P } [whileP ] {P } while b do S {¬B[[b]]∧P } {P } S {Q } [consP ] {P } S {Q} se P ⇒ P e Q ⇒ Q
    207. 10 ˆ ´ SEMANTICA AXIOMATICA 207 Explica¸oes: c˜ {P [x → A[[a]]]} x := a {P } ex: x := x + 1 (a ´ x + 1) e P ´ x = 5. e e {(x = 5)[x → A[[x + 1]]]} x := x + 1 {x = 5} {A[[x + 1]] = 5} x := x + 1 {x = 5} {x + 1 = 5} x := x + 1 {x = 5} {x = 4} x := x + 1 {x = 5}
    208. 10 ˆ ´ SEMANTICA AXIOMATICA 208 {B[[b]] ∧ P } S {P } {P } while b do S {¬B[[b]] ∧ P } • P ´ o invariante do la¸o; e c • Claramente o predicado b ´ verdadeiro e imediatamente antes de S e falso ao final do la¸o. c
    209. 10 ˆ ´ SEMANTICA AXIOMATICA 209 {P } S {Q } se P ⇒ P e Q ⇒ Q {P } S {Q} Esta regra se chama regra da consequˆncia e significa que e podemos fortalecer a precondi¸ao P e enfraquecer a c˜ p´s-condi¸˜o Q . o ca
    210. 10 ˆ ´ SEMANTICA AXIOMATICA 210 A tabela mostrada especifica um sistema formal de inferˆncia para determinar provas de propriedades: e P {P } S {Q}
    211. 10 ˆ ´ SEMANTICA AXIOMATICA 211 ex: {x = n} y:=1; while ¬(x = 1) do (y:=x ∗ y; x:=x − 1) {y = n! ∧ n > 0} e usamos y = n! ∧ n > 0 para representar o predicado P onde P s = (s y = (s n)! ∧ s n > 0).
    212. 10 ˆ ´ SEMANTICA AXIOMATICA 212 O invariante do la¸o while ´ IN V : c e IN V s = (s x > 0 implica ((s y)∗(s x)! = (s n)! e s n ≥ s x))
    213. 10 ˆ ´ SEMANTICA AXIOMATICA 213 Usando [assP ]: P {IN V [x → x − 1]} x:=x − 1 {IN V } De forma similar: P {(IN V [x → x−1])[y → y∗x]} y:=y∗x {IN V [x → x−1]} Usando [compP ]: P {(IN V [x → x−1])[y → y∗x]} y:=y∗x; x:=x−1 {IN V }
    214. 10 ˆ ´ SEMANTICA AXIOMATICA 214 Sabemos que (¬(x = 1) ∧ IN V ) ⇒ (IN V [x → x − 1])[y → y ∗ x]. Usando [consP ]: P {¬(x = 1) ∧ IN V } y:=y ∗ x; x:=x − 1 {IN V } Usando [whileP ]: P {IN V } while ¬(x = 1) do (y:=x ∗ y; x:=x − 1) {¬(¬(x = 1)) ∧ IN V }
    215. 10 ˆ ´ SEMANTICA AXIOMATICA 215 Sabemos que ¬(¬(x = 1)) ∧ IN V ⇒ y = n! ∧ n > 0 e aplicando [consP ]: P {IN V } while ¬(x = 1) do (y:=x ∗ y; x:=x − 1) {y = n! ∧ n > 0}
    216. 10 ˆ ´ SEMANTICA AXIOMATICA 216 Aplicando [assP ] ao comando y:=1: P {IN V [y → 1]} y:=1 {IN V } Usando x = n ⇒ IN V [y → 1] em [consP ] obtemos: P {x = n} y:=1 {IN V }
    217. 10 ˆ ´ SEMANTICA AXIOMATICA 217 Finalmente, usando [compP ] obtemos: P {x = n} y:=1; while ¬(x = 1) do (y:=x ∗ y; x:=x − 1) {y = n! ∧ n > 0}
    218. 10 ˆ ´ SEMANTICA AXIOMATICA 218 Exerc´ıcio: Use a semˆntica axiom´tica para verificar a a a corre¸ao parcial do programa c˜ {x = a ∧ y = b} z:=0; while y ≤ x do (z:=z + 1; x:=x − y) {z = (a div b) ∧ x = (a mod b) ∧ a > 0 ∧ b > 0}
    219. 10 ˆ ´ SEMANTICA AXIOMATICA 219 10.3 Corre¸˜o e Completude do Sistema ca Formal Teorema 12 Para toda asser¸˜o de corre¸˜o parcial ca ca {P } S {Q} temos |=P {P } S {Q} se e somente se P {P } S {Q}.
    220. 10 ˆ ´ SEMANTICA AXIOMATICA 220 10.4 Asser¸oes para Corre¸˜o Total c˜ ca A f´rmula {P } S {⇓ Q} significa: o 1. se a precondi¸˜o P ´ v´lida ca e a 2. ent˜o S garantidamente p´ra (representado pelo a a s´ ımbolo ⇓) 3. e o estado final satisfaz a p´s-condi¸˜o Q. o ca
    221. 10 ˆ ´ SEMANTICA AXIOMATICA 221 [asst ] {P [x → A[[a]]]} x:=a {⇓ P } [skipt ] {P } skip {⇓ P } {P } S1 {⇓Q}, {Q} S2 {⇓R} [compt ] {P } S1 ;S2 {⇓R} {B[[b]]∧P } S1 {⇓Q}, {¬B[[b]]∧P } S2 {⇓Q} [if t ] {P } if b then S1 else S2 {⇓Q} {P (z+1)} S {⇓P (z)} [whilet ] {∃zP (z)} while b do S {⇓P (0)} onde P (z + 1) ⇒ B[[b]], P (0) ⇒ ¬B[[b]] e z ∈ N, z ≥ 0 {P } S {⇓Q } [const ] {P } S {⇓Q} onde P ⇒ P e Q ⇒ Q
    222. 10 ˆ ´ SEMANTICA AXIOMATICA 222 Observa¸˜o: Na regra [whilet ] n´s usamos uma fam´ ca o ılia parametrizada de predicados P (z) para o invariante do la¸o. z indica o n´mero de voltas do la¸o que ainda c u c faltam. Isto significa que P (0) implica que b ´ falso. e

    + Carlos CampaniCarlos Campani, 4 months ago

    custom

    354 views, 0 favs, 0 embeds more stats

    Lâminas para um curso de 1 semestre de Semântica more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 354
      • 354 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories