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?