SlideShare a Scribd company logo
1 of 480
Download to read offline
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
                      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“
                                 ´                   ´ ´                    ˇı     ´
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“)
        ´ ´              ´
3
                ´ ˇel
                Uc a pouzitelnost formalnı semantiky
                        ˇ             ´ ´ ´


• Korektnost implementace
    prekladac (co musı splnovat, aby byl „spravny“?)
     ˇ      ˇ        ´    ˇ                  ´ ´
    optimalizator (jake upravy kodu jsou „pr´pustne“?)
             ´        ´ ´       ´          ˇı     ´
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
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
   ´               ´        ˚
4
       Zakladnı „styly“ semantik programovacıch jazyku
        ´     ´          ´                  ´        ˚



• Operac ´ semantika definuje jak se program provadı
       ˇnı ´                                    ´ ´
4
       Zakladnı „styly“ semantik programovacıch jazyku
        ´     ´          ´                  ´        ˚



• Operac ´ semantika definuje jak se program provadı
       ˇnı ´                                    ´ ´

• Denotac ´ semantika definuje co program poc´ta
        ˇnı ´                              ˇı ´
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
            ´ ´            ˇˇ
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.
           ˇ ´              ´                  ´    ´       ˇ
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.
                  ´                           ´ ´         ´   ˇı
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).
                      ´      ´       ˚    ´ ´ˇ
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.
              ´        ˚      ˇ        ˇ ´ ´       ´ ˚
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.
               ´                          ´           ´
7
                     Pr´klad definice abstraktnı syntaxe
                      ˇı                      ´


•    X   ::=   num | X0+X1 | X0−X1
    Syntaktickou domenou atomu num jsou dekadicke zapisy celych c´sel.
                    ´                           ´ ´         ´   ˇı
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.
                    ´                  ˇ     ˇ              ´        ˚
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
8
             Konkretnı syntax programovacıch jazyku
                  ´ ´                    ´        ˚

Urc
  ˇuje, jak jednoznac ˇ zapisovat syntakticke stromy jako retezce symbolu.
                    ˇne                     ´             ˇ ˇ           ˚
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
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
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 − +
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
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
          ´                ˇı
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
      ´
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
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).
   ˚     ´                    ´     ˇ        ˚           ´   ˇ    ˇ           ´
10
Odvozovacı system vyrokove logiky
         ´     ´   ´     ´
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   ´    ˇ           ´    ´   ˚
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
     ´          ˚          ´       ´    ´     ´
    ϕ → (ψ → ϕ)
    (ϕ → (ψ → ξ)) → ((ϕ → ψ) → (ϕ → ξ))
    (¬ϕ → ¬ψ) → (ψ → ϕ)
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
           ´
   ϕ     ϕ→ψ
         ψ
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
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.
                          ´               ´
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.
                  ´      ˇ
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                ´                    ´
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.
    ˚   ˚    ´             ´      ´
12
Abstraktnı syntaxe jazyka IMP
         ´
12
                         Abstraktnı syntaxe jazyka IMP
                                  ´


• Zakladnı syntakticke domeny
   ´     ´           ´    ´
   Num    =   {0, 1, −1, 2, −2, . . .}
   Bool   =   {tt, ff}
   Var    =   {A, B, C, . . .}
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.
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.
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.
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
                            ˇ       ´
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ı ´
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 σ .
                    ´   ´               ˇı    ˇ
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.
                                     ´
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, σ → σ
15
                  Aritmeticke vyrazy Aexp
                            ´ ´

a, σ → n   „aritmeticky vyraz a se ve stavu σ vyhodnotı na n ∈ Z“
                      ´ ´                             ´
15
                      Aritmeticke vyrazy Aexp
                                ´ ´

a, σ → n       „aritmeticky vyraz a se ve stavu σ vyhodnotı na n ∈ Z“
                          ´ ´                             ´



•   n, σ → n
15
                         Aritmeticke vyrazy Aexp
                                   ´ ´

a, σ → n          „aritmeticky vyraz a se ve stavu σ vyhodnotı na n ∈ Z“
                             ´ ´                             ´



•   n, σ → n

•   X, σ → σ(X)
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
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
16
                    Pravdivostnı vyrazy Bexp
                               ´ ´

b, σ → t   „pravdivostnı vyraz b se ve stavu σ vyhodnotı na t ∈ T“
                       ´ ´                             ´
16
                            Pravdivostnı vyrazy Bexp
                                       ´ ´

b, σ → t           „pravdivostnı vyraz b se ve stavu σ vyhodnotı na t ∈ T“
                               ´ ´                             ´



•   tt, σ → true

•   ff, σ → false
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
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
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
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
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
17
                           Pr´kazy Com
                            ˇı

c, σ → σ   „pr´kaz c aktivovany ve stavu σ skonc´ ve stavu σ “
             ˇı               ´                ˇı
17
                                  Pr´kazy Com
                                   ˇı

c, σ → σ          „pr´kaz c aktivovany ve stavu σ skonc´ ve stavu σ “
                    ˇı               ´                ˇı



