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

Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.

Hasonló előadás


Az előadások a következő témára: "Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások."— Előadás másolata:

1 Determinisztikus programok

2 Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások

3 Az Uts halmazt alkotó C utasítások absztrakt szintaxisa és elnevezései: skipüres utasítás X:=E(determinisztikus) értékadás (C 1 ;C 2 )kompozíció (B  C 1  C 2 )feltételes utasítás (B  C)ciklus utasítás

4 Ugyanez a szintaxis megadható B-N-formában is:  utasítás  ::= skip |  program változó  :=  kifejezés  |  utasítás  ;  utasítás  | if  logikai kif  then  utasítás  else  utasítás  fi | while  logikai kif  do  utasítás  od

5 Operációs szemantika: X : Valt  Pvalt változók d : D adatok s : S = Valt  D állapotok (változótartalmak)  :  = (S  Uts)  S konfigurációk op : Uts  P(  ) operációs átmeneti reláció

6 Kifejezések interpretálása (szemantikája): I : Kif  (S  D) kifejezések szemantikája E = I(E) I : LKif  P(S) logikai kifejezések szemantikája B = I(B)

7 A konfiguráció egyrészt megadja, hogy a változók milyen értékeket tartalmaznak, másrészt hol tart a végrehajtás, azaz milyen utasítást kell még végrehajtani. Az utasítások operációs szemantikája (op) az utasítás végrehajtása során megtehető (atomi) lépéseket definiálja: milyen konfigurációból milyen konfigurációkba juthatunk egyetlen lépés megtételével.

8 op(skip) = {   s,skip , s  : s  S } op(X:=E) = {   s, X:=E , s( X:=E(s) )  : s  S } op(C 1 ;C 2 ) = {   s´, (C´;C 2 ) ,  s´´, (C´´;C 2 )   :   s´, C´ ,  s´´, C´´   op( C 1 ) }  {   s´, (C´;C 2 ) ,  s´´, C 2   :   s´, C´ , s ´´  op( C 1 ) }  op( C 2 )

9 op(B  C 1  C 2 ) = {  s, (B  C 1  C 2 ) ,  s, C 1  : s  B }  {  s, (B  C 1  C 2 ) ,  s, C 2  : s  ¬B }  op( C 1 )  op( C 2 ) op(B  C) = {  s, (B  C) ,  s,( C;(B  C))  : s  B }  {  s, (B  C) ,s  : s  ¬B }  {  s´,( C ´; (B  C)) ,  s´´,( C ´´ ;(B  C))  :  s´, C ´ ,  s´´, C ´´  op( C ) }  {  s´,( C ´; (B  C)) ,  s´´, (B  C)  :  s´, C ´ ,s´´  op( C ) }

10 Denotációs szemantika

11 Utasítások (denotációs) szemantikája egy ún. hatásreláció, amely azt adja meg, hogy az utasítás (végrehajtása) az egyes állapotokból (a változók végrehajtás előtti tartalma = bemenet) milyen állapotokat (a változók végrehajtás utáni tartalma = kimenet) állíthat elő. I : Uts  P(S  S)utasítások szemantikája I(C) = C = {  s´,s´´  :  s´,C ,s´´  op(C)* }

12 Tételek : skip = {  s,s  : s  S } X:=E = {  s,s(X:=E(s))  : s  S } (C 1 ;C 2 ) = C 1 ° C 2 (B  C 1  C 2 ) = ((B  S)  C 1 )  ((( ¬ B)  S)  C 2 ) (B  C) = ((B  S)  C)*  (S  ( ¬ B)) = lkfp[ X.(( ¬ B)  ( ¬ B))  (((B  S)  C)°X)]

13 Parciális helyesség

14 feltételek : p,q : Felt = P(S) feladatok :  p,q  : Fdt = Felt  Felt parciális helyesség (függvény) : { p}C { q} : Felt  Uts  Felt  {igaz, hamis} { p}C { q} = ((p  S)  C)  (S  q)

15 Floyd-Naur A parciális helyesség lépésenkénti bizonyítása

16 Lemma Ha p, p', q  P(E) ( azaz E feletti unér relációk ), és r  P(E  E) ( azaz E feletti binér reláció ), akkor az alábbi állítások ekvivalensek: ((p  p')  r * )  (E  q)  i  P(E). (p  i)  (((i  E)  r)  (E  i))  ((i  p')  q)

17 Átfogalmazás p, p', q  P(E) tulajdonságok, r  P(E  E) E-n végrehajtható atomi műveletek halmaza, ((p  p')  r * )  (E  q) átfogalmazása: Ha egy p tulajdonságú elemből véges sok (esetleg 0) atomi művelet alkalmazásával eljuthatok egy p' tulajdonságú elemhez, akkor ez az elem q tulajdonságú is lesz.

