Kiterjesztések sek szemantikája Példa D Integer = {..., -1,0,1,... }; D Boolean = { true, false } D T1... T n T = D T 1... D Tn D T Az összes függvf ggvény halmaza, amelyek a D T1,..., D Tn halmazokból D T halmazra képeznek k le. l(c) értelmezés Az alaptípusok pusok minden konstansa saját t magának az értelmezett értéke: ha c alaptípus pusú,, akkor l(c) = c Példa Az 1 Integer konstans értelmezi az 1 Integer számot. A true Boolean konstans értelmezi a true Boolean értéket.
Determinisztikus program A determinisztikus program egy szimbólumokból képzett string Kulcsszavak: if, then, else, fi, while, do, od A programot generáló grammatika S ::= skip u := t S 1 ; S 2 if B then S 1 else S 2 fi while B do S od (Az S, S 1, S 2 programok változói egyszerű, vagy indexes változók) Példa u egy egyszerű vagy indexes változó, t egy kifejezés és u és t típusa megegyezik, B egy kvantor-független logikai kifejezés if B then S fi if B then S else skip fi
Determinisztikus program jelentése Az S determinisztikus program jelentése A megfelelő (kezdő) állapotok halmazáról megfelelő (vég-)állapotok halmazára történő leképezés: M[S] Divergencia végállapotának jele: Denotációs szemantika-definíciós módszer Operációs szemantika-definíciós módszer (minden programtípusra kézenfekvő) Adott absztrakt gép, S program megfelelő Σ állapothalmaz esetén az absztrakt gép konfigurációja: < S, σ >, ahol σ Σ A program végrehajtása konfigurációk közötti átmenetek sorozata.
Kofiguráci ció-átmenet,, befejeződés Konfigurációk közötti átmeneti reláció (transition relation): Konfigurációk közötti átmenet konf 1 konf 2 <S, σ> <R, τ> σ, τ Σ, R: maradék program Befejeződés A program végrehajtásának befejeződésének eredménye <R, τ> R E : üres program ekkor a program befejeződik a τ állapotban.
Nyelvi szerkezetek szemantikája Axiómák Üres utasítás: < skip, σ > < E, σ > Értékadás: < u := t, σ > < E, σ(u := σ(t)) > Következtetési szabályok Szekvencia: S 1 ; S 2 <S 1, σ> <S 2, τ> <S 1 ;S, σ> <S 2 ;S, τ> Feltételes elágazás: if α then S 1 else S 2 fi < if α then S 1 else S 2 fi,σ > <S 1, σ> ha σ(α) = T; < if α then S 1 else S 2 fi,σ > <S 2, σ> ha σ(α) = F;
Nyelvi szerkezetek szemantikája Következtetési szabályok (folytatás) Iteráció: while B do S od < while B do S od, σ > < S; while B do S od, σ> ha σ(b) = T, < while B do S od, σ > < E, σ> ha σ(b) = F. Megszakítás nélkül végrehajtódnak skip, értékadás, bool kifejezés kiértékelése.
Determinisztikus programok S program σ állapottal kezdődő tranzakciós sorozata Konfigurációk véges, vagy végtelen sorozata: <S i, σ i > (i 0) <S, σ> = <S 0, σ 0 > <S 1, σ 1 >... <S i, σ i >... Az S program σ állapottal kezdődő kiszámítása egy olyan tranzakciós sorozat, amely nem bővíthető. Az S program σ állapottal kezdődő kiszámítása τ állapotban befejeződik, ha a sorozat véges és annak utolsó konfigurációja: <E, τ> ahol E az üres (empty) program. Az S program σ kezdő állapottal kezdődő kiszámítása divergens, ha a sorozat végtelen.
Determinisztikus programok S program kiszámítása egy adott σ kezdő állapottal η: < S, σ > < S 1, σ 1 >... < S n-1, σ n-1 > < S n, σ n > Ha a program végrehajtása véges és eredményesen befejeződik η: < S, σ > < S 1, σ 1 >... < S n-1, σ n-1 > < S n, σ n > val(η) = σ n, σ n Σ S n = T (üres program) Rövid jelölés: η: < S, σ > * < S n, σ n > Ha a program végrehajtása véges, akkor S n üres program (E). Mivel E = T (vagyis terminál), így ha a program végrehajtása hibás, akkor η: < S, σ > * < E, fail > val(η) = fail, fail Σ S n = E, (üres program) E = T.
Determinisztikus programok Lemma Indoklás Definíció Minden S determinisztikus programhoz adott σ megfelelő állapot mellett pontosan egy kiszámítás tartozik. Minden konfigurációnak pontosan egy rákövetkezője van a sorozatban. Blokkolás mentesség Ha S E és minden σ Σ esetén létezik olyan <S 1,τ> konfiguráció, melyre <S, σ> <S 1, τ>, akkor a programot blokkolás mentesnek nevezzük. Lemma Indoklás Minden determinisztikus program blokkolás mentes. Ha S E, akkor minden <S, τ> konfigurációra létezik egy rákövetkező konfiguráció a reláció szerint.
Determinisztikus program szemantikája Parciális helyességi szemantika M[S] : Σ P(Σ) M[S](σ) = { τ < S, σ > * < E, τ > } Teljes helyességi szemantika M tot [S] : Σ P( Σ { } ) M tot [S](σ) = M[S](σ) { S divergálhat σ kezdeti értékkel }
Példa S a[0]:=1; a[1]:=0; while a[x] 0 do x:= x+1 od; Legyen σ Σ, amelyben x=0; Determinizmus alapján egy kiszámítás létezik <S,σ> kezdőérték esetén {σ Σ x=0} < a[0]:=1; a[1]:=0; while a[x] 0 do x := x+1 od, σ >; {x=0 a[0]=1} < a[1]:=0; while a[x] 0 do x := x+1 od, σ[a[0]:=1] > < while a[x] 0 do x := x+1 od, σ' > (σ': σ[a[0]:=1][a[1]:=0]; ami a σ ismételt aktualizálását jelenti), < x:= x+1; while a[x] 0 do x := x+1 od, σ' > M[S](σ) = M tot [S](σ) = { σ'[x:= 1] } < while a[x] 0 do x := x+1 od, σ'[x:=1] > <E, σ'[x:= 1] >.
Példa Legyen τ Σ olyan állapot, amelynél x = 2 és i = 2, 3,..., a[ i ] = 1; S a[0]:=1; a[1]:=0; while a[x] 0 do x := x+1 od; Induláskor <S, τ> < a[1]:=0; while a[x] 0 do x := x+1 od, τ[a[0]:=1] > < while a[x] 0 do x := x+1 od, τ' > (τ': τ[a[0]:=1][a[1]:=0]; ami a τ ismételt aktualizálását jelenti). < x := x+1; while a[x] 0 do x := x+1 od, τ' > < while a[x] 0 do x := x+1 od, τ'[x := τ(x)+1] > * < while a[x] 0 do x := x+1 od, τ'[x := τ(x)+k] > S végrehajtása divergens M[S](τ) = M tot [S](τ) = { }
A szemantika tulajdonságai Ha Ω egy üres determinisztikus program, akkor σ Σ : Példa M[Ω](σ) = while true do skip od Az iteráció induktív definíciója: (while B do S od) 0 = Ω, (while B do S od) k+1 = if B then S; (while B do S od) k else skip fi; M[S]( ) =, M tot [S]( ) = { } és X Σ { } esetén N[S]: M[S], M tot [S] N[S](X) = N[S](σ) σ X
A szemantika tulajdonságai N[S] monoton Egy adott program utasításainak halmazát tekintve ha X Y Σ { }, akkor N[S](X) N[S](Y) Kompozíció tulajdonság N[S 1 ; S 2 ](X) = N[S 2 ](N[S 1 ](X)) Asszociatív a program utasításaira nézve N[(S 1 ; S 2 ); S 3 ](X) = N[(S 1 ; (S 2 ; S 3 )](X) Feltételes elágazás tulajdonsága N[if B then S 1 else S 2 fi)](x) = N[S 1 ](X {B}) N[S 2 ](X {~B}) { X and N = M tot ) Iteráció tulajdonsága k= M[while B do S od] = M[(while B do S od) k ] k=0
A szemantika tulajdonságai Az iterációs tulajdonság M tot szemantikára nem igaz k= M[while B do S od] = M[(while B do S od) k ] k=0 Bizonyítás Tegyük fel hogy igaz. Mivel minden σ Σ esetén M tot [Ω](σ) = { }, ezért k= M tot [(while B do S od) k ](σ) k=0 minden while B do S od program esetén. De létezik olyan while B do S od, amelyre Ellentmondás! M tot [while B do S od](σ)
Bool feltétel, tel, állapot transzformáci ció Definíció (bool feltétel, állapot transzformáció) Adott Σ állapot halmaz, és σ Σ állapot mellett a Bool feltétel egy bool függvény, amely a szóban forgó állapothoz az igaz értéket rendeli: Σ bool Az f állapot transzformáció a Σ Σ leképezések egy eleme. Szemantika hozzárendelése a változókhoz Adott a program változóinak egy x = (x 1,..., x n ) sorozata és a megfelelő d = (d 1,..., d n ) értékek egy sorozata. A megfeleltetés (σ: x d)(y) = d i ha y = x i, σ(y) ha y x i i = 1,..., n Szemantikailag az állapot hozzárendelése a változókhoz: σ: x d
Szekvenciális tranzakciós s diagram Szekvenciális tranzakciós diagram a program vezérlési szerkezetét írja le. Szerkezete A program végrehajtási pontjait és a pontok közötti átmeneteket (transitions) tartalmazza. Végrehajtási hely a program számlálónak (counter) a helyzetét mutatja. Átmenet a tranzakció az utasítás végrehajtásának a hatását adja meg a programszámláló új értékének a formájában. Egy utasítás végrehajtása állapot transzformáció formájában valósul meg az állapot a memória tartalmát fejezi ki, az állapot transzformációk a memória cellákhoz a végrehajtott operációk eredményeit rendelik.
Szekvenciális tranzakciós s diagram A program vezérlési szerkezete egy címkékkel ellátott irányított gráf. Tranzakciós diagram T = ( L, T, s, t ) Gráf csúcsok a program állapotai entry kitüntetett csúcs: indulási állapotot azonosító cimke: s exit kitüntetett csúcs: befejező állapotot azonosító cimke: t L állapotokat azonosító címkék halmaza: l L A gráfban minden él egy állapotátmenet, melyhez egy utasítás tartozik címkeként: c f l c logikai feltétel, f állapot transzformáció. (l, c f, l') T állapotátmenetek halmaza. l l'
Tranzakciós s diagram kiszámítása sa Egy P = (L, T, s, t) tranzakciós diagram egy η végrehajtása (kiszámítása) a σ 0 kezdőértékkel a kezdő l 0 címkétől l i, σ i konfigurációk egy sorozata: η: l 0, σ 0 l 1, σ 1 l 2, σ 2... ahol l 0 = s. Minden tranzakcióhoz létezik l c f l' úgy, hogy c(σ i ) = true és σ i+1 = f(σ i ) A sorozat nem bővíthető Ha véges, akkor az utolsó konfigurációnak nincs rákövetkezője.
Tranzakciós s diagram kiszámítása sa Ha a sorozat véges és az utolsó konfiguráció: t, τ val(η) = τ (τ Σ) Ha a sorozat véges és az utolsó konfiguráció: l n, τ, l n t val(η) = fail Ha a sorozat végtelen val(η) = (, fail Σ) comp(p)(σ): P kiszámításainak halmaza, a σ kiindulási állapot mellett. A P tranzakciós diagram jelentése: M[P](σ) = { val(η) η comp[p](σ) }