1



       Semantiky programovacıch jazyku
        ´                   ´        ˚


Doporuc ´ literatura
      ˇena

• Gl...
2
                      Definice programovacıho jazyka
                                         ´



• Syntaxe definuje „spr...
2
                      Definice programovacıho jazyka
                                         ´



• Syntaxe definuje „spr...
3
                ´ ˇel
                Uc a pouzitelnost formalnı semantiky
                        ˇ             ´ ´ ´

...
3
                ´ ˇel
                Uc a pouzitelnost formalnı semantiky
                        ˇ             ´ ´ ´

...
3
                ´ ˇel
                Uc a pouzitelnost formalnı semantiky
                        ˇ             ´ ´ ´

...
4
       Zakladnı „styly“ semantik programovacıch jazyku
        ´     ´          ´                  ´        ˚



• Opera...
4
       Zakladnı „styly“ semantik programovacıch jazyku
        ´     ´          ´                  ´        ˚



• Opera...
4
       Zakladnı „styly“ semantik programovacıch jazyku
        ´     ´          ´                  ´        ˚



• Opera...
5
                Abstraktnı syntax programovacıch jazyku
                         ´                   ´        ˚


• Abst...
5
                Abstraktnı syntax programovacıch jazyku
                         ´                   ´        ˚


• Abst...
6
                                     Syntakticke stromy
                                               ´

• Uvazme abstr...
6
                                     Syntakticke stromy
                                               ´

• Uvazme abstr...
6
                                     Syntakticke stromy
                                               ´

• Uvazme abstr...
7
                     Pr´klad definice abstraktnı syntaxe
                      ˇı                      ´


•    X   ::=  ...
7
                     Pr´klad definice abstraktnı syntaxe
                      ˇı                      ´


•    X   ::=  ...
7
                             Pr´klad definice abstraktnı syntaxe
                              ˇı                      ´
...
8
             Konkretnı syntax programovacıch jazyku
                  ´ ´                    ´        ˚

Urc
  ˇuje, jak...
8
                   Konkretnı syntax programovacıch jazyku
                        ´ ´                    ´        ˚

Urc...
8
                   Konkretnı syntax programovacıch jazyku
                        ´ ´                    ´        ˚

Urc...
8
                   Konkretnı syntax programovacıch jazyku
                        ´ ´                    ´        ˚

Urc...
8
                   Konkretnı syntax programovacıch jazyku
                        ´ ´                    ´        ˚

Urc...
8
                   Konkretnı syntax programovacıch jazyku
                        ´ ´                    ´        ˚

Urc...
8
                   Konkretnı syntax programovacıch jazyku
                        ´ ´                    ´        ˚

Urc...
8
                   Konkretnı syntax programovacıch jazyku
                        ´ ´                    ´        ˚

Urc...
9
        Odvozovacı systemy, dukazy a dokazatelna tvrzenı
                 ´     ´     ˚                 ´       ´


• Od...
10
Odvozovacı system vyrokove logiky
         ´     ´   ´     ´
10
                   Odvozovacı system vyrokove logiky
                            ´     ´   ´     ´


• Abstraktnı synta...
10
                   Odvozovacı system vyrokove logiky
                            ´     ´   ´     ´


• Abstraktnı synta...
10
                   Odvozovacı system vyrokove logiky
                            ´     ´   ´     ´


• Abstraktnı synta...
10
                   Odvozovacı system vyrokove logiky
                            ´     ´   ´     ´


• Abstraktnı synta...
11
                           Indukce k vysce stromu
                                      ´ˇ


• Bud’ M (nejaka) mnozina ...
11
                            Indukce k vysce stromu
                                       ´ˇ


• Bud’ M (nejaka) mnozin...
11
                            Indukce k vysce stromu
                                       ´ˇ


• Bud’ M (nejaka) mnozin...
11
                            Indukce k vysce stromu
                                       ´ˇ


• Bud’ M (nejaka) mnozin...
12
Abstraktnı syntaxe jazyka IMP
         ´
12
                         Abstraktnı syntaxe jazyka IMP
                                  ´


• Zakladnı syntakticke dom...
12
                            Abstraktnı syntaxe jazyka IMP
                                     ´


• Zakladnı syntaktic...
12
                            Abstraktnı syntaxe jazyka IMP
                                     ´


• Zakladnı syntaktic...
12
                            Abstraktnı syntaxe jazyka IMP
                                     ´


• Zakladnı syntaktic...
13
                               Operac ´ semantika
                                    ˇnı ´


• Programum v danem jazyc...
13
                               Operac ´ semantika
                                    ˇnı ´


• Programum v danem jazyc...
14
           SOS semantika IMP prvnıho typu („big step“)
                ´                ´


• Stav je zobrazenı σ : Var...
14
            SOS semantika IMP prvnıho typu („big step“)
                 ´                ´


