Lambda Calculus: beta-reduction and predecessor function

1.2k Views Asked by At

I'm taking one of my last graduate classes but have been struggling with some reductions in lambda calculus. On our last assignment one of the problems was the following:

This question is on defining the predecessor function $pred$ on the Church numerals.

Let $G = \lambda xgh.(h (g x))$.

Recall that the combinators:

$$\begin{align}K &= \lambda xy.x\\ I &= \lambda x.x\end{align}$$

(a) Reduce $(G f)(K x)$ to its $\beta$-normal form.

(b) Reduce $(G f)((G f)(K x))$ to its $\beta$-normal form.

(c) $pred$ is defined as: $\lambda nfx.(n (G f) (K x) I)$

Show that $$pred\ 3 \stackrel{\alpha\beta}= 2.$$

I really just want to make sure I'm heading in the right direction for (a).

Edit updated work with proper syntax

$(G f) = (\lambda xgh.(h (g x))) f$

$= \lambda gh.(h(gf))$

$(K x) = (\lambda xy.x) x$

$= \lambda y.z$ <-$(\alpha sub)$

$(G f)(K x) = (\lambda gh.(h(g f))) \lambda y.z$

$= \lambda h.(h((\lambda y.z) f))$

edit can the above be simplified to this?

$= \lambda h.(h (z))$

1

There are 1 best solutions below

3
On BEST ANSWER

Go through it again. I caught at least one mistake:

You wrote $G f = \lambda x g h. (h (g x)) f$, which is incorrect. You are missing parentheses. It should be: $G f = (\lambda x g h. (h (g x))) f$, which then reduces to $\lambda g h. (h (g f)))$.

It might help if you didn't put the frivolous parentheses around each of the variables. The syntax is not λ(x). <stuff>. It should be written "λx. <stuff>".

Also, by convention, you can group together multiple binders. Instead of $λx. λg. λh. h(gx)$, write it as $λxgh.h(gx)$. The more dots and parentheses in your expression, the more likely you'll screw up a tedious calculation.