Kiterjesztések sek szemantikája

Hasonló dokumentumok
... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

6. Közös változóval rendelkező párhuzamos program, Közös változó,

Programok értelmezése

Osztott rendszer. Osztott rendszer informális definíciója

NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere

8. Komponens elvű programfejlesztés. Ágens, akció, cél, kontraktus.

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Alap fatranszformátorok II

S0-01 Szintézis és verifikáció (Programozás elmélet)

Formális szemantika. Kifejezések szemantikája. Horpácsi Dániel ELTE Informatikai Kar

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

Komputeralgebra Rendszerek

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.

A digitális számítás elmélete

Logika és informatikai alkalmazásai kiskérdések február Mikor mondjuk, hogy az F formula a G-nek részformulája?

A C# programozási nyelv alapjai

Java II. I A Java programozási nyelv alapelemei

ködös határ (félreértés, hiba)

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Termelő-fogyaszt. fogyasztó modell

Algoritmizálás és adatmodellezés tanítása 1. előadás

Java II. I A Java programozási nyelv alapelemei

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Programozási nyelvek 6. előadás

Formális módszerek GM_IN003_1 Program verifikálás, formalizmusok

BASH script programozás II. Vezérlési szerkezetek

ZH feladatok megoldásai

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

A helyességbizonyítás klasszikus módszerei

Automaták mint elfogadók (akceptorok)

Programozási Módszertan definíciók, stb.

Modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

S0-02 Típusmodellek (Programozás elmélet)

A félév során előkerülő témakörök

Szkriptnyelvek. 1. UNIX shell

Algoritmusok bonyolultsága

Bevezetés az informatikába

Specifikáció. B logikai formula, a bemeneti feltétel, K logikai formula, a kimeneti feltétel, A az algoritmus, amelyre az állítás vonatkozik.

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

Nagy Gábor compalg.inf.elte.hu/ nagy

KOVÁCS BÉLA, MATEMATIKA I.

Valószínűségi változók. Várható érték és szórás

Kifejezések. Kozsik Tamás. December 11, 2016

Emlékeztető: LR(0) elemzés. LR elemzések (SLR(1) és LR(1) elemzések)

ALGORITMUSOK ÉS BONYOLULTSÁGELMÉLET Matematika MSc hallgatók számára

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

Algoritmizálás + kódolás C++ nyelven és Pascalban

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Bonyolultságelmélet. Monday 26 th September, 2016, 18:50

2. Visszalépéses stratégia

Analízis I. beugró vizsgakérdések

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Programozás alapjai. 5. előadás

Temporális logikák és modell ellenırzés

2. Logika gyakorlat Függvények és a teljes indukció

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Jármőtervezés és vizsgálat I. VALÓSZÍNŐSÉGSZÁMÍTÁSI ALAPFOGALMAK Dr. Márialigeti János

Analízis I. Vizsgatételsor

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva

Apple Swift kurzus 3. gyakorlat

Bonyolultságelmélet. Thursday 1 st December, 2016, 22:21

AWK programozás, minták, vezérlési szerkezetek

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

Hardver és szoftver rendszerek verifikációja Röviden megválaszolható kérdések

Informatika 1 2. el adás: Absztrakt számítógépek

2010. október 12. Dr. Vincze Szilvia

HALMAZELMÉLET feladatsor 1.

5. A kiterjesztési elv, nyelvi változók

A szemantikus elemzés elmélete. Szemantikus elemzés (attribútum fordítási grammatikák) A szemantikus elemzés elmélete. A szemantikus elemzés elmélete

Elérhetőségi analízis Petri hálók dinamikus tulajdonságai

A fontosabb definíciók

Matematika alapjai; Feladatok

Programfejlesztési Modellek

Dinamikus modell: állapotdiagram, szekvencia diagram

Számításelmélet. Második előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Algoritmizálás, adatmodellezés tanítása 6. előadás

Halmazelmélet. 1. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Halmazelmélet p. 1/1

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

Logika es sz am ıt aselm elet I. r esz Logika Negyedik el oad as 1/26

Occam 1. Készítette: Szabó Éva

Elsőrendű logika szintaktikája és szemantikája. Logika (3. gyakorlat) 0-adrendű szemantika 2009/10 II. félév 1 / 1

