Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Példa: Dinteger = {..., -1,0,1,...}; Dboolean = {true, false};

Hasonló előadás


Az előadások a következő témára: "Példa: Dinteger = {..., -1,0,1,...}; Dboolean = {true, false};"— Előadás másolata:

1 Példa: Dinteger = {..., -1,0,1,...}; Dboolean = {true, false}; DT1...Tn T = DT1...DTn  DT ; Az összes függvény halmaza, amelyek a DT1,...,DTn halmazokból DT halmazra képeznek le. l(c) értelmezés: Az alaptípusok minden konstansa saját magának az értelmezett értéke: ha c alaptí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.

2 A determinisztikus program: egy szimbólumokból képezett string.
Kulcsszavak: if, then, else, fi, while, do, od. A programot generáló grammatika: S::= skip | u:= t | S1; S2 | if B then S1 else S2 fi | while B do S od. u: egyszerű, vagy indexes változó; t: kifejezés; u és t típusa megegyezik. B: kvantor-független logikai kifejezés; if B then S fi  if B then S else skip fi; Az S,S1,S2 programok változói: egyszerű, vagy indexes változók.

3 Az S determinisztikus program jelentése:
M[S] A megfelelő (kezdő) állapotok halmazáról megfelelő (vég-)állapotok halmazára történő leképezés. Divergencia végállapotának jele: . Szemantika definiálása. Detonációs szemantika-definíciós módszer. Operációs szemantika-definíciós módszer. (minden programtípusra kézenfekvő). Adva az absztrakt gép. Adva a program: S. Adva a megfelelő állapothalmaz: . Az absztrakt gép konfigurációja:  S, ; ; A program végrehajtása konfigurációk közötti átmenetek sorozata.

4 Konfigurációk közötti átmeneti reláció (transition relation): 
konf1  konf2 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; A program befejeződik a  állapotban.

5 A nyelvi szerkezetek szemantikája:
Axiómák: 1. Üres utasítás: 2. Értékadás:  skip,    E, ;  u := t,     E, (u := (t)) ; Következtetési szabályok: Szekvencia: S1;S2. S1,   S2,  S1;S,   S2;S,  Feltételes elágazás: if  then S1 else S2 fi,  if  then S1 else S2 fi,   S1,  ha () = T;  if  then S1 else S2 fi,   S2,  ha () = F;

6 Bool kifejezés kiértékelése.
3.) 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.

7 Definíciók: a) b) c) d) Az S program  állapottal kezdődő tranzakciós sorozata: Si,i, (i  0) konfigurációk véges, vagy végtelen sorozata. S, = S0,0  S1,1   Si,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: Ü,; Ü: üres program. Az S program  kezdő állapottal kezdődő kiszámítása divergens, ha a sorozat végtelen.

8 Az S program kiszámítása egy adott  kezdő állapottal:
:  S,     S1,1   ...   Sn-1,n-1    Sn,n ; Ha a program végrehajtása véges és eredményesen befejeződik: :  S,     S1,1   ...   Sn-1,n-1    Sn,n ; val() = n, n, és Sn = T : üres program. Rövid jelölés: :  S,    *  Sn,n ; Ha a program végrehajtása véges, Sn = E üres program, de E = T, akkor a program végrehajtása hibás: :  S,   *  E,fail ; val() = fail , Sn = E: üres program, E = T.

9 Az S program kiszámítása egy adott  kezdő állapottal:
:  S,     S1,1   ...   Sn-1,n-1    Sn,n ; Ha a program végrehajtása véges és eredményesen befejeződik: :  S,    *  Sn,n ; val() = n, n, és Sn = T : üres program. Ha a program végrehajtása véges, Sn = E üres program, de E = T, akkor a program végrehajtása hibás: :  S,    *  E,fail ; val() = fail , Sn = E: üres program, E = T.

10 Lemma. Minden S determinisztikus programhoz adott  megfelelő
állapot mellett pontosan egy kiszámítás tartozik. Indoklás: Minden konfigurációnak pontosan egy rákövetkezője van a sorozatban. Definíció. Blokkolás mentesség: ha S  E, és minden  esetén létezik olyan S1, konfiguráció, melyre S,  S1,; akkor a programot blokkolás mentesnek nevezzük. Lemma. Minden determinisztikus program blokkolás mentes. Indoklás: Ha S  E, akkor minden S, konfigurációra létezik egy rákövetkező konfiguráció a  reláció szerint.

11 A determinisztikus program szemantikája.
Parciális helyességi szemantika: M[S] :   P(); M[s]() = {|S,  *E,}. Teljes helyességi szemantika: Mtot[S] :   P(  {}); Mtot[s]()= M[s]()  {  | S divergálhat  kezdeti értékkel }.