•   skip, σ → σ
17
                                  Pr´kazy Com
                                   ˇı

c, σ → σ          „pr´kaz c aktivovany ve stavu σ skonc´ ve stavu σ “
                    ˇı               ´                ˇı



•   skip, σ → σ

         a, σ → n
•
    X := a, σ → σ[n/X]
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, σ → σ
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, σ → σ
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, σ → σ
18
     Pr´klad dukazoveho stromu v SOS semantice 1. typu
      ˇı      ˚     ´                 ´



Uvazme program while A ≤ 2 do A := A + C
   ˇ
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]
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 σ ).
                       ˇ´ ´
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, σ → σ .
         ˇ ´                              ´ˇ                   ´ ˇ
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, σ → σ .
 ˚                   ´           ˇ                  ´    ´ˇ          ´
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.
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.
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.
      ´ ˇ               ´ ˇ
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.
                      ˇ
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
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.
                     ˇ    ˚     ´           ´ˇ             ´ ˇı    ˇ ´
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, σ → σ.
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
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
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
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
21
             Semanticka ekvivalence vyrazu a pr´kazu (I)
              ´       ´              ´   ˚    ˇı   ˚



• Aritmeticke vyrazy Aexp
            ´ ´
               def
   a0 ∼ a1    ⇐⇒     (∀n ∈ Z ∀σ ∈ Σ :   a0, σ → n ⇐⇒   a1, σ → n)
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)
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, σ → σ )
22
                 Pr´klad ekvivaletnıch programu
                  ˇı               ´          ˚


Dokazeme, ze
   ´ˇ     ˇ    while b do c   ∼   if b then (c; while b do c) else skip
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, σ → σ
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, σ → σ
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, σ → σ
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, σ → σ
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, σ → σ
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                ´ˇ        ˇ
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 .
         ´ ´
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.
                                     ´
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 , σ
24
                            Aritmeticke vyrazy Aexp
                                      ´ ´

•   n, σ   – konec ´ konfigurace
                 ˇna
24
                            Aritmeticke vyrazy Aexp
                                      ´ ´

•   n, σ   – konec ´ konfigurace
                 ˇna

•   X, σ → σ(X), σ
24
                            Aritmeticke vyrazy Aexp
                                      ´ ´

•   n, σ   – konec ´ konfigurace
                 ˇna

•   X, σ → σ(X), σ

•   n0 + n1, σ → m, σ , kde m = n0 + n1
24
                                Aritmeticke vyrazy Aexp
                                          ´ ´

•   n, σ   – konec ´ konfigurace
                 ˇna

•   X, σ → σ(X), σ

•   n0 + n1, σ → m, σ , kde m = n0 + n1

         a0 , σ → a0 , σ
•
    a0 + a1 , σ → a0 + a1 , σ
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 , σ
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 „∗“
        ˇ
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
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, σ
25
                            Pravdivostnı vyrazy Bexp
                                       ´ ´


•   tt, σ   – konec ´ konfigurace
                  ˇna

•   ff, σ   – konec ´ konfigurace
                  ˇna
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 , σ
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 „≤“
        ˇ
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 „≤“
        ˇ
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 „≤“
        ˇ
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“
                                               ˇ
26
                                     Pr´kazy Com
                                      ˇı


•   skip, σ   – konec ´ konfigurace
                    ˇna
26
                                     Pr´kazy Com
                                      ˇı


•   skip, σ   – konec ´ konfigurace
                    ˇna


                                               a, σ → a , σ
•   X := n, σ → skip, σ[n/X]
                                          X := a, σ → X := a , σ
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, σ
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, σ
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, σ
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, σ
27
            Semanticka ekvivalence vyrazu a pr´kazu (II)
             ´       ´              ´   ˚    ˇı   ˚


• Pro kazde k ∈ N0 definujeme (induktivne) relaci →k ⊆ (Com × Σ) × (Com × Σ):
        ˇ ´                            ˇ
   →0      =   idCom×Σ
   →i+1    =   →i ◦ →
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
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, σ )
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, σ )
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, σ )
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
     ˇ ´    ∈ {+, −, ∗}.
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 , σ
          ˇ
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, σ .
          ˇ
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, σ
          ˇ
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.
 ˚           ´
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 , σ
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp

More Related Content

Featured

Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 

Featured (20)

Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 

