Kaposi Ambrus. Informatikai Kar. Pannonhalmi Bencés Gimnázium november 24.

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

Nyelvek típusrendszere (IPM-08sztNYTRE, IPM-08EsztNYTRE)

Nyelvek típusrendszere (jegyzet)

Mi a típuselmélet? BIT-CON szakmai nap május 3. Diszciplináris Informatika és Számítástudomány műhely. Mi a típuselmélet?

Matematikai logika és halmazelmélet

A matematika nyelvér l bevezetés

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

Bevezetés az informatikába

Diszkrét matematika I.

A matematika nyelvéről bevezetés

1. előadás: Halmazelmélet, számfogalom, teljes

Diszkrét matematika I.

Predikátumkalkulus. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák. Vizsgáljuk meg a következ két kijelentést.

Logika és informatikai alkalmazásai

TÍPUSKIKÖVETKEZTETÉSI MÓDSZEREK

Logika és informatikai alkalmazásai

Halmazok-előadás vázlat

A Számítástudomány alapjai

C++ programozási nyelv Konstruktorok-destruktorok

Halmaz: alapfogalom, bizonyos elemek (matematikai objektumok) Egy halmaz akkor adott, ha minden objektumról eldönthető, hogy

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

Logika nyelvészeknek, 12. óra A típuselmélet alapjai. Lehetőség van a kvantorfogalom mellett a funktorfogalom általánosítására is.

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

Programok értelmezése

MATE-INFO UBB verseny, március 25. MATEMATIKA írásbeli vizsga

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

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

A Feldspar fordító, illetve Feldspar programok tesztelése

Dr. Jelasity Márk. Mesterséges Intelligencia I. Előadás Jegyzet (2008. október 6) Készítette: Filkus Dominik Martin

1. Mátrixösszeadás és skalárral szorzás

Bevezetés. Halmazelmélet Formális rendszerek Logika λ kalkulus Típuselmélet Absztrakt algebra Kategóriaelmélet Funkcionális programozás

Diszkrét matematika 1. estis képzés

6. fejezet: Ciklusok

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

Funkcionális Nyelvek 2 (MSc)

Matematika (mesterképzés)

1. Példa. A gamma függvény és a Fubini-tétel.

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

2. Algebrai átalakítások

A matematikai logika alapjai

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

FUNKCIONÁLIS PROGRAMOZÁS

Magasabbrendű funkcionális programozás

Szoftver-modellellenőrzés absztrakciós módszerekkel

Matematika III előadás

Logika és informatikai alkalmazásai

Logika és informatikai alkalmazásai

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

Imperatív programozás

2019, Funkcionális programozás. 2. el adás. MÁRTON Gyöngyvér

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

Szélsőérték-számítás

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

Számítsuk ki a nyelvet! Matematika, fizika és algoritmusok a nyelvben

Kijelentéslogika, ítéletkalkulus

Dualitás Dualitási tételek Általános LP feladat Komplementáris lazaság 2017/ Szegedi Tudományegyetem Informatikai Intézet

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

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

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

2. Fejezet : Számrendszerek

A Számítógépek felépítése, mőködési módjai. A Számítógépek hardverelemei

Alapkapuk és alkalmazásaik

Matematikai logika. Nagy Károly 2009

Komputeralgebra Rendszerek

DISZKRÉT MATEMATIKA: STRUKTÚRÁK Előadáson mutatott példa: Bércesné Novák Ágnes

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit.

Matematika 8. osztály

Diszkrét matematika 2.

First Prev Next Last Go Back Full Screen Close Quit

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

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

Formális nyelvek - 5.

GPU Lab. 1. fejezet. Bevezetés. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Nemkonvex kvadratikus egyenlőtlenségrendszerek pontos dualitással

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

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

Az ellenpéldával történő cáfolás az elemi matematikában

Bevezetés az informatikába

Diszkrét matematika 1. középszint

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

Kalkulus 2., Matematika BSc 1. Házi feladat

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

Elemi algebrai eszközökkel megoldható versenyfeladatok Ábrahám Gábor, Szeged

Bevezetés a homotópia-típuselméletbe

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

LOGIKA ÉS ÉRVELÉSTECHNIKA