Java programozási nyelv

A L Hospital-szabály, elaszticitás, monotonitás, konvexitás

Formális nyelvek - 9.

3. előadás. Programozás-elmélet. A változó fogalma Kiterjesztések A feladat kiterjesztése A program kiterjesztése Kiterjesztési tételek Példa

1. tétel Halmazok és halmazok számossága. Halmazműveletek és logikai műveletek kapcsolata.

Fordítás Kódoptimalizálás

AWK programozás, minták, vezérlési szerkezetek

Programozási módszertan

Házi feladatok megoldása. Nyelvek használata adatszerkezetek, képek leírására

Modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Átírás:

Kiterjesztések sek szemantikája Példa D Integer = {..., -1,0,1,... }; D Boolean = { true, false } D T1... T n T = D T 1... D Tn D T Az összes függvf ggvény halmaza, amelyek a D T1,..., D Tn halmazokból D T halmazra képeznek k le. l(c) értelmezés Az alaptípusok pusok minden konstansa saját t magának az értelmezett értéke: ha c alaptípus pusú,, akkor l(c) = c Példa Az 1 Integer konstans értelmezi az 1 Integer számot. A true Boolean konstans értelmezi a true Boolean értéket.

Determinisztikus program A determinisztikus program egy szimbólumokból képzett string Kulcsszavak: if, then, else, fi, while, do, od A programot generáló grammatika S ::= skip u := t S 1 ; S 2 if B then S 1 else S 2 fi while B do S od (Az S, S 1, S 2 programok változói egyszerű, vagy indexes változók) Példa u egy egyszerű vagy indexes változó, t egy kifejezés és u és t típusa megegyezik, B egy kvantor-független logikai kifejezés if B then S fi if B then S else skip fi

Determinisztikus program jelentése Az S determinisztikus program jelentése A megfelelő (kezdő) állapotok halmazáról megfelelő (vég-)állapotok halmazára történő leképezés: M[S] Divergencia végállapotának jele: Denotációs szemantika-definíciós módszer Operációs szemantika-definíciós módszer (minden programtípusra kézenfekvő) Adott absztrakt gép, S program megfelelő Σ állapothalmaz esetén az absztrakt gép konfigurációja: < S, σ >, ahol σ Σ A program végrehajtása konfigurációk közötti átmenetek sorozata.

Kofiguráci ció-átmenet,, befejeződés Konfigurációk közötti átmeneti reláció (transition relation): Konfigurációk közötti átmenet konf 1 konf 2 <S, σ> <R, τ> σ, τ Σ, R: maradék program Befejeződés A program végrehajtásának befejeződésének eredménye <R, τ> R E : üres program ekkor a program befejeződik a τ állapotban.

Nyelvi szerkezetek szemantikája Axiómák Üres utasítás: < skip, σ > < E, σ > Értékadás: < u := t, σ > < E, σ(u := σ(t)) > Következtetési szabályok Szekvencia: S 1 ; S 2 <S 1, σ> <S 2, τ> <S 1 ;S, σ> <S 2 ;S, τ> Feltételes elágazás: if α then S 1 else S 2 fi < if α then S 1 else S 2 fi,σ > <S 1, σ> ha σ(α) = T; < if α then S 1 else S 2 fi,σ > <S 2, σ> ha σ(α) = F;

Nyelvi szerkezetek szemantikája Következtetési szabályok (folytatás) Iteráció: while B do S od < while B do S od, σ > < S; while B do S od, σ> ha σ(b) = T, < while B do S od, σ > < E, σ> ha σ(b) = F. Megszakítás nélkül végrehajtódnak skip, értékadás, bool kifejezés kiértékelése.

Determinisztikus programok S program σ állapottal kezdődő tranzakciós sorozata Konfigurációk véges, vagy végtelen sorozata: <S i, σ i > (i 0) <S, σ> = <S 0, σ 0 > <S 1, σ 1 >... <S i, σ i >... Az S program σ állapottal kezdődő kiszámítása egy olyan tranzakciós sorozat, amely nem bővíthető. Az S program σ állapottal kezdődő kiszámítása τ állapotban befejeződik, ha a sorozat véges és annak utolsó konfigurációja: <E, τ> ahol E az üres (empty) program. Az S program σ kezdő állapottal kezdődő kiszámítása divergens, ha a sorozat végtelen.

