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?

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

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

KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA

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

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

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

A Kepler sejtés bizonyításának ellenőrzése

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.

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

KOVÁCS BÉLA, MATEMATIKA I.

Matematikai logika és halmazelmélet

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

Diszkrét matematika I.

Funkcionális Nyelvek 2 (MSc)

Diszkrét matematika I.

Programok értelmezése

Diszkrét matematika I.

Bizonyítási módszerek ÉV ELEJI FELADATOK

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

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

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

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

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

Halmazelméleti alapfogalmak

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

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

IK Algoritmusok és Alkalmazásaik Tsz, TTK Operációkutatás Tsz. A LEMON C++ gráf optimalizálási könyvtár használata

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

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

Bevezetés az informatikába

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

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

Modell alapú tesztelés mobil környezetben

Diszkrét matematika HALMAZALGEBRA. Halmazalgebra

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

1. Mondjon legalább három példát predikátumra. 4. Mikor van egy változó egy kvantor hatáskörében?

Szoftverminőségbiztosítás

Diszkrét matematika 2.

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

Java programozási nyelv 5. rész Osztályok III.

Matematika III. 2. Eseményalgebra Prof. Dr. Závoti, József

SZÁMÍTÁSTUDOMÁNY ALAPJAI

Programozási alapismeretek. 1. előadás. A problémamegoldás lépései. A programkészítés folyamata. Az algoritmus fogalma. Nyelvi szintek.

LOGIKA ÉS ÉRVELÉSTECHNIKA

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

A matematika nyelvér l bevezetés

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

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

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

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

Logika és informatikai alkalmazásai

Modellellenőrzés a vasút automatikai rendszerek fejlesztésében. XIX. Közlekedésfejlesztési és beruházási konferencia Bükfürdő

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

Halmazok; a matematikai logika elemei 1.1. A halmaz fogalma; jelölések

Számítási intelligencia

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

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

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

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

KOVÁCS BÉLA, MATEMATIKA I.

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

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

Programozási alapismeretek 1. előadás

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

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

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

Készítette: Ernyei Kitti. Halmazok

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

Diszkrét matematika 2.

Tulajdonságalapú tesztelés

2018, Funkcionális programozás

Matematika A1a Analízis

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Trigonometria

A 2018-as Modellező (A) specializáció tanegységei. Számítógépes rendszerek

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.

Kongruenciák. Waldhauser Tamás

1. Polinomfüggvények. Állítás Ha f, g C[x] és b C, akkor ( f + g) (b) = f (b) + g (b) és ( f g) (b) = f (b)g (b).

Diszkrét matematika I.

Trigonometria Megoldások. 1) Oldja meg a következő egyenletet a valós számok halmazán! (12 pont) Megoldás:

IK Algoritmusok és Alkalmazásaik Tsz, TTK Operációkutatás Tsz. A LEMON C++ gráf optimalizálási könyvtár használata

Logika és informatikai alkalmazásai

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁCS BÉLA, MATEMATIKA I.

Diszkrét matematika 1.

Diszkrét matematika 1. estis képzés. Komputeralgebra Tanszék ősz

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

Java programozási nyelv

Programozási alapismeretek 3. előadás


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:

Automaták és formális nyelvek

PROGRAMTERVEZŐ INFORMATIKUS ALAPKÉPZÉSI SZAK

Milyen a modern matematika?

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

Szoftverminőségbiztosítás

1. A polinom fogalma. Számolás formális kifejezésekkel. Feladat Oldjuk meg az x2 + x + 1 x + 1. = x egyenletet.

Analízis évfolyam. Szerkesztette: Surányi László július 5.

és az instanceof operátor

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Átírás:

A ról Diszciplináris Informatika és Számítástudomány műhely A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszírozásával valósul meg (EFOP-3.6.3-VEKOP-16-2017-00002) BIT-CON szakmai nap 2018. május 3.

A ról A ról

A ról

(röviden) A típuselmélet egy nyelv programozásra és bizonyításra. Konkrét implementációi: Agda, Coq, Agda IDE szolgáltatások: unikód karakterbevitel U N ₁ ₂ típusellenőrzés (bizonyítás ellenőrzés) automatikus és interaktív kód kiegészítés kódgenerálás (javascript, Haskell) A ról

A ról

Tesztelés vs. bizonyítás matematikai példa informatikai példa állítás derékszögű háromszögben a²+b²=c² a program nem ad ki érzékeny adatot tesztelés látjuk hogy konkrét háromszögekre igaz látjuk hogy konkrét esetekben igaz A ról bizonyítás látjuk hogy minden háromszögre igaz látjuk hogy minden esetben igaz Teszteléssel a hibák jelenléte, bizonyítással a hibák hiánya igazolható. A matematika 2.300 éve áttért a bizonyításra.

