Exemple #1
0
identity = Abstraction(x, x)
absuz = Abstraction(u, z)
absyx = Abstraction(y, x)

print("------------------------- abstraction as body of an abstraction")

# the following implements the lambda term:  (((λx.(λy.x) z) u)
abs1 = Abstraction(y, x)
abs2 = Abstraction(x, abs1)

app1 = Application(abs2, z)
app2 = Application(app1, u)

print(app1)

print("Reduce method on application: ", app1.reduce())
print("Call method on abstraction: ", abs2(z))

# this implements ((λx.x) u)
print("------------------------- identity function")

appliopid = Application(identity, u)

print(appliopid)
print(appliopid.reduce())

# this implements ((λx.x) (λu.z))
print("------------------------- two lambda abstractions in an application")

appliopconst = Application(identity, absuz)