Nps54.tmp

  • 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 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. 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. 3 ´ ˇel Uc a pouzitelnost formalnı semantiky ˇ ´ ´ ´ • Korektnost implementace prekladac (co musı splnovat, aby byl „spravny“?) ˇ ˇ ´ ˇ ´ ´ optimalizator (jake upravy kodu jsou „pr´pustne“?) ´ ´ ´ ´ ˇı ´
  • 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. 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. 4 Zakladnı „styly“ semantik programovacıch jazyku ´ ´ ´ ´ ˚ • Operac ´ semantika definuje jak se program provadı ˇnı ´ ´ ´
  • 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. 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. 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. 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. 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. 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. 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. 7 Pr´klad definice abstraktnı syntaxe ˇı ´ • X ::= num | X0+X1 | X0−X1 Syntaktickou domenou atomu num jsou dekadicke zapisy celych c´sel. ´ ´ ´ ´ ˇı
  • 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. 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. 8 Konkretnı syntax programovacıch jazyku ´ ´ ´ ˚ Urc ˇuje, jak jednoznac ˇ zapisovat syntakticke stromy jako retezce symbolu. ˇne ´ ˇ ˇ ˚
  • 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. 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. 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. 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. 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. 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. 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. 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. 10 Odvozovacı system vyrokove logiky ´ ´ ´ ´
  • 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. 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. 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. 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. 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. 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. 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. 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. ˚ ˚ ´ ´ ´
  • 37. 12 Abstraktnı syntaxe jazyka IMP ´ • Zakladnı syntakticke domeny ´ ´ ´ ´ Num = {0, 1, −1, 2, −2, . . .} Bool = {tt, ff} Var = {A, B, C, . . .}
  • 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. 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. 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. 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. 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. 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. 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. 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. 15 Aritmeticke vyrazy Aexp ´ ´ a, σ → n „aritmeticky vyraz a se ve stavu σ vyhodnotı na n ∈ Z“ ´ ´ ´
  • 47. 15 Aritmeticke vyrazy Aexp ´ ´ a, σ → n „aritmeticky vyraz a se ve stavu σ vyhodnotı na n ∈ Z“ ´ ´ ´ • n, σ → n
  • 48. 15 Aritmeticke vyrazy Aexp ´ ´ a, σ → n „aritmeticky vyraz a se ve stavu σ vyhodnotı na n ∈ Z“ ´ ´ ´ • n, σ → n • X, σ → σ(X)
  • 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. 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. 16 Pravdivostnı vyrazy Bexp ´ ´ b, σ → t „pravdivostnı vyraz b se ve stavu σ vyhodnotı na t ∈ T“ ´ ´ ´
  • 52. 16 Pravdivostnı vyrazy Bexp ´ ´ b, σ → t „pravdivostnı vyraz b se ve stavu σ vyhodnotı na t ∈ T“ ´ ´ ´ • tt, σ → true • ff, σ → false
  • 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. 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. 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. 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. 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. 17 Pr´kazy Com ˇı c, σ → σ „pr´kaz c aktivovany ve stavu σ skonc´ ve stavu σ “ ˇı ´ ˇı
  • 59. 17 Pr´kazy Com ˇı c, σ → σ „pr´kaz c aktivovany ve stavu σ skonc´ ve stavu σ “ ˇı ´ ˇı • skip, σ → σ
  • 60. 17 Pr´kazy Com ˇı c, σ → σ „pr´kaz c aktivovany ve stavu σ skonc´ ve stavu σ “ ˇı ´ ˇı • skip, σ → σ a, σ → n • X := a, σ → σ[n/X]
  • 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. 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. 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. 18 Pr´klad dukazoveho stromu v SOS semantice 1. typu ˇı ˚ ´ ´ Uvazme program while A ≤ 2 do A := A + C ˇ
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 21 Semanticka ekvivalence vyrazu a pr´kazu (I) ´ ´ ´ ˚ ˇı ˚ • Aritmeticke vyrazy Aexp ´ ´ def a0 ∼ a1 ⇐⇒ (∀n ∈ Z ∀σ ∈ Σ : a0, σ → n ⇐⇒ a1, σ → n)
  • 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. 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. 22 Pr´klad ekvivaletnıch programu ˇı ´ ˚ Dokazeme, ze ´ˇ ˇ while b do c ∼ if b then (c; while b do c) else skip
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 24 Aritmeticke vyrazy Aexp ´ ´ • n, σ – konec ´ konfigurace ˇna
  • 94. 24 Aritmeticke vyrazy Aexp ´ ´ • n, σ – konec ´ konfigurace ˇna • X, σ → σ(X), σ
  • 95. 24 Aritmeticke vyrazy Aexp ´ ´ • n, σ – konec ´ konfigurace ˇna • X, σ → σ(X), σ • n0 + n1, σ → m, σ , kde m = n0 + n1
  • 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. 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. 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. 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. 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. 25 Pravdivostnı vyrazy Bexp ´ ´ • tt, σ – konec ´ konfigurace ˇna • ff, σ – konec ´ konfigurace ˇna
  • 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. 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. 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. 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. 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. 26 Pr´kazy Com ˇı • skip, σ – konec ´ konfigurace ˇna
  • 108. 26 Pr´kazy Com ˇı • skip, σ – konec ´ konfigurace ˇna a, σ → a , σ • X := n, σ → skip, σ[n/X] X := a, σ → X := a , σ
  • 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. 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. 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. 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. 27 Semanticka ekvivalence vyrazu a pr´kazu (II) ´ ´ ´ ˚ ˇı ˚ • Pro kazde k ∈ N0 definujeme (induktivne) relaci →k ⊆ (Com × Σ) × (Com × Σ): ˇ ´ ˇ →0 = idCom×Σ →i+1 = →i ◦ →
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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 , σ