Formalizálás derékszögű háromszögben a²+b²=c² formálisabb állítás, mint a program nem ad ki érzékeny adatot A ról cél a formalizálás fokában: géppel ellenőrizhető formális bizonyítás géppel ellenőrizhető bizonyítás szükséges egy nyelv, amin leírjuk az állítást és a bizonyítást ennek a nyelvnek le kell tudni írnia a matematikát

A ról

Top 100 matematikai állítás formalizálása 1 A matematikai formalizálása része a programhelyesség bizonyításnak. rendszer mire épül formális HOL Light típuselmélet 86/100 Isabelle típuselmélet 78/100 Coq típuselmélet 69/100 Mizar klasszikus logika 69/100 Metamath szimbólum helyettesítés 67/100 ProofPower típuselmélet 43/100 A ról Konkrét példák formális ra a mellékletben találhatók. 1 http://www.cs.ru.nl/~freek/100/

sel4 mikrokernel specifikációja mikrokernel: minimalizált védett módban futó szoftver A ról sel4: nagy hatékonyságú mikrokernel <10.000 sor C kóddal az sel4 megfelel az 5700 soros Haskell implementációnak 2 további formális az sel4-ről 3 a válaszidő analízise az elérési jogok betartása érzékeny információ érzékeny is marad 2 sel4: Formal Verification of an OS Kernel, 2009. (13 szerző) 3 Comprehensive formal verification of an OS microkernel, 2014. (7 szerző)

Bizonyítottan helyes fordítás a C nyelv formális specifikációja 4 a SPARCv8 processzor utasításkészletének formális specifikációja 5 bizonyítottan helyes fordító C-ről optimalizált PowerPC, ARM, RISC-V és x86 kódra 6 A ról 4 The C standard formalized in Coq, PhD thesis of Robbert Jan Krebbers 5 Formalizing SPARCv8 Instruction Set Architecture in Coq (Technical Report) 6 http://compcert.inria.fr/

A ról

A ról

Konstruktív függvények a a : A A a b a : A B A f a f a : (A B) A B f a f a a : (A A B) A B f a b f b a : (B A C) A B C A ról Ugyanezek több zárójellel: a a : A A a (b a) : A (B A) f (a f(a)) : (A B) (A B) f (a (f(a))(a)) : (A (A B)) (A B) f (a (b (f(b))(a))) : (B (A C)) (A (B C))

Függő típusú konstruktív függvények Az értékkészlet függhet a függvényparaméter értékétől. Példa n (1, 2, 3,..., n) : (n : N) Nⁿ A ról Csak függő típusú függvények vannak n (0, n+1, n) : (n : N) N³ rövidítés: n (0, n+1, n) : N N³

A normál forma fogalma Tanár: Mennyi 7*9? Diák: 7*9 az 9*7. Tanár: Nem, 7*9 nem 9*7. 7*9 az 63. A ról A beszélgetés formálissá tehető: Mennyi X? Mi az X normál formája? X az Y. Az X normál formája Y.

Normál forma a típuselméletben Kifejezés átírási lépés (példák) (x x) y y (f x f (f x)) S 0 (x S (S x)) 0 S (S 0) Normál forma (példák) (x x) y y (f x f (f x)) S 0 S (S 0) 1 + 1 2 2 2 A ról

A típuselmélet szintaxisa A típuselmélet egy programozási nyelv. azonosítók v ::= a b c 0 1 N _ _ (_,_) A ról kifejezések e, e ::= v v e e e (v: e) e U deklarációk / ítéletek I ::= e : e e e e e

A ról

Példa: N, 0 és S definíciója data N : U -- U a típus univerzum 0 : N S : N N -- szám rákövetkezője, pl. S (S 0) ugyanaz mint 2 A data egy nyelvi fűszer adatszerkezetek definiálására. A data ellenőrzi a bevezetett adatszerkezet létezését. A ról

További létező adatszerkezetek data : U -- létezik, nincs eleme data _ _ : U U U -- szorzat (_,_) : A B A B A ról data _ _ : U U U inj₁ : A A B inj₂ : B A B -- diszjunkt unió

Példa: az összeadás definíciója N-en rewrite _+_ : N N N 0 + m m S n + m S (n + m) A ról 1 + 1 2, mert S 0 + S 0 S (0 + S 0) S (S 0) A rewrite egy nyelvi fűszer átírási lépések megadására. A rewrite ellenőrzi az átírási lépések helyességét (típushelyesség, totalitás, terminálás).