12   x:= x+1; while a[x]0 do x:= x+1 od, ' 
Példa. S a[1]:=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ékkel. { 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, '    while a[x]0 do x:= x+1 od, '[x:=1]   E, '[x:= 1] . M[S]() = Mtot[S]() = { '[x:= 1] } ;

13 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]() = ; Mtot[S]() = {  } ;

14 A szemantika tulajdonságai:
Legyen  az üres determinisztikus program: ()M[]() = ; Pl. 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]() = ; Mtot[S]() = {}; és X    {} esetén, Jelölés: N[S]: M[S], Mtot[S]; N[S](X) =  N[S](); X

15 1. 2. 3. 4. 5. N[S] monoton: Tekintsük az adott program utasításainak halmazát: ha X  Y    {}, akkor N[S](X)  N[S](Y); N[S1; S2](X) = N[S2](N[S1](X)); N[(S1; S2); S3](X) = N[(S1; (S2; S3)](X); N[if B then S1 else S2 fi)](X) = N[S1](X  {B})  N[S2](X  {~B})  { X and N = Mtot); k= M[while B do S od] = k=0M[(while B do S od)k].

16 k= 5. M[while B do S od] = k=0M[(while B do S od)k]. Mtot szemantika esetére ez nem igaz. Tegyük fel hogy igaz. Mivel minden  esetén Mtot[]() = {}; Ezért k=  k=0Mtot[(while B do S od)k](), minden while B do S od program esetén. Ámde van olyan while B do S od amelyre  Mtot[while B do S od]() ! Ellentmondás!

17 Szekvenciális tranzakciós diagram:
a program vezérlési szerkezetét írja le. A szerkezet: 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: állapot a memória tartalmát fejezi ki; állapot transzformációk a memória cellákhoz a végrehajtott operációk eredményeit rendelik.

18 A program vezérlési szerkezete:
címkékkel ellátott irányított gráf. A gráf csomópontjai: végrehajtási helyeket fejeznek ki. Az irányított élek ezeket a csomópontokat kötik össze. Az entry csomópont egy kitüntetett csomópont ahol a végrehajtás kezdődik. Címkéje s. Az exit csomópont olyan kitüntetett csomópont, amelyből nem mutat kifelé él. Címkéje t. A gráfban minden élhez egy utasítás tartozik címkeként: c  f; c: bool feltétel; f: állapot transzformáció.

19 Definíció. (bool feltétel, állapot transzformáció).
Adott , és . 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. Adva a program változóinak egy sorozata: x=(x1,...,xn); és a megfelelő d =(d1,...,dn); értékek egy sorozata. A megfeleltetés: di ha y = xi, (:xd)(y) = (y) ha y = xi; i = 1,...,n; Szemantikailag az állapot hozzárendelése a változókhoz: : x d;

20 A program vezérlési szerkezete: címkékkel ellátott irányított gráf.
A gráf csomópontjai a program állapotai, amelyeket címkék azonosítanak. l Az élek az állapotátmenetek, amelyekhez a leképezések tartoznak: c  f l l' A tranzakciós diagram: T = (L,T,s,t); L: állapotokat azonosító címkék halmaza: lL. (l, c  f, l') T; állapotátmenetek halmaza. s: Az indulási állapotot azonosító címke. t: A befejező állapotot azonosító címke.

21 Adva P =(L,T,s,t); A P tranzakciós diagram egy végrehajtása (kiszámítása)  a 0 kezdőértékkel a kezdő l0 címkétől: li,i ; konfigurációk egy sorozata: : l0,0   l1,1   l2,2   ... ahol l0=s. Minden tranzakcióhoz c  f úgy, hogy c(i) = true; és i+1= f(i); l l' A sorozat nem bővíthető: ha véges, akkor az utolsó konfigurációnak nincs rákövetkezője.

22 utolsó konfiguráció: t, ; val() = ; ;
1.) Ha a sorozat véges: utolsó konfiguráció: t, ; val() = ; ; 2.) Ha a sorozat véges: utolsó konfiguráció: ln, ; ln t; val() = fail; 3.) Ha a sorozat végtelen: val() = ; , fail ; comp(P)(): az olyan kiszámítások halmaza, amelyeknek kiindulási állapota . A P tranzakciós diagram jelentése: M[p]() = {val()|comp[P]()};


Letölteni ppt "Példa: Dinteger = {..., -1,0,1,...}; Dboolean = {true, false};"

Hasonló előadás


Google Hirdetések