Logika és informatikai alkalmazásai

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

Logika és informatikai alkalmazásai

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

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

1. Interpoláció. Egyértelműség Ha f és g ilyen polinomok, akkor n helyen megegyeznek, így a polinomok azonossági tétele miatt egyenlők.

Logika és informatikai alkalmazásai

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

Mesterséges Intelligencia MI

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

A TANTÁRGY ADATLAPJA

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Absztrakció a szoftvertervezésben az Alloy specifikációs nyelv segítségével

FUNKCIONÁLIS PROGRAMOZÁS GYAKORLAT JEGYZET

Átírás:

Bizonyítás és programozás Kaposi Ambrus Eötvös Loránd Tudományegyetem Informatikai Kar Pannonhalmi Bencés Gimnázium 2017. november 24.

A tökéletes operációs rendszer (i) BeOS Plan9 2 / 22

A tökéletes operációs rendszer (ii) Villa Savoye Centre Pompidou 3 / 22

Logisták a program helyesen működjön modularitás, absztrakció új rendszer nyelvész forma Kombinatoristák a program gyors legyen teljesítmény régi karbantartása hacker tartalom Alexander Grothendieck Andrew Wiles 4 / 22

Formális nyelv név ::= Mari Jenő Áron Juli alany tárgy minőségjelző ::= név bicikli ::= alany t ::= Kis Nagy Szép mennyiségjelző ::= három egy mennyiségjelző meg mennyiségjelző álĺıtmány mondat ::= visz kedvel ::= minőségjelző alany mennyiségjelző tárgy álĺıtmány. Mondat -e? 1. Szép Juli három biciklit kedvel. 2. Szép Juli három Áront kedvel. 3. Szép Juli három meg három Áront kedvel. 4. Szép Juli kedvel három biciklit. 5. Három Juli szép biciklit kedvel. Továbbá: Szép Juli három meg (három meg három) Áront kedvel. Szép Juli (három meg három) meg három Áront kedvel. 5 / 22

Lambda kalkulus (i) Mi az, hogy program? Alonzo Church Kurt Gödel Alan Turing változó ::= x y z változó program ::= változó λváltozó.program program program 6 / 22

Lambda kalkulus (ii) Szintaxis rövidebben: t ::= x λx.t t t Példák: Program végrehajtása: λx.x + x (λx.x + x) 3 (λx.x + x) 3 3 + 3 Program több bemenettel: λx.(λy.(2 x + y)) Végrehajtás: ((λx.(λy.2 x + y)) 3) 4 2 3 + 4 7 / 22

Programok végrehajtása Szintaxis: t ::= x λx.t t t Végrehajtás általános esetben, bármely x, t, t -re: (λx.t) t t[x t ] Példák: (λx.x + x) 3 (x + x)[x 3] = 3 + 3 ((λx.(λy.2 x + y)) 3) 4 ((λy.2 x + y)[x 3]) 4 = (λy.2 3 + y) 4 (2 3 + y)[y 4] = 2 3 + 4 8 / 22

Számok (i) t ::= x λx.t t t (λx.t) t t[x t ] 0 := λx.(λy.x) 1 := λx.(λy.(y x)) 2 := λx.(λy.(y (y x))) 3 := λx.(λy.(y (y (y x)))) pluszegy := λz.(λx.(λy.y ((z x) y))) 9 / 22

Számok (ii) t ::= x λx.t t t (λx.t) t t[x t ] 2 = λx.(λy.(y (y x))) pluszegy = λz.(λx.(λy.y ((z x) y))) Például: pluszegy 2 = (λz.(λx.(λy.y ((z x) y)))) (λx.(λy.(y (y x)))) (λx.(λy.y ((z x) y)))[z (λx.(λy.(y (y x))))] = λx.(λy.y (((λx.(λy.(y (y x)))) x) y)) λx.(λy.y ((λy.(y (y x)))[x x] y)) = λx.(λy.y ((λy.(y (y x))) y)) λx.(λy.y ((y (y x))[y y])) = λx.(λy.y (y (y x))) = 3 Házi feladat: összeadás, szorzás. 10 / 22