További létező függvények rewrite fst : A B A fst (a, b) a rewrite case : (A C) (B C) A B C case f g (inj₁ a) f a case f g (inj₂ b) g b A ról rewrite absurd : A -- átírási lépés nélkül totális

A ról

Mellékhatásos programok leírása (példa) data -- konzolos alkalmazásokat leíró adatszerkezet IO : U U getchar : IO Char putchar : Char IO Unit return : A IO A _>>=_ : IO A (A IO B) IO B rewrite -- konkrét alkalmazás: egy beolvasott karakter kiírása main : IO Unit main getchar >>= putchar A ról rewrite -- ugyanez az alkalmazás nyelvi fűszerekkel megadva main do c getchar putchar c

Bizonyítottan helyes programok írása 1. a függvények elő- és utófeltételei beépíthetők a függvény típusába 2. a típusellenőrzés kizárja a hibás implementációt 3. a kódgenerálás során kitörölhető a bizonyítással kapcsolatos kód és adat A ról

Előfeltétel beépítése a függvény típusába data _ _ : N N U le0 : (n : N) 0 n les : (n : N) (m : N) n m S n S m Akkor van n m típusú érték, ha n kisebb vagy egyenlő mint m. van 0 S 0 típusú érték, ez az le0 (S 0) nincs S 0 0 típusú érték Bármilyen állítás leírható típusokkal (lásd melléklet). A ról Előfeltétel beépítése típusba: rewrite f : (n: N) (m : N) (e : n m) N...

A ról A ról

Célok Cél: a tökéletes típuselmélet kidolgozása és implementálása Ehhez: jelenlegi típuselmélet implementációkban (Agda) formalizálunk állításokat és írunk programokat típuselmélet fordítóprogramokat írunk Haskellben, és ezekkel kísérletezünk a típuselméletet írjuk le a típuselméletben Ez egy nagyon erős eszközt ad, ha ezt meg tudjuk csinálni, akkor mindent meg tudunk csinálni. A ról

Elérhetőségek Visszajelzés adható az előadásról: nyilvános Google fórum Bármilyen kapcsolódó kérdésre szívesen válaszolunk: Kaposi Ambrus, Déli tömb 2.705 Diviánszky Péter, Déli tömb 2.606 Kovács András, Déli tömb 2.620 A ról ELTE IK, Programozási Nyelvek és Fordítóprogramok tanszék

A ról

A ról

Négyszíntétel bizonyítása Minden síkba rajzolható gráf kiszínezhető négy színnel. A ról A formális bizonyítás a típuselméletben 60.000 sor. 7 A formális bizonyítás klasszikus logikával több millió sor lenne. 8 7 https://github.com/tangentforks/fourcolortheorem 8 An unavoidable set of D-reducible configurations, John P. Steinberger

Feit-Thompson tétel bizonyítása Minden páratlan rendű véges csoport feloldható. (véges) csoportelmélet lineáris algebra Galois elmélet valós és komplex algebrai számok + 250 oldal bizonyítás (kb. 1000 oldal lett formálisan) + 15 matematikus, aki ezeket 150.000 sorban formalizálta Forrás: A Machine-Checked Proof of the Odd Order Theorem, 2013. A ról

Kepler tétel bizonyítása Gömbökkel a legjobb térkitöltés hexagonális és lapközepes kockaráccsal érhető el. 9 A ról A jelenleg létező leghosszabb formális bizonyítás. A formális bizonyítás klasszikus logikával túl hosszú lenne. 9 A Formal Proof of the Kepler Conjecture, 2017. (27 szerző)

A ról

Kellenek absztrakt interfészek Boolean értékek definíciója False = True = { } Bool = {False, True} = {, { }} A ról Természetes számok definíciója 0 = S = a a {a} 1 S(0), 2 S(1), 3 S(2), N = {0, 1, 2, } = {, { }, {,{ }}, } Probléma False N False is egy természetes szám

Tudni kell számolni bizonyítás közben 1 + 2 * 2 = 5 formális bizonyítása (vázlat): A) 2 * 2 = 4 ezért 1 + 2 * 2 = 1 + 4 másrészt 1 + 4 = 5 tehát az (=) tranzitivitása miatt 1 + 2 * 2 = 5 B) rögtön látszik, mert mindkét oldalnak ugyanaz a normál formája A négyszíntétel és a Kepler tétel formális bizonyítása a B) módszerrel készült el, az A) módszerrel esélytelen lenne. A ról olyan formális nyelvre van szükség, amiben biztonságosan lehet számításokat végezni (akár bizonyítás közben is)

