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

Slides:



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

A digitális számítás elmélete
Algebrai struktúrák.
Függvények.
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.
Adatbázisrendszerek elméleti alapjai 2. előadás
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.
Dijkstra-féle leggyengébbelőfeltétel-kalkulus
Kötelező alapkérdések
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
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
Logika Érettségi követelmények:
Programozáselmélet Logikák és módszerek a programhelyesség bizonyításához.
Halmazok, relációk, függvények
Programozáselmélet Logikák és módszerek a programhelyesség bizonyításához.
Készítette: Pető László
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
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.
Differenciál számítás
Bevezetés a matematikába I
1.3 Relációk Def. (rendezett pár) (a1 , a2 ) := {{a1} , {a1 , a2 }} .
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
Halmazelmélet és matematikai logika
A digitális számítás elmélete
C nyelv utasításai.
Természetes és formális nyelvek Jellemzők, szintaxis definiálása, Montague, extenzió - intenzió, kategóriákon alapuló gramatika, alkalmazások.
PHP nyelv. PHP Interpreteres nyelv → parancsértelmező szükséges hozzá Rasmus Lerdorf 1995 → személyes felhasználás (internetes önéletrajzának megtekintésének.
A differenciálszámtás alapjai Készítette : Scharle Miklósné
VÉGES AUTOMATA ALAPÚ TERVEZÉSI MODELL
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 Mivel foglalkoz(t)unk a laborokon? 1.hét: Word dokumentumok 1.hét: Word dokumentumok tagolása, tartalomjegyzék, ábrák számozása, hivatkozások, egyenlet-szerkesztő.
Az informatika logikai alapjai
MI 2003/6 - 1 Elsőrendű predikátumkalkulus (elsőrendű logika) - alapvető különbség a kijelentéslogikához képest: alaphalmaz. Objektumok, relációk, tulajdonságok,
A MATEMATIKA FELÉPÍTÉSÉNEK ELEMEI
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,
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
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.
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.
Algoritmizálás, adatmodellezés tanítása 6. előadás.
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.
C++2. Ciklusok elöltesztelő (for, while) A ciklusmag feldolgozása előtt történik a vizsgálat  lehet, hogy egyszer sem fut le. A soronkövetkező iteráció.
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.
Programozási nyelvek csoportosítása.
II. konzultáció Analízis Sorozatok Egyváltozós valós függvények I.
Compiler illetve interpreter nyelvek
Programozás C# -ban Elágazások.
Példa: Dinteger = {..., -1,0,1,...}; Dboolean = {true, false};
Programozási nyelvek alapfogalmai
1.3 Relációk Def. (rendezett pár) (a1 , a2) := {{a1} , {a1 , a2 }} .
Bevezetés a matematikába I
ÍTÉLETKALKULUS (NULLADRENDŰ LOGIKA)
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
Előadás másolata:

Determinisztikus programok

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

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

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

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ó

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)

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.

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 )

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 ) }

Denotációs szemantika

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)* }

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)]

Parciális helyesség

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)

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

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)

Á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.

 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.

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)

{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.

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.

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)

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

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.

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).

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

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!}       

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

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

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

Relációs szemantika

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)

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 ))

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