22
Bizony´ ıt´ as ´ es programoz´ as Kaposi Ambrus otv¨ os Lor´ and Tudom´ anyegyetem Informatikai Kar Pannonhalmi Benc´ es Gimn´ azium 2017. november 24.

Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Bizonyıtas es programozas

Kaposi Ambrus

Eotvos Lorand TudomanyegyetemInformatikai Kar

Pannonhalmi Bences Gimnazium2017. november 24.

Page 2: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

A tokeletes operacios rendszer (i)

BeOS Plan9

2 / 22

Page 3: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

A tokeletes operacios rendszer (ii)

Villa Savoye Centre Pompidou

3 / 22

Page 4: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Logistak Kombinatoristak

a program helyesen mukodjon a program gyors legyenmodularitas, absztrakcio teljesıtmenyuj rendszer regi karbantartasanyelvesz hackerforma tartalom

Alexander Grothendieck Andrew Wiles

4 / 22

Page 5: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Formalis nyelvnev ::= Mari | Jeno | Aron | Juli

alany ::= nev | bicikli

targy ::= alanyt

minosegjelzo ::= Kis |Nagy |Szep

mennyisegjelzo ::= harom | egy |mennyisegjelzo meg mennyisegjelzo

allıtmany ::= visz | kedvel

mondat ::= minosegjelzo alany mennyisegjelzo targy allıtmany .

Mondat -e?

1. Szep Juli harom biciklit kedvel.2. Szep Juli harom Aront kedvel.3. Szep Juli harom meg harom Aront kedvel.4. Szep Juli kedvel harom biciklit.5. Harom Juli szep biciklit kedvel.

Tovabba: Szep Juli harom meg (harom meg harom) Aront kedvel.6= Szep Juli (harom meg harom) meg harom Aront kedvel.

5 / 22

Page 6: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Lambda kalkulus (i)

Mi az, hogy program?

Alonzo Church Kurt Godel Alan Turing

valtozo ::= x | y | z | valtozo ′

program ::= valtozo |λvaltozo.program | program program

6 / 22

Page 7: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Lambda kalkulus (ii)Szintaxis rovidebben:

t ::= x |λx .t | t t ′

Peldak:λx .x + x

(λx .x + x) 3

Program vegrehajtasa:

(λx .x + x) 3 3 + 3

Program tobb bemenettel:

λx .(λy .(2 ∗ x + y))

Vegrehajtas:((λx .(λy .2 ∗ x + y)) 3) 4 2 ∗ 3 + 4

7 / 22

Page 8: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Programok vegrehajtasaSzintaxis:

t ::= x |λx .t | t t ′

Vegrehajtas altalanos esetben, barmely x , t, t ′-re:

(λx .t) t ′ t[x 7→ t ′]

Peldak:(λx .x + x) 3 (x + x)[x 7→ 3] = 3 + 3

((λx .(λy .2 ∗ x + y)) 3) 4

((λy .2 ∗ x + y)[x 7→ 3]) 4

= (λy .2 ∗ 3 + y) 4

(2 ∗ 3 + y)[y 7→ 4]

= 2 ∗ 3 + 4

8 / 22

Page 9: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Szamok (i)

