next up previous contents
Next: Recursive functions Up: The (untyped) lambda calculus Previous: Proof   Contents

Computability

We now argue that all computable functions can be described in the lambda calculus. As is usual in computability theory, we restrict our attention to functions on natural numbers. Recall that we can encode natural numbers in the lambda calculus via the Church numerals $\langle{n}\rangle \equiv \lambda fx. f^n x$. Our goal now is to show that for every computable function $f : \mathbb{N}^k \to \mathbb{N}$ we can find a lambda term $\langle{f}\rangle $ that encodes $f$ so that for every $k$-tuple $n_1,n_2,\ldots,n_k$


\begin{displaymath}
\langle{f}\rangle \langle{n_1}\rangle \langle{n_2}\rangle \l...
...}\rangle \rightarrow ^*
\langle{f(n_1,n_2,\ldots,n_k)}\rangle
\end{displaymath}

In other words, the result of applying the encoding of $f$ to the encodings of the arguments $n_1$, $n_2$, ..., $n_k$ should be the encoding of the result $f(n_1,n_2,\ldots,n_k)$. Notice that on the left hand side we have used currying to break up the $k$-tuple of arguments to $f$ into a sequence of $k$ arguments to $\langle{f}\rangle $.



Subsections

Madhavan Mukund 2004-04-29