1 / 34

Lambda kalkulus

Lambda kalkulus. 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. A  -kifejezések induktív definíciója :.

selene
Download Presentation

Lambda kalkulus

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 konstans szimbólum egyben -kifejezés is. Minden változó 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ásnaknevezzü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...Mmaz (...((M1M2) M3)...Mm) kifejezést jelöli • x1x2...xn.M az (x1(x2...(xnM))) kifejezést jelöli • x1...xn.M1M2...Mmaz (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. 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 • zero 2  (x.x (true false) true) (2)  •  2 (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, éslegyenek 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ésinterpretá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=Nigaz 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 Bnsorozatot 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 DAhalmaz reflexív.

More Related