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

Hasonló dokumentumok
Programok értelmezése

Formális szemantika. Bevezetés. Horpácsi Dániel

Kiterjesztések sek szemantikája

Logika es sz am ıt aselm elet I. r esz Logika 1/36

Elsőrendű logika. Mesterséges intelligencia március 28.

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

ÍTÉLETKALKULUS (NULLADRENDŰ LOGIKA)

Ítéletkalkulus. 1. Bevezet. 2. Ítéletkalkulus

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

Logikai ágensek. Mesterséges intelligencia március 21.

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

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

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

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

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

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

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:

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

Magyarok: Bereczki Ilona, Kalmár László, Neumann, Péter Rózsa, Pásztorné Varga Katalin, Urbán János, Lovász László

LOGIKA. Magyarok: Bereczki Ilona, Kalmár László, Neumann, Péter Rózsa, Pásztorné Varga Katalin, Urbán János, Lovász László.

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

I. A DIGITÁLIS ÁRAMKÖRÖK ELMÉLETI ALAPJAI

Komputeralgebra rendszerek

A logikai következmény

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:

Predikátumkalkulus. 1. Bevezet. 2. Predikátumkalkulus, formalizálás. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák.

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

Komputeralgebra rendszerek

Logika és informatikai alkalmazásai

Ítéletkalkulus. 1. Bevezet. 2. Ítéletkalkulus

A fröccs szintaxisa és operációs szemantikája

Matematikai logika és halmazelmélet

Logika és informatikai alkalmazásai

KOVÁCS BÉLA, MATEMATIKA I.

Időzített átmeneti rendszerek

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat

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

Logikai következmény, tautológia, inkonzisztens, logikai ekvivalencia, normálformák

Az informatika logikai alapjai

5. előadás Reguláris kifejezések, a reguláris nyelvek jellemzése 1.

Felmentések. Logika (1. gyakorlat) 0-adrendű szintaktika 2009/10 II. félév 1 / 21

Komputeralgebra Rendszerek

BOOLE ALGEBRA Logika: A konjunkció és diszjunkció tulajdonságai

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.

Bisonc++ tutorial. Dévai Gergely. A szabály bal- és jobboldalát : választja el egymástól. A szabályalternatívák sorozatát ; zárja le.

Kaposi Ambrus. University of Nottingham Functional Programming Lab. Hackerspace Budapest január 6.

MATEMATIK A 9. évfolyam. 2. modul: LOGIKA KÉSZÍTETTE: VIDRA GÁBOR

Térinformatikai algoritmusok Elemi algoritmusok

Felmentések. Ha valaki tanár szakos, akkor mivel neki elvileg a hálóban nincs logika rész, felmentést kaphat a logika gyakorlat és vizsga alól.

3. Magyarország legmagasabb hegycsúcsa az Istállós-kő.

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

Diszkrét matematika MATEMATIKAI LOGIKA

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

Automaták mint elfogadók (akceptorok)

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

Matematikai logika. Nagy Károly 2009

A TANTÁRGY ADATLAPJA

Matematikai logika NULLADRENDŰ LOGIKA

Diszkrét matematika I.

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

AZ INFORMATIKA LOGIKAI ALAPJAI

2019/02/11 10:01 1/10 Logika

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

Lekérdezések az SQL-ben 1.rész

5.3. Logika a relációkhoz

Java II. I A Java programozási nyelv alapelemei

Diszkrét matematika I.

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

Lekérdezések az SQL-ben 1.rész

Fordítóprogramok (A,C,T szakirány) Feladatgy jtemény

Knoch László: Információelmélet LOGIKA

definiálunk. Legyen egy konfiguráció, ahol és. A következő három esetet különböztetjük meg. 1. Ha, akkor 2. Ha, akkor, ahol, ha, és egyébként.

Térinformatikai algoritmusok Elemi algoritmusok

Általános algoritmustervezési módszerek

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

Nyelvek típusrendszere (jegyzet)

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 - Az ítéletkalkulus alapfogalmai

Memo: Az alábbi, "természetes", Gentzen típusú dedukciós rendszer szerint készítjük el a levezetéseket.

Automaták és formális nyelvek

Házi feladatok megoldása. Nyelvtani transzformációk. Házi feladatok megoldása. Házi feladatok megoldása. Formális nyelvek, 6. gyakorlat.

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

