Nps54.tmp

481 views
440 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
481
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Nps54.tmp

  1. 1. 1 Semantiky programovacıch jazyku ´ ´ ˚ Doporuc ´ literatura ˇena • Glynn Winskel: The Formal Semantics of Programming Languages • Matthew Hennesy: The Semantics of Programming Languages • PDF a PS soubor teto prezentace je dostupny na ´ ´ http://www.fi.muni.cz/usr/kucera/teach.html
  2. 2. 2 Definice programovacıho jazyka ´ • Syntaxe definuje „spravne utvorene“ programy (akceptovane prekladac ´ ˇ ˇ ´ ´ ˇ ˇem). lexikalnı jednotky (klıc ´ slova, identifikatory, konstanty, operatory, . . . ) ´ ´ ´ ˇova ´ ´ frazova struktura (urc ´ ´ ˇuje jake posloupnosti lexikalnıch jednotek jsou „pr´pustne“ ´ ´ ´ ˇı ´
  3. 3. 2 Definice programovacıho jazyka ´ • Syntaxe definuje „spravne utvorene“ programy (akceptovane prekladac ´ ˇ ˇ ´ ´ ˇ ˇem). lexikalnı jednotky (klıc ´ slova, identifikatory, konstanty, operatory, . . . ) ´ ´ ´ ˇova ´ ´ frazova struktura (urc ´ ´ ˇuje jake posloupnosti lexikalnıch jednotek jsou „pr´pustne“ ´ ´ ´ ˇı ´ • Semantika popisuje chovanı programu (co program „dela“) ´ ´ ´ ˇ ´ neformalnı (uc ´ ´ ˇebnice programovacıch jazyku) ´ ˚ formalnı („matematicka“) ´ ´ ´
  4. 4. 3 ´ ˇel Uc a pouzitelnost formalnı semantiky ˇ ´ ´ ´ • Korektnost implementace prekladac (co musı splnovat, aby byl „spravny“?) ˇ ˇ ´ ˇ ´ ´ optimalizator (jake upravy kodu jsou „pr´pustne“?) ´ ´ ´ ´ ˇı ´
  5. 5. 3 ´ ˇel Uc a pouzitelnost formalnı semantiky ˇ ´ ´ ´ • Korektnost implementace prekladac (co musı splnovat, aby byl „spravny“?) ˇ ˇ ´ ˇ ´ ´ optimalizator (jake upravy kodu jsou „pr´pustne“?) ´ ´ ´ ´ ˇı ´ • Verifikace programu ˚ vlastnosti programu (jak je vyjadrit, jak dokazat ze dany program ma danou vlastnost?) ˚ ´ ˇ ´ ˇ ´ ´ ekvivalence programu (co znamena, ze se dva programy „chovajı stejne“?) ˚ ´ ˇ ´ ˇ systemy, ktere jsou paralelnı, distribuovane, pracujı s realnym c ´ ´ ´ ´ ´ ´ ´ ˇasem, nebo jsou r´zene ˇı ´ udalostmi, nelze „ladit“! ´ X := X + 1 X := X + 1
  6. 6. 3 ´ ˇel Uc a pouzitelnost formalnı semantiky ˇ ´ ´ ´ • Korektnost implementace prekladac (co musı splnovat, aby byl „spravny“?) ˇ ˇ ´ ˇ ´ ´ optimalizator (jake upravy kodu jsou „pr´pustne“?) ´ ´ ´ ´ ˇı ´ • Verifikace programu ˚ vlastnosti programu (jak je vyjadrit, jak dokazat ze dany program ma danou vlastnost?) ˚ ´ ˇ ´ ˇ ´ ´ ekvivalence programu (co znamena, ze se dva programy „chovajı stejne“?) ˚ ´ ˇ ´ ˇ systemy, ktere jsou paralelnı, distribuovane, pracujı s realnym c ´ ´ ´ ´ ´ ´ ´ ˇasem, nebo jsou r´zene ˇı ´ udalostmi, nelze „ladit“! ´ X := X + 1 X := X + 1 • Navrh programovacıch jazyku ´ ´ ˚
  7. 7. 4 Zakladnı „styly“ semantik programovacıch jazyku ´ ´ ´ ´ ˚ • Operac ´ semantika definuje jak se program provadı ˇnı ´ ´ ´
  8. 8. 4 Zakladnı „styly“ semantik programovacıch jazyku ´ ´ ´ ´ ˚ • Operac ´ semantika definuje jak se program provadı ˇnı ´ ´ ´ • Denotac ´ semantika definuje co program poc´ta ˇnı ´ ˇı ´
  9. 9. 4 Zakladnı „styly“ semantik programovacıch jazyku ´ ´ ´ ´ ˚ • Operac ´ semantika definuje jak se program provadı ˇnı ´ ´ ´ • Denotac ´ semantika definuje co program poc´ta ˇnı ´ ˇı ´ • Axiomaticka semantika umoznuje odvodit vlastnosti programu ´ ´ ˇˇ
  10. 10. 5 Abstraktnı syntax programovacıch jazyku ´ ´ ˚ • Abstraktnı syntakticka rovnice: rovnice tvaru ´ ´ X ::= at1 | · · · | atn | op1(α(1,1), . . . , α(1,n1)) | · · · | opm(α(m,1), . . . , α(m,nm)) kde at1, · · · , atn jsou atomy. op1, · · · , opm jsou operace (ktere mohou mıt i nulovou aritu – pak jde o konstanty). ´ ´ α(i,j) je bud’ X nebo atom (opakovane vyskyty jsou rozliseny indexy). ´ ´ ˇ Pro kazdy atom ati je dana jeho syntakticka domena (mnozina) Ai. ˇ ´ ´ ´ ´ ˇ
  11. 11. 5 Abstraktnı syntax programovacıch jazyku ´ ´ ˚ • Abstraktnı syntakticka rovnice: rovnice tvaru ´ ´ X ::= at1 | · · · | atn | op1(α(1,1), . . . , α(1,n1)) | · · · | opm(α(m,1), . . . , α(m,nm)) kde at1, · · · , atn jsou atomy. op1, · · · , opm jsou operace (ktere mohou mıt i nulovou aritu – pak jde o konstanty). ´ ´ α(i,j) je bud’ X nebo atom (opakovane vyskyty jsou rozliseny indexy). ´ ´ ˇ Pro kazdy atom ati je dana jeho syntakticka domena (mnozina) Ai. ˇ ´ ´ ´ ´ ˇ • Pr´klad: ˇı X ::= num | ω | X0+X1 | X0−X1 Syntaktickou domenou atomu num jsou dekadicke zapisy celych c´sel, ω je konstanta. ´ ´ ´ ´ ˇı
  12. 12. 6 Syntakticke stromy ´ • Uvazme abstraktnı syntaktickou rovnici ˇ ´ X ::= at1 | · · · | atn | op1(α(1,1), . . . , α(1,n1)) | · · · | opm(α(m,1), . . . , α(m,nm)) • Mnozina syntaktickych stromu pro X je definovana induktivne: ˇ ´ ˚ ´ ˇ Je-li a prvek syntakticke domeny nektereho z atomu at1, · · · , atn, je strom s jedinym uzlem ´ ´ ˇ ´ ˚ ´ a syntakticky strom pro X vysky 0. ´ ´ˇ Je-li op konstanta, je strom s jedinym uzlem op syntakticky strom pro X vysky 0. ´ ´ ´ˇ Je-li op operace arity n ≥ 1 s argumenty α1, · · · , αn, je strom s korenem op a n naslednıky, ˇ ´ ´ kde i-ty naslednık je bud’ ´ ´ ´ ∗ koren syntaktickeho stromu pro X, je-li αi = X, ˇ ´ ∗ prvek syntakticke domeny atomu at, je-li αi = at. ´ ´ take syntaktickym stromem pro X vysky k + 1, kde k je maximum z vysek naslednıku korene ´ ´ ´ˇ ´ˇ ´ ´ ˚ ˇ (prvky syntaktickych domen atomu majı vysku 0). ´ ´ ˚ ´ ´ˇ
  13. 13. 6 Syntakticke stromy ´ • Uvazme abstraktnı syntaktickou rovnici ˇ ´ X ::= at1 | · · · | atn | op1(α(1,1), . . . , α(1,n1)) | · · · | opm(α(m,1), . . . , α(m,nm)) • Mnozina syntaktickych stromu pro X je definovana induktivne: ˇ ´ ˚ ´ ˇ Je-li a prvek syntakticke domeny nektereho z atomu at1, · · · , atn, je strom s jedinym uzlem ´ ´ ˇ ´ ˚ ´ a syntakticky strom pro X vysky 0. ´ ´ˇ Je-li op konstanta, je strom s jedinym uzlem op syntakticky strom pro X vysky 0. ´ ´ ´ˇ Je-li op operace arity n ≥ 1 s argumenty α1, · · · , αn, je strom s korenem op a n naslednıky, ˇ ´ ´ kde i-ty naslednık je bud’ ´ ´ ´ ∗ koren syntaktickeho stromu pro X, je-li αi = X, ˇ ´ ∗ prvek syntakticke domeny atomu at, je-li αi = at. ´ ´ take syntaktickym stromem pro X vysky k + 1, kde k je maximum z vysek naslednıku korene ´ ´ ´ˇ ´ˇ ´ ´ ˚ ˇ (prvky syntaktickych domen atomu majı vysku 0). ´ ´ ˚ ´ ´ˇ • U syntaktickych stromu rozlisujeme poradı naslednıku. ´ ˚ ˇ ˇ ´ ´ ´ ˚
  14. 14. 6 Syntakticke stromy ´ • Uvazme abstraktnı syntaktickou rovnici ˇ ´ X ::= at1 | · · · | atn | op1(α(1,1), . . . , α(1,n1)) | · · · | opm(α(m,1), . . . , α(m,nm)) • Mnozina syntaktickych stromu pro X je definovana induktivne: ˇ ´ ˚ ´ ˇ Je-li a prvek syntakticke domeny nektereho z atomu at1, · · · , atn, je strom s jedinym uzlem ´ ´ ˇ ´ ˚ ´ a syntakticky strom pro X vysky 0. ´ ´ˇ Je-li op konstanta, je strom s jedinym uzlem op syntakticky strom pro X vysky 0. ´ ´ ´ˇ Je-li op operace arity n ≥ 1 s argumenty α1, · · · , αn, je strom s korenem op a n naslednıky, ˇ ´ ´ kde i-ty naslednık je bud’ ´ ´ ´ ∗ koren syntaktickeho stromu pro X, je-li αi = X, ˇ ´ ∗ prvek syntakticke domeny atomu at, je-li αi = at. ´ ´ take syntaktickym stromem pro X vysky k + 1, kde k je maximum z vysek naslednıku korene ´ ´ ´ˇ ´ˇ ´ ´ ˚ ˇ (prvky syntaktickych domen atomu majı vysku 0). ´ ´ ˚ ´ ´ˇ • U syntaktickych stromu rozlisujeme poradı naslednıku. ´ ˚ ˇ ˇ ´ ´ ´ ˚ • Je mozne definovat i systemy syntaktickych rovnic, kde mnozina syntaktickych stromu urc ´ ˇ ´ ´ ´ ˇ ´ ˚ ˇena jednou rovnicı definuje syntaktickou domenu atomu jine rovnice. ´ ´ ´
  15. 15. 7 Pr´klad definice abstraktnı syntaxe ˇı ´ • X ::= num | X0+X1 | X0−X1 Syntaktickou domenou atomu num jsou dekadicke zapisy celych c´sel. ´ ´ ´ ´ ˇı
  16. 16. 7 Pr´klad definice abstraktnı syntaxe ˇı ´ • X ::= num | X0+X1 | X0−X1 Syntaktickou domenou atomu num jsou dekadicke zapisy celych c´sel. ´ ´ ´ ´ ˇı • Y ::= color(X0, X1, X2) | Y0#Y1 | Y0&Y1 Syntaktickou domenou atomu X je mnozina vsech syntaktickych stromu pro X. ´ ˇ ˇ ´ ˚
  17. 17. 7 Pr´klad definice abstraktnı syntaxe ˇı ´ • X ::= num | X0+X1 | X0−X1 Syntaktickou domenou atomu num jsou dekadicke zapisy celych c´sel. ´ ´ ´ ´ ˇı • Y ::= color(X0, X1, X2) | Y0#Y1 | Y0&Y1 Syntaktickou domenou atomu X je mnozina vsech syntaktickych stromu pro X. ´ ˇ ˇ ´ ˚ + & − # color 8 1 4 color color 1 2 4 2 + 4 3 + 7 − 3 8 8 1 4
  18. 18. 8 Konkretnı syntax programovacıch jazyku ´ ´ ´ ˚ Urc ˇuje, jak jednoznac ˇ zapisovat syntakticke stromy jako retezce symbolu. ˇne ´ ˇ ˇ ˚
  19. 19. 8 Konkretnı syntax programovacıch jazyku ´ ´ ´ ˚ Urc ˇuje, jak jednoznac ˇ zapisovat syntakticke stromy jako retezce symbolu. ˇne ´ ˇ ˇ ˚ • Aritmeticke vyrazy ´ ´ + − 8 1 4 Zapis 1 − 4 + 8 nenı jednoznac ´. ´ ´ ˇny
  20. 20. 8 Konkretnı syntax programovacıch jazyku ´ ´ ´ ˚ Urc ˇuje, jak jednoznac ˇ zapisovat syntakticke stromy jako retezce symbolu. ˇne ´ ˇ ˇ ˚ • Aritmeticke vyrazy ´ ´ + − 8 1 4 Zapis 1 − 4 + 8 nenı jednoznac ´. ´ ´ ˇny prefixova notace: ´ + − 148
  21. 21. 8 Konkretnı syntax programovacıch jazyku ´ ´ ´ ˚ Urc ˇuje, jak jednoznac ˇ zapisovat syntakticke stromy jako retezce symbolu. ˇne ´ ˇ ˇ ˚ • Aritmeticke vyrazy ´ ´ + − 8 1 4 Zapis 1 − 4 + 8 nenı jednoznac ´. ´ ´ ˇny prefixova notace: ´ + − 148 postfixova notace: ´ 841 − +
  22. 22. 8 Konkretnı syntax programovacıch jazyku ´ ´ ´ ˚ Urc ˇuje, jak jednoznac ˇ zapisovat syntakticke stromy jako retezce symbolu. ˇne ´ ˇ ˇ ˚ • Aritmeticke vyrazy ´ ´ + − 8 1 4 Zapis 1 − 4 + 8 nenı jednoznac ´. ´ ´ ˇny prefixova notace: ´ + − 148 postfixova notace: ´ 841 − + zavorky: ´ (1 − 4)+8
  23. 23. 8 Konkretnı syntax programovacıch jazyku ´ ´ ´ ˚ Urc ˇuje, jak jednoznac ˇ zapisovat syntakticke stromy jako retezce symbolu. ˇne ´ ˇ ˇ ˚ • Aritmeticke vyrazy ´ ´ + − 8 1 4 Zapis 1 − 4 + 8 nenı jednoznac ´. ´ ´ ˇny prefixova notace: ´ + − 148 postfixova notace: ´ 841 − + zavorky: ´ (1 − 4)+8 • Volitelna else klauzule pr´kazu if − then − else ´ ˇı
  24. 24. 8 Konkretnı syntax programovacıch jazyku ´ ´ ´ ˚ Urc ˇuje, jak jednoznac ˇ zapisovat syntakticke stromy jako retezce symbolu. ˇne ´ ˇ ˇ ˚ • Aritmeticke vyrazy ´ ´ + − 8 1 4 Zapis 1 − 4 + 8 nenı jednoznac ´. ´ ´ ˇny prefixova notace: ´ + − 148 postfixova notace: ´ 841 − + zavorky: ´ (1 − 4)+8 • Volitelna else klauzule pr´kazu if − then − else ´ ˇı zavorky ´
  25. 25. 8 Konkretnı syntax programovacıch jazyku ´ ´ ´ ˚ Urc ˇuje, jak jednoznac ˇ zapisovat syntakticke stromy jako retezce symbolu. ˇne ´ ˇ ˇ ˚ • Aritmeticke vyrazy ´ ´ + − 8 1 4 Zapis 1 − 4 + 8 nenı jednoznac ´. ´ ´ ˇny prefixova notace: ´ + − 148 postfixova notace: ´ 841 − + zavorky: ´ (1 − 4)+8 • Volitelna else klauzule pr´kazu if − then − else ´ ˇı zavorky ´ klıc ´ slovo fi ´ ˇove
  26. 26. 9 Odvozovacı systemy, dukazy a dokazatelna tvrzenı ´ ´ ˚ ´ ´ • Odvozovacı system je dan konec ´ ´ ´ ˇnou mnozinou schemat axiomu a odvozovacıch pravidel tvaru ˇ ´ ˚ ´ predpoklad1 · · · predpokladn ˇ ˇ podmınky ´ zaver ´ ˇ • Dukaz je konec ´ strom, jehoz listy jsou instance axiomu a vnitrnı uzly instance pravidel. ˚ ˇny ˇ ˚ ˇ ´ • Tvrzenı α je dokazatelne, jestlize existuje dukaz s korenem α. ´ ´ ˇ ˚ ˇ • Dukazove stromy je zvykem psat „korenem dolu“ (tj. „obracene“ nez syntakticke stromy). ˚ ´ ´ ˇ ˚ ´ ˇ ˇ ´
  27. 27. 10 Odvozovacı system vyrokove logiky ´ ´ ´ ´
  28. 28. 10 Odvozovacı system vyrokove logiky ´ ´ ´ ´ • Abstraktnı syntax formulı vyrokove logiky: ´ ´ ´ ´ ϕ ::= vyrok | ϕ0→ϕ1 | ¬ϕ ´ ´ ´ ´ ˇetna mnozina atomickych vyroku {A, B, C . . .}. kde syntakticka domena atomu vyrok je spoc ´ ˇ ´ ´ ˚
  29. 29. 10 Odvozovacı system vyrokove logiky ´ ´ ´ ´ • Abstraktnı syntax formulı vyrokove logiky: ´ ´ ´ ´ ϕ ::= vyrok | ϕ0→ϕ1 | ¬ϕ ´ ´ ´ ´ ˇetna mnozina atomickych vyroku {A, B, C . . .}. kde syntakticka domena atomu vyrok je spoc ´ ˇ ´ ´ ˚ • Schemata axiomu odvozovacıho systemu vyrokove logiky ´ ˚ ´ ´ ´ ´ ϕ → (ψ → ϕ) (ϕ → (ψ → ξ)) → ((ϕ → ψ) → (ϕ → ξ)) (¬ϕ → ¬ψ) → (ψ → ϕ)
  30. 30. 10 Odvozovacı system vyrokove logiky ´ ´ ´ ´ • Abstraktnı syntax formulı vyrokove logiky: ´ ´ ´ ´ ϕ ::= vyrok | ϕ0→ϕ1 | ¬ϕ ´ ´ ´ ´ ˇetna mnozina atomickych vyroku {A, B, C . . .}. kde syntakticka domena atomu vyrok je spoc ´ ˇ ´ ´ ˚ • Schemata axiomu odvozovacıho systemu vyrokove logiky ´ ˚ ´ ´ ´ ´ ϕ → (ψ → ϕ) (ϕ → (ψ → ξ)) → ((ϕ → ψ) → (ϕ → ξ)) (¬ϕ → ¬ψ) → (ψ → ϕ) • Odvozovacı pravidlo modus ponens ´ ϕ ϕ→ψ ψ
  31. 31. 10 Odvozovacı system vyrokove logiky ´ ´ ´ ´ • Abstraktnı syntax formulı vyrokove logiky: ´ ´ ´ ´ ϕ ::= vyrok | ϕ0→ϕ1 | ¬ϕ ´ ´ ´ ´ ˇetna mnozina atomickych vyroku {A, B, C . . .}. kde syntakticka domena atomu vyrok je spoc ´ ˇ ´ ´ ˚ • Schemata axiomu odvozovacıho systemu vyrokove logiky ´ ˚ ´ ´ ´ ´ ϕ → (ψ → ϕ) (ϕ → (ψ → ξ)) → ((ϕ → ψ) → (ϕ → ξ)) (¬ϕ → ¬ψ) → (ψ → ϕ) • Odvozovacı pravidlo modus ponens ´ ϕ ϕ→ψ ψ • Pr´klad: A → A je dokazatelna formule. ˇı ´ A → ((A → A) → A) (A → ((A → A) → A)) → ((A → (A → A)) → (A → A)) A → (A → A) (A → (A → A)) → (A → A) A→A
  32. 32. 11 Indukce k vysce stromu ´ˇ • Bud’ M (nejaka) mnozina stromu konec ´ vysky a V (nejaka) vlastnost, ktera je pro kazdy ˇ ´ ˇ ˚ ˇne ´ ˇ ˇ ´ ´ ˇ ´ strom T ∈ M bud’ pravdiva nebo nepravdiva. ´ ´
  33. 33. 11 Indukce k vysce stromu ´ˇ • Bud’ M (nejaka) mnozina stromu konec ´ vysky a V (nejaka) vlastnost, ktera je pro kazdy ˇ ´ ˇ ˚ ˇne ´ ˇ ˇ ´ ´ ˇ ´ strom T ∈ M bud’ pravdiva nebo nepravdiva. ´ ´ • Tvrzenı o indukci k vysce stromu: Necht’ je splnena nasledujıcı podmınka: ´ ´ˇ ˇ ´ ´ ´ ´ Pro kazde n ∈ N0: ˇ ´ Je-li V je pravdiva pro kazde T ∈ M vysky mens´ nez n, pak V je pravdiva pro kazde ´ ˇ ´ ´ˇ ˇı ˇ ´ ˇ ´ T ∈ M vysky prave n. ´ˇ ´ ˇ Pak V je pravdiva pro vsechny stromy z M. ´ ˇ
  34. 34. 11 Indukce k vysce stromu ´ˇ • Bud’ M (nejaka) mnozina stromu konec ´ vysky a V (nejaka) vlastnost, ktera je pro kazdy ˇ ´ ˇ ˚ ˇne ´ ˇ ˇ ´ ´ ˇ ´ strom T ∈ M bud’ pravdiva nebo nepravdiva. ´ ´ • Tvrzenı o indukci k vysce stromu: Necht’ je splnena nasledujıcı podmınka: ´ ´ˇ ˇ ´ ´ ´ ´ Pro kazde n ∈ N0: ˇ ´ Je-li V je pravdiva pro kazde T ∈ M vysky mens´ nez n, pak V je pravdiva pro kazde ´ ˇ ´ ´ˇ ˇı ˇ ´ ˇ ´ T ∈ M vysky prave n. ´ˇ ´ ˇ Pak V je pravdiva pro vsechny stromy z M. ´ ˇ • Strukturalnı indukce: indukce k vysce (syntaktickeho) stromu, kde M je mnozina vsech ´ ´ ´ˇ ´ ˇ ˇ syntaktickych stromu urc ´ danou abstraktnı syntaktickou rovnicı. ´ ˚ ˇena ´ ´
  35. 35. 11 Indukce k vysce stromu ´ˇ • Bud’ M (nejaka) mnozina stromu konec ´ vysky a V (nejaka) vlastnost, ktera je pro kazdy ˇ ´ ˇ ˚ ˇne ´ ˇ ˇ ´ ´ ˇ ´ strom T ∈ M bud’ pravdiva nebo nepravdiva. ´ ´ • Tvrzenı o indukci k vysce stromu: Necht’ je splnena nasledujıcı podmınka: ´ ´ˇ ˇ ´ ´ ´ ´ Pro kazde n ∈ N0: ˇ ´ Je-li V je pravdiva pro kazde T ∈ M vysky mens´ nez n, pak V je pravdiva pro kazde ´ ˇ ´ ´ˇ ˇı ˇ ´ ˇ ´ T ∈ M vysky prave n. ´ˇ ´ ˇ Pak V je pravdiva pro vsechny stromy z M. ´ ˇ • Strukturalnı indukce: indukce k vysce (syntaktickeho) stromu, kde M je mnozina vsech ´ ´ ´ˇ ´ ˇ ˇ syntaktickych stromu urc ´ danou abstraktnı syntaktickou rovnicı. ´ ˚ ˇena ´ ´ • Indukce k vysce odvozenı: indukce k vysce (dukazoveho) stromu, kde M je mnozina vsech ´ˇ ´ ´ˇ ˚ ´ ˇ ˇ dukazu daneho odvozovacıho systemu. ˚ ˚ ´ ´ ´
  36. 36. 12 Abstraktnı syntaxe jazyka IMP ´
  37. 37. 12 Abstraktnı syntaxe jazyka IMP ´ • Zakladnı syntakticke domeny ´ ´ ´ ´ Num = {0, 1, −1, 2, −2, . . .} Bool = {tt, ff} Var = {A, B, C, . . .}
  38. 38. 12 Abstraktnı syntaxe jazyka IMP ´ • Zakladnı syntakticke domeny ´ ´ ´ ´ Num = {0, 1, −1, 2, −2, . . .} Bool = {tt, ff} Var = {A, B, C, . . .} • Aritmeticke vyrazy Aexp ´ ´ a ::= n | X | a0+a1 | a0−a1 | a0∗a1 kde n ∈ Num a X ∈ Var.
  39. 39. 12 Abstraktnı syntaxe jazyka IMP ´ • Zakladnı syntakticke domeny ´ ´ ´ ´ Num = {0, 1, −1, 2, −2, . . .} Bool = {tt, ff} Var = {A, B, C, . . .} • Aritmeticke vyrazy Aexp ´ ´ a ::= n | X | a0+a1 | a0−a1 | a0∗a1 kde n ∈ Num a X ∈ Var. • Pravdivostnı vyrazy Bexp ´ ´ b ::= t | a0=a1 | a0≤a1 | not b | b0 and b1 | b0 or b1 kde t ∈ Bool a a0, a1 ∈ Aexp.
  40. 40. 12 Abstraktnı syntaxe jazyka IMP ´ • Zakladnı syntakticke domeny ´ ´ ´ ´ Num = {0, 1, −1, 2, −2, . . .} Bool = {tt, ff} Var = {A, B, C, . . .} • Aritmeticke vyrazy Aexp ´ ´ a ::= n | X | a0+a1 | a0−a1 | a0∗a1 kde n ∈ Num a X ∈ Var. • Pravdivostnı vyrazy Bexp ´ ´ b ::= t | a0=a1 | a0≤a1 | not b | b0 and b1 | b0 or b1 kde t ∈ Bool a a0, a1 ∈ Aexp. • Pr´kazy Com ˇı c ::= skip | X := a | c0;c1 | if b then c0 else c1 | while b do c kde X ∈ Var, a ∈ Aexp a b ∈ Bexp.
  41. 41. 13 Operac ´ semantika ˇnı ´ • Programum v danem jazyce je prirazen prechodovy system, ktery popisuje vypoc ´ procesy ˚ ´ ˇˇ ˇ ´ ´ ´ ´ ˇetnı jednotlivych programu. ´ ˚ • Prechodovy system: trojice (S, A, →), kde ˇ ´ ´ S je mnozina konfiguracı (ne nutne konec ´ !) ˇ ´ ˇ ˇna A je mnozina akcı ˇ ´ →⊆S×A×S je prechodova relace ˇ ´
  42. 42. 13 Operac ´ semantika ˇnı ´ • Programum v danem jazyce je prirazen prechodovy system, ktery popisuje vypoc ´ procesy ˚ ´ ˇˇ ˇ ´ ´ ´ ´ ˇetnı jednotlivych programu. ´ ˚ • Prechodovy system: trojice (S, A, →), kde ˇ ´ ´ S je mnozina konfiguracı (ne nutne konec ´ !) ˇ ´ ˇ ˇna A je mnozina akcı ˇ ´ →⊆S×A×S je prechodova relace ˇ ´ • Jednotlive „typy“ operac ´ semantiky se lis´ definicı mnoziny konfiguracı a prechodove relace ´ ˇnı ´ ˇı ´ ˇ ´ ˇ ´ SMC stroj: Stack – Memory – Control stack λ-kalkul SOS: Strukturalnı Operac ´ Semantika ´ ´ ˇnı ´
  43. 43. 14 SOS semantika IMP prvnıho typu („big step“) ´ ´ • Stav je zobrazenı σ : Var → Z, mnozina vsech stavu se znac´ Σ. ´ ˇ ˇ ˚ ˇı • Cılem je definovat prechodovy system, kde ´ ˇ ´ ´ mnozina konfiguracı je Σ, ˇ ´ mnozina akcı je Com, ˇ ´ c prechodova relace odpovıda „vyslednemu efektu“ programu, tj. σ → σ prave kdyz vypoc ˇ ´ ´ ´ ´ ´ ˚ ´ ˇ ˇ ´ ˇet programu c zahajeny ve stavu σ skonc´ a prejde do stavu σ . ´ ´ ˇı ˇ
  44. 44. 14 SOS semantika IMP prvnıho typu („big step“) ´ ´ • Stav je zobrazenı σ : Var → Z, mnozina vsech stavu se znac´ Σ. ´ ˇ ˇ ˚ ˇı • Cılem je definovat prechodovy system, kde ´ ˇ ´ ´ mnozina konfiguracı je Σ, ˇ ´ mnozina akcı je Com, ˇ ´ c prechodova relace odpovıda „vyslednemu efektu“ programu, tj. σ → σ prave kdyz vypoc ˇ ´ ´ ´ ´ ´ ˚ ´ ˇ ˇ ´ ˇet programu c zahajeny ve stavu σ skonc´ a prejde do stavu σ . ´ ´ ˇı ˇ • Za tımto uc ´ ´ ˇelem definujeme odvozovacı systemy pro tri relace: ´ ´ ˇ →A ⊆ Aexp × Σ × Z; prvky zapisujeme ve tvaru a, σ →A n. →B ⊆ Bexp × Σ × T; prvky zapisujeme ve tvaru b, σ →B t. →C ⊆ Com × Σ × Σ; prvky zapisujeme ve tvaru c, σ →C σ . Indexy A, B, C budou obvykle vynechany. ´
  45. 45. 14 SOS semantika IMP prvnıho typu („big step“) ´ ´ • Stav je zobrazenı σ : Var → Z, mnozina vsech stavu se znac´ Σ. ´ ˇ ˇ ˚ ˇı • Cılem je definovat prechodovy system, kde ´ ˇ ´ ´ mnozina konfiguracı je Σ, ˇ ´ mnozina akcı je Com, ˇ ´ c prechodova relace odpovıda „vyslednemu efektu“ programu, tj. σ → σ prave kdyz vypoc ˇ ´ ´ ´ ´ ´ ˚ ´ ˇ ˇ ´ ˇet programu c zahajeny ve stavu σ skonc´ a prejde do stavu σ . ´ ´ ˇı ˇ • Za tımto uc ´ ´ ˇelem definujeme odvozovacı systemy pro tri relace: ´ ´ ˇ →A ⊆ Aexp × Σ × Z; prvky zapisujeme ve tvaru a, σ →A n. →B ⊆ Bexp × Σ × T; prvky zapisujeme ve tvaru b, σ →B t. →C ⊆ Com × Σ × Σ; prvky zapisujeme ve tvaru c, σ →C σ . Indexy A, B, C budou obvykle vynechany. ´ c • Pak jiz lze definovat: σ → σ ˇ ⇐⇒ c, σ → σ
  46. 46. 15 Aritmeticke vyrazy Aexp ´ ´ a, σ → n „aritmeticky vyraz a se ve stavu σ vyhodnotı na n ∈ Z“ ´ ´ ´
  47. 47. 15 Aritmeticke vyrazy Aexp ´ ´ a, σ → n „aritmeticky vyraz a se ve stavu σ vyhodnotı na n ∈ Z“ ´ ´ ´ • n, σ → n
  48. 48. 15 Aritmeticke vyrazy Aexp ´ ´ a, σ → n „aritmeticky vyraz a se ve stavu σ vyhodnotı na n ∈ Z“ ´ ´ ´ • n, σ → n • X, σ → σ(X)
  49. 49. 15 Aritmeticke vyrazy Aexp ´ ´ a, σ → n „aritmeticky vyraz a se ve stavu σ vyhodnotı na n ∈ Z“ ´ ´ ´ • n, σ → n • X, σ → σ(X) a0 , σ → n 0 a1 , σ → n 1 • n = n0 + n1 a0 + a1 , σ → n
  50. 50. 15 Aritmeticke vyrazy Aexp ´ ´ a, σ → n „aritmeticky vyraz a se ve stavu σ vyhodnotı na n ∈ Z“ ´ ´ ´ • n, σ → n • X, σ → σ(X) a0 , σ → n 0 a1 , σ → n 1 • n = n0 + n1 a0 + a1 , σ → n a0 , σ → n 0 a1 , σ → n 1 • n = n0 − n1 a0 − a1 , σ → n a0 , σ → n 0 a1 , σ → n 1 • n = n0 ∗ n1 a0 ∗ a1 , σ → n
  51. 51. 16 Pravdivostnı vyrazy Bexp ´ ´ b, σ → t „pravdivostnı vyraz b se ve stavu σ vyhodnotı na t ∈ T“ ´ ´ ´
  52. 52. 16 Pravdivostnı vyrazy Bexp ´ ´ b, σ → t „pravdivostnı vyraz b se ve stavu σ vyhodnotı na t ∈ T“ ´ ´ ´ • tt, σ → true • ff, σ → false
  53. 53. 16 Pravdivostnı vyrazy Bexp ´ ´ b, σ → t „pravdivostnı vyraz b se ve stavu σ vyhodnotı na t ∈ T“ ´ ´ ´ • tt, σ → true • ff, σ → false a0 , σ → n 0 a1 , σ → n 1 • n0=n1 a0 = a1, σ → true a0 , σ → n 0 a1 , σ → n 1 • n0=n1 a0 = a1, σ → false
  54. 54. 16 Pravdivostnı vyrazy Bexp ´ ´ b, σ → t „pravdivostnı vyraz b se ve stavu σ vyhodnotı na t ∈ T“ ´ ´ ´ • tt, σ → true • ff, σ → false a0 , σ → n 0 a1 , σ → n 1 • n0=n1 a0 = a1, σ → true a0 , σ → n 0 a1 , σ → n 1 • n0=n1 a0 = a1, σ → false a0 , σ → n 0 a1 , σ → n 1 • n0≤n1 a0 ≤ a1, σ → true a0 , σ → n 0 a1 , σ → n 1 • n0>n1 a0 ≤ a1, σ → false
  55. 55. 16 Pravdivostnı vyrazy Bexp ´ ´ b, σ → t „pravdivostnı vyraz b se ve stavu σ vyhodnotı na t ∈ T“ ´ ´ ´ b, σ → false • tt, σ → true • not b, σ → true • ff, σ → false b, σ → true • not b, σ → false a0 , σ → n 0 a1 , σ → n 1 • n0=n1 a0 = a1, σ → true a0 , σ → n 0 a1 , σ → n 1 • n0=n1 a0 = a1, σ → false a0 , σ → n 0 a1 , σ → n 1 • n0≤n1 a0 ≤ a1, σ → true a0 , σ → n 0 a1 , σ → n 1 • n0>n1 a0 ≤ a1, σ → false
  56. 56. 16 Pravdivostnı vyrazy Bexp ´ ´ b, σ → t „pravdivostnı vyraz b se ve stavu σ vyhodnotı na t ∈ T“ ´ ´ ´ b, σ → false • tt, σ → true • not b, σ → true • ff, σ → false b, σ → true • not b, σ → false a0 , σ → n 0 a1 , σ → n 1 • n0=n1 a0 = a1, σ → true b0, σ → t0 b1, σ → t1 • t0=true ∧ t1=true b0 and b1, σ → true a0 , σ → n 0 a1 , σ → n 1 • n0=n1 a0 = a1, σ → false b0, σ → t0 b1, σ → t1 • t0=false ∨ t1=false b0 and b1, σ → false a0 , σ → n 0 a1 , σ → n 1 • n0≤n1 a0 ≤ a1, σ → true a0 , σ → n 0 a1 , σ → n 1 • n0>n1 a0 ≤ a1, σ → false
  57. 57. 16 Pravdivostnı vyrazy Bexp ´ ´ b, σ → t „pravdivostnı vyraz b se ve stavu σ vyhodnotı na t ∈ T“ ´ ´ ´ b, σ → false • tt, σ → true • not b, σ → true • ff, σ → false b, σ → true • not b, σ → false a0 , σ → n 0 a1 , σ → n 1 • n0=n1 a0 = a1, σ → true b0, σ → t0 b1, σ → t1 • t0=true ∧ t1=true b0 and b1, σ → true a0 , σ → n 0 a1 , σ → n 1 • n0=n1 a0 = a1, σ → false b0, σ → t0 b1, σ → t1 • t0=false ∨ t1=false b0 and b1, σ → false a0 , σ → n 0 a1 , σ → n 1 • n0≤n1 a0 ≤ a1, σ → true b0, σ → t0 b1, σ → t1 • t0=true ∨ t1=true b0 or b1, σ → true a0 , σ → n 0 a1 , σ → n 1 • n0>n1 a0 ≤ a1, σ → false b0, σ → t0 b1, σ → t1 • t0=false ∧ t1=false b0 or b1, σ → false
  58. 58. 17 Pr´kazy Com ˇı c, σ → σ „pr´kaz c aktivovany ve stavu σ skonc´ ve stavu σ “ ˇı ´ ˇı
  59. 59. 17 Pr´kazy Com ˇı c, σ → σ „pr´kaz c aktivovany ve stavu σ skonc´ ve stavu σ “ ˇı ´ ˇı • skip, σ → σ
  60. 60. 17 Pr´kazy Com ˇı c, σ → σ „pr´kaz c aktivovany ve stavu σ skonc´ ve stavu σ “ ˇı ´ ˇı • skip, σ → σ a, σ → n • X := a, σ → σ[n/X]
  61. 61. 17 Pr´kazy Com ˇı c, σ → σ „pr´kaz c aktivovany ve stavu σ skonc´ ve stavu σ “ ˇı ´ ˇı • skip, σ → σ a, σ → n • X := a, σ → σ[n/X] c0, σ → σ c1, σ → σ • c0; c1, σ → σ
  62. 62. 17 Pr´kazy Com ˇı c, σ → σ „pr´kaz c aktivovany ve stavu σ skonc´ ve stavu σ “ ˇı ´ ˇı • skip, σ → σ a, σ → n • X := a, σ → σ[n/X] c0, σ → σ c1, σ → σ • c0; c1, σ → σ b, σ → true c0, σ → σ b, σ → false c1, σ → σ • if b then c0 else c1, σ → σ if b then c0 else c1, σ → σ
  63. 63. 17 Pr´kazy Com ˇı c, σ → σ „pr´kaz c aktivovany ve stavu σ skonc´ ve stavu σ “ ˇı ´ ˇı • skip, σ → σ a, σ → n • X := a, σ → σ[n/X] c0, σ → σ c1, σ → σ • c0; c1, σ → σ b, σ → true c0, σ → σ b, σ → false c1, σ → σ • if b then c0 else c1, σ → σ if b then c0 else c1, σ → σ b, σ → false b, σ → true c, σ → σ while b do c, σ →σ • while b do c, σ → σ while b do c, σ → σ
  64. 64. 18 Pr´klad dukazoveho stromu v SOS semantice 1. typu ˇı ˚ ´ ´ Uvazme program while A ≤ 2 do A := A + C ˇ
  65. 65. 18 Pr´klad dukazoveho stromu v SOS semantice 1. typu ˇı ˚ ´ ´ Uvazme program while A ≤ 2 do A := A + C ˇ • Stav σ je definovan takto: σ(A) = 1, σ(C) = 2, a pro A = B = C je σ(B) = 10. Pak ´ while A ≤ 2 do A := A + C, σ → σ[3/A], nebot’ A, σ → 1 C, σ → 2 A, σ[3/A] → 3 2, σ[3/A] → 2 A, σ → 1 2, σ → 2 A + C, σ → 3 A ≤ 2, σ[3/A] → false A ≤ 2, σ → true A := A + C, σ → σ[3/A] while A ≤ 2 do A := A + C, σ[3/A] → σ[3/A] while A ≤ 2 do A := A + C, σ → σ[3/A]
  66. 66. 18 Pr´klad dukazoveho stromu v SOS semantice 1. typu ˇı ˚ ´ ´ Uvazme program while A ≤ 2 do A := A + C ˇ • Stav σ je definovan takto: σ(A) = 1, σ(C) = 2, a pro A = B = C je σ(B) = 10. Pak ´ while A ≤ 2 do A := A + C, σ → σ[3/A], nebot’ A, σ → 1 C, σ → 2 A, σ[3/A] → 3 2, σ[3/A] → 2 A, σ → 1 2, σ → 2 A + C, σ → 3 A ≤ 2, σ[3/A] → false A ≤ 2, σ → true A := A + C, σ → σ[3/A] while A ≤ 2 do A := A + C, σ[3/A] → σ[3/A] while A ≤ 2 do A := A + C, σ → σ[3/A] • Stav σ = σ[0/C]. Dukazovy strom s korenem tvaru while A ≤ 2 do A := A + C, σ ˚ ´ ˇ → σ sestrojit nelze (pro zadne σ ). ˇ´ ´
  67. 67. 19 SOS semantika prvnıho typu je deterministicka ´ ´ ´ Veta 1. ˇ 1. Pro kazde a ∈ Aexp a σ ∈ Σ existuje prave jedno n ∈ Z takove, ze a, σ → n. ˇ ´ ´ ˇ ´ ˇ 2. Pro kazde b ∈ Bexp a σ ∈ Σ existuje prave jedno t ∈ T takove, ze b, σ → t. ˇ ´ ´ ˇ ´ ˇ 3. Pro kazde c ∈ Com a σ ∈ Σ existuje nejvyse jedno σ ∈ Σ takove, ze c, σ → σ . ˇ ´ ´ˇ ´ ˇ
  68. 68. 19 SOS semantika prvnıho typu je deterministicka ´ ´ ´ Veta 1. ˇ 1. Pro kazde a ∈ Aexp a σ ∈ Σ existuje prave jedno n ∈ Z takove, ze a, σ → n. ˇ ´ ´ ˇ ´ ˇ 2. Pro kazde b ∈ Bexp a σ ∈ Σ existuje prave jedno t ∈ T takove, ze b, σ → t. ˇ ´ ´ ˇ ´ ˇ 3. Pro kazde c ∈ Com a σ ∈ Σ existuje nejvyse jedno σ ∈ Σ takove, ze c, σ → σ . ˇ ´ ´ˇ ´ ˇ Dukaz. 1. a 2. indukcı ke strukture a a b, 3. indukcı k vysce odvozenı c, σ → σ . ˚ ´ ˇ ´ ´ˇ ´
  69. 69. 19 SOS semantika prvnıho typu je deterministicka ´ ´ ´ Veta 1. ˇ 1. Pro kazde a ∈ Aexp a σ ∈ Σ existuje prave jedno n ∈ Z takove, ze a, σ → n. ˇ ´ ´ ˇ ´ ˇ 2. Pro kazde b ∈ Bexp a σ ∈ Σ existuje prave jedno t ∈ T takove, ze b, σ → t. ˇ ´ ´ ˇ ´ ˇ 3. Pro kazde c ∈ Com a σ ∈ Σ existuje nejvyse jedno σ ∈ Σ takove, ze c, σ → σ . ˇ ´ ´ˇ ´ ˇ Dukaz. 1. a 2. indukcı ke strukture a a b, 3. indukcı k vysce odvozenı c, σ → σ . ˚ ´ ˇ ´ ´ˇ ´ ad 1. • a ≡ n. Pak n, σ → n dle definice.
  70. 70. 19 SOS semantika prvnıho typu je deterministicka ´ ´ ´ Veta 1. ˇ 1. Pro kazde a ∈ Aexp a σ ∈ Σ existuje prave jedno n ∈ Z takove, ze a, σ → n. ˇ ´ ´ ˇ ´ ˇ 2. Pro kazde b ∈ Bexp a σ ∈ Σ existuje prave jedno t ∈ T takove, ze b, σ → t. ˇ ´ ´ ˇ ´ ˇ 3. Pro kazde c ∈ Com a σ ∈ Σ existuje nejvyse jedno σ ∈ Σ takove, ze c, σ → σ . ˇ ´ ´ˇ ´ ˇ Dukaz. 1. a 2. indukcı ke strukture a a b, 3. indukcı k vysce odvozenı c, σ → σ . ˚ ´ ˇ ´ ´ˇ ´ ad 1. • a ≡ n. Pak n, σ → n dle definice. • a ≡ X. Pak X, σ → σ(X) dle definice.
  71. 71. 19 SOS semantika prvnıho typu je deterministicka ´ ´ ´ Veta 1. ˇ 1. Pro kazde a ∈ Aexp a σ ∈ Σ existuje prave jedno n ∈ Z takove, ze a, σ → n. ˇ ´ ´ ˇ ´ ˇ 2. Pro kazde b ∈ Bexp a σ ∈ Σ existuje prave jedno t ∈ T takove, ze b, σ → t. ˇ ´ ´ ˇ ´ ˇ 3. Pro kazde c ∈ Com a σ ∈ Σ existuje nejvyse jedno σ ∈ Σ takove, ze c, σ → σ . ˇ ´ ´ˇ ´ ˇ Dukaz. 1. a 2. indukcı ke strukture a a b, 3. indukcı k vysce odvozenı c, σ → σ . ˚ ´ ˇ ´ ´ˇ ´ ad 1. • a ≡ n. Pak n, σ → n dle definice. • a ≡ X. Pak X, σ → σ(X) dle definice. • a ≡ a0 + a1. Podle indukc ´ho predpokladu existuje prave jedno n0 takove, ze a0, σ → n0, ˇnı ˇ ˇ ´ ˇ a prave jedno n1 takove, ze a1, σ → n1. Proto a0 + a1, σ → n, kde n = n0 + n1. ´ ˇ ´ ˇ
  72. 72. 19 SOS semantika prvnıho typu je deterministicka ´ ´ ´ Veta 1. ˇ 1. Pro kazde a ∈ Aexp a σ ∈ Σ existuje prave jedno n ∈ Z takove, ze a, σ → n. ˇ ´ ´ ˇ ´ ˇ 2. Pro kazde b ∈ Bexp a σ ∈ Σ existuje prave jedno t ∈ T takove, ze b, σ → t. ˇ ´ ´ ˇ ´ ˇ 3. Pro kazde c ∈ Com a σ ∈ Σ existuje nejvyse jedno σ ∈ Σ takove, ze c, σ → σ . ˇ ´ ´ˇ ´ ˇ Dukaz. 1. a 2. indukcı ke strukture a a b, 3. indukcı k vysce odvozenı c, σ → σ . ˚ ´ ˇ ´ ´ˇ ´ ad 1. • a ≡ n. Pak n, σ → n dle definice. • a ≡ X. Pak X, σ → σ(X) dle definice. • a ≡ a0 + a1. Podle indukc ´ho predpokladu existuje prave jedno n0 takove, ze a0, σ → n0, ˇnı ˇ ˇ ´ ˇ a prave jedno n1 takove, ze a1, σ → n1. Proto a0 + a1, σ → n, kde n = n0 + n1. ´ ˇ ´ ˇ • a ≡ a0 − a1. Podobne. ˇ • a ≡ a0 ∗ a1. Podobne. ˇ
  73. 73. 20 ad 3. Indukcı k vysce odvozenı ukazeme, ze pokud pro dane c a σ existuje (nejake) σ takove, ´ ´ˇ ´ ´ˇ ˇ ´ ˇ ´ ´ ze c, σ → σ , je toto σ urc ˇ ˇeno jednoznac ˇ . ˇne
  74. 74. 20 ad 3. Indukcı k vysce odvozenı ukazeme, ze pokud pro dane c a σ existuje (nejake) σ takove, ´ ´ˇ ´ ´ˇ ˇ ´ ˇ ´ ´ ze c, σ → σ , je toto σ urc ˇ ˇeno jednoznac ˇ . ˇne Necht’ c, σ → σ je koren dukazoveho stromu vysky n ∈ N0. Uvaz´me mozne tvary c. ˇ ˚ ´ ´ˇ ´ ˇı ˇ ´
  75. 75. 20 ad 3. Indukcı k vysce odvozenı ukazeme, ze pokud pro dane c a σ existuje (nejake) σ takove, ´ ´ˇ ´ ´ˇ ˇ ´ ˇ ´ ´ ze c, σ → σ , je toto σ urc ˇ ˇeno jednoznac ˇ . ˇne Necht’ c, σ → σ je koren dukazoveho stromu vysky n ∈ N0. Uvaz´me mozne tvary c. ˇ ˚ ´ ´ˇ ´ ˇı ˇ ´ • skip, σ → σ.
  76. 76. 20 ad 3. Indukcı k vysce odvozenı ukazeme, ze pokud pro dane c a σ existuje (nejake) σ takove, ´ ´ˇ ´ ´ˇ ˇ ´ ˇ ´ ´ ze c, σ → σ , je toto σ urc ˇ ˇeno jednoznac ˇ . ˇne Necht’ c, σ → σ je koren dukazoveho stromu vysky n ∈ N0. Uvaz´me mozne tvary c. ˇ ˚ ´ ´ˇ ´ ˇı ˇ ´ • skip, σ → σ. • c ≡ X := a. Pak koren X := a, σ → σ ma naslednıka a, σ → n a platı σ = σ[n/X]. ˇ ´ ´ ´ ´ Podle 1. existuje prave jedno takove n, proto σ je urc ˇ´ ˇ ´ ˇeno jednoznac ˇ . ˇne
  77. 77. 20 ad 3. Indukcı k vysce odvozenı ukazeme, ze pokud pro dane c a σ existuje (nejake) σ takove, ´ ´ˇ ´ ´ˇ ˇ ´ ˇ ´ ´ ze c, σ → σ , je toto σ urc ˇ ˇeno jednoznac ˇ . ˇne Necht’ c, σ → σ je koren dukazoveho stromu vysky n ∈ N0. Uvaz´me mozne tvary c. ˇ ˚ ´ ´ˇ ´ ˇı ˇ ´ • skip, σ → σ. • c ≡ X := a. Pak koren X := a, σ → σ ma naslednıka a, σ → n a platı σ = σ[n/X]. ˇ ´ ´ ´ ´ Podle 1. existuje prave jedno takove n, proto σ je urc ˇ´ ˇ ´ ˇeno jednoznac ˇ . ˇne • c ≡ c0; c1. Pak koren c0; c1, σ → σ ma naslednıky c0, σ → σ a c1, σ ˇ ´ ´ ´ → σ . Podle indukc ´ho predpokladu je σ i σ urc ˇnı ˇ ˇeno jednoznac ˇ . ˇne
  78. 78. 20 ad 3. Indukcı k vysce odvozenı ukazeme, ze pokud pro dane c a σ existuje (nejake) σ takove, ´ ´ˇ ´ ´ˇ ˇ ´ ˇ ´ ´ ze c, σ → σ , je toto σ urc ˇ ˇeno jednoznac ˇ . ˇne Necht’ c, σ → σ je koren dukazoveho stromu vysky n ∈ N0. Uvaz´me mozne tvary c. ˇ ˚ ´ ´ˇ ´ ˇı ˇ ´ • skip, σ → σ. • c ≡ X := a. Pak koren X := a, σ → σ ma naslednıka a, σ → n a platı σ = σ[n/X]. ˇ ´ ´ ´ ´ Podle 1. existuje prave jedno takove n, proto σ je urc ˇ´ ˇ ´ ˇeno jednoznac ˇ . ˇne • c ≡ c0; c1. Pak koren c0; c1, σ → σ ma naslednıky c0, σ → σ a c1, σ ˇ ´ ´ ´ → σ . Podle indukc ´ho predpokladu je σ i σ urc ˇnı ˇ ˇeno jednoznac ˇ . ˇne • c ≡ if b then c0 else c1. Pak koren if b then c0 else c1, σ → σ ma bud’ naslednıky b, σ → ˇ ´ ´ ´ true a c0, σ → σ , nebo b, σ → false a c1, σ → σ . Podle 2. nastava prave jedna z techto ´ ´ ´ ˇ ˇ moznostı, proto je σ urc ˇ ´ ˇeno jednoznac ˇ . ˇne
  79. 79. 20 ad 3. Indukcı k vysce odvozenı ukazeme, ze pokud pro dane c a σ existuje (nejake) σ takove, ´ ´ˇ ´ ´ˇ ˇ ´ ˇ ´ ´ ze c, σ → σ , je toto σ urc ˇ ˇeno jednoznac ˇ . ˇne Necht’ c, σ → σ je koren dukazoveho stromu vysky n ∈ N0. Uvaz´me mozne tvary c. ˇ ˚ ´ ´ˇ ´ ˇı ˇ ´ • skip, σ → σ. • c ≡ X := a. Pak koren X := a, σ → σ ma naslednıka a, σ → n a platı σ = σ[n/X]. ˇ ´ ´ ´ ´ Podle 1. existuje prave jedno takove n, proto σ je urc ˇ´ ˇ ´ ˇeno jednoznac ˇ . ˇne • c ≡ c0; c1. Pak koren c0; c1, σ → σ ma naslednıky c0, σ → σ a c1, σ ˇ ´ ´ ´ → σ . Podle indukc ´ho predpokladu je σ i σ urc ˇnı ˇ ˇeno jednoznac ˇ . ˇne • c ≡ if b then c0 else c1. Pak koren if b then c0 else c1, σ → σ ma bud’ naslednıky b, σ → ˇ ´ ´ ´ true a c0, σ → σ , nebo b, σ → false a c1, σ → σ . Podle 2. nastava prave jedna z techto ´ ´ ´ ˇ ˇ moznostı, proto je σ urc ˇ ´ ˇeno jednoznac ˇ . ˇne • c ≡ while b do c. Pak koren while b do c, σ → σ ma bud’ jedineho naslednıka b, σ → false ˇ ´ ´ ´ ´ a σ = σ, nebo tri naslednıky b, σ → true, c, σ → σ a while b do c, σ → σ . Podle ˇ ´ ´ 2. nastava prave jedna z techto moznostı. V prvnım pr´pade jsme hotovi ihned; v druhem ´ ´ ´ ˇ ˇ ˇ ´ ´ ˇı ˇ ´ pouzijeme indukc ´ predpoklad podle nehoz je σ a σ urc ˇ ˇnı ˇ ˇ ˇ ˇeno jednoznac ˇ . ˇne
  80. 80. 21 Semanticka ekvivalence vyrazu a pr´kazu (I) ´ ´ ´ ˚ ˇı ˚ • Aritmeticke vyrazy Aexp ´ ´ def a0 ∼ a1 ⇐⇒ (∀n ∈ Z ∀σ ∈ Σ : a0, σ → n ⇐⇒ a1, σ → n)
  81. 81. 21 Semanticka ekvivalence vyrazu a pr´kazu (I) ´ ´ ´ ˚ ˇı ˚ • Aritmeticke vyrazy Aexp ´ ´ def a0 ∼ a1 ⇐⇒ (∀n ∈ Z ∀σ ∈ Σ : a0, σ → n ⇐⇒ a1, σ → n) • Pravdivostnı vyrazy Bexp ´ ´ def b0 ∼ b1 ⇐⇒ (∀t ∈ T ∀σ ∈ Σ : b0, σ → t ⇐⇒ b1, σ → t)
  82. 82. 21 Semanticka ekvivalence vyrazu a pr´kazu (I) ´ ´ ´ ˚ ˇı ˚ • Aritmeticke vyrazy Aexp ´ ´ def a0 ∼ a1 ⇐⇒ (∀n ∈ Z ∀σ ∈ Σ : a0, σ → n ⇐⇒ a1, σ → n) • Pravdivostnı vyrazy Bexp ´ ´ def b0 ∼ b1 ⇐⇒ (∀t ∈ T ∀σ ∈ Σ : b0, σ → t ⇐⇒ b1, σ → t) • Pr´kazy Com ˇı def c0 ∼ c1 ⇐⇒ (∀σ, σ ∈ Σ : c0, σ → σ ⇐⇒ c1, σ → σ )
  83. 83. 22 Pr´klad ekvivaletnıch programu ˇı ´ ˚ Dokazeme, ze ´ˇ ˇ while b do c ∼ if b then (c; while b do c) else skip
  84. 84. 22 Pr´klad ekvivaletnıch programu ˇı ´ ˚ Dokazeme, ze ´ˇ ˇ while b do c ∼ if b then (c; while b do c) else skip • while b do c, σ → σ ⇒ if b then (c; while b do c) else skip, σ → σ
  85. 85. 22 Pr´klad ekvivaletnıch programu ˇı ´ ˚ Dokazeme, ze ´ˇ ˇ while b do c ∼ if b then (c; while b do c) else skip • while b do c, σ → σ ⇒ if b then (c; while b do c) else skip, σ → σ Jsou dve moznosti: ˇ ˇ ... b, σ → false . while b do c, σ → σ
  86. 86. 22 Pr´klad ekvivaletnıch programu ˇı ´ ˚ Dokazeme, ze ´ˇ ˇ while b do c ∼ if b then (c; while b do c) else skip • while b do c, σ → σ ⇒ if b then (c; while b do c) else skip, σ → σ Jsou dve moznosti: ˇ ˇ ... ... b, σ → false b, σ → false skip, σ → σ . Pak ale take ´ while b do c, σ → σ if b then (c; while b do c) else skip, σ → σ
  87. 87. 22 Pr´klad ekvivaletnıch programu ˇı ´ ˚ Dokazeme, ze ´ˇ ˇ while b do c ∼ if b then (c; while b do c) else skip • while b do c, σ → σ ⇒ if b then (c; while b do c) else skip, σ → σ Jsou dve moznosti: ˇ ˇ ... ... b, σ → false b, σ → false skip, σ → σ . Pak ale take ´ while b do c, σ → σ if b then (c; while b do c) else skip, σ → σ ... ... ... b, σ → true c, σ → σ while b do c, σ →σ . while b do c, σ → σ
  88. 88. 22 Pr´klad ekvivaletnıch programu ˇı ´ ˚ Dokazeme, ze ´ˇ ˇ while b do c ∼ if b then (c; while b do c) else skip • while b do c, σ → σ ⇒ if b then (c; while b do c) else skip, σ → σ Jsou dve moznosti: ˇ ˇ ... ... b, σ → false b, σ → false skip, σ → σ . Pak ale take ´ while b do c, σ → σ if b then (c; while b do c) else skip, σ → σ ... ... ... b, σ → true c, σ → σ while b do c, σ →σ . Pak ale take ´ while b do c, σ → σ ... ... ... c, σ → σ while b do c, σ →σ b, σ → true c; while b do c, σ → σ if b then (c; while b do c) else skip, σ → σ
  89. 89. 22 Pr´klad ekvivaletnıch programu ˇı ´ ˚ Dokazeme, ze ´ˇ ˇ while b do c ∼ if b then (c; while b do c) else skip • while b do c, σ → σ ⇒ if b then (c; while b do c) else skip, σ → σ Jsou dve moznosti: ˇ ˇ ... ... b, σ → false b, σ → false skip, σ → σ . Pak ale take ´ while b do c, σ → σ if b then (c; while b do c) else skip, σ → σ ... ... ... b, σ → true c, σ → σ while b do c, σ →σ . Pak ale take ´ while b do c, σ → σ ... ... ... c, σ → σ while b do c, σ →σ b, σ → true c; while b do c, σ → σ if b then (c; while b do c) else skip, σ → σ • Opac ´ implikace se ukaze podobne. ˇna ´ˇ ˇ
  90. 90. 23 Operac ´ semantika IMP druheho typu („small step“) ˇnı ´ ´ • Cılem je definovat prechodovy system, kde ´ ˇ ´ ´ mnozina konfiguracı je Com × Σ, ˇ ´ mnozina akcı je {τ}, ˇ ´ τ ˇ ´ ´ ´ ´ ˇtu“ programu, tj. c, σ → c , σ prave kdyz prechodova relace odpovıda „kroku vypoc ˚ ´ ˇ ˇ program c prejde ze stavu σ vykonanım jedne instrukce do stavu σ a z tohoto stavu se dale ˇ ´ ´ ´ ´ provadı program c . ´ ´
  91. 91. 23 Operac ´ semantika IMP druheho typu („small step“) ˇnı ´ ´ • Cılem je definovat prechodovy system, kde ´ ˇ ´ ´ mnozina konfiguracı je Com × Σ, ˇ ´ mnozina akcı je {τ}, ˇ ´ τ ˇ ´ ´ ´ ´ ˇtu“ programu, tj. c, σ → c , σ prave kdyz prechodova relace odpovıda „kroku vypoc ˚ ´ ˇ ˇ program c prejde ze stavu σ vykonanım jedne instrukce do stavu σ a z tohoto stavu se dale ˇ ´ ´ ´ ´ provadı program c . ´ ´ • Definujeme odvozovacı systemy pro tri relace: ´ ´ ˇ →A ⊆ (Aexp × Σ) × (Aexp × Σ); prvky zapisujeme ve tvaru a, σ →A a , σ . →B ⊆ (Bexp × Σ) × (Bexp × Σ); prvky zapisujeme ve tvaru b, σ →B b , σ . →C ⊆ (Com × Σ) × (Com × Σ); prvky zapisujeme ve tvaru c, σ →C c , σ . Indexy A, B, C budou obvykle vynechany. ´
  92. 92. 23 Operac ´ semantika IMP druheho typu („small step“) ˇnı ´ ´ • Cılem je definovat prechodovy system, kde ´ ˇ ´ ´ mnozina konfiguracı je Com × Σ, ˇ ´ mnozina akcı je {τ}, ˇ ´ τ ˇ ´ ´ ´ ´ ˇtu“ programu, tj. c, σ → c , σ prave kdyz prechodova relace odpovıda „kroku vypoc ˚ ´ ˇ ˇ program c prejde ze stavu σ vykonanım jedne instrukce do stavu σ a z tohoto stavu se dale ˇ ´ ´ ´ ´ provadı program c . ´ ´ • Definujeme odvozovacı systemy pro tri relace: ´ ´ ˇ →A ⊆ (Aexp × Σ) × (Aexp × Σ); prvky zapisujeme ve tvaru a, σ →A a , σ . →B ⊆ (Bexp × Σ) × (Bexp × Σ); prvky zapisujeme ve tvaru b, σ →B b , σ . →C ⊆ (Com × Σ) × (Com × Σ); prvky zapisujeme ve tvaru c, σ →C c , σ . Indexy A, B, C budou obvykle vynechany. ´ τ • Pak jiz lze definovat: ˇ c, σ → c , σ ⇐⇒ c, σ →C c , σ
  93. 93. 24 Aritmeticke vyrazy Aexp ´ ´ • n, σ – konec ´ konfigurace ˇna
  94. 94. 24 Aritmeticke vyrazy Aexp ´ ´ • n, σ – konec ´ konfigurace ˇna • X, σ → σ(X), σ
  95. 95. 24 Aritmeticke vyrazy Aexp ´ ´ • n, σ – konec ´ konfigurace ˇna • X, σ → σ(X), σ • n0 + n1, σ → m, σ , kde m = n0 + n1
  96. 96. 24 Aritmeticke vyrazy Aexp ´ ´ • n, σ – konec ´ konfigurace ˇna • X, σ → σ(X), σ • n0 + n1, σ → m, σ , kde m = n0 + n1 a0 , σ → a0 , σ • a0 + a1 , σ → a0 + a1 , σ
  97. 97. 24 Aritmeticke vyrazy Aexp ´ ´ • n, σ – konec ´ konfigurace ˇna • X, σ → σ(X), σ • n0 + n1, σ → m, σ , kde m = n0 + n1 a0 , σ → a0 , σ • a0 + a1 , σ → a0 + a1 , σ a1 , σ → a1 , σ • n + a1 , σ → n + a1 , σ
  98. 98. 24 Aritmeticke vyrazy Aexp ´ ´ • n, σ – konec ´ konfigurace ˇna • X, σ → σ(X), σ • n0 + n1, σ → m, σ , kde m = n0 + n1 a0 , σ → a0 , σ • a0 + a1 , σ → a0 + a1 , σ a1 , σ → a1 , σ • n + a1 , σ → n + a1 , σ • podobne pro „−“ a „∗“ ˇ
  99. 99. 24 Aritmeticke vyrazy Aexp ´ ´ • n, σ – konec ´ konfigurace ˇna • X, σ → σ(X), σ • n0 + n1, σ → m, σ , kde m = n0 + n1 a0 , σ → a0 , σ • a0 + a1 , σ → a0 + a1 , σ a1 , σ → a1 , σ • n + a1 , σ → n + a1 , σ • podobne pro „−“ a „∗“ ˇ Pr´klad: ˇı • Necht’ σ(X) = 1, σ(Y) = 2
  100. 100. 24 Aritmeticke vyrazy Aexp ´ ´ • n, σ – konec ´ konfigurace ˇna • X, σ → σ(X), σ • n0 + n1, σ → m, σ , kde m = n0 + n1 a0 , σ → a0 , σ • a0 + a1 , σ → a0 + a1 , σ a1 , σ → a1 , σ • n + a1 , σ → n + a1 , σ • podobne pro „−“ a „∗“ ˇ Pr´klad: ˇı • Necht’ σ(X) = 1, σ(Y) = 2 • (X + 3) ∗ Y, σ → (1 + 3) ∗ Y, σ → 4 ∗ Y, σ → 4 ∗ 2, σ → 8, σ
  101. 101. 25 Pravdivostnı vyrazy Bexp ´ ´ • tt, σ – konec ´ konfigurace ˇna • ff, σ – konec ´ konfigurace ˇna
  102. 102. 25 Pravdivostnı vyrazy Bexp ´ ´ • tt, σ – konec ´ konfigurace ˇna • ff, σ – konec ´ konfigurace ˇna • n0=n1, σ → tt, σ , je-li n0=n1 • n0=n1, σ → ff, σ , je-li n0=n1 a0 , σ → a0 , σ • a0 = a1 , σ → a0 = a1 , σ a1 , σ → a1 , σ • n = a1 , σ → n = a1 , σ
  103. 103. 25 Pravdivostnı vyrazy Bexp ´ ´ • tt, σ – konec ´ konfigurace ˇna • ff, σ – konec ´ konfigurace ˇna • n0=n1, σ → tt, σ , je-li n0=n1 • n0=n1, σ → ff, σ , je-li n0=n1 a0 , σ → a0 , σ • a0 = a1 , σ → a0 = a1 , σ a1 , σ → a1 , σ • n = a1 , σ → n = a1 , σ • podobne pro „≤“ ˇ
  104. 104. 25 Pravdivostnı vyrazy Bexp ´ ´ • tt, σ – konec ´ konfigurace ˇna • not tt, σ → ff, σ , not ff, σ → tt, σ b, σ → b , σ • ff, σ – konec ´ konfigurace ˇna • not b, σ → not b , σ • n0=n1, σ → tt, σ , je-li n0=n1 • n0=n1, σ → ff, σ , je-li n0=n1 a0 , σ → a0 , σ • a0 = a1 , σ → a0 = a1 , σ a1 , σ → a1 , σ • n = a1 , σ → n = a1 , σ • podobne pro „≤“ ˇ
  105. 105. 25 Pravdivostnı vyrazy Bexp ´ ´ • tt, σ – konec ´ konfigurace ˇna • not tt, σ → ff, σ , not ff, σ → tt, σ b, σ → b , σ • ff, σ – konec ´ konfigurace ˇna • not b, σ → not b , σ • n0=n1, σ → tt, σ , je-li n0=n1 • t1 and t2, σ → tt, σ je-li t1=tt a t2=tt • n0=n1, σ → ff, σ , je-li n0=n1 • t1 and t2, σ → ff, σ je-li t1=ff nebo t2=ff a0 , σ → a0 , σ b0, σ → b0, σ • • a0 = a1 , σ → a0 = a1 , σ b0 and b1, σ → b0 and b1, σ a1 , σ → a1 , σ b1, σ → b1, σ • • t ∈ {tt, ff} n = a1 , σ → n = a1 , σ t and b1, σ → t and b1, σ • podobne pro „≤“ ˇ
  106. 106. 25 Pravdivostnı vyrazy Bexp ´ ´ • tt, σ – konec ´ konfigurace ˇna • not tt, σ → ff, σ , not ff, σ → tt, σ b, σ → b , σ • ff, σ – konec ´ konfigurace ˇna • not b, σ → not b , σ • n0=n1, σ → tt, σ , je-li n0=n1 • t1 and t2, σ → tt, σ je-li t1=tt a t2=tt • n0=n1, σ → ff, σ , je-li n0=n1 • t1 and t2, σ → ff, σ je-li t1=ff nebo t2=ff a0 , σ → a0 , σ b0, σ → b0, σ • • a0 = a1 , σ → a0 = a1 , σ b0 and b1, σ → b0 and b1, σ a1 , σ → a1 , σ b1, σ → b1, σ • • t ∈ {tt, ff} n = a1 , σ → n = a1 , σ t and b1, σ → t and b1, σ • podobne pro „≤“ ˇ • podobne pro „or“ ˇ
  107. 107. 26 Pr´kazy Com ˇı • skip, σ – konec ´ konfigurace ˇna
  108. 108. 26 Pr´kazy Com ˇı • skip, σ – konec ´ konfigurace ˇna a, σ → a , σ • X := n, σ → skip, σ[n/X] X := a, σ → X := a , σ
  109. 109. 26 Pr´kazy Com ˇı • skip, σ – konec ´ konfigurace ˇna a, σ → a , σ • X := n, σ → skip, σ[n/X] X := a, σ → X := a , σ c0, σ → c0, σ • skip; c, σ → c, σ c0; c1, σ → c0; c1, σ
  110. 110. 26 Pr´kazy Com ˇı • skip, σ – konec ´ konfigurace ˇna a, σ → a , σ • X := n, σ → skip, σ[n/X] X := a, σ → X := a , σ c0, σ → c0, σ • skip; c, σ → c, σ c0; c1, σ → c0; c1, σ • if tt then c0 else c1, σ → c0, σ if ff then c0 else c1, σ → c1, σ
  111. 111. 26 Pr´kazy Com ˇı • skip, σ – konec ´ konfigurace ˇna a, σ → a , σ • X := n, σ → skip, σ[n/X] X := a, σ → X := a , σ c0, σ → c0, σ • skip; c, σ → c, σ c0; c1, σ → c0; c1, σ • if tt then c0 else c1, σ → c0, σ if ff then c0 else c1, σ → c1, σ b, σ → b , σ • if b then c0 else c1, σ → if b then c0 else c1, σ
  112. 112. 26 Pr´kazy Com ˇı • skip, σ – konec ´ konfigurace ˇna a, σ → a , σ • X := n, σ → skip, σ[n/X] X := a, σ → X := a , σ c0, σ → c0, σ • skip; c, σ → c, σ c0; c1, σ → c0; c1, σ • if tt then c0 else c1, σ → c0, σ if ff then c0 else c1, σ → c1, σ b, σ → b , σ • if b then c0 else c1, σ → if b then c0 else c1, σ • while b do c, σ → if b then (c; while b do c) else skip, σ
  113. 113. 27 Semanticka ekvivalence vyrazu a pr´kazu (II) ´ ´ ´ ˚ ˇı ˚ • Pro kazde k ∈ N0 definujeme (induktivne) relaci →k ⊆ (Com × Σ) × (Com × Σ): ˇ ´ ˇ →0 = idCom×Σ →i+1 = →i ◦ →
  114. 114. 27 Semanticka ekvivalence vyrazu a pr´kazu (II) ´ ´ ´ ˚ ˇı ˚ • Pro kazde k ∈ N0 definujeme (induktivne) relaci →k ⊆ (Com × Σ) × (Com × Σ): ˇ ´ ˇ →0 = idCom×Σ →i+1 = →i ◦ → S∞ • Dale definujeme →∗= ´ k=0 →k
  115. 115. 27 Semanticka ekvivalence vyrazu a pr´kazu (II) ´ ´ ´ ˚ ˇı ˚ • Pro kazde k ∈ N0 definujeme (induktivne) relaci →k ⊆ (Com × Σ) × (Com × Σ): ˇ ´ ˇ →0 = idCom×Σ →i+1 = →i ◦ → S∞ • Dale definujeme →∗= ´ k=0 →k • Aritmeticke vyrazy Aexp ´ ´ def a0 ≈ a1 ⇐⇒ (∀n ∈ Z ∀σ ∈ Σ : a0, σ →∗ n, σ ⇐⇒ a1, σ →∗ n, σ )
  116. 116. 27 Semanticka ekvivalence vyrazu a pr´kazu (II) ´ ´ ´ ˚ ˇı ˚ • Pro kazde k ∈ N0 definujeme (induktivne) relaci →k ⊆ (Com × Σ) × (Com × Σ): ˇ ´ ˇ →0 = idCom×Σ →i+1 = →i ◦ → S∞ • Dale definujeme →∗= ´ k=0 →k • Aritmeticke vyrazy Aexp ´ ´ def a0 ≈ a1 ⇐⇒ (∀n ∈ Z ∀σ ∈ Σ : a0, σ →∗ n, σ ⇐⇒ a1, σ →∗ n, σ ) • Pravdivostnı vyrazy Bexp ´ ´ def b0 ≈ b1 ⇐⇒ (∀t ∈ T ∀σ ∈ Σ : b0, σ →∗ t, σ ⇐⇒ b1, σ →∗ t, σ )
  117. 117. 27 Semanticka ekvivalence vyrazu a pr´kazu (II) ´ ´ ´ ˚ ˇı ˚ • Pro kazde k ∈ N0 definujeme (induktivne) relaci →k ⊆ (Com × Σ) × (Com × Σ): ˇ ´ ˇ →0 = idCom×Σ →i+1 = →i ◦ → S∞ • Dale definujeme →∗= ´ k=0 →k • Aritmeticke vyrazy Aexp ´ ´ def a0 ≈ a1 ⇐⇒ (∀n ∈ Z ∀σ ∈ Σ : a0, σ →∗ n, σ ⇐⇒ a1, σ →∗ n, σ ) • Pravdivostnı vyrazy Bexp ´ ´ def b0 ≈ b1 ⇐⇒ (∀t ∈ T ∀σ ∈ Σ : b0, σ →∗ t, σ ⇐⇒ b1, σ →∗ t, σ ) • Pr´kazy Com ˇı def c0 ≈ c1 ⇐⇒ (∀σ, σ ∈ Σ : c0, σ →∗ skip, σ ⇐⇒ c1, σ →∗ skip, σ )
  118. 118. 28 Ekvivalence SOS semantik 1. a 2. typu ´ Lema 2. 1. Jestlize a, σ →k a , σ , pak a ˇ a1, σ →k a a1 , σ a n a, σ →k n a , σ pro kazde ˇ ´ ∈ {+, −, ∗}.
  119. 119. 28 Ekvivalence SOS semantik 1. a 2. typu ´ Lema 2. 1. Jestlize a, σ →k a , σ , pak a ˇ a1, σ →k a a1 , σ a n a, σ →k n a , σ pro kazde ˇ ´ ∈ {+, −, ∗}. 2. Jestlize a, σ →k a , σ , pak X := a, σ →k X := a , σ ˇ
  120. 120. 28 Ekvivalence SOS semantik 1. a 2. typu ´ Lema 2. 1. Jestlize a, σ →k a , σ , pak a ˇ a1, σ →k a a1 , σ a n a, σ →k n a , σ pro kazde ˇ ´ ∈ {+, −, ∗}. 2. Jestlize a, σ →k a , σ , pak X := a, σ →k X := a , σ ˇ 3. Jestlize c, σ →k c , σ , pak c; c1, σ →k c ; c1, σ . ˇ
  121. 121. 28 Ekvivalence SOS semantik 1. a 2. typu ´ Lema 2. 1. Jestlize a, σ →k a , σ , pak a ˇ a1, σ →k a a1 , σ a n a, σ →k n a , σ pro kazde ˇ ´ ∈ {+, −, ∗}. 2. Jestlize a, σ →k a , σ , pak X := a, σ →k X := a , σ ˇ 3. Jestlize c, σ →k c , σ , pak c; c1, σ →k c ; c1, σ . ˇ 4. Jestlize b, σ →k b , σ , pak if b then c0 else c1, σ →k if b then c0 else c1, σ ˇ
  122. 122. 28 Ekvivalence SOS semantik 1. a 2. typu ´ Lema 2. 1. Jestlize a, σ →k a , σ , pak a ˇ a1, σ →k a a1 , σ a n a, σ →k n a , σ pro kazde ˇ ´ ∈ {+, −, ∗}. 2. Jestlize a, σ →k a , σ , pak X := a, σ →k X := a , σ ˇ 3. Jestlize c, σ →k c , σ , pak c; c1, σ →k c ; c1, σ . ˇ 4. Jestlize b, σ →k b , σ , pak if b then c0 else c1, σ →k if b then c0 else c1, σ ˇ Dukaz. Indukcı ke k. ˚ ´
  123. 123. 28 Ekvivalence SOS semantik 1. a 2. typu ´ Lema 2. 1. Jestlize a, σ →k a , σ , pak a ˇ a1, σ →k a a1 , σ a n a, σ →k n a , σ pro kazde ˇ ´ ∈ {+, −, ∗}. 2. Jestlize a, σ →k a , σ , pak X := a, σ →k X := a , σ ˇ 3. Jestlize c, σ →k c , σ , pak c; c1, σ →k c ; c1, σ . ˇ 4. Jestlize b, σ →k b , σ , pak if b then c0 else c1, σ →k if b then c0 else c1, σ ˇ Dukaz. Indukcı ke k. ˚ ´ ad 1., prvnı implikace. ´ • Baze (k = 0): a0, σ →0 a0, σ ´ ⇐⇒ a0 = a0 ⇐⇒ a 0 + a 1 , σ →0 a 0 + a 1 , σ

×