\section{Recursion}

Say we want a function that computes the factorial of a positive integer. Here's one way we could define it:
$$
	x! = \begin{cases}
		x \times (x-1)! & x \neq 0 \\
		1 & x = 0
	\end{cases}
$$

We cannot re-create this in lambda calculus, since we aren't given a way to recursively call functions.

\vspace{2mm}

One could think that $A = \lm a. A~a$ is a recursive function. In fact, it is not. \par
Remember that such \say{definitions} aren't formal structures in lambda calculus. \par
They're just shorthand that simplifies notation.

\begin{instructornote}
	We're talking about recursion, and \textit{computability} isn't far away. At one point or another, it may be good to give the class a precise definition of \say{computable by lambda calculus:}

	\vspace{4ex}

	Say we have a device that reduces a $\lm$ expression to $\beta$-normal form. We give it an expression, and the machine simplifies it as much as it can and spits out the result.

	\vspace{1ex}

	An algorithm is \say{computable by lambda calculus} if we can encode its input in an expression that resolves to the algorithm's output.
\end{instructornote}

\problem{}
Write an expression that resolves to itself. \par
\note{Your answer should be quite short.}

\vspace{1ex}

This expression is often called $\Omega$, after the last letter of the Greek alphabet. \par
$\Omega$ useless on its own, but it gives us a starting point for recursion. \par

\begin{solution}
	$\Omega = M~M = (\lm x . xx) (\lm x . xx)$

	\vspace{1mm}
	
	An uninspired mathematician might call the Mockingbird $\omega$, \say{little omega}.
\end{solution}


\vfill
\pagebreak



\definition{}
This is the \textit{Y-combinator}. You may notice that it's just $\Omega$ put to work.
$$
	Y = \lm f . (\lm x . f(x~x))(\lm x . f(x~x))
$$

\problem{}
What does this thing do? \par
Evaluate $Y f$.


\vfill

\definition{}
We say $x$ is a \textit{fixed point} of a function $f$ if $f(x) = x$.

\problem{}
Show that $Y F$ is a fixed point of $F$.

\vfill

\problem{}
Let $\theta = (\lm xy . y(xxy))$ and $\Theta = \theta \theta$. \par
Let $N = \Theta F$ for an arbitrary lambda expression $F$. \par

Show that $F N = N$.

\vfill

\problem{Bonus}
Find a fixed-point combinator that isn't $Y$ or $\Theta$.

\vfill
\pagebreak