27. チャーチ数
S ZERO = fx.x
S ONE = fx.fx
S TWO = fx.f(fx)
S SUCC = nfx.f(nfx)
S 例例) SUCC ONE -> (nfx.f(nfx))(fx.fx)
-> fx.f((fx.fx)fx)
-> fx.f(fx)
27
28. Lazy K では
S ZERO = (K I)
S (K I) -> (xy.x)(x.x) -> y.x.x -> fx.x
S SUCC = (S (S (K S) K))
S (S (S (K S) K)) -> (S A) -> (fgx.fx(gx))(xyz.x(yz))
-> gx.(xyz.x(yz))x(gx) -> gx.z.x(gxz)
-> nfx.f(nfx)
28
29. チャーチ真理理値
S IF = xyz.xyz
S TRUE = xy.x
S FALSE = xy.y
S 例例) IF TRUE A B -> (xyz.xyz)(xy.x)AB
-> (xy.x)AB
-> A
29
30. Lazy K では
S IF = (S (K (S (K I))))
(S (K (S (K I)))) -> (S (K ((fgx.fx(gx))(fx.x))))
-> (S (K (gx.gx))) -> (S ((xy.x)(gx.gx)))
-> (S (ygx.gx)) -> (fgx.fx(gx))(ygx.gx)
-> gx.(ygx.gx)x(gx) -> xyz.xyz
S TRUE = K
S FALSE = (K I)
30
32. Lazy K では
S Y = (S S (S (S (K S) K)) (K (S I I)))
(S S (S (S (K S) K)) (K (S I I))) -> (S S SUCC (K B))
-> (S S SUCC ((xy.x)(x.xx))) -> (S S SUCC (yx.xx))
-> (fgx.fx(gx))(fgx.fx(gx))(nfx.f(nfx))(yx.xx)
-> (fgx.fx(gx))(yx.xx)((nfx.f(nfx))(yx.xx))
-> (fgx.fx(gx))(yx.xx)(fx.f(xx))
-> x.(yx.xx)x((fx.f(xx))x)
-> x.(yx.xx)x(y.x(yy)) -> x.(y.x(yy))(y.x(yy))
32