Lambda calculus
Remember that application associates to left, \(a\, b\, c\) means \(((a b) c)\); and stacked lambdas associate to right, \((\lambda x\lambda y. x\,y\,y)\) means \((\lambda x.(\lambda y. x\,y\,y))\).
- Restore the parentheses and dots in the following:
-
\(\lambda f \lambda g \lambda h \lambda x.(f(g(h x)))\)
-
\(xxxx\)
-
\(\lambda x.x\lambda y.y\)
-
\(\lambda x.(x\lambda y.yxx)x\)
-
- Simplify the parentheses and dots in the following:
-
\((xy)\)
-
\((x(yz))\)
-
\(((xy)z)\)
-
\((\lambda x.x)\)
-
\((\lambda y.(\lambda x.x))\)
-
\((\lambda z.(x(\lambda y.(yz))))\)
-
\((x(\lambda z.(\lambda y.(yz))))\)
-
\((x(\lambda x.x))\)
-
\(((\lambda y.(\lambda x.x))(\lambda x.x))\)
-
\((((\lambda y.(\lambda x.x))(\lambda x.x))(xy))\)
-
\(((x(yz))((xy)z))\)
-
\((\lambda x.(\lambda y.(\lambda z.((xz)(yz)))))\)
-
\((((ab)(cd))((ef)(gh)))\)
-
\((\lambda x.((\lambda y.(yx))(\lambda v.v)z)u)(\lambda w.w)\)
-
Reduce each expression as far as possible.
-
\((\lambda x. (m\,\, x))\,\,j\)
-
\((\lambda y. (y\,\, j))\,\,m\)
-
\(((\lambda x.(\lambda y. (y\,\,(y\,\, x))))\,\, j)\,\,m\)
-
\((\lambda y.(y\cnct{}j))(\lambda x.(m\cnct{}x))\)
-
\((\lambda z.z) (\lambda y . y\,\, y) (\lambda x.x\,\, a)\)
-
\((\lambda x\lambda y.x\,\, y\,\, y) (\lambda a.a) b\)
-
\((\lambda x.x\,\, x) (\lambda y.y\,\, x) z\)
-
\(((\lambda x.x\,\, x) (\lambda y.y)) (\lambda y.y)\)
-
\((\lambda f.fx)g\)
-
\((\lambda f.fx)ga\)
-
\((\lambda f.fx)(ga)\)
-
\((\lambda f\lambda x.fx)g a\)
-
\((\lambda x\lambda y \lambda z.x(yz))f\)
Now some examples with logical forms:
-
\((\lambda p.p\cnct{}john')(\lambda x.sleeps'x)\)
-
\((\lambda p\lambda q.\forall x. p'x \to q'x)(\lambda x. student'x)(\lambda x. sleeps'x)\)
-
\((\lambda p\lambda x.think'p\cnct{x})((\lambda p.p\cnct{}john')(\lambda x.sleeps'x))alice'\)
-
\((\lambda p\lambda q.\exists x. p\cnct{x}\land q\cnct{x})(\lambda x. student' x)((\lambda p\lambda x.think'p\cnct{x})((\lambda p.p\cnct{}john')(\lambda x.sleeps'x)))\)
These are from LC public exercises
-
\((\x.a') b'\)
-
\((\x.p'x \to \E x.r'b'\, x) a'\)
-
\((\x\x.p'x \to q'x\,c') a'\, b'\)
-
\((\x\E y.r'x\,y)y\)
Give the lambda term that needs to replace \(\alpha\) so that the reduction results as given.
-
\(\alpha \cnct a \cnct b = b \cnct a\)
-
\(\alpha \cnct a \cnct b \cnct c = a \cnct c \cnct b\)
-
\(\alpha \cnct a \cnct b \cnct c = a \cnct (c \cnct b)\)
-
\(\alpha \cnct a \cnct b = \lambda x.a \cnct x \cnct (b \cnct x)\)
-
\(\alpha \cnct (\lambda x.a \cnct x)c = ac\)
-
\(\alpha \cnct (\lambda x.a \cnct x)c = \lambda y.a(yc)\)
-
\(\alpha \cnct (\lambda x.sleeps'x) = sleeps'john'\)
-
\(\alpha \cnct sleeps' = sleeps'john'\)
-
\(\alpha (\lambda x. walks'x) john' \equiv_{\beta} slow'(walks'john')\)
-
\(\alpha (\lambda x. walks'x) john' \equiv_{\beta} slow'walks'john'\)
-
\(\alpha\cnct{mary'}john'(\lambda x.walks'x) \equiv_{\beta} walks'john' \land walks'mary'\)
-
\(\alpha(\lambda x. talks'x)(\lambda x.smiles'x)john'\equiv_{\beta} smiles'john' \land talks'john'\)