Típusok Számokkal mindent lehet reprezentálni, például szövegeket, képeket, videókat stb. Tfh. van egy nagy programunk, λx.convert alakú, bemenet: PNG, kimenet: JPG. Van egy rajz programunk, ami egy PNG kép. Ekkor (λx.convert) rajz egy JPG típusú kép lesz. Tfh. van egy konyv programunk, ami egy könyvnek a szövege. Mi lesz, ha végrehajtjuk a (λx.convert) konyv programot? Típusok: PNG, JPG, Szöveg, Szám, Szám Szám, PNG JPG stb. 11 / 22

Típusrendszer (i) Ha x : A, akkor t : B λx.t : A B t : A B t t : B t : A pluszegy : Szám Szám pluszegy 2 : Szám 2 : Szám λx.convert : PNG JPG konyv : Szöveg 12 / 22

Típusrendszer (ii) Honnan tudjuk, hogy 2 : Szám? pluszegy : Szám Szám pluszegy 2 : Szám 2 : Szám Kiegészítjük a típusrendszer szabályait: 0 : Szám pluszegy : Szám Ha x : A, akkor t : B λx.t : A B A szabályok használatával: t : A B t t : B t : A pluszegy : Szám Szám pluszegy : Szám Szám (pluszegy 0) : Szám pluszegy (pluszegy 0) : Szám 0 : Szám 13 / 22

Matematika nyelve Álĺıtások, például: (x + 1 3) (x 2) Logikai szabályok (egy része): a a A Bizonyítások: A B A B a b b c a c (x 3 x 2) A B A x + 1 3 x 2 (x + 1 3) (x 2) a b b a A B B A. B A B a + 1 b + 1 a b A B B x 3 x 2 x 3 x 3 x 2 3 x x 2 3 2 (x 3 x 2) A a + 1 a... 14 / 22

Kitérő: fel lehet -e írni az összes szabályt? 15 / 22

Típuselmélet (type theory) vs. halmazelmélet Per Martin-Löf filozófus, ornitológus. A matematikai objektumok elválaszthatatlanok a típusuktól. A bizonyítások konstruktívak. A bizonyítások számítógéppel ellenőrizhetők. 16 / 22

Típusok N: természetes számok Π(x : A).B: függvény, logikai következtetés, minden kvantor, általános szorzat Σ(x : A).B: rendezett pár, logikai és, létezik kvantor, általános összeg a A b: egyenlőség Például: λx.λy.ap pred y : Π(x : N).Π(y : x + 1 N 3).x N 2 matematika = programozás álĺıtás = típus bizonyítás = program Típuselméletre épülő progamozási nyelvek/tételbizonyító rendszerek: Agda, Coq (négy szín), Idris, Lean stb. 17 / 22

Egyenlőség típus Kérdés: ha t : a A b és t : a A b, akkor vajon van -e olyan p, hogy p : t a A b t? Martin-Löf egységes sémát adott meg minden típusra, hogy milyen programokat lehet írni. Például Π(x : A).B-re: típus formálás: ha A egy típus, és ha B típus, feltéve, hogy x : A, akkor Π(x : A).B típus konstrukció: ha t : B, feltéve, hogy x : A, akkor λx.t : Π(x : A).B elimináció: ha t : Π(x : A).B és u : A, akkor t u : B[x u] komputáció: (λx.t) u = t[x u] egyediség: λx.(t x) = t A hasonló, egyenlőségre vonatkozó sémából nem következik a fenti kérdésre igen válasz. 18 / 22

Kategóriaelmélet Saunders Mac Lane matematikus 19 / 22

Homotópia-elmélet Vladimir Voevodsky matematikus 20 / 22

Mikor egyenlő két típus? Ha van egy f : A B és egy g : B A, melyekre f g = id B és g f = id A. Bool: kételemű típus, két konstruktorral: true : Bool, false: Bool id : Bool Bool id true = true id false = false not : Bool Bool nottrue = false notfalse = true 21 / 22

Saját kutatás Típuselmélet leírása a típuselméletben Homotópia-típuselméletnek szép szintaxist készítünk Matematikusokat meggyőzni, hogy formalizáljanak Programozókat meggyőzni, hogy bizonyítottan helyes progamokat írjanak 22 / 22