blob: 17e8c1efdb13670d74ab2d94536ae9dd4d8e91e8 [file] [log] [blame]
def LIST map suc(append 2(append 1 end))
def mknode (^a.^b.^u.u a b false)
def head (^n.n sel_1)
def tail (^n.n sel_2)
def is_end (^n.n sel_3)
def sel_1 (^p.^q.^r.p)
def sel_2 (^p.^q.^r.q)
def sel_3 (^p.^q.^r.r)
def nth ^n.^list.head((pred n) tail list)
def renda ^e.^&u.&u e e true
def rend (^x.renda(x x))(^x.renda(x x))
def nend ^u.u 0 0 true
def end ^&u.&u rend rend true
def Appenda ^h.^n.^list.(is_end list)(mknode n end)(mknode(head list)(h n(tail list)))
def append (^x.Appenda(x x))(^x.Appenda(x x))
def Mapa ^h.^f.^list.(is_end list)(end)(mknode(f (head list))(h f (tail list)))
def map (^x.Mapa(x x))(^x.Mapa(x x))
def mtriple ^a.^b.^c.^u.u a b c
def 1st ^a.^b.^c.a
def 2nd ^a.^b.^c.b
def 3rd ^a.^b.^c.c
def div_cond ^p.GE(p 1st)(p 2nd)
def div_body ^t.mtriple(sub (t 1st)(t 2nd))(t 2nd)(suc(t 3rd))
def div ^m.^n.while div_cond div_body (mtriple m n 0)3rd
def sub ^m.^n.n pred m
def force ^$.$
def pred_body ^p.mpair (suc(p true))(p true)
def do ^n.^b.^x.n b x
def c1 ^p.not(iszero(p true))
def btri ^p.mpair(pred(p true))(add(p true)(p false))
def tri ^k.while c1 btri(mpair k 0)false
def Wh ^f.^c.^b.^x.(c x) (f c b (b x)) x
def while (^x.Wh(x x))(^x.Wh(x x))
def G ^g.^f.f(g f)
def Y2d Y G
def Y2 (^x.G(x x))(^x.G(x x))
def Y3 Y2 G
def Y4 Y3 G
def Y5 Y4 G
def YC S(S(K PHI)I)(S(K PHI)I)
def PHI S(K W)(S(K B)I)
def W ^f.^x.f x x
def S ^x.^y.^z.x z(y z)
def B ^x.^y.^z.x(y z)
def K ^x.^y.x
def I ^x.x
def true ^p.^q.p
def false ^p.^q.q
def and ^a.^b.a b false
def or ^a.^b.a true b
def not ^r.^p.^q.r q p
def mpair ^a.^b.^u.u a b
def iszero ^n. n (true false) true
def pred ^$k.$k(^p.(mpair(suc(p true))(p true)))(mpair 0 0)false
def add ^m.^n.m suc n
def mul ^m.^n.m(add n)0
def exp ^m.^n.n(mul m)1
def Y ^f.(^x.f(x x))(^x.f(x x))
def F ^h.^n.(iszero n) 1 (mul n (h(pred n)))
def fact (^x.F(x x))(^x.F(x x))
def H ^h.or(not h)A
def ADD ^m.^n.^x.^y.m x(n x y)
def MUL ^m.^n.^f.m(n f)
def EXP ^m.^n.n m
def GT ^m.^n.not(iszero (n pred m))
def EQ ^m.^n.and (iszero (m pred n)) (iszero (n pred n))
def LT ^m.^n.not(iszero(m pred n))
def GE ^m.^n.not(LT m n)
def YH ^f.(^x.f(^h.x x h))(^x.f(^h.x x h))
def YG ^f.(^x.^g.f(x x)g)(^x.^g.f(x x)g)
def S ^x.^y.^z.x z(y z)
def K ^x.^y.x
def I ^x.x
def triple ^x.^y.^z.^p.p x y z
def sel1 ^x.^y.^z.x
def sel2 ^x.^y.^z.y
def sel3 ^x.^y.^z.z
def isend ^t.t sel3
def lpair ^a.^b.triple a b false
def B ^x.^y.^z.x(y z)
def W ^f.^x.f x x
def 0 ^m.^n.n
def suc ^p.^m.^n.m(p m n)