next up previous contents
Next: -equivalence Up: The (untyped) lambda calculus Previous: One step reduction   Contents

Normal forms

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 $\rightarrow ^*$, the reflexive and transitive closure of $\rightarrow $. We have already anticipated some of the questions we would like to ask about $\rightarrow ^*$ in our discussion of Haskell.

Consider the term $(\lambda x.xx)(\lambda x.xx)$. Only one reduction step is possible and this makes two copies of the argument and returns us to the original term $(\lambda x.xx)(\lambda x.xx)$. 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 $(\lambda x.xx)(\lambda x.xx)$ is usually denoted $\Omega$.

Consider now the term $(\lambda yz. z)$ that ignores its first argument. If we apply $(\lambda yz. z)$ to $\Omega$, 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 $\rightarrow ^*$.


next up previous contents
Next: -equivalence Up: The (untyped) lambda calculus Previous: One step reduction   Contents
Madhavan Mukund 2004-04-29