Determinisztikus programok S program kiszámítása egy adott σ kezdő állapottal η: < S, σ > < S 1, σ 1 >... < S n-1, σ n-1 > < S n, σ n > Ha a program végrehajtása véges és eredményesen befejeződik η: < S, σ > < S 1, σ 1 >... < S n-1, σ n-1 > < S n, σ n > val(η) = σ n, σ n Σ S n = T (üres program) Rövid jelölés: η: < S, σ > * < S n, σ n > Ha a program végrehajtása véges, akkor S n üres program (E). Mivel E = T (vagyis terminál), így ha a program végrehajtása hibás, akkor η: < S, σ > * < E, fail > val(η) = fail, fail Σ S n = E, (üres program) E = T.

Determinisztikus programok Lemma Indoklás Definíció Minden S determinisztikus programhoz adott σ megfelelő állapot mellett pontosan egy kiszámítás tartozik. Minden konfigurációnak pontosan egy rákövetkezője van a sorozatban. Blokkolás mentesség Ha S E és minden σ Σ esetén létezik olyan <S 1,τ> konfiguráció, melyre <S, σ> <S 1, τ>, akkor a programot blokkolás mentesnek nevezzük. Lemma Indoklás Minden determinisztikus program blokkolás mentes. Ha S E, akkor minden <S, τ> konfigurációra létezik egy rákövetkező konfiguráció a reláció szerint.

Determinisztikus program szemantikája Parciális helyességi szemantika M[S] : Σ P(Σ) M[S](σ) = { τ < S, σ > * < E, τ > } Teljes helyességi szemantika M tot [S] : Σ P( Σ { } ) M tot [S](σ) = M[S](σ) { S divergálhat σ kezdeti értékkel }

Példa S a[0]:=1; a[1]:=0; while a[x] 0 do x:= x+1 od; Legyen σ Σ, amelyben x=0; Determinizmus alapján egy kiszámítás létezik <S,σ> kezdőérték esetén {σ Σ x=0} < a[0]:=1; a[1]:=0; while a[x] 0 do x := x+1 od, σ >; {x=0 a[0]=1} < a[1]:=0; while a[x] 0 do x := x+1 od, σ[a[0]:=1] > < while a[x] 0 do x := x+1 od, σ' > (σ': σ[a[0]:=1][a[1]:=0]; ami a σ ismételt aktualizálását jelenti), < x:= x+1; while a[x] 0 do x := x+1 od, σ' > M[S](σ) = M tot [S](σ) = { σ'[x:= 1] } < while a[x] 0 do x := x+1 od, σ'[x:=1] > <E, σ'[x:= 1] >.

Példa Legyen τ Σ olyan állapot, amelynél x = 2 és i = 2, 3,..., a[ i ] = 1; S a[0]:=1; a[1]:=0; while a[x] 0 do x := x+1 od; Induláskor <S, τ> < a[1]:=0; while a[x] 0 do x := x+1 od, τ[a[0]:=1] > < while a[x] 0 do x := x+1 od, τ' > (τ': τ[a[0]:=1][a[1]:=0]; ami a τ ismételt aktualizálását jelenti). < x := x+1; while a[x] 0 do x := x+1 od, τ' > < while a[x] 0 do x := x+1 od, τ'[x := τ(x)+1] > * < while a[x] 0 do x := x+1 od, τ'[x := τ(x)+k] > S végrehajtása divergens M[S](τ) = M tot [S](τ) = { }

A szemantika tulajdonságai Ha Ω egy üres determinisztikus program, akkor σ Σ : Példa M[Ω](σ) = while true do skip od Az iteráció induktív definíciója: (while B do S od) 0 = Ω, (while B do S od) k+1 = if B then S; (while B do S od) k else skip fi; M[S]( ) =, M tot [S]( ) = { } és X Σ { } esetén N[S]: M[S], M tot [S] N[S](X) = N[S](σ) σ X

