Programozáselmélet Logikák és módszerek a programhelyesség bizonyításához
Programozáselmélet n Programmodellek n szekvenciális programok n rekurzív programok n nemdeterminisztikus elemek n párhuzamos programok n funkcionális programok n Programok szemantikája n transzlációs szemantika n attribútumnyelvtanok n operációs szemantika n denotációs szemantika n axiomatikus szemantika
Programozáselmélet Operációs szemantika Denotációs szemantika Axiomatikus szemantika Szekvenciális programok Rekurzió Nemdeterminisz- tikus elemek Párhuzamosság Funkcionális programok
Irodalom n Jan van Leeuwen ed.: Handbook of Theoretical Computer Science: Formal Models and Semantics, Elsevier Pub –P. Cousot: Methods and Logic for Proving Programs –H. P. Barendregt: Functional Programming and Lambda Calculus n H. R. Nielson - F. Nielson: Semantics with Applications: A Formal Introduction, n Kozma L. - Varga L.: A szoftvertechnológia elméleti kérdései, ELTE n Csörnyei Z.: Lambda-kalkulus, előadás jegyzet ELTE
Transzlációs szemantika Program Input adat Tárgyprogram Program output Transzlációs függvény Végrehajtás
Attribútumnyelvtan Komponensei: n G környezetfüggetlen nyelvtan n 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. n Pszemantikai egyenletek –Az egyenletekkel lehet definiálni a nyelvtan szabályaiban szereplő nemterminálisok attribútumai közti összefüggéseket
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. Attribútumnyelvtan
Attribútumfüggőségek sémája p A q u B vx C y... Szintetizált attribútumok: q, v, y Örökölt attribútumok: p, u, x
Példa: Bináris valós konstansok n Környezetfüggetlen nyelvtan: n Attribútumok rendszere:
Példa: Bináris valós konstansok n Szemantikai egyenletek és a lokális függőség. S v r N v l r B v
Példa: Bináris valós konstansok n Szemantikai egyenletek és a lokális függőség r N v l 0 r B v 1
Szintaxisfa S N. N N B N NB0B B N 01 1
Attribútum előfordulások. S v r N v l r B v
Lokális attribútum függőségek. S v r N v l r B v
Globális attribútum függőségek. S v r N v l r B v
Attribútumok redukálása. S v r N v l r B v
Attribútumok kiértékelése. S v r N v l r B v
Operációs szemantika ProgramInput adat Eredmény Operációspecifikáció Az operációspecifikáció szokásos komponensei: n 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) n kezdő konfigurációk, végkonfigurációk
Denotációs szemantika Program Matematikai denotáció Jelentésfüggvény 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. n Feladat (pl. input- és output- feltételpár) n Helyességfogalmak (feladat és program viszonya) n Kalkulus a helyesség bizonyításához n A helyességet kifejező formulák n Axiómák, levezetési szabályok (pl. Hoare-kalkulus, Dijkstra-kalkulus stb.)
Matematikai jelölések n x E. P(x) x (x E P(x)) n x E. P(x) x (x E P(x)) n F(x) P(x) y x ( y F(x) P(x)) n e 1, e 2,…,e n E n vagy (e 1, e 2,…,e n ) E n n r E n halmaz komplementere: r n reláció részhalmaz n unáris reláció: r E bináris reláció: r E 2 két bináris reláció kompoziciós szorzata: r ◊ r e, e e E. ( e, e r e, e r ) n diagonális reláció: e, e e E
Matematikai jelölések bináris reláció hatványa: r 0 , r n+1 r ◊ r n n bináris reláció reflexív, tranzitív lezártja: r r n n n az r bináris reláció bal, ill. jobb oldali leszűkítése a p unáris relációra: p r ( p E ) r r p r ( E p ) a p unáris relációnak az r bináris reláció szerinti képe: p ◊ r e e p. e, e r a p unáris relációnak az r bináris reláció szerinti inverzképe: r ◊ p e e p. e, e r
Matematikai jelölések n kép és inverzkép néhány tulajdonsága ( p, q unáris, r, s bináris relációk): monotonitás: Ha p q és r s, akkor p ◊ r q ◊ s és r ◊ p s ◊ q asszociativitás: (p ◊ r) ◊ s = p ◊ (r ◊ s), (r ◊ s) ◊ q = r ◊ (s ◊ q) hatványhalmaz: P E n fügvényhalmaz: D E n az f D E függvény értékének a d helyen e -re való módosítása: f d → e
Szekvenciális programok - szintaxis X: Valt változók E: Kif kifejezések B: Lkif logikai kifejezések C: Uts utasítások C = skip | X E | (C 1 ; C 2 ) | (B C 1 C 2 ) | (B C) 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 : D adatok s : S Valt D állapotok : S Uts S konfigurációk
Kifejezések interpretálása (szemantikája) I : Kif S D kifejezések szemantikája jelölés: E I E I : Lkif P S logikai kifejezések szemantikája jelölés: B I B
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 és y=0 x yamit még végre kell hajtani x yamit 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
Operációs átmeneti reláció 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 Op relá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.
Atomi (egylépéses) utasítások Az üres utasítás végrehajtása s, skip → Op s minden s S esetén → Az értékadás végrehajtása s, X E → Op s X → E s minden s S, X Valt és E Kif 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 then-ágba s, (B C 1 C 2 ) → Op s, C 1 minden B Lkif, C 1, C 2 Uts és s B esetén Feltételkiértékelés és belépés az else-ágba s, (B C 1 C 2 ) → Op s, C 2 minden B Lkif, C 1, C 2 Uts és s B esetén
A ciklus utasítás végrehajtásának első lépése Feltételkiértékelés és belépés a ciklusba s, (B C) → Op s, (C ; (B C)) minden B Lkif, C Uts és s B esetén Feltételkiértékelés és kilépés a ciklusból s, (B C) → Op s minden B Lkif, C Uts és s B esetén
A lépések kompozíciós kiterjesztése Az első komponens végrehajtásának nem utolsó lépése Ha s, C → Op s , C és C Uts, akkor s, (C ; C ) → Op s , (C ; C ) Az első komponens végrehajtásának utolsó lépése Ha s, C → Op s és C Uts, akkor s, (C ; C ) → Op s , C
Az Op reláció tulajdonságai S ◊ Op n Ha C nem kompozíció, akkor | Op ( s, C ) | 1 n | Op ( s, (C ; C ) ) | | Op ( s, C ) |
Az Op reláció tulajdonságai Ha s, (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 , akkor s, C → Op s
Végrehajtási sorozat 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 n az első elem γ 0 s, C , n ha Op( γ n-1 ) , akkor a sorozatnak van következő, γ n eleme, és ekkor γ n-1 → Op γ n
A végrehajtási sorozat tulajdonságai n Végrehajtási sorozat tetszőleges, legalább kételemű záró szelete szintén végrehajtási sorozat. n Determinisztikus utasítás végrehajtási sorozata egyértelmű n Ha a determinisztikus utasítás végrehajtási sorozata véges, akkor állapotban végződik n Ha az s, (C 1 ; C 2 ) konfigurációval kezdődő végre- hajtási sorozat véges, akkor van olyan s, C 1 ... 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 n 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 m 0 db. olyan szakaszra bontható, amely szakaszok valamilyen s j 1, C ,..., s j j = 1... m végrehajtási sorozatok ( B * C ) -vel való kompozíciós bővítései.