π.M is function mapping of x to M πx.square x is function mapping of x to square x
F M is application of function F to argument M
application is associative to the left
(M N P) β> ((M N) P)
outermost parentheses are omitted
M N P β> (M N P)
lambda extends to the right as far as possible
πx.M N β> πx.(M N)
combining lambdas is possible
πxy.M β> πx.πy.M
start with most nested lambda
(πx.πy.M) β> πx.(πy.M))
reduces function with several arguments to functions with single arguments
f: x => x+x β> πx.x+x g: (x,y) => x+y β> πx.πy.x+y
x is bound by the first πx above it in the term tree (underlined)
variables that arenβt bound are free (such as y in the last example)
M[x := N] means: result of replacing all free xΒ in M by N
renaming bound variables (in case of possible name clashes)
P = Ξ±Q only if Q can be obtained from P by finitely many changes of bound variables in context
(πx.x)y β> By (πx.x)y β> By (πx.xz)y β> Byz (πx.z)y β> Bz
In general: (πx.M)N β> BM[x := N]