A szemantika tulajdonságai N[S] monoton Egy adott program utasításainak halmazát tekintve ha X Y Σ { }, akkor N[S](X) N[S](Y) Kompozíció tulajdonság N[S 1 ; S 2 ](X) = N[S 2 ](N[S 1 ](X)) Asszociatív a program utasításaira nézve N[(S 1 ; S 2 ); S 3 ](X) = N[(S 1 ; (S 2 ; S 3 )](X) Feltételes elágazás tulajdonsága N[if B then S 1 else S 2 fi)](x) = N[S 1 ](X {B}) N[S 2 ](X {~B}) { X and N = M tot ) Iteráció tulajdonsága k= M[while B do S od] = M[(while B do S od) k ] k=0

A szemantika tulajdonságai Az iterációs tulajdonság M tot szemantikára nem igaz k= M[while B do S od] = M[(while B do S od) k ] k=0 Bizonyítás Tegyük fel hogy igaz. Mivel minden σ Σ esetén M tot [Ω](σ) = { }, ezért k= M tot [(while B do S od) k ](σ) k=0 minden while B do S od program esetén. De létezik olyan while B do S od, amelyre Ellentmondás! M tot [while B do S od](σ)

Bool feltétel, tel, állapot transzformáci ció Definíció (bool feltétel, állapot transzformáció) Adott Σ állapot halmaz, és σ Σ állapot mellett a Bool feltétel egy bool függvény, amely a szóban forgó állapothoz az igaz értéket rendeli: Σ bool Az f állapot transzformáció a Σ Σ leképezések egy eleme. Szemantika hozzárendelése a változókhoz Adott a program változóinak egy x = (x 1,..., x n ) sorozata és a megfelelő d = (d 1,..., d n ) értékek egy sorozata. A megfeleltetés (σ: x d)(y) = d i ha y = x i, σ(y) ha y x i i = 1,..., n Szemantikailag az állapot hozzárendelése a változókhoz: σ: x d

Szekvenciális tranzakciós s diagram Szekvenciális tranzakciós diagram a program vezérlési szerkezetét írja le. Szerkezete A program végrehajtási pontjait és a pontok közötti átmeneteket (transitions) tartalmazza. Végrehajtási hely a program számlálónak (counter) a helyzetét mutatja. Átmenet a tranzakció az utasítás végrehajtásának a hatását adja meg a programszámláló új értékének a formájában. Egy utasítás végrehajtása állapot transzformáció formájában valósul meg az állapot a memória tartalmát fejezi ki, az állapot transzformációk a memória cellákhoz a végrehajtott operációk eredményeit rendelik.

Szekvenciális tranzakciós s diagram A program vezérlési szerkezete egy címkékkel ellátott irányított gráf. Tranzakciós diagram T = ( L, T, s, t ) Gráf csúcsok a program állapotai entry kitüntetett csúcs: indulási állapotot azonosító cimke: s exit kitüntetett csúcs: befejező állapotot azonosító cimke: t L állapotokat azonosító címkék halmaza: l L A gráfban minden él egy állapotátmenet, melyhez egy utasítás tartozik címkeként: c f l c logikai feltétel, f állapot transzformáció. (l, c f, l') T állapotátmenetek halmaza. l l'

Tranzakciós s diagram kiszámítása sa Egy P = (L, T, s, t) tranzakciós diagram egy η végrehajtása (kiszámítása) a σ 0 kezdőértékkel a kezdő l 0 címkétől l i, σ i konfigurációk egy sorozata: η: l 0, σ 0 l 1, σ 1 l 2, σ 2... ahol l 0 = s. Minden tranzakcióhoz létezik l c f l' úgy, hogy c(σ i ) = true és σ i+1 = f(σ i ) A sorozat nem bővíthető Ha véges, akkor az utolsó konfigurációnak nincs rákövetkezője.

Tranzakciós s diagram kiszámítása sa Ha a sorozat véges és az utolsó konfiguráció: t, τ val(η) = τ (τ Σ) Ha a sorozat véges és az utolsó konfiguráció: l n, τ, l n t val(η) = fail Ha a sorozat végtelen val(η) = (, fail Σ) comp(p)(σ): P kiszámításainak halmaza, a σ kiindulási állapot mellett. A P tranzakciós diagram jelentése: M[P](σ) = { val(η) η comp[p](σ) }