Mi hiányzik az informatikából? Minden típuselmélettől különböző szoftver verifikációs módszer 2 fázisú. Nem fonódhat össze a számítás a bizonyítással, a hogyan a miért-tel. Hol számít ez? bizonyítottan helyes komputer-algebrai rendszer, fordítóprogram, operációs rendszer a fejlesztői környezet programozás közben váltakozva ellenőriz és segít legyen minden szorosan együtt a még optimálisabb kódgeneráláshoz A ról

A ról

Típusa vs. eleme állítás / ítélet jólformált? további információ, ha igen N N igaz / nincs 10 N N hamis 0 N igaz : N : N N : N 0 : N nincs A ról a típusa reláció elemibb, a jólformáltság elég a típusa reláció korábban észreveszi a hibákat típusellenőrzés e : e' jólformáltságának ellenőrzése 10 ha absztrakt N definíciója

Függő párok A második elem típusa függ az első elem értékétől. (3, (-4,5,6)) : (n : N) Zⁿ. data _ _ : (A : U) (A U) U _,_ : (a : A) B a A B Példa: végtelen sok prímszám létezésének a bizonyítása A ról n np ( 11, ( 12, 13 )) : (n : N) n prím (p : N) ((p > n) p prím) 11 p az n-től kisebb vagy egyenlő prímek szorzata + 1 12 p nagyobb, mint n, mert n is prím 13 p prímszám

A ról

A logika modellezése a típuselméletben Az állításokat típusokkal modellezzük. Jelölje P a P állításnak megfelelő típust. P tetszőleges, csak teljesüljön a következő feltétel: P -nek van eleme P igaz. Szokásos megfeleltetés indoklás A ról P Q = P Q A B üres A üres B üres P Q = P Q A B üres A üres B üres P Q = P Q A B üres A üres B üres P = P logikai azonosság = -nek nincs eleme a A: P = (a : A) P (a:a) B üres a A:(B üres) a A: P = (a : A) P p:(a:a) B snd p : B[a:= fst p]

Bizonyítás a típuselméletben P-t úgy bizonyítjuk, hogy megadjuk P egy elemét: állítás (logika) P P P: P P P Q Q P P Q P P P P állítás + bizonyítás (típuselmélet) a a : A A A a a : (A : U) A A a b (b, a) : A B B A fst : A B A a f f a : A (A ) absurd : A A ról állítás kimondása típus megadása bizonyítás típus elemének megadása bizonyítás ellenőrzése típusellenőrzés (gép végzi) A kal lehet számolni, akárcsak N elemeivel.

Klasszikus matematika vs. típuselmélet felépítése csoport gyűrű... csoport gyűrű... Z Q R C... Z Q R C... N 0 S + < Matematika N 0 S + < A ról { } Halmazelmélet = állítás Logika bizonyítás mag Matematika U : Típuselmélet Logika data rewrite alapelem nyevi fűszer definíció

Példa: A teljes indukció bizonyítása rewrite -- P: P(0) ( m N: P(m) P(S(m))) n N: P(n) indn : (P : N U) P 0 ((m : N) P m P (S m)) (n : N) P n indn P z s 0 z indn P z s (S n) s n (indn P z s n) A ról

Az egyenlőség definíciója data _ _ : A A U refl : (x : A) x x Annak a bizonyítása, hogy _ _ ekvivalencia-reláció: rewrite sym : x y y x sym refl refl rewrite trans : x y y z x z trans refl refl refl A ról

Faktor típusok Egész számok definiálása: data Z : U _-_ : N N Z -- a,b,c,d N: a+d = c+b a-b = c-d EqZ : (a : N) (b : N) (c : N) (d : N) a+d c+b a-b c-d A ról

A ról

Szokásostól eltérő típuselméleti jelölések a diákon jelölés a dián tipikus jelölés cikkekben Agda jelölés v e λv.e λ v e e e' e e e = e' A ról Az eltérések célja az hogy kevésbé legyen idegen a szintaxis.

eltérések az irodalomban szokásostól a normál formát külön nyelvtannal definiálják hipotetikus ítéletek az U típusú függvényparaméterek sok helyen nincsenek jelölve A ról

A ról

Máshonnan származó képek forrásai Négyszíntétel: https://www.vb-helper.com/tutorial_map_coloring.html Feit-Thompson tétel: http://docmadhattan.fieldofscience.com/2012/03/classificationof-finite-simple-groups.html Kepler tétel: https://www.mnn.com/lifestyle/artsculture/stories/keplers-conjecture-why-it-took-400-years-provewhat-your-grocer-already-knows A ról