The meaning of lambda terms is given by computation rules.
The basic rule,
called beta reduction ,
is that
reduces to
; for example,
reduces to
.
The strategy for computing applications
is involves reducing
f until it has the form
,
then computing
.
This method of computing with noncanonical forms
is called
head reduction or lazy evaluation , and
it is not the only possible way to compute.
For example, we might reduce f to
and then continue
to perform reductions in the body b.
Such steps might constitute computational optimizations of functions.
Another possibility is to reduce a first until it reaches canonical
form before performing the beta reductions.
This corresponds to call--by--value computation
in a programming language.
In Nuprl we use lazy evaluation, although for the simple calculus of typed lambda terms it is immaterial how we reduce. Any reduction sequence will terminate---this is the strong normalization result [Tait 67,Stenlund 72]---and any sequence results in the same value according to the Church--Rosser theorem [Church 51,Stenlund 72]. Of course, the number of steps taken to reach this form may vary considerably depending on the order of reduction.