Programozáselmélet Logikák és módszerek a programhelyesség bizonyításához.

Slides:



Advertisements
Hasonló előadás
Deduktív adatbázisok.
Advertisements

A digitális számítás elmélete
Programozási feladatok
Definíciók: Algoritmus: bármely véges sok lépéssel leírható tevékenység. Olyan pontos előírás, amely megmondja, hogy egy adott típushoz tartozó feladat.
Algoritmusok.
Adatbázisrendszerek elméleti alapjai 2. előadás
Osztott rendszer: (kommunikáció csatornán keresztül). Osztott rendszer informális definíciója. • Egymástól elkülönülten létező program-komponensek egy.
Adatbázis rendszerek I Relációs kalkulus Általános Informatikai Tsz. Dr. Kovács László.
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Lambda kalkulus.
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
Dijkstra-féle leggyengébbelőfeltétel-kalkulus
Halmazok, műveletek halmazokkal
A C nyelv utasításai. Kifejezés+ ; Utasítás printf("Hello")printf("Hello"); a=b+ca=b+c; fuggveny(a,b)fuggveny(a,b); Blokkok: több utasítás egymás után,
3. előadás (2005. március 1.) Utasítások, tömbök
Benczúr Zsolt VBA gyorstalpaló Benczúr Zsolt
1.) A programfejlesztés hagyományos életciklus modellje és adattípus.
Copyright, 2009 © Szlávi Péter A kupac és a prioritási sor típuskonstrukciók Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Kocsisné Dr. Szilágyi Gyöngyi. Elérehet ő ség: aszt.inf.elte.hu/~szilagyi/ aszt.inf.elte.hu/~szilagyi Fogadó óra: hétf ő
Halmazok, relációk, függvények
Programozáselmélet Logikák és módszerek a programhelyesség bizonyításához.
Programozó matematikus szak 2003/2004-es tanév II. félév
Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 1 Programozó matematikus szak 2003/2004-es tanév II. félév.
Programozó matematikus szak 2003/2004-es tanév II. félév
Fordítóprogramok FORD01 Programozó matematikus III. évf. Miskolci Egyetem 1 Fordítóprogramok 1.5 Programozó matematikus szak 2003/2004-es tanév II. félév.
A digitális számítás elmélete
A digitális számítás elmélete
Determinisztikus véges automaták csukva nyitva m s kbsm csukva nyitva csukva nyitva csukvanyitva 1. Példa: Fotocellás ajtó s b m m= mindkét helyen k= kint.
Év eleji információk Előadó: Hosszú Ferenc II. em Konzultáció: Szerda 9:50 – 10:35 II. em
Differenciál számítás
Integrálszámítás Mire fogjuk használni az integrálszámítást a matematikában, hova szeretnénk eljutni? Hol használható és mire az integrálszámítás? (már.
Valós számok Def. Egy algebrai struktúra rendezett test, ha test és rendezett integritási tartomány. Def. Egy (T; +,  ;  ) rendezett test felső határ.
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
1. előadás. 1.) Szoftverfejlesztés, mint mérnöki tevékenység. Számítási eszközfejlődés. Számítási eszközfejlődés: hazai viszonyok. Mérföldkő: Simula 67.Klasszikus.
1. előadás. 1.) Szoftverfejlesztés, mint mérnöki tevékenység. Számítási eszközfejlődés. Számítási eszközfejlődés: hazai viszonyok. Mérföldkő: Simula 67.Klasszikus.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Alphabet is a type specification = sorts: alphabet oprs: a:  alphabet,...,z:  alphabet end alphabet; nat is a type specification = sorts:nat oprs:zerus:
Nem determinisztikusság és párhuzamosság. A nem determinisztikusság a párhuzamosságban gyökeredzik. Példa: S par  parbegin x:=0   x:=1   x:=2 parend;
A számfogalom bővítése
4. Gyires Béla Informatikai Nap Debreceni Egyetem Informatikai Kar Új eredmények a Chomsky-féle (formális) nyelvtípusokkal kapcsolatban Dr. Nagy Benedek.
*** HALMAZOK *** A HALMAZ ÉS MEGADÁSA A HALMAZ FOGALMA
A rekurzió Páll Éve Boglárka.
Természetes és formális nyelvek Jellemzők, szintaxis definiálása, Montague, extenzió - intenzió, kategóriákon alapuló gramatika, alkalmazások.
Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás. Adott egy N elemű közösen használt tároló, N  1. Adott a folyamatoknak.
Koncepció: Specifikáció: e par exp i = eb imp bod ib Specifikáció elemzése: tulajdonságok felírása a koncepció alapján + tulajdonságok bizonyítása.
1. MATEMATIKA ELŐADÁS Halmazok, Függvények.
Az informatika logikai alapjai
Az informatika logikai alapjai
Török Katalin és Marosi Nóra 11/c. Pascal: Az es években megjelent magas szintű programozási nyelv, közel áll az emberi gondolkodáshoz. Nevét.
Mintapélda Készítsünk programot, amely beolvas egy egész számot, és eldönti arról, hogy prímszám-e. Készítsünk programot, amely beolvas egy egész számot,
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
előadások, konzultációk
Adva S  parbegin S 1 ...  S n parend; Párhuzamos programszerkezet két vagy több olyan folyamatot tartalmaz, amelyek egymással közös változó segítségével.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Kommunikáció és szinkronizáció. 1.) Kommunikáció: Lehetőség arra, hogy egyik folyamat befolyásolja a másik folyamat lefutását. Kommunikáció eszközei: közös.
1 Relációs kalkulusok Tartománykalkulus (DRC) Sorkalkulus (TRC) - deklaratív lekérdezőnyelvek - elsőrendű logikát használnak - relációs algebra kifejezhető.
Programozáselmélet 2. rész Denotációs és axiomatikus szemantika.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
Félcsoport (semigroup) = ({s},{ *: s s  s [infix]}. semigroup is a type specification = sorts: s oprs: *: s s  s [infix] eqns: m 1, m 2, m 3  s (m 1.
Adatszerkezetek és algoritmusok 2008/ Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században.
2. gyakorlat INCK401 Előadó: Dr. Mihálydeák Tamás Sándor Gyakorlatvezető: Kovács Zita 2015/2016. I. félév AZ INFORMATIKA LOGIKAI ALAPJAI.
Integrálszámítás.
II. konzultáció Analízis Sorozatok Egyváltozós valós függvények I.
Compiler illetve interpreter nyelvek
Példa: Dinteger = {..., -1,0,1,...}; Dboolean = {true, false};
Relációs adatmodell, normálformák
Bevezetés a matematikába I
Informatikai gyakorlatok 11. évfolyam
Algoritmus készítés.
Előadás másolata:

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.