Este documento apresenta os principais conceitos e abordagens da semântica formal. Resume os tópicos da linguagem exemplo While, sintaxe abstrata, revisão de provas de teoremas e semântica de expressões. Fornece uma introdução geral aos fundamentos da semântica formal e suas aplicações na especificação do significado de linguagens de programação.
Esta apresentação levanta alguns pontos através dos quais se pode introduzir o conceito de intertextualidade, tendo em vista o aluno do Ensino Médio e do Pré-vestibular. Para tanto são apresentadas algumas formas e modelos diálogos intertextuais, a partir das concepções de Bakhtin, Afonso Romano de Sant'anna, Maruschi e outros.
Slides relativos à discussão sobre Funcionalismo baseada na leitura do texto "Funcionalismo" de Angélica Furtado da Cunha no livro Manual de Linguística de Mário Eduardo Martelotta.
Esta apresentação levanta alguns pontos através dos quais se pode introduzir o conceito de intertextualidade, tendo em vista o aluno do Ensino Médio e do Pré-vestibular. Para tanto são apresentadas algumas formas e modelos diálogos intertextuais, a partir das concepções de Bakhtin, Afonso Romano de Sant'anna, Maruschi e outros.
Slides relativos à discussão sobre Funcionalismo baseada na leitura do texto "Funcionalismo" de Angélica Furtado da Cunha no livro Manual de Linguística de Mário Eduardo Martelotta.
Mostra como surgiu a linguagem C, uma das mais importantes linguagens já criadas, seus criadores, sua estrutura, principais comandos e aplicações básicas. Aborda conceitos como variáveis, constantes e operadores em C.
Há pouco mais de um ano, o time de projeto da C# 7 na Microsoft está planejando, debatendo, experimentando e testando as ideias dos próximos recursos a serem incorporados na próxima versão da linguagem. A palestra tem como objetivo explorar o que esperar de um futuro próximo da linguagem.
Cartilha de R para Estatística e Data Science.pdfEdkallenn Lima
R é uma linguagem de programação estatística que vem passando por diversas evoluções e se tornando cada vez mais uma linguagem de amplos objetivos.
R é também um conjunto de pacotes e ferramentas para computação estatística, munido de funções que facilitam sua utilização, desde a criação de simples rotinas até análises de dados complexas, com visualizações bem acabadas.
Esta cartilha é uma introdução de R e de sua linguagem.
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
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 }
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
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.
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
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