Semântica Formal

4,855
-1

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
4,855
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
66
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Semântica Formal

  1. 1. 1 Semˆntica Formal a Carlos A. P. Campani 22 de julho de 2005
  2. 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. 3 S´ mula u 1. Introdu¸ao c˜ 2. Abordagens de semˆntica formal a 3. Linguagem exemplo While 4. Sintaxe abstrata
  4. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 14. 3 LINGUAGEM EXEMPLO WHILE 14 3 Linguagem Exemplo While n ∈ Num x ∈ Var a ∈ Aexp b ∈ Bexp S ∈ Stm
  15. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 34. 6 ˆ ˜ SEMANTICA DE EXPRESSOES 34 6.4 Express˜es booleanas o B : Bexp → (State → T) T = {tt, ff }
  35. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 50. 8 ˆ SEMANTICA OPERACIONAL 50 Como construir uma ´rvore de deriva¸˜o? a ca Resposta: da raiz para as folhas.
  51. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 70. 8 ˆ SEMANTICA OPERACIONAL 70 Teorema 2 A semˆntica natural ´ determin´ a e ıstica.
  71. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 91. 8 ˆ SEMANTICA OPERACIONAL 91 Teorema 3 A semˆntica operacional estruturada ´ a e determin´ ıstica.
  92. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 114. 9 ˆ SEMANTICA DENOTACIONAL 114 Exerc´ ıcio: Determine o funcional F associado ao comando: while ¬(x = 0) do x:=x − 1
  115. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 131. 9 ˆ SEMANTICA DENOTACIONAL 131 g 1 1 a 2 b 3 c g 2 1 a 2 b 3 c
  132. 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. 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. 134. 9 ˆ SEMANTICA DENOTACIONAL 134 Diagrama de Hasse: g1 e } ee }} ee }}} ee }} e g2 e g4 ee } ee }}} ee }} e }} g3
  135. 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. 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. 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. 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. 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. 140. 9 ˆ SEMANTICA DENOTACIONAL 140 1 aa ÑÑ aa ÑÑ aa ÑÑÑ a 2 aa 3 aa aa ÑÑÑ aa aa ÑÑ aa a ÑÑ a 4 5
  141. 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. 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. 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. 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. 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. 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. 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. 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. 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. 150. 9 ˆ SEMANTICA DENOTACIONAL 150 Exerc´ıcio: Mostre que se Y tem um supremo, ent˜o ele ´ a e unico. ´
  151. 151. 9 ˆ SEMANTICA DENOTACIONAL 151 Nota¸ao: o (´nico) supremo de Y ´ denotado por c˜ u e Y.
  152. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 166. 9 ˆ SEMANTICA DENOTACIONAL 166 Prova: Se Y = ∅ o enunciado ´ trivialmente v´lido porque e a {f (d)|d ∈ ∅} f (⊥) ∅ f (⊥) ⊥ f (⊥)
  167. 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. 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. 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. 170. 9 ˆ SEMANTICA DENOTACIONAL 170 Se vale tamb´m ⊥ = f (⊥) ent˜o dizemos que f ´ estrita. e a e
  171. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×