Обозначения
Числа Чёрча: $\overline{n} = \lambda fx.,f^n x$, т.е. $\overline{0}=\lambda fx.x$, $\overline{1}=\lambda fx.fx$
Булевы значения: $\mathbf{T}=\lambda xy.x \quad \mathbf{F}=\lambda xy.y$
Сложение: $\text{Add} = \lambda mnfx.,mf(nfx)$
Умножение (через числа Чёрча): $\overline{m},\overline{n} = \overline{n^m}$
Задача 1. Приведение к βη-нормальной форме
a) $(\lambda xy.xxy),((\lambda xy.yx)(\lambda x.x)),(\lambda xy.xyx)$
| Шаг | Терм | Действие |
|---|---|---|
| 1 | $A = (\lambda xy.yx)(\lambda x.x)$ | β-редукция: $\to \lambda y.\,y(\lambda x.x)$ |
| 2 | $(\lambda xy.xxy)\,A\,B$, где $B=\lambda xy.xyx$ | β-редукция: $\to A\,A\,B$ |
| 3 | $A\,A = (\lambda y.\,y(\lambda x.x))\,A$ | β-редукция: $\to A(\lambda x.x)$ |
| 4 | $A(\lambda x.x) = (\lambda y.\,y(\lambda x.x))(\lambda x.x)$ | β-редукция: $\to (\lambda x.x)(\lambda x.x)$ |
| 5 | $(\lambda x.x)(\lambda x.x)$ | β-редукция: $\to \lambda x.x$ |
| 6 | $(\lambda x.x)\,B$ | β-редукция: $\to B$ |
$$\textbf{Результат: } \lambda xy.xyx$$
b) $(\lambda xy.xyx),(\lambda x.x),((\lambda xy.xxy)(\lambda xy.yx))$
| Шаг | Терм | Действие |
|---|---|---|
| 1 | $C = (\lambda xy.xxy)(\lambda xy.yx)$ | β-редукция: $\to \lambda y.\,(\lambda xy.yx)(\lambda xy.yx)\,y$ |
| 2 | $(\lambda xy.yx)(\lambda xy.yx)$ | β-редукция: $\to \lambda y.\,y(\lambda xy.yx)$ |
| 3 | $C = \lambda y.\,(\lambda y'.\,y'(\lambda xy.yx))\,y$ | β-редукция: $C = \lambda y.\,y(\lambda xy.yx)$ |
| 4 | $(\lambda xy.xyx)(\lambda x.x)$ | β-редукция: $\to \lambda y.\,(\lambda x.x)\,y\,(\lambda x.x) \to \lambda y.\,y(\lambda x.x)$ |
| 5 | $(\lambda y.\,y(\lambda x.x))\,C$ | β-редукция: $\to C(\lambda x.x)$ |
| 6 | $C(\lambda x.x) = (\lambda y.\,y(\lambda xy.yx))(\lambda x.x)$ | β-редукция: $\to (\lambda x.x)(\lambda xy.yx)$ |
| 7 | $(\lambda x.x)(\lambda xy.yx)$ | β-редукция: $\to \lambda xy.yx$ |
$$\textbf{Результат: } \lambda xy.yx$$
Задача 2. Проверка равенства в смысле $=_{\beta\eta}$
a) $(\lambda xy.xxy)(\lambda xy.xyx)(\lambda x.xx)$ vs $(\lambda xy.yxx)(\lambda xy.xyx)(\lambda x.xx)$
Пусть $P = \lambda xy.xyx$, $Q = \lambda x.xx$.
| Левый терм | Правый терм |
|---|---|
| $(\lambda xy.xxy)\,P\,Q \to_\beta P\,P\,Q$ | $(\lambda xy.yxx)\,P\,Q \to_\beta Q\,P\,P$ |
| $P\,P\,Q \to P\,Q\,P \to Q\,P\,Q$ | $Q\,P = P\,P \to P\,P\,P \to \ldots$ |
| $Q\,P\,Q = P\,P\,Q \to \ldots$ (цикл) | (цикл) |
Оба терма не имеют нормальной формы (редукция расходится). По теореме Чёрча–Россера равенство $=_\beta$ предполагает существование общего редукта. Поскольку нормальных форм нет и редукционные последовательности различны:
$$\boxed{\text{Равенство установить нельзя: оба терма расходятся, общего нормального редукта не существует.}}$$
b) $(\lambda x.xx)(\lambda xy.xyx)(\lambda xy.yxy)$ vs $(\lambda x.xx)(\lambda xy.yxy)(\lambda xy.xyx)$
Пусть $P = \lambda xy.xyx$, $R = \lambda xy.yxy$.
| Левый терм | Правый терм |
|---|---|
| $(\lambda x.xx)\,P\,R \to_\beta P\,P\,R$ | $(\lambda x.xx)\,R\,P \to_\beta R\,R\,P$ |
| $P\,P = \lambda y.PyP$ | $R\,R = \lambda y.yRy$ |
| $P\,P\,R \to P\,R\,P$ | $R\,R\,P \to P\,R\,P$ ✓ |
Оба терма редуцируются к одному и тому же терму $P,R,P$. По теореме Чёрча–Россера:
$$\boxed{(\lambda x.xx)(\lambda xy.xyx)(\lambda xy.yxy) ;=_\beta; (\lambda x.xx)(\lambda xy.yxy)(\lambda xy.xyx)}$$
Задача 3. Нормальная форма терма $M$
$$M = (\lambda xyzw.; z,(x,y,(x,y,y,y,z)),w);\overline{5};\overline{3};Z;I$$
где $Z = \lambda yfx.,yf(yfx)$ и $I = \lambda x.x$.
Ключевое наблюдение: $Z,\overline{n} = \overline{2n}$ (удвоение числа Чёрча), так как: $$Z,\overline{n} = \lambda fx.,\overline{n}f(\overline{n}fx) = \lambda fx.f^n(f^n x) = \lambda fx.f^{2n}x = \overline{2n}$$
Также: $\overline{m},\overline{n} = \overline{n^m}$ (степень в числах Чёрча).
| Шаг | Вычисление | Результат |
|---|---|---|
| 1. Подстановка | $x:=\overline{5},\;y:=\overline{3},\;z:=Z,\;w:=I$ | $Z\,(\overline{5}\,\overline{3}\,(\overline{5}\,\overline{3}\,\overline{3}\,\overline{3}\,Z))\,I$ |
| 2. $\overline{5}\,\overline{3}$ | $\overline{m}\,\overline{n}=\overline{n^m}$ | $\overline{3^5} = \overline{243}$ |
| 3. $\overline{243}\,\overline{3}$ | $\overline{3^{243}}$ | $\overline{3^{243}}$ |
| 4. $\overline{3^{243}}\,\overline{3}$ | $\overline{3^{3^{243}}}$ | $\overline{3^{3^{243}}}$ |
| 5. $\overline{3^{3^{243}}}\,Z$ | Применить $Z$ ровно $3^{3^{243}}$ раз как функцию: $Z^{3^{3^{243}}}$; $Z$ — удвоение, поэтому $\overline{k}$ composed $n$ times даёт умножение на $2^n$ | $\overline{2^{3^{3^{243}}}}$ |
| 6. $\overline{5}\,\overline{3}\,\overline{2^{3^{3^{243}}}}$ | $\overline{243}\,K$ где $K=\overline{2^{3^{3^{243}}}}$: $\;\overline{243}\,K = K^{243}$, т.е. $\overline{(K')^{243}}$ где $K'=2^{3^{3^{243}}}$ | $L = \overline{2^{243\cdot 3^{3^{243}}}}$ |
| 7. $Z\,L$ | Удвоение: $Z\,\overline{n}=\overline{2n}$ | $\overline{2^{243\cdot 3^{3^{243}}+1}}$ |
| 8. $\overline{N}\,I$ | $\overline{n}\,I = \lambda x.\,I^n x = \lambda x.x = I$ | $\lambda x.x$ |
$$\boxed{M =_\beta \lambda x.x}$$
На последнем шаге любое число Чёрча $\overline{n}$, применённое к тождественной функции $I$, даёт $\lambda x.x = I$, поскольку $I^n = I$ для всех $n$.
Задача 4. Комбинатор Even
Идея
Применить функцию «отрицание» ровно $n$ раз к $\mathbf{T}$:
- чётное число применений $\text{Not}$ возвращает $\mathbf{T}$
- нечётное число применений $\text{Not}$ возвращает $\mathbf{F}$
Определим $\text{Not} = \lambda b.,b,\mathbf{F},\mathbf{T} = \lambda b.,b,(\lambda xy.y),(\lambda xy.x)$
$$\boxed{\text{Even} = \lambda n.,n,\text{Not},\mathbf{T}}$$
Развёрнуто (без имён): $$\text{Even} = \lambda n.,n,(\lambda b.,b,(\lambda xy.y),(\lambda xy.x)),(\lambda xy.x)$$
Проверка
| $n$ | Вычисление | Результат |
|---|---|---|
| $\overline{0}$ | $\overline{0}\,\text{Not}\,\mathbf{T} = \mathbf{T}$ | $\mathbf{T}$ ✓ |
| $\overline{1}$ | $\text{Not}\,\mathbf{T} = \mathbf{F}$ | $\mathbf{F}$ ✓ |
| $\overline{2}$ | $\text{Not}\,(\text{Not}\,\mathbf{T}) = \mathbf{T}$ | $\mathbf{T}$ ✓ |
| $\overline{3}$ | $\text{Not}^3\,\mathbf{T} = \mathbf{F}$ | $\mathbf{F}$ ✓ |
Задача 5. Комбинатор Fib
Идея (из императивного программирования)
a := 0; b := 1
repeat n times:
(a, b) := (b, a+b)
return a
Тело цикла обращается к двум переменным $(a, b)$ — храним пару.
Вспомогательные комбинаторы
| Имя | Определение | Смысл |
|---|---|---|
| $\text{Pair}$ | $\lambda abf.\,f\,a\,b$ | Конструктор пары |
| $\text{Fst}$ | $\lambda p.\,p\,\mathbf{T}$ | Первая компонента |
| $\text{Snd}$ | $\lambda p.\,p\,\mathbf{F}$ | Вторая компонента |
| $\text{Add}$ | $\lambda mnfx.\,mf(nfx)$ | Сложение |
| $\text{Step}$ | $\lambda p.\,\text{Pair}\,(\text{Snd}\,p)\,(\text{Add}\,(\text{Fst}\,p)\,(\text{Snd}\,p))$ | $(a,b)\mapsto(b,a+b)$ |
| $\text{Init}$ | $\text{Pair}\,\overline{0}\,\overline{1}$ | Начальная пара $(0,1)$ |
Определение
$$\boxed{\text{Fib} = \lambda n.,\text{Fst},(n;\text{Step};\text{Init})}$$
Проверка
| $n$ | Пара после $n$ шагов | $\text{Fst}$ | Ожидается |
|---|---|---|---|
| $0$ | $(0,\;1)$ | $\overline{0}$ | $0$ ✓ |
| $1$ | $(1,\;1)$ | $\overline{1}$ | $1$ ✓ |
| $2$ | $(1,\;2)$ | $\overline{1}$ | $1$ ✓ |
| $3$ | $(2,\;3)$ | $\overline{2}$ | $2$ ✓ |
| $4$ | $(3,\;5)$ | $\overline{3}$ | $3$ ✓ |
| $5$ | $(5,\;8)$ | $\overline{5}$ | $5$ ✓ |
Полное определение без имён
$$\text{Fib} = \lambda n.; n ;\underbrace{(\lambda p,f.; f;(p,(\lambda ab.b));((\lambda mnfx.mf(nfx)),(p,(\lambda ab.a)),(p,(\lambda ab.b))))}{\text{Step}} ;\underbrace{(\lambda f.; f;(\lambda fx.x);(\lambda fx.fx))}{\text{Init}} ;(\lambda ab.a)$$