t ::= x |λx .t | t t ′ (λx .t) t ′ t[x 7→ 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

Page 10: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Szamok (ii)

t ::= x |λx .t | t t ′ (λx .t) t ′ t[x 7→ t ′]

2 = λx .(λy .(y (y x)))

pluszegy = λz .(λx .(λy .y ((z x) y)))

Peldaul:

pluszegy 2

= (λz .(λx .(λy .y ((z x) y)))) (λx .(λy .(y (y x))))

(λx .(λy .y ((z x) y)))[z 7→ (λx .(λy .(y (y x))))]

= λx .(λy .y (((λx .(λy .(y (y x)))) x) y))

λx .(λy .y ((λy .(y (y x)))[x 7→ x ] y))

= λx .(λy .y ((λy .(y (y x))) y))

λx .(λy .y ((y (y x))[y 7→ y ]))

= λx .(λy .y (y (y x)))

= 3 Hazi feladat: osszeadas, szorzas.10 / 22

Page 11: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Tıpusok

Szamokkal mindent lehet reprezentalni, peldaul szovegeket, kepeket,videokat stb.

Tfh. van egy nagy programunk, λx .convert alaku, bemenet: PNG,kimenet: JPG.Van egy rajz programunk, ami egy PNG kep.Ekkor (λx .convert) rajz egy JPG tıpusu kep lesz.

Tfh. van egy konyv programunk, ami egy konyvnek a szovege.Mi lesz, ha vegrehajtjuk a (λx .convert) konyv programot?

Tıpusok: PNG, JPG, Szoveg, Szam, Szam ⇒ Szam, PNG ⇒ JPG stb.

11 / 22

Page 12: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Tıpusrendszer (i)

Ha x : A, akkor t : Bλx .t : A⇒ B

t : A⇒ B t ′ : At t ′ : B

pluszegy : Szam⇒ Szam 2 : Szam

pluszegy 2 : Szam

λx .convert : PNG⇒ JPG konyv : Szoveg

12 / 22

Page 13: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Tıpusrendszer (ii)

pluszegy : Szam⇒ Szam 2 : Szam

pluszegy 2 : Szam

Honnan tudjuk, hogy 2 : Szam?

Kiegeszıtjuk a tıpusrendszer szabalyait:

0 : Szam pluszegy : Szam

Ha x : A, akkor t : Bλx .t : A⇒ B

t : A⇒ B t ′ : At t ′ : B

A szabalyok hasznalataval:

pluszegy : Szam⇒ Szam

pluszegy : Szam⇒ Szam 0 : Szam

(pluszegy 0) : Szam

pluszegy (pluszegy 0) : Szam

13 / 22

Page 14: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Matematika nyelveAllıtasok, peldaul: (x + 1 ≡ 3)⇒ (x ≡ 2)

(x ≡ 3 ∧ x ≡ 2)⇒ ⊥Logikai szabalyok (egy resze):

>⊥A

A BA ∧ B

A ∧ BA

A ∧ BB

A...B

A⇒ B

A⇒ B AB

a ≡ aa ≡ b b ≡ c

a ≡ ca ≡ bb ≡ a

a + 1 ≡ b + 1a ≡ b

a + 1 ≡ a⊥ ...

Bizonyıtasok:

x + 1 ≡ 3x ≡ 2

(x + 1 ≡ 3)⇒ (x ≡ 2)

x ≡ 3 ∧ x ≡ 2x ≡ 33 ≡ x

x ≡ 3 ∧ x ≡ 2x ≡ 2

3 ≡ 2⊥

(x ≡ 3 ∧ x ≡ 2)⇒ ⊥14 / 22

Page 15: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Kitero: fel lehet -e ırni az osszes szabalyt?

15 / 22

Page 16: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Tıpuselmelet (type theory) vs. halmazelmelet

Per Martin-Lof filozofus, ornitologus.

A matematikai objektumok elvalaszthatatlanok a tıpusuktol.A bizonyıtasok konstruktıvak.A bizonyıtasok szamıtogeppel ellenorizhetok.

16 / 22

Page 17: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

TıpusokI N: termeszetes szamokI Π(x : A).B: fuggveny, logikai kovetkeztetes,

”minden” kvantor,

altalanos szorzatI Σ(x : A).B: rendezett par, logikai es,

”letezik” kvantor, altalanos

osszegI a ≡A b: egyenloseg

Peldaul:

λx .λy .ap pred y : Π(x : N).Π(y : x + 1 ≡N 3).x ≡N 2

matematika = programozas

allıtas = tıpus

bizonyıtas = program

Tıpuselmeletre epulo progamozasi nyelvek/tetelbizonyıto rendszerek:Agda, Coq (negy szın), Idris, Lean stb.

17 / 22

Page 18: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Egyenloseg tıpus

Kerdes: ha t : a ≡A b es t ′ : a ≡A b, akkor vajon van -e olyan p, hogyp : t ≡a≡Ab t ′?Martin-Lof egyseges semat adott meg minden tıpusra, hogy milyenprogramokat lehet ırni.Peldaul Π(x : A).B-re:

I tıpus formalas: ha A egy tıpus, es ha B tıpus, felteve, hogy x : A,akkor Π(x : A).B tıpus

I konstrukcio: ha t : B, felteve, hogy x : A, akkor λx .t : Π(x : A).B

I eliminacio: ha t : Π(x : A).B es u : A, akkor t u : B[x 7→ u]

I komputacio: (λx .t) u = t[x 7→ u]

I egyediseg: λx .(t x) = t

A hasonlo, egyenlosegre vonatkozo semabol nem kovetkezik a fentikerdesre igen valasz.

18 / 22

Page 19: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Kategoriaelmelet

Saunders Mac Lane matematikus

19 / 22

Page 20: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Homotopia-elmelet

Vladimir Voevodsky matematikus

20 / 22

Page 21: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Mikor egyenlo ket tıpus?

Ha van egy f : A⇒ B es egy g : B ⇒ A, melyekre f ◦ g = idB esg ◦ f = idA.Bool: ketelemu tıpus, ket konstruktorral: true : Bool, false: Bool

id : Bool ⇒ Bool

id true = true

id false = false

not : Bool ⇒ Bool

nottrue = false

notfalse = true

21 / 22

Page 22: Bizony t as es programoz as - GitHub Pages · 2020-06-18 · Bizony t as es programoz as Kaposi Ambrus E otv os Lor and Tudom anyegyetem Informatikai Kar Pannonhalmi Benc es Gimn

Sajat kutatas

Tıpuselmelet leırasa a tıpuselmeletben

Homotopia-tıpuselmeletnek szep szintaxist keszıtunk

Matematikusokat meggyozni, hogy formalizaljanak

Programozokat meggyozni, hogy bizonyıtottan helyes progamokat ırjanak

22 / 22