• Stav je zobrazenı σ : V...
14
            SOS semantika IMP prvnıho typu („big step“)
                 ´                ´


• Stav je zobrazenı σ : V...
15
                  Aritmeticke vyrazy Aexp
                            ´ ´

a, σ → n   „aritmeticky vyraz a se ve stavu ...
15
                      Aritmeticke vyrazy Aexp
                                ´ ´

a, σ → n       „aritmeticky vyraz a ...
15
                         Aritmeticke vyrazy Aexp
                                   ´ ´

a, σ → n          „aritmeticky...
15
                           Aritmeticke vyrazy Aexp
                                     ´ ´

a, σ → n           „aritme...
15
                           Aritmeticke vyrazy Aexp
                                     ´ ´

a, σ → n           „aritme...
16
                    Pravdivostnı vyrazy Bexp
                               ´ ´

b, σ → t   „pravdivostnı vyraz b se ve...
16
                            Pravdivostnı vyrazy Bexp
                                       ´ ´

b, σ → t           „pr...
16
                            Pravdivostnı vyrazy Bexp
                                       ´ ´

b, σ → t           „pr...
16
                            Pravdivostnı vyrazy Bexp
                                       ´ ´

b, σ → t           „pr...
16
                            Pravdivostnı vyrazy Bexp
                                       ´ ´

b, σ → t           „pr...
16
                            Pravdivostnı vyrazy Bexp
                                       ´ ´

b, σ → t           „pr...
16
                            Pravdivostnı vyrazy Bexp
                                       ´ ´

b, σ → t           „pr...
17
                           Pr´kazy Com
                            ˇı

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

c, σ → σ          „pr´kaz c aktivo...
17
                                  Pr´kazy Com
                                   ˇı

c, σ → σ          „pr´kaz c aktivo...
17
                                  Pr´kazy Com
                                   ˇı

c, σ → σ          „pr´kaz c aktivo...
17
                                  Pr´kazy Com
                                   ˇı

c, σ → σ          „pr´kaz c aktivo...
17
                                  Pr´kazy Com
                                   ˇı

c, σ → σ          „pr´kaz c aktivo...
18
     Pr´klad dukazoveho stromu v SOS semantice 1. typu
      ˇı      ˚     ´                 ´



Uvazme program while ...
18
      Pr´klad dukazoveho stromu v SOS semantice 1. typu
       ˇı      ˚     ´                 ´



Uvazme program whil...
18
      Pr´klad dukazoveho stromu v SOS semantice 1. typu
       ˇı      ˚     ´                 ´



Uvazme program whil...
19
           SOS semantika prvnıho typu je deterministicka
                ´            ´                         ´


Vet...
19
           SOS semantika prvnıho typu je deterministicka
                ´            ´                         ´


Vet...
19
           SOS semantika prvnıho typu je deterministicka
                ´            ´                         ´


Vet...
19
           SOS semantika prvnıho typu je deterministicka
                ´            ´                         ´


Vet...
19
           SOS semantika prvnıho typu je deterministicka
                ´            ´                         ´


Vet...
19
           SOS semantika prvnıho typu je deterministicka
                ´            ´                         ´


Vet...
20
ad 3. Indukcı k vysce odvozenı ukazeme, ze pokud pro dane c a σ existuje (nejake) σ takove,
            ´     ´ˇ       ...
20
ad 3. Indukcı k vysce odvozenı ukazeme, ze pokud pro dane c a σ existuje (nejake) σ takove,
            ´     ´ˇ       ...
20
ad 3. Indukcı k vysce odvozenı ukazeme, ze pokud pro dane c a σ existuje (nejake) σ takove,
            ´     ´ˇ       ...
20
ad 3. Indukcı k vysce odvozenı ukazeme, ze pokud pro dane c a σ existuje (nejake) σ takove,
            ´     ´ˇ       ...
20
ad 3. Indukcı k vysce odvozenı ukazeme, ze pokud pro dane c a σ existuje (nejake) σ takove,
            ´     ´ˇ       ...
20
ad 3. Indukcı k vysce odvozenı ukazeme, ze pokud pro dane c a σ existuje (nejake) σ takove,
            ´     ´ˇ       ...
20
ad 3. Indukcı k vysce odvozenı ukazeme, ze pokud pro dane c a σ existuje (nejake) σ takove,
            ´     ´ˇ       ...
21
             Semanticka ekvivalence vyrazu a pr´kazu (I)
              ´       ´              ´   ˚    ˇı   ˚



• Arit...
21
             Semanticka ekvivalence vyrazu a pr´kazu (I)
              ´       ´              ´   ˚    ˇı   ˚



• Arit...
21
             Semanticka ekvivalence vyrazu a pr´kazu (I)
              ´       ´              ´   ˚    ˇı   ˚



• Arit...
22
                 Pr´klad ekvivaletnıch programu
                  ˇı               ´          ˚


