Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Lambda kalkulus
2
A -kifejezések nyelvének szimbólumait két halmazzal adhatjuk meg:
C={c, c', c'', ...} konstansok végtelen ábécéje V={v, v', v'', ...} változók végtelen ábécéje. További szimbólumok a ( ) zárójelek és a szimbólum.
3
A -kifejezések induktív definíciója :
Ha x egy változó, M egy -kifejezés, akkor (xM) egy újabb -kifejezés. Ez a művelet az ún. (függvény)absztrakció, x a függvény paramétere, M a függvény törzse. Ez egyben egy kvantoros művelet, a (xM) kifejezésben a kvantor, x a kvantoros előtag, és M a kvantoros előtag hatásköre. Ha M és N -kifejezések, akkor (MN) is az. Ez egy kétoperandusú művelet, az ún. (függvény) alkalmazás vagy (függvény) applikáció. Szokásos műveleti jele a pont (mint szorzásjel) vagy a szóköz, de legtöbbször a műveleti jelet elhagyják. Ezen utóbbit követjük mi is. Minden változó szimbólum egyben -kifejezés is. Minden konstans szimbólum egyben -kifejezés is. A -kifejezések halmazát -val jelöljük.
4
Ugyanez B-N-Formában :
konstans :: c | konstans' változó :: v | változó' -kifejezés ::konstans | változó | -kifejezés -kifejezés | változó -kifejezés Ugyanez a definíció absztrakt szintaxist használva : C | V | | V
5
Egyszerűnek nevezünk egy -kifejezést, ha nem tartalmaz konstansokat.
Egy -kifejezésben azt a változóelőfordulást, amely egy kvantoros előtagban vagy egy vele megegyező változójú kvantoros előtag hatáskörében van, kötött változóelőfordulásnak nevezzük. Mindazok a válto-zóelőfordulások, amelyek nem kötöttek, szabadok. Azokat a változókat, amelyeknek egy adott -kifeje-zésben van szabad előfordulása, a kifejezés paramé-tereinek nevezzük. Azt a -kifejezést, amelynek nincs paramétere, zárt -kifejezésnek vagy kombi-nátornak nevezzük.
6
Jelölési konvenciók: c, d, e, ... tetszőleges konstansokat jelölnek
x, y, z, tetszőleges változókat jelölnek L, M, N, … tetszőleges -kifejezéseket jelölnek M1M2M3...Mm az (...((M1M2) M3)...Mm) kifejezést jelöli x1x2...xn.M az (x1(x2...(xnM))) kifejezést jelöli x1...xn.M1M2...Mm az (x1...(xn(...(M1M2)...Mm))) kifejezést jelöli A külső zárójelek elhagyhatók.
7
Például az első oszlopban lévő kifejezések a második oszlopban lévő -kifejezéseket jelölik:
x x xc (xc) x.xc (x(xc)) yx.xc (y(x(xc))) (x.xc)y ((x(xc))y) x.xx.x (x(x(xx))) xyz.x(yz) (x(y(z(x(yz)))))
8
-kalkulus
9
A -kalkulus M=N alakú egyenlőségek kalkulusa. Axiómái:
Kötött változók szabályos átjelölése (-helyettesítés): () x.M = y.M[xy] Azt mondjuk, hogy két kifejezés kongruens (jele: ), ha -konverzióval egymásba átvihetők. A -kalkulus alapaxiómája (-helyettesítés): () (x.M)N M[xN], ahol a jobb oldal a változó szabályos helyettesítését jelöli.
10
Logikai axióma és levezetési szabályok (a szabá-lyokban a megszokott törtvonal helyett a jel szerepel) : M=M M=N N=M M=N, N=L M=L M=N ML=NL, LM=LN M=N x.Mx.N Ha a -kalkulusban M=N levezethető, ennek jele | M=N, vagy röviden M=N , akkor azt mondjuk, hogy M és N egymásba -kovertálhatóak.
11
Operációs szemantika
12
Ebben a szemantikában (a Herbrand-interpretáci-ókhoz hasonlóan) a formális kifejezések halmaza, azaz esetünkben a halmaz az alaphalmaz. A változók és konstansok ebből a halmazból vehetik fel értéküket. Egy -n értelmezett bináris reláció kompatibili-tási reláció, ha M N ML NL, LM LN, x.M x.N kongruencia reláció, ha ekvivalencia és kompati-bilitási reláció, redukció reláció, ha reflexív, tranzitív és kompatibilitási reláció.
13
A -helyettesítés kompatibilis lezártját egylé-péses -redukciónak (jele ), a redukciós lezártját -redukciónak (jele ), a -redukció ekvivalencia lezártját -konvertál-hatósági relációnak (jele =) nevezzük.
14
-redexnek nevezzük a kifejezések (x. M)N alakú részkifejezéseit
-redexnek nevezzük a kifejezések (x.M)N alakú részkifejezéseit. Ha egy kifejezés nem tartalmaz -redexet akkor -normál formájú-nak nevezzük. Ha M= N, és N -normál formájú, akkor N az M -normál formája. Tétel : Ha M -normál formájú, és M N, akkor MN. Tétel : (Church-Rosser) Ha M N1, M N2, akkor van olyan N3, hogy N1 N3, N2 N3 .
15
Következmény: Ha M= N, akkor van olyan L, hogy M L, N L .
Következmény: Ha N az M -normál formája, akkor M N. Következmény: Minden -kifejezésnek legfeljebb egy -normál formája van. Az =(x.xx)(x.xx) -kifejezésnek nincs -normál formája.
16
Tétel : A -kalkulus helyes, azaz ha | M=N, akkor M= N.
Informálisan egy kifejezés kiszámítása a kifejezés -normalizálását jelenti.
17
Stratégiák A redexben szereplő kvantorjelet a redex főszimbólumának nevezzük. A redexek egymás- hoz viszonyított helyét a főszimbólumok helye határozza meg. Lusta kiértékelés: minden lépésben a legbalol-dalibb redexet redukáljuk. Tétel : Ha egy kifejezésnek van normál formája akkor a lusta kiértékeléssel eljutunk hozzá. Mohó kiértékelés: előbb az argumentumokat normalizáljuk, csak azután helyettesítjük.
18
Példák a -kalkulus kifejező erejére
19
truexy.x falsexy.y ifpqr.pqr if true A B (pqr.pqr) true A B true A B (xy.x) A B A Curch-számok: 0fx.x 1fx.fx 2fx.f(fx) 3fx.f(f(fx)) ...
20
zero x.x (true false) true
(fx.f(fx)) (true false) true (true false) ((true false) true) = ((xy.x) false) ((true false) true) false succ nfx.nf(fx) succ 2 (nfx.nf(fx)) 2 fx.2 f(fx) fx.(fx.f(fx)) f (fx) = fx.f(f(fx)) = 3
21
B yz.z(succ(y true))(y true)
C z.z 0 0 pred n.n B C false xyz.x(yz)
22
pred 3 (n.n B C false) 3 3 B C false
B (B(B C)) false (yz.z(succ(y true))(y true)) (B(B C)) false false (succ(B(B C)true)) (B(B C)true) (xy.y) (succ(B(B C)true)) (B(B C)true) B(B C) true (yz.z(succ(y true))(y true)) (B C) true true (succ(B C true)) (B C true) (xy.x) (succ(B C true)) (B C true) succ(B C true) succ((yz.z(succ(y true)) (y true)) C true) succ(true(succ(C true)) (C true)) succ((xy.x)(succ(C true)) (C true)) succ(succ(C true)) succ(succ((z.z 0 0) true)) succ(succ(true 0 0)) succ(succ((xy.x) 0 0)) succ(succ(0)) 2
23
2 3 xyz.x(yz) 2 3 z.2(3 z) z.2((fx.f(f(fx)))z) z.2(x.z(z(zx))) z.(fx.f(fx)) (x.z(z(zx))) z.(x.(x.z(z(zx))) ((x.z(z(zx))) x)) zx.(x.z(z(zx))) ((x.z(z(zx))) x) zx.(x.z(z(zx))) (z(z(zx))) zx.z(z(z(z(z(zx)))))) fx.f(f(f(f(f(fx))))) 6
24
Rekurzió fac n.if (zero n) 1 (n(fac(pred n))) A fac függvény a F függvény fixpontja, ahol F fn.if (zero n) 1 (n(f(pred n))) AA Turing-féle fixpont kombinátor, ahol A xy.y(xxy) Ha X AAG, akkor GX G(AAG) (xy.y(xxy)) AG AAG X fac F
25
fac 3 F 3 A A F 3 (xy.y(xxy)) A F 3
F(A A F) 3 F(A A F) 3 F( F) 3 F fac 3 (fn.if (zero n)1(n(f(pred n)))) fac3 if(zero 3) 1 (3(fac(pred 3))) if false 1 (3(fac 2)) 3 (fac 2) 3 (2 (fac 1)) 3 (2 (1 (fac 0))) 3 (2 (1 ( F 0))) 3 (2 (1 (A A F 0))) 3 (2 (1 ((xy.y(xxy)) A F 0))) 3 (2 (1 (F fac 0))) 3(2(1((fn.if(zeron)1(n(f(predn))))fac0))) 3 (2 (1 (if (zero 0) 1 (0 (fac(pred 0)))))) 3 (2 (1 1)) 6
26
Denotációs szemantika: -modellek
27
Teljes háló egy olyan D=(D,) féligrendezett halmaz, amelyre teljesül, hogy minden részhalmazának van pontos alsó és felső korlátja. A továbbiakban D, D', D'' stb. teljes hálókat jelölnek.
28
A D teljes háló egy XD részhalmaza irányított, ha nem üres, és bármely két elemének létezik Xbeli közös felső korlátja. Egy f :DD' leképezés folytonos, ha bármely XD irányított részhalmazra teljesül, hogy f(sup(X))=sup(f(X)). Folytonos függvények egyben monotonok.
29
Jelölje [ DD' ] a D-t D'-be képező folytonos függvények halmazát.
Legyen definíció szerint f g, ha minden dD-re f(d) g(d) teljesül. Ezzel a féligrendezéssel [ DD' ] is teljes háló.
30
D a D' szűkítése (jele: D D'),
ha léteznek az F :D'D és G :DD' folytonos leképezések úgy, hogy F o G = idD , azaz F(G(d)) d . D reflexív, ha [ DD ] D.
31
Legyen D egy reflexív halmaz, és legyenek F, G olyan folytonos leképezések, hogy F : D[DD] és G : [DD]D, és F o G = idD . Legyen :VD egy értékelés. Jelölje (x:=d) azt a ' :VD értékelést, amelyre igaz, hogy '(y) = (y), ha y x, és '(x) = d.
32
Adott D és mellett jelölje az M
-kifejezés interpretációját [M]D , amelynek induktív definícióját az alábbi táblázat tartalmazza: M [M]D x (x) NP (F([N]D))([P]D) x.N G(dD.[N]D(x:=d))
33
Ha minden értékelés mellett [M]D= [N]D teljesül, akkor azt mondjuk, hogy az M=N igaz D-ben, jele D |= M=N . Tétel : Ha D reflexív, akkor D a lambda kalkulus egy helyes modellje, azaz ha | M=N, akkor D |= M=N.
34
Tétel : Létezik reflexív halmaz.
Bizonyítás : Legyen A egy halmaz. Definiáljuk a Bn sorozatot a következő módon: B0 =A Bn+1=Bn(,b) bBn és Bn és véges. Legyen B=nBn , és DA =P(B) ={x| x B}. Megmutatható, hogy az F(x)(y) = {b | y. (,b)x} és G(f) = {(,b)x}| bf()} függvények által a DA halmaz reflexív.
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.