We begin our discussion of fixed point by providing an encoding for boolean values true (tt) and false (ff) and conditional expressions. We begin with the conditional. We seek a term that will take three arguments, return if (the conditional expression) is true and if is false.
We claim that the expression with the definitions of and given by and do the job. (Incidentally, note that is the same as ).
Clearly
Thus gives us an encoding of the construct if-then-else. We are now close to being able to write recursive function definitions in a syntax similar to languages like Haskell. For instance, we could aim to write
where, of course, we still have to encode the predicate iszero and the arithmetic function pred (predecessor).
Assuming we can do this, how do we convert such a recursive definition into a lambda term?