1 Program for forelæsningen Udvidelser af Bims (Kontrolstrukturer) Repeat-løkker For-løkker Non-determinisme God Ond parallelitet Alle emner hører under semantisk ækvivalens. 1.0.1 Fra tidligere.. Bims semantik: a Num z V ar... S Stm I dag, ekstra opbygningsregler i Stm. Transitionssystemer for Stm: Transitionsystem for Stm i big-step-semantik < S, s > s Er en tripel: (Γ,, T ) Γ = Stm States States T = States er givet ved gamle og nye regler Transitionsystem for Stm i small-step-semantik < S, s > < S, s > og < S, s > s Er en tripel: (Γ,, T ) Γ = Stm States States T = States er givet ved gamle og nye regler. 1
2 Repeat-løkker: S ::=... repeat S until b Intuition: S udføres indtil b evaluerer til sand (dvs. altid mindst en gang) Big-step regler: [repeat-sand] [repeat-false] < S, s > s < repeat S until b, s > s hvor s b tt < S, s > s < repeat S until b, s > s < repeat S until b, s > s hvor s b ff [repeat-false] er ikke kompositionel lige som while-løkker 3 Observation: repeat S until b er overflødig; vi kan erstatte repeat S until b med: S; while b do S 4 Sætning: For alle s States < repeat S until b, s > s S; while b do S Bevis: Skal vise at hvis < repeat S until b, s > s (1) så < S; while b do S, s > s (2) Hvis (1) findes, så har den et derivationstræ af højde n. Vi viser altså en påstand på formen: For alle n 0 Hvis (1) har et derivationstræ af højde n, så kan vi lave et derivations træ for (2) Induktion i n: Bevis Basis: n = 0. Ingen derivationstræer af højde 0, for ethvert repeat-derivationstræ vil bruge repeat-sand eller repeat-false og de giver anledning til derivationstræer af højde > 0 (Reglerne har præmiser). Skridt: Antag sandt for n, vis sandt for n+1 Kan være konkluderet ved et derivationstræ, hvor vi til sidst brugte repeatsand 2
< S, s > s < repeat S until b, s > s hvors b tt Man så s b ff (Jævnfør regler for Bexp. Så har vi < while b do S, s > s Så < S, s > s < while b do S, s > s < S, while b do S, s > s (2) Kunne også være konkluderet med [repeat-false] ( ) < S, s > s < repeat S until b, s > s < repeat S until b, s > s hvor s b ff pr. induktionsantagelse; < S, while do S, s > s Som må skyldes [comp] < S, s > s 3 < while b do S, s 3 > s Men s b tt så kan vi bruge [while-true] < S, s > s 3 < while b dos, s 3 > s ( ) < while b do S, s > s Men nu kan (*) og (**) sættes sammen med [comp] og vi får (2) 5 Semantisk ækvivalens Et begreb der tillader os at sammenligne adfærd af statements; intuitivt set: S 1 bss S 2 Hvis S 1 og S 2 altid har samme adfærd i big-step semantik (tilsvarende findes for small-step 6 Definition: (Big-step semantisk ækvivalens) Lad S 1, S 2 Stm. S 1 bss S 2 Hvis der for alle s States: < S 1, s > s < S 2, s > s Dvs. repeat S until b bss S, while b do S sætning: 3
For alle S 1, S 2, S 3 Stm 1. S 1 bss S 2 ( bss er reflektivt) 2. Hvis S 1 bss S 2 så S 2 bss S 1 ( De er symmetriske ) 3. Hvis S 1 bss S 2 og S 2 bss S 3 så S 1 bss S 3 ( Transitiv) Dvs. bss er en ækvivalensrelation ADVARSEL: Dette er ikke definitionen af semantisk ækvivalens. Det er en række egenskaber som vi kan bevise gælder for bss 7 Abnorm temrinering S ::=... abort En abort-kommando medfører, at intet mere kan ske. Der skal ikke være transitioner fra en < abort, s > der findes hverken bigstep eller small-step-regler for abort. Der er ingen regler da der ikke er nogen transitioner efter abort. Big-step-semantik beskriver uendelig løkke og abnorm terminering på samme måde For alle S States < abort, s > < while 0 = 0 do Skip, s > Men i small-step-semantikken( I small-step er der forskel): < while 0 = 0 do skip, s > 2 < while 0 = 0 do skip, s > Definition: (Small-step) S 1 bss S 2 hvis for alle s States < S 1, s > s < S 1, s > s Faktisk < abort, s > sss while 0 = 0 do skip 8 Nondeterminisme Statements udvides S ::=... S 1 or S 2 Big-step regler [or1] [or2] < S 1, s > s < S 1 or S 2, s > s < s2, s > s < S 1 or S 2, s > s 4
Small-step-regler [or1] < S 1 or S 2, s > < S 1, s > [or2] < S 1 or S 2, s > < S 2, s > x := 2 or while 0 = 0 do Skip bss x := 2 x := 2 or while 0 = 0 do Skip sss x := 2 Men der er en forskel: Small-step: < x := 2 or while 0 = 0 do skip, s > < x := 2, s < < x := 2 or while 0 = 0 do skip, s > < while 0 = 0 do skip, s > UHA!!!! Alle valg får en ond mulighed (Ond nondeterminisme) Big-step: Kun terminerende valg giver transition (God nondeterminisme) < x := 2 or while 0 = 0 do Skip, s > s[x 2] 9 Parallelitet S :=.. S 1 par S 2 Ide: I S 1 par S 2 kan S 1 og S 2 flette deres udførsel: x := 1; x := x + 3; par x := 2 Giver 3 mulige x-værdier som resultat x 2 x 4 x 5 Small-step regler [Par-1] [Par-2] [Par-3] < S 1, s > < S 1, s > < S 1 par S 2, s > < S 1 par S 2, s > < S 1, s > s < S 1 par S 2, s > < S 2, s > < S 2, s > < S 2, s > < S 1 par S 2, s > < S 1 par S 2, s > 5
[Par-4] < S 2, s > s < S 1 par S 2, s > < S 1, s > Big-step DET DUER IKKE. BARE LAD VÆRE MED OVERHOVEDET AT PRØVE. 6