Dokazeme, ze
   ´ˇ   ...
22
                      Pr´klad ekvivaletnıch programu
                       ˇı               ´          ˚


Dokazeme, z...
22
                         Pr´klad ekvivaletnıch programu
                          ˇı               ´          ˚


Dokaz...
22
                         Pr´klad ekvivaletnıch programu
                          ˇı               ´          ˚


Dokaz...
22
                          Pr´klad ekvivaletnıch programu
                           ˇı               ´          ˚


Dok...
22
                          Pr´klad ekvivaletnıch programu
                           ˇı               ´          ˚


Dok...
22
                          Pr´klad ekvivaletnıch programu
                           ˇı               ´          ˚


Dok...
23
      Operac ´ semantika IMP druheho typu („small step“)
           ˇnı ´                 ´


• Cılem je definovat prech...
23
      Operac ´ semantika IMP druheho typu („small step“)
           ˇnı ´                 ´


• Cılem je definovat prech...
23
      Operac ´ semantika IMP druheho typu („small step“)
           ˇnı ´                 ´


• Cılem je definovat prech...
24
                            Aritmeticke vyrazy Aexp
                                      ´ ´

•   n, σ   – konec ´ kon...
24
                            Aritmeticke vyrazy Aexp
                                      ´ ´

•   n, σ   – konec ´ kon...
24
                            Aritmeticke vyrazy Aexp
                                      ´ ´

•   n, σ   – konec ´ kon...
24
                                Aritmeticke vyrazy Aexp
                                          ´ ´

•   n, σ   – kon...
24
                                Aritmeticke vyrazy Aexp
                                          ´ ´

•   n, σ   – kon...
24
                                Aritmeticke vyrazy Aexp
                                          ´ ´

•   n, σ   – kon...
24
                                Aritmeticke vyrazy Aexp
                                          ´ ´

•   n, σ   – kon...
24
                                Aritmeticke vyrazy Aexp
                                          ´ ´

•   n, σ   – kon...
25
                            Pravdivostnı vyrazy Bexp
                                       ´ ´


•   tt, σ   – konec ´...
25
                              Pravdivostnı vyrazy Bexp
                                         ´ ´


•   tt, σ   – kon...
25
                              Pravdivostnı vyrazy Bexp
                                         ´ ´


•   tt, σ   – kon...
25
                              Pravdivostnı vyrazy Bexp
                                         ´ ´


•   tt, σ   – kon...
25
                              Pravdivostnı vyrazy Bexp
                                         ´ ´


•   tt, σ   – kon...
25
                              Pravdivostnı vyrazy Bexp
                                         ´ ´


•   tt, σ   – kon...
26
                                     Pr´kazy Com
                                      ˇı


•   skip, σ   – konec ´ kon...
26
                                     Pr´kazy Com
                                      ˇı


•   skip, σ   – konec ´ kon...
26
                                     Pr´kazy Com
                                      ˇı


•   skip, σ   – konec ´ kon...
26
                                       Pr´kazy Com
                                        ˇı


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


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


•   skip, σ   – konec...
27
            Semanticka ekvivalence vyrazu a pr´kazu (II)
             ´       ´              ´   ˚    ˇı   ˚


• Pro ka...
27
            Semanticka ekvivalence vyrazu a pr´kazu (II)
             ´       ´              ´   ˚    ˇı   ˚


• Pro ka...
27
             Semanticka ekvivalence vyrazu a pr´kazu (II)
              ´       ´              ´   ˚    ˇı   ˚


• Pro ...
27
             Semanticka ekvivalence vyrazu a pr´kazu (II)
              ´       ´              ´   ˚    ˇı   ˚


• Pro ...
27
             Semanticka ekvivalence vyrazu a pr´kazu (II)
              ´       ´              ´   ˚    ˇı   ˚


• Pro ...
28
                Ekvivalence SOS semantik 1. a 2. typu
                                 ´


Lema 2.
 1. Jestlize a, σ →k...
28
                Ekvivalence SOS semantik 1. a 2. typu
                                 ´


Lema 2.
 1. Jestlize a, σ →k...
28
                 Ekvivalence SOS semantik 1. a 2. typu
                                  ´


Lema 2.
 1. Jestlize a, σ ...
28
                 Ekvivalence SOS semantik 1. a 2. typu
                                  ´


Lema 2.
 1. Jestlize a, σ ...
28
                 Ekvivalence SOS semantik 1. a 2. typu
                                  ´


Lema 2.
 1. Jestlize a, σ ...
28
                   Ekvivalence SOS semantik 1. a 2. typu
                                    ´


Lema 2.
  1. Jestlize ...
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Nps54.tmp
Upcoming SlideShare
Loading in...5
×

Nps54.tmp

402

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
402
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Nps54.tmp

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

    Clipping is a handy way to collect important slides you want to go back to later.

×