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
Szövegkörnyezet n Nem hiszek a reinkarnációban. Már az előző életemben sem hittem benne. n Edd meg fiam a héját is! – mondta a sas a válogatós fiókájának. n Bizonytalan vagyok. Vagy mégsem?
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.)
Pragmatika n - Nincs itt túl meleg? = Legyen szíves kinyitni az ablakot. - Mindjárt kinyitom az ablakot. n - Nem unja már? = Nagyon zavar, amit csinál, legyen szíves befejezni. - Ha zavarja, befejezem. n - Mi van itt, bolondok háza?! = Azonnal fejezzék be ezt a rendetlenkedést. - Elnézést, azonnal befejezzük. vagy - Igen, de mi itt csak látogatók vagyunk.