Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Lambda kalkulus.

Hasonló előadás


Az előadások a következő témára: "Lambda kalkulus."— Előadás másolata:

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)) yx.xc (y(x(xc))) (x.xc)y ((x(xc))y) x.xx.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[xy] 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[xN], 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.Mx.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 MN. 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 truexy.x falsexy.y ifpqr.pqr if true A B  (pqr.pqr) true A B   true A B  (xy.x) A B  A Curch-számok: 0fx.x 1fx.fx 2fx.f(fx) 3fx.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 XD részhalmaza irányított, ha nem üres, és bármely két elemének létezik Xbeli közös felső korlátja. Egy f :DD' leképezés folytonos, ha bármely XD irányított részhalmazra teljesül, hogy f(sup(X))=sup(f(X)). Folytonos függvények egyben monotonok.

29 Jelölje [ DD' ] a D-t D'-be képező folytonos függvények halmazát.
Legyen definíció szerint f  g, ha minden dD-re f(d)  g(d) teljesül. Ezzel a féligrendezéssel [ DD' ] is teljes háló.

30 D a D' szűkítése (jele: D  D'),
ha léteznek az F :D'D és G :DD' folytonos leképezések úgy, hogy F o G = idD , azaz F(G(d))  d . D reflexív, ha [ DD ]  D.

31 Legyen D egy reflexív halmaz, és legyenek F, G olyan folytonos leképezések, hogy F : D[DD]  és G : [DD]D, és F o G = idD . Legyen  :VD egy értékelés. Jelölje (x:=d) azt a ' :VD é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(dD.[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)  bBn é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}| bf()} függvények által a DA halmaz reflexív.


Letölteni ppt "Lambda kalkulus."

Hasonló előadás


Google Hirdetések