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

Hasonló előadás


Az előadások a következő témára: "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."— 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. A -kifejezések halmazát  -val jelöljük. Minden konstans szimbólum egyben - kifejezés is. Minden változó szimbólum egyben - kifejezés is. 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.

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  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  M 1 M 2 M 3...M m az (...((M 1 M 2 ) M 3 )...M m ) kifejezést jelöli  x 1 x 2...x n.M az ( x 1 ( x 2...( x n M))) kifejezést jelöli  x 1...x n.M 1 M 2...M m az ( x 1...( x n (...(M 1 M 2 )...M m ))) kifejezést jelöli  A külső zárójelek elhagyhatók. Jelölési konvenciók:

7 Például az első oszlopban lévő kifejezések a második oszlopban lévő -kifejezéseket jelölik: 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 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. 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.

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 Tétel : Ha M  -normál formájú, és M   N, akkor M  N. Tétel : (Church-Rosser) Ha M   N 1, M   N 2, akkor van olyan N 3, hogy N 1   N 3, N 2   N 3.  -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.

15 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. Következmény: Ha M=  N, akkor van olyan L, hogy M   L, N   L.

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 ( zero n) 1 (  n(f( pred n)))) 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 = id D, 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 = id D. 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.NG( 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 B n sorozatot a következő módon: B 0 =A B n+1 =B n  ( ,b)  b  B n és   B n és  véges . Legyen B=  n B n, és D A =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 D A halmaz reflexív.


Letölteni ppt "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."

Hasonló előadás


Google Hirdetések