Bevezetés az informatikába

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

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

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

Absztrakt adattípus - algebrai specifikáció - Lists (paraméteres) module imports end exports parameters variables sorts operations equations

ADATBÁZIS-KEZELÉS. Relációalgebra, 5NF

Formális nyelvek és automaták

2. Ítéletkalkulus szintaxisa

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

Modell alapú tesztelés mobil környezetben

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

LOGIKA ÉS ÉRVELÉSTECHNIKA

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

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Logika

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

Miért fontos számunkra az előző gyakorlaton tárgyalt lineáris algebrai ismeretek

1. A matematikai logika alapfogalmai. 2. A matematikai logika műveletei

Átírás:

Formális szemantika Kifejezések szemantikája Horpácsi Dániel ELTE Informatikai Kar 2016-2017-2

Az előadás témája Egyszerű kifejezések formális szemantikája Az első lépés a programozási nyelvek szemantikájának megadása felé

Konkrét szintaxis kontra absztrakt szintaxis A konkrét szintaxis definiálja, hogyan lehet a tárgyalt programozási nyelven jól formázott mondatokat leírni Megadja a nyelvi elemek precíz, konkrét leírását; milyen más elemekből, hogyan konstruálhatunk összetett szerkezeteket Szintaktikus elemzőt tudunk ezen definíció alapján készíteni a nyelvhez, automatikusan <assignment> ::= LET <variable> := <expression> ; Az absztrakt szintaxis csak azt írja le, milyen alapvető szintaktikus kategóriák vannak a nyelvben és azok milyen minták mentén épülnek fel Megadja, hogyan épülnek majd fel az absztrakt szintaktikus termek, szintaxisfák A ::= assignment(v, E) Kifejezések szemantikája (2/28)

Konkrét szintaxis kontra absztrakt szintaxis Az absztrakt szitaxisból kimaradnak például Konkrét kulcsszavak Precedenciák, asszociativitási szabályok Zárójelek A szintaktikus elemzést segítő elválasztó és termináló szimbólumok Az olvasást (megértést) segítő szimbólumok, jelek Vajon hogyan reprezentálhatjuk az absztrakt szintaxist? Visszaalakítható az absztrakt konkréttá? Kifejezések szemantikája (3/28)

Emlékeztető: formális szemantikadefiníciók A programozási nyelvek szemantikája általában informálisan kerül leírásra, továbbá praktikusan a nyelv fordítóprogramja definiálja Ezek közül egyiket sem tekintjük formális definíciónak, nem használhatóak bizonyításhoz Megoldás: használjuk a jó öreg matematikát és logikát! Két alapvető megközelítés: Operációs (műveleti) deduktív levezetésekkel Megadja, hogyan kell végrehajtani a programot Denotációs (leíró) matematikai objektumokkal A jelentést denotációk hozzárendelésével adja meg Kifejezések szemantikája (4/28)

Kifejezések mint egyszerűbb nyelvi elemek A formális szemantikadefiníciók alapvető fogalmainak tisztázására először olyan egyszerű aritmetikai és logikai kifejezések jelentését adjuk meg, amelyek a legtöbb programozási nyelvben megtalálhatóak. Operációs és denotációs szematikát is definiálunk, hogy felfedjük a két megközelítés közötti alapvető különbségeket A formális szemantika definiálásakor feltesszük, hogy a kifejezések szintaktikusan és statikus szemantikusan is helyesek, tehát biztosan van jelentésük Kifejezések szemantikája (5/28)

Kifejezések: absztrakt szintaxis A szintaktikus kategóriák és metaváltozóik n Num (számliterálok) (token) x Var (változó szimbólumok) (token) a Aexp (aritmetikai kifejezések) b Bexp (logikai kifejezések) Absztrakt produkciós szabályok a ::= n x a 1 + a 2 a 1 a 2 -a b ::= true false a 1 = a 2 a 1 < a 2 b b 1 b 2 Feltesszük, hogy n és x már definiáltak Vegyük észre a bázis- és rekurzív esetek közötti különbséget a 1 + a 2 termként pl. addition(a 1, a 2 ) formában lenne írható Kifejezések szemantikája (6/28)

