380 likes | 509 Views
Programozáselmélet. Logikák és módszerek a programhelyesség bizonyításához. Programmodellek szekvenciális programok rekurzív programok nemdeterminisztikus elemek párhuzamos programok funkcionális programok Programok szemantikája transzlációs szemantika attribútumnyelvtanok
E N D
Programozáselmélet Logikák és módszerek a programhelyesség bizonyításához
Programmodellek szekvenciális programok rekurzív programok nemdeterminisztikus elemek párhuzamos programok funkcionális programok Programok szemantikája transzlációs szemantika attribútumnyelvtanok operációs szemantika denotációs szemantika axiomatikus szemantika Programozáselmélet
Irodalom • Jan van Leeuwen ed.: Handbook of Theoretical Computer Science: Formal Models and Semantics, Elsevier Pub. 1990. • P. Cousot: Methods and Logic for Proving Programs • H. P. Barendregt: Functional Programming and Lambda Calculus • H. R. Nielson - F. Nielson: Semantics with Applications: A Formal Introduction, 1992. www.daimi.au.dk/~hrn • Kozma L. - Varga L.: A szoftvertechnológia elméleti kérdései, ELTE 2003. • Csörnyei Z.: Lambda-kalkulus, előadás jegyzet ELTE
Transzlációs szemantika Program Input adat Transzlációs függvény Tárgyprogram Végrehajtás Program output
Attribútumnyelvtan Komponensei: • G környezetfüggetlen nyelvtan • A attribútumok rendszere • A nyelvtan nemterminális szimbólumaihoz attribútumokat (adott típusú változókat) rendelhetünk, Ezek tartalma lesz a jelentés egy-egy komponense. Az attribútumok kétfélék: szintetizáltak és örököltek. Az előbbiek a nemterminálisból levezetett szóból kinyer-hető jelentést, míg az utóbbiak a szövegkörnyezet jelentés-módosító hatásait tartalmazzák. • P szemantikai egyenletek • Az egyenletekkel lehet definiálni a nyelvtan szabályaiban szereplő nemterminálisok attribútumai közti összefüggéseket
Attribútumnyelvtan Egy mondat jelentésének meghatározása: A mondat szintaxisfájában szereplő nemterminálisok attribútumai annyi példányban szerepelnek, ahány példányban maga a nemterminális szerepel. Egy nemterminálisból levezetett részszó jelentését a nemterminális szintetizált attribútumai képviselik, amely függ a külső hatásokat megtestesítő örökölt attribútumuktól. Azaz a kiszámítás folyamatában az örökölt attribútumok az input adatok, a szintetizáltak az outputok. Az attribútumelőfordulások tartalmának meghatározása a szemantikai egyenletek alapján történik.
pA q uB v . . . xC y Attribútumfüggőségek sémája Szintetizált attribútumok: q, v, y Örökölt attribútumok: p, u, x
Példa: Bináris valós konstansok • Környezetfüggetlen nyelvtan: • Attribútumok rendszere:
S v rN v l . rN v l rN v l rN v l rB v Példa: Bináris valós konstansok • Szemantikai egyenletek és a lokális függőség
rB v rN v l rB v 1 0 Példa: Bináris valós konstansok • Szemantikai egyenletek és a lokális függőség
Szintaxisfa S . N N B N B N N B 0 N B 1 1 0
Attribútum előfordulások S v rN v l . rN v l rN v l rB v rN v l rB v rN v l rB v 0 rN v l rB v 1 1 0
Lokális attribútum függőségek S v rN v l . rN v l rN v l rB v rN v l rB v rN v l rB v 0 rN v l rB v 1 1 0
Globális attribútum függőségek S v rN v l . rN v l rN v l rB v rN v l rB v rN v l rB v 0 rN v l rB v 1 1 0
Attribútumok redukálása S v rN v l . rN v l rN v l rB v rN v l rB v rN v l rB v 0 rN v l rB v 1 1 0
Attribútumok kiértékelése 2.25 S v 0.25 0 -2 rN v l 2 . rN v l 2 0 1 0 rN v l rB v rN v l rB v 2 1 0.25 -2 rN v l rB v 0 rN v l rB v 1 2 0 1 0 0 0 1 0
Operációs szemantika Program Input adat Operációspecifikáció Eredmény • Az operációspecifikáció szokásos komponensei: • konfigurációk halmaza • operációs reláció: bináris reláció a konfigurációk halmazán (a megtehető elemi operációk halmaza) • kezdő konfigurációk, végkonfigurációk
Denotációs szemantika Program Jelentésfüggvény Matematikai denotáció Az inputot és outputot, és a köztük lévő kapcsolatot kifejező matematikai objektum a matematika nyelvén megfogalmazva
Axiomatikus szemantika • Magasabb absztrakciós szint: nem a program inputja és outputja közti kapcsolat közvetlen leírása a cél. • Feladat (pl. input- és output- feltételpár) • Helyességfogalmak (feladat és program viszonya) • Kalkulus a helyesség bizonyításához • A helyességet kifejező formulák • Axiómák, levezetési szabályok (pl. Hoare-kalkulus, Dijkstra-kalkulus stb.)
Matematikai jelölések • xE.P(x) x(xEP(x)) • xE.P(x) x(xEP(x)) • F(x)P(x) y x(yF(x)P(x)) • e1,e2,…,enEnvagy (e1,e2,…,en)En • rEn halmaz komplementere: r • reláció részhalmaz • unáris reláció: r E bináris reláció: r E2 • két bináris reláció kompoziciós szorzata: r◊r e,eeE.(e,ere,er ) • diagonális reláció: e,eeE
Matematikai jelölések • bináris reláció hatványa: r 0 , rn+1 r◊rn • bináris reláció reflexív, tranzitív lezártja: r rn n • az r bináris reláció bal, ill. jobb oldali leszűkítése a p unáris relációra: pr (pE) rr p r (Ep) • a p unáris relációnak az r bináris reláció szerinti képe: p ◊r eep.e,er • a p unáris relációnak az r bináris reláció szerinti inverzképe: r ◊p eep.e,er
Matematikai jelölések • kép és inverzkép néhány tulajdonsága ( p, q unáris, r, s bináris relációk): • monotonitás: Ha pq és rs, akkor p◊rq◊s és r◊ps◊q • asszociativitás: (p◊r)◊s=p◊(r◊s), (r◊s)◊q=r◊(s◊q) • hatványhalmaz: PE • fügvényhalmaz: DE • az fDE függvény értékének a d helyen e -re való módosítása: fd→e
Szekvenciális programok - szintaxis • X: Valtváltozók • E: Kifkifejezések • B: Lkiflogikai kifejezések • C: Utsutasítások C = skip | X E | (C1;C2) | (BC1C2) | (BC) Az utasítások neve rendre üres utasítás, (determinisztikus) értékadás, kompozíció, feltételes utasítás, ciklus utasítás.
Az utasítások szintaxisa B-N-formában utasítás skip| program változó kifejezés| utasítás ; utasítás| if logikai kifejezés then utasítás else utasítás fi| while logikai kifejezés do utasítás od
Operációs szemantika • d:Dadatok • s:S ValtDállapotok • : SUts Skonfigurációk
Kifejezések interpretálása (szemantikája) • I:Kif SDkifejezésekszemantikájajelölés:E IE • I:Lkif PSlogikai kifejezések szemantikájajelölés:B IB
Példa egy programra és végrehajtására A program:(x:=x-1;(x>0*(y:=y+x;x:=x-1))) Kezdő értékek: x=3ésy=0 x y amit még végre kell hajtani 3 0 (x:=x-1;(x>0*(y:=y+x;x:=x-1))) 2 0 (x>0*(y:=y+x;x:=x-1)) 2 0 ((y:=y+x;x:=x-1);(x>0*(y:=y+x;x:=x-1))) 2 2 (x:=x-1;(x>0*(y:=y+x;x:=x-1))) 1 2 (x>0*(y:=y+x;x:=x-1)) 1 2 ((y:=y+x;x:=x-1);(x>0*(y:=y+x;x:=x-1))) 1 3 (x:=x-1;(x>0*(y:=y+x;x:=x-1))) 0 3 (x>0*(y:=y+x;x:=x-1)) 0 3
Az operációs átmeneti reláció az utasítások végrehajtása során megtehető lépések halmaza. Op Az utasítások végrehajtásának lépései, azaz az Opreláció elemei pontosan azok a rendezett, konfiguráció párok, amelyek a következőkben felsorolt konstrukciós lépések közül véges sok alkalmazásával előállnak. Operációs átmeneti reláció
Az üres utasítás végrehajtásas,skip →Opsminden sSesetén Az értékadás végrehajtásas,X E →OpsX →Es minden sS,XValtés EKif esetén Atomi (egylépéses) utasítások
Feltételkiértékelés és belépés a then-ágbas,(BC1C2) →Op s,C1 minden BLkif,C1, C2Utsés sB esetén Feltételkiértékelés és belépés az else-ágbas,(BC1C2) →Op s,C2 minden BLkif,C1, C2Utsés sB esetén A feltételes utasítás végrehajtásának első lépése
Feltételkiértékelés és belépés a ciklusbas,(BC) →Op s,(C;(BC)) minden BLkif,CUtsés sB esetén Feltételkiértékelés és kilépés a ciklusbóls,(BC) →Ops minden BLkif,CUtsés sB esetén A ciklus utasítás végrehajtásának első lépése
Az első komponens végrehajtásának nem utolsó lépéseHa s,C →Op s,Cés CUts, akkors,(C ;C) →Op s,(C ;C) Az első komponens végrehajtásának utolsó lépéseHa s,C →Opsés CUts, akkors,(C ;C) →Op s,C A lépések kompozíciós kiterjesztése
S ◊Op Ha C nem kompozíció, akkor|Op(s,C)| 1 |Op(s,(C ;C))| |Op(s,C )| Az Op reláció tulajdonságai
Has,(C ;C) →Opγ, akkor vagy γs,(C ;C), vagy γs,C Ha s,(C ;C) →Op s,(C ;C), akkor s,C →Op s,C Ha s,(C ;C) →Op s,C,akkors,C →Ops Az Op reláció tulajdonságai
A C utasítás s kezdőállapothoz tartozó végrehajtási sorozatának nevezzük konfigurációknak egy véges vagy végtelen {γn} sorozatát, ahol az első elem γ0s,C, ha Op(γn-1) , akkor a sorozatnak van következő, γn eleme, és ekkor γn-1→Opγn Végrehajtási sorozat
Végrehajtási sorozat tetszőleges, legalább kételemű záró szelete szintén végrehajtási sorozat. Determinisztikus utasítás végrehajtási sorozata egyértelmű Ha a determinisztikus utasítás végrehajtási sorozata véges, akkor állapotban végződik Ha az s, (C1; C2) konfigurációval kezdődő végre-hajtási sorozat véges, akkor van olyan s , C1 . . . s végrehajtási sorozat, amelynek C-vel való kompozíciós bővítése kezdőszelete az előbbi sorozatnak. A végrehajtási sorozat tulajdonságai
Ha az s, (B*C)konfigurációval kezdődő végrehajtási sorozat véges, akkor a sorozat, a két szélső eleme nélkül m0 db. olyan szakaszra bontható, amely szakaszok valamilyen sj1 , C , . . . , sjj = 1 ... m végrehajtási sorozatok (B*C)-vel való kompozíciós bővítései. A végrehajtási sorozat tulajdonságai