As we had discussed in the context of Haskell, we are interested in terms that cannot be reduced. These denote ``values'' and are called normal forms.
Formally, we are interested in properties of the relation
,
the reflexive and transitive closure of
. We have already
anticipated some of the questions we would like to ask about
in our discussion of Haskell.
Consider the term
. Only one reduction
step is possible and this makes two copies of the argument and returns
us to the original term
. The reduction
process for this term never terminates, so this is an example of a
lambda term without a normal form. In the literature, the term
is usually denoted
.
Consider now the term
that ignores its first
argument. If we apply
to
, we have two
possible reductions.
Clearly, if we keep making the second choice, we will never reach a normal form, even though it is always possible to reach a normal form in one step by choosing the first reduction.
To answer the question of multiple normal forms, we will state a more general result shortly.
First, we define a notion of equivalence based on
.