Állapotok A kifejezésekben szerepelhetnek változószimbólumok, tehát függhetnek a környezetüktől, az állapottól, amelyben kiértékeljük őket Az egyszerűsítés végett csak egész változókat engedünk meg, de a módszer általánosítható A lehetséges állapotokat függvényekkel reprezentáljuk s State = Var Z Minden ilyen függvény egy lehetséges állapotot ad meg: a változókhoz rendelt értékeket Jelölni listaként szoktuk: [x 1, y 2, z 3] Kifejezések szemantikája (7/28)

Állapotok: lekérdezés és módosítás Vegyük a következő állapotot: s State = Var Z Ha hivatkozunk egy változó értékére, ki kell olvasnunk a memóriából s[x] megadja az x változó értékét az s állapotban Amikor értéket adunk egy változónak, frissíteni kell az állapotot s[y v] megad egy olyan állapotot, amely megegyezik az s állapottal, de y helyen az értéke v Következésképp teljesül, hogy (s[y v])[x] = { v s[x] if x = y if x = y Kifejezések szemantikája (8/28)

Operációs szemantika Hogyan értékelnénk ki egy ideális, absztrakt gépen? Valójában átmeneteket definiál megfelelő konfigurációk között Az átmeneteket általános következtetési szabályokkal adjuk meg Ezek tulajdonképp sémák, amelyeket tetszőleges szintaktikus elemmel példányosíthatunk A levezetések szintaxis-vezéreltek A dedukcióval definiált átmenetrendszert használjuk a kifejezések eredményének (vagy normálformájának) meghatározására A következő pár dián strukturális operációs szematikát definiálunk kifejezéseknek, amellyel megadjuk a részletes kiértékelési lépéseket. Kifejezések szemantikája (9/28)

Konfigurációk, átmenetek Ahogy már említettük, a kiértékelés függ a környezettől az állapotot egy függvénnyel adjuk meg A konfigurációknak két megengedett formája lesz: egy kifejezés és egy állapot párja, vagy pedig a kifejezés eredménye (szemantikája) A konfigurációk közötti átmeneteket a következőképp jelöljük: Egy köztes lépés a számításban: a, s a, s Egy (rész)kifejezés kiértékelése végén a végkonfiguráció az érték: a, s v ahol v Z {tt, ff} (Vegyük észre, hogy ezekben a számításokban az állapotokat még nem változtatjuk, tehát csak lemásolódnak az egyes átmenetekkel.) Kifejezések szemantikája (10/28)

Következtetési szabályok Definiáltuk, mit értünk konfiguráció alatt, most azt kellene megadnunk, hogyan viselkedik az átmenet-reláció: mely konfigurációkból mely más konfigurációkba léphet az absztrakt gép. Következtetési szabályokkal ( azok sémáival) adjuk meg A szabályok három részből állnak: premissza (előfeltétel), konklúzió és további feltételek Premises Conditions Conclusion A szabály szerint a konklúzió akkor érvényes, ha a premissza kikövetkeztethető és a feltételek teljesülnek. A feltételek nélküli szabályok az axiómák Axiom Conditions Az axiómák példányai lesznek a levezetések gyökerében. Kifejezések szemantikája (11/28)

Kifejezések operációs szemantikája (1) Számliterálok n, s N [[n]] Változók x, s s[x] Bináris műveletek (LHS) a 1, s a 1, s a 1 a 2, s a 1 a 2, s a 1, s i a 1 a 2, s n a 2, s {+,, <, =} {+,, <, =}, i Z, N [[n]] = i Kifejezések szemantikája (12/28)

Kifejezések operációs szemantikája (2) Bináris műveletek (RHS) a 2, s a 2, s n a 2, s n a 2, s {+,, <, =} Bináris műveletek (utolsó lépés) a 2, s i {+,, <, =}, i Z n a 2, s N [[n]] i Az utolsó szabályban az N [[n]] i a művelet tényleges végrehajtása az egész számok körében (< és = a tt vagy ff logikai értékek valamelyikét eredményezik) Aritmetikai negáció a, s a, s -a, s -a, s a, s i -a, s 0 i i Z Kifejezések szemantikája (13/28)

Kifejezések operációs szemantikája (3) Logikai literálok true, s tt false, s ff Negáció b, s b, s b, s b, s b, s l b, s l l {tt, ff} Megjegyzés: vegyük észre, hogy az utolsó szabály konklúziójában szereplő szimbólum különböző jelentéssel bír az átmenet jobb és bal oldalán: a bal oldalon az absztrakt szintaxis egy szimbóluma, a jobb oldalon a logikai tagadás művelete. Hasonló megjegyzés igaz a legtöbb művelet leírására. Az utolsó szabályt helyettesíthetnénk ezzel a kettővel: b, s tt b, s ff b, s ff b, s tt Kifejezések szemantikája (14/28)

Kifejezések operációs szemantikája (4) Konjunkció (LHS) b 1, s b 1, s b 1 b 2, s b 1 b 2, s b 1, s tt b 1 b 2, s true b 2, s b 1, s ff b 1 b 2, s false b 2, s Konjunkció (RHS) b 2, s b 2, s b b 2, s b b 2, s b {true, false} Konjunkció (utolsó átmenet) b 2, s l b 2, s l true b 2, s l false b 2, s ff l {tt, ff} Kifejezések szemantikája (15/28)

A számliterálokról A formális szemantikában éles különbséget teszünk a számliterálok és azok jelentése között. A számokat sokféle formában le lehet írni (pl. különböző számrendszerekben), de a jelentésük minden esetben egy egész szám. Ezt a jelentést az N függvény adja meg, amelyről feltesszük, hogy definiált. Például, ha a számliterálokat decimális számrendszerben írjuk, akkor a leképezés triviális: N [[n]] = n minden n Z esetén. A szemantikus számokat félkövéren szedjük, a nem félkövér számok szintaktikus elemek. Az N [[n]] formulában használt speciális zárójeleket gyakran használják szemantika definíciókban; ami a zárójelek között van, azt szintaktikus egységként (vagy annak mintájaként) kell kezelni. Bizonyos irodalmakban és a gyakorlatban kiterjesztik a szintaxist a szemantikus értékekkel, ezzel egyszerűsítve a leírást. Kifejezések szemantikája (16/28)

Levezetés példa Számoljuk ki az (y + 5) + z kifejezés értékét abban az állapotban, ahol y értéke 12 és z értéke 34! A lineáris levezetés (konfigurációsorozat) a következőképp néz ki: (y + 5) + z, [y 12, z 34] (12 + 5) + z, [y 12, z 34] 17 + z, [y 12, z 34] 51 Változó (axióma) y, s 12 Bináris kifejezés LHS (utolsó átmenet) y + 5, s 12 + 5, s Bináris kifejezés LHS (y + 5) + z, s (12 + 5) + z, s Kifejezések szemantikája (17/28)

Érdekesség Ha tranzitívvá tesszük az átmenetrelációt, c 1 c 2 c 2 c 3 c 1 c 3 a levezetést faként tudjuk ábrázolni: y, s 12 y + 5, s 12 + 5, s 5, s 5 12 + 5, s 12+5 y + 5, s 17 (y + 5) + z, s 17 + z, s z, s 34 17 + z, s 17+34 (y + 5) + z, s 51 Kifejezések szemantikája (18/28)

Denotációs szemantika Csakúgy, mint eddig, az absztrakt szintaxison definiáljuk Matematikai objektumokat (pl. számokat, n-eseket, függvényeket) rendelünk a nyelvi szerkezetekhez Szemantikus függvények klózait (különböző mintákra vett eseteit) fogjuk megadni Általában totálisak és kompozicionálisak a definíciók Kifejezések szemantikája (19/28)

Szemantikus tartományok (semantic domains) Az absztrakt szintaktikus szerkezeteket szemantikus objektumokra képezzük le, amelyeket a szemantikus tartományok definiálnak. Semantic domains Integer = {..., -2, -1, 0, 1, 2,... } = Z Boolean = {tt, ff} (igazságértékek halmaza) A jelentést úgy adjuk meg, hogy definiáljuk a kifejezések értékét az állapot függvényében Az aritmetikai kifejezések értéke egy egész szám, a logikai kifejezések értéke egy igazságérték Vegyük észre, hogy a szemantikus értékek (tt, ff ) itt is megkülönböztetésre kerültek a szintaktikus elemektől (true és false) Kifejezések szemantikája (20/28)

Szemantikus függvények Szemantikus függvények A : Aexp (State Integer) B : Bexp (State Boolean) Minden szintaktikus kategóriához (nemterminálishoz) készítünk egy szemantikus függvényt A szintaktikus kategória szabályaihoz függvényklózokat írunk fel A függvényeket Curry-formában adjuk meg, tehát a szemantikus függvény egy szintaktikus elemre egy újabb függvényt határoz meg, amely az állapotokhoz szemantikus értékeket rendel Kifejezések szemantikája (21/28)

Kifejezések denotációs szemantikája (1) A szemantikus függvényt definiáljuk az adott szintaktikus kategória minden bázis elemére és összetett elemére (ügyelve arra, hogy a definíciók kompozicionálisak legyenek). Szemantikus megfeleltetések (aritmetikai kifejezések) A[[n]]s = N [[n]] A[[x]]s = s[x] A[[a 1 + a 2 ]]s = A[[a 1 ]]s + A[[a 2 ]]s A[[a 1 a 2 ]]s = A[[a 1 ]]s A[[a 2 ]]s A[[-a]]s = 0 A[[a]]s Az a 1 + a 2 jelentése csak a részkifejezéseitől (a 1 és a 2 ) függ, ahogy a többi klóz esetében is, tehát a definíció kompozicionális. Kifejezések szemantikája (22/28)

Kifejezések denotációs szemantikája (2) Szemantikus megfeleltetések (logikai kifejezések) B[[true]]s = tt B[[false]]s = ff { tt B[[a 1 = a 2 ]]s = B[[a 1 < a 2 ]]s = ff { tt ff { tt ha A[[a 1 ]]s = A[[a 2 ]]s ha A[[a 1 ]]s = A[[a 2 ]]s ha A[[a 1 ]]s < A[[a 2 ]]s ha A[[a 1 ]]s A[[a 2 ]]s ha B[[b]]s = ff B[[ b]]s = ff ha B[[b]]s = tt { tt ha B[[b 1 ]]s = tt és B[[b 2 ]]s = tt B[[b 1 b 2 ]]s = ff ha B[[b 1 ]]s = ff vagy B[[b 2 ]]s = ff Kifejezések szemantikája (23/28)

Denotációs szemantika Számítsuk ki a denotációs szemantikában ugyanannak a kifejezésnek az értékét, amelynek az operációsban már kiszámoltuk! Legyen az s állapot [y 12, z 34], ekkor A[[(y + 5) + z]]s = A[[y + 5]]s + A[[z]]s = A[[y + 5]]s + 34 = (A[[y]]s + A[[5]]s) + 34 = (12 + N [[5]]) + 34 = (12 + 5) + 34 = 51 Kifejezések szemantikája (24/28)

Kompozicionalitás A megadott denotációs szemantika kompozicionálisan definiált: Minden szintaktikai elemhez megadtunk egy függvényklózt Az összetett kifejezések jelentése a részkifejezések jelentésének függvényében került megadásra Érdemes megfigyelni az aritmetikai negációt, amelyet tipikusan rosszul szoktak definiálni (pl. A[[-a]]s = A[[0 a]]s) A kompozicionalitásnak nagy jelentősége lesz a későbbiekben, hiszen szükséges ahhoz, hogy strukturális indukciós bizonyításokat végezhessünk a szemantikára vonatkozóan Kifejezések szemantikája (25/28)

Megjegyzések Indukcióval bizonyítható, hogy A megadott szemantikadefiníció teljes: minden lehetséges kifejezésnek megadtuk a jelentését A szemantikadefiníció konzisztens: ha két különböző jelentés is levezethető egy kifejezéshez, akkor azok ekvivalensek (ebben az esetben megegyeznek) A kifejezésekre definiált operációs és a denotációs szemantika ekvivalens Kifejezések szemantikája (26/28)

Összegzés Konkrét szintaxis kontra absztrakt szintaxis Kifejezések absztrakt szintaxisa, metaváltozók Strukturális operációs szemantika Denotációs szemantika A szemantikadefiníciók tulajdonságai Kifejezések szemantikája (27/28)

Show me the code! K Egy egyszerű kifejezéseket leíró nyelv szemantikája elérhető a kurzus anyagai között, amely segít megérteni a konfiguráció és az állapot fogalmát. (A példában a szintaktikus és a szemantikus számok nincsenek különválasztva.) A small-step stílusú operációs szemantikát a K keretrendszerben definiáltuk, kipróbálható a 3.5 és a 3.6 verziókkal. Kifejezések szemantikája (28/28)