18  i  P(E). (p  i)  (((i  E)  r)  (E  i))  ((i  p')  q) átfogalmazása: Létezik olyan i tulajdonság, amelyre teljesülnek a következők: minden p tulajdonságú elem i tulajdonságú. az i tulajdonság invariáns az r-beli műveletekkel szemben az i tulajdonságú elemek közül a p' tulajdonságúak q tulajdonságúak is.

19 C = {  s´,s´´  :  s´,C ,s´´  op(C)*} { p}C { q} = ((p  S)  C)  (S  q) A lemma alkalmazása a parciális helyesség esetére: E =  p =  p,C  p' = S r = op(C) q = q { p}C { q} = ((p  p')  r * )  (E  q) = = ((  p,C  S)  op(C) * )  (  q)

20 {p}C{q} =  i  P(  ).(  p,C   i)  (((i  )  op(C))  (  i))  ((i  S)  q), azaz {p}C{q} pontosan akkor igaz, ha a konfigurációk- nak létezik egy olyan i (globális invariáns) tulaj- donsága, amelyre igazak a következők: minden p tulajdonságú s állapot esetén  s,C  i tulajdonságú. az i tulajdonság invariáns az op(C)-beli atomi műveletekkel szemben az i tulajdonságú konfigurációk közül az S- beliek q tulajdonságúak.

21 Egy  -n definiált i globális invariánsból az utasítások rögzítésével S-en értelmezett lokális invariánsok definiálhatók, és fordítva. A Floyd-Naur-módszer: definiáljuk a lokális invariánsokat állítsuk elő belőlük az i globális invariánst bizonyítsuk az i-re vonatkozó tulajdonságokat.

22 Hoare-logika : {p} skip {p} = igaz {{s  S : s(X:=E(s))  q}} X:=E {q} = igaz {p} (C 1 ;C 2 ) {q} = =  r  Felt.({p} C 1 {r}  {r} C 2 {q}) {p} (B  C 1  C 2 ) {q} = = {p  B} C 1 {q}  {p  ¬ B} C 2 {q} {p  B} C {p}  {p} (B  C) {p  ¬ B}{p}C{q} = (  p'  Felt.  q'  Felt. (p  p')  {p'}C{q'}  (q'  q)) {p}(B*C){q} =  i  Felt. (p  i)  {i  B}C{i}  ((i  B)  q)

23 Hoare-féle kalkulus a parciális helyesség bizonyításához Induktív kifejezések : {P} C {Q}, ahol P, Q formulák, C utasítás. Axióma sémák : {P} skip {P}skip axióma {Q(X  E)} X:=E {Q}értékadás axiómája

24 Levezetési szabályok : {P} C 1 {R}, {R} C 2 {Q}kompozíciós {P} (C 1 ;C 2 ) {Q}szabály {P  B} C 1 {Q}, {P  ¬B} C 2 {Q}feltételes {P} (B  C 1  C 2 ) {Q}szabály {P  B} C {P} ciklus (while) {P} (B  C) {P  ¬B}szabály P  P´, {P´}C{Q´}, Q´  Q következmény {P} C {Q}szabály A while-szabályban a P-t ciklusinvariánsnak nevezzük.

25 Tétel : A Hoare-féle kalkulus helyes: Ha a {P} C {Q} induktív kifejezés levezet- hető, akkor {P} C {Q} = igaz. Tétel : A Hoare-féle kalkulus szemantikailag teljes: Ha {P} C {Q} = igaz, akkor léteznek a levezetéshez szükséges feltételek (de nem biztos, hogy formalizálhatóak).

26 Példa : Induktív kifejezés és levezetése

27 D = Z {x>0} y:=x; z:=1; while y>1 do z:=z*y; y:=y-1 od; {z=x!} {x>0} {x!=x!} y:=x; {y!=x!} {1*y!=x!} z:=1; {z*y!=x!} while y>1 do {z*y!=x!  y>1} {z*y*(y-1)!=x!} z:=z*y; {z*(y-1)!=x!} y:=y-1 {z*y!=x!} od; {z*y!=x!  y  1} {z=x!}       

28 Rekurzív, paraméter nélküli programok

29 Szintaxis: Pn : Proc eljárás nevek Pg : Progprogramok C : Utsutasítások

30 A Prog halmazt alkotó Pg program absztrakt szintaxisa: Pneljáráshívás Az Uts halmazt alkotó C utasítások újabb eleme: Pn::C 1 :C 2

31 Relációs szemantika

32 A program (denotációs) szemantikája az utasítások relációs szemantikája segítségével definiálható. Ebben az utasítás szemantikája függ az eljárás hatásrelációjától, az r relációtól. I : Uts  (P(S  S)  P(S  S)) Jelölés: I(C) = C(r)

33 Definíció: skip(r) = {  s,s  : s  S } X:=E(r) = {  s,s(X:=E(s))  : s  S } (C 1 ;C 2 )(r) = C 1 (r)° C 2 (r) (B  C 1  C 2 )(r)=(((B  S)  C 1 (r))  (( ¬ B)  S)  C 2 (r))) (B  C)(r) = ((B  S)  C(r))*  (S  ( ¬ B)) Pn(r) = r Pn::C 1 :C 2 = C 2 (lkfp(C 1 ))

34 A rekurzió szabálya: {P} Pn {Q}  {P} C 1 {Q} {P} Pn {Q}


Letölteni ppt "Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások."

Hasonló előadás


Google Hirdetések