Теорема Чёрча — Россера

Все дороги ведут в Рим. Точно? На это есть теорема Чёрча — Россера, которая гарантирует единственность нормальной формы, какими бы путями мы к ней ни шли. Конечно, надо заметить, что в Тьюринг-полном языке мы можем такой нормальной формы и не достичь, но вот если достигаем, то она единственна, то есть каким путём ни иди, всегда придёшь именно в Рим.

Если MM​↠βN{} \twoheadrightarrow_\beta N и MM​↠βK{} \twoheadrightarrow_\beta K, то найдётся LL такой, что NN​↠βL{} \twoheadrightarrow_\beta L и KK​↠βL{} \twoheadrightarrow_\beta L. Иначе говоря, ↠β{} \twoheadrightarrow_\beta обладает свойством ромба (сходимостью):

M\displaystyle M ↠βN,    M\displaystyle {} \twoheadrightarrow_\beta N,\;\; M​↠βK    \displaystyle {} \twoheadrightarrow_\beta K \;\;​⟹    ∃L:  N\displaystyle {} \Longrightarrow\;\; \exists L:\; N​↠βL,    K\displaystyle {} \twoheadrightarrow_\beta L,\;\; K​↠βL\displaystyle {} \twoheadrightarrow_\beta L
(1.31)

Доказательство удобно вести через параллельную редукцию. Нам понадобятся три оператора редукции над термами:

  • →β{} \to_\beta — обычная, одношаговая β-редукция: MM​→βN{} \to_\beta N значит, что в MM выбрали ровно один редекс и стянули его (один шаг — один редекс);
  • ⇒{} \Rightarrow — параллельная редукция: MM​⇒N{} \Rightarrow N значит, что стянули произвольный набор редексов, уже присутствующих в MM (нуль, один, два — сколько угодно), каждый не более одного раза, и только имеющиеся, а не их будущие копии;
  • ↠β{} \twoheadrightarrow_\beta — многошаговая редукция (рефлексивно-транзитивное замыкание →β{} \to_\beta): MM​↠βN{} \twoheadrightarrow_\beta N значит, что есть цепочка MM​→β…{} \to_\beta \dots​→βN{} \to_\beta N любой длины, в том числе нулевой.
Три ромба с вершинами M, N, K, L: для одношаговой (а), параллельной (б) и многошаговой (в) редукции; между б и в — знак вложения ⊆
Рис. 1.1. Свойство ромба для трёх операторов редукции: а — одношаговая β-редукция →β{} \to_\beta; б — параллельная редукция ⇒{} \Rightarrow; в — многошаговая редукция ↠β{} \twoheadrightarrow_\beta.

Одношаговая редукция — частный случай параллельной, а та — частный случай многошаговой:

→β\displaystyle {\to_\beta} ⊆⇒\displaystyle {} \subseteq {\Rightarrow}​⊆↠β\displaystyle {} \subseteq {\twoheadrightarrow_\beta}
(1.32)

Почему свойство ромба не доказывается прямо для одношаговой редукции →β{} \to_\beta (рис. 1.1, а)? Мешает копирование редексов. Возьмём терм, в котором два редекса — внешний и внутренний:

M\displaystyle M ≡(λx.x x) ((λy.y) z)\displaystyle {} \equiv (\lambda x.x\,x)\,\bigl((\lambda y.y)\,z\bigr)

Стянем внешний редекс — внутренний при подстановке удвоится: получим ((λy.y) z) ((λy.y) z)\bigl((\lambda y.y)\,z\bigr)\,\bigl((\lambda y.y)\,z\bigr). Стянем внутренний — получим (λx.x x) z(\lambda x.x\,x)\,z. Пути разошлись на один шаг, а вот сойтись за один шаг уже не могут: из второго терма z zz\,z получается сразу, а из первого — только за два шага, по шагу на каждую копию. Значит, одношаговое свойство ромба для →β{} \to_\beta попросту ложно.

Параллельная редукция ⇒{} \Rightarrow лечит ровно эту болезнь: размножившиеся копии редекса она стягивает все разом, за один тик. Для неё свойство ромба уже верно (рис. 1.1, б), и доказывается оно приёмом Такахаси — через полную развёртку.

Полной развёрткой M∗M^{*} назовём терм, в котором одновременно стянуты все редексы, видимые в MM, — самый жадный из возможных параллельных шагов. Определение — индукцией по строению терма:

Первое правило: x∗x^{*}​=x{} = x — переменная развёртывается в себя.

Второе правило: (λx.P)∗(\lambda x.P)^{*}​=λx.P∗{} = \lambda x.P^{*} — развёртка проходит под абстракцию.

Третье правило: (P Q)∗(P\,Q)^{*}​=P∗ Q∗{} = P^{*}\,Q^{*}, если P QP\,Q — не редекс (PP — не абстракция): части развёртываются независимо.

Четвёртое правило: ((λx.P) Q)∗\bigl((\lambda x.P)\,Q\bigr)^{*}​=P∗[x ⁣:= ⁣Q∗]{} = P^{*}[x\!:=\!Q^{*}] — сам редекс стягивается, а его части ещё и развёртываются.

Развернём терм из контрпримера по этим правилам:

  • ((λx.x x) ((λy.y) z))∗\bigl((\lambda x.x\,x)\,((\lambda y.y)\,z)\bigr)^{*}​=(x x)∗[x ⁣:= ⁣((λy.y) z)∗]{} = (x\,x)^{*}[x\!:=\!((\lambda y.y)\,z)^{*}] — весь терм есть редекс, работает четвёртое правило: внешний редекс стянут, обе его части ушли в развёртку;
  • (x x)∗(x\,x)^{*}​=x∗ x∗{} = x^{*}\,x^{*}​=x x{} = x\,x — применение x xx\,x — не редекс: третье правило, затем первое для каждой переменной;
  • ((λy.y) z)∗((\lambda y.y)\,z)^{*}​=y∗[y ⁣:= ⁣z∗]{} = y^{*}[y\!:=\!z^{*}]​=y[y ⁣:= ⁣z]{} = y[y\!:=\!z]​=z{} = z — внутренний редекс: четвёртое правило, затем дважды первое;
  • (x x)[x ⁣:= ⁣z](x\,x)[x\!:=\!z]​=z z{} = z\,z — осталось выполнить подстановку.

Итого M∗M^{*}​=z z{} = z\,z: развёртка стянула и внешний редекс, и внутренний — ещё до того, как тот успел размножиться. Всю конструкцию держит лемма о треугольнике.

Лемма о треугольнике. Полную развёртку нельзя обогнать: каким бы ни был параллельный шаг MM​⇒N{} \Rightarrow N, из NN ровно один параллельный шаг ведёт в M∗M^{*}:

M\displaystyle M ⇒N    \displaystyle {} \Rightarrow N \;\;​⟹    N\displaystyle {} \Longrightarrow\;\; N​⇒M∗\displaystyle {} \Rightarrow M^{*}
Треугольник: параллельный шаг M ⇒ N достраивается до полной развёртки M*; справа — свойство ромба из двух треугольников
Рис. 1.2. Лемма о треугольнике (слева): любой параллельный шаг MM​⇒N{} \Rightarrow N достраивается одним шагом до полной развёртки M∗M^{*}. Справа — свойство ромба для ⇒{} \Rightarrow: два треугольника с общей нижней вершиной M∗M^{*}.

Параллельный шаг не обязан стягивать все редексы — из одного MM шаги ⇒{} \Rightarrow ведут в целый веер термов, и полная развёртка — лишь крайняя, самая жадная точка этого веера. Поэтому шаг NN​⇒M∗{} \Rightarrow M^{*} в общем случае настоящий; нулевым он оказывается, только когда всё уже стянуто и NN​=M∗{} = M^{*}.

Редукция, которая сразу стягивает все видимые редексы одним разом, называется редукцией Гросса — Кнута MM​⇒GKM∗{} \Rightarrow_{\mathrm{GK}} M^{*}. Но она нам неинтересна: в ней нет никакой вариативности — из терма такой шаг ведёт ровно в один результат. А теорема Чёрча — Россера как раз про вариативность: пути ↠β{} \twoheadrightarrow_\beta стягивают редексы в произвольном порядке, и в жёсткие шаги Гросса — Кнута их не разложить. Нужна именно свобода стягивать любое подмножество.

Свойство ромба из треугольника получается очевидно. Пусть MM​⇒N{} \Rightarrow N и MM​⇒K{} \Rightarrow K. По лемме о треугольнике NN​⇒M∗{} \Rightarrow M^{*} и KK​⇒M∗{} \Rightarrow M^{*} — берём LL​=M∗{} = M^{*}, и обе стороны замыкаются одним шагом (рис. 1.2, справа). Общая точка одна на всех: она не зависит ни от NN, ни от KK.

Осталось поднять свойство ромба с одного параллельного шага на многошаговую редукцию (рис. 1.1, в). Вложения (1.32) позволяют читать любую цепочку →β{} \to_\beta-шагов как цепочку ⇒{} \Rightarrow-шагов и наоборот. Поэтому распишем MM​↠βN{} \twoheadrightarrow_\beta N и MM​↠βK{} \twoheadrightarrow_\beta K как две цепочки параллельных шагов, выложим их по сторонам сетки и достроим её клетка за клеткой — каждую клетку замыкает свойство ромба для ⇒{} \Rightarrow.

Сетка из клеток-ромбов, сходящаяся к общему редукту L
Рис. 1.3. Сетка из клеток-ромбов: стороны — цепочки параллельных шагов MM​⇒…{} \Rightarrow \dots​⇒N{} \Rightarrow N и MM​⇒…{} \Rightarrow \dots​⇒K{} \Rightarrow K; каждая клетка (например, закрашенная) — свойство ромба для ⇒{} \Rightarrow. Нижняя вершина — общий редукт LL.

Заполнив всю сетку, в нижней вершине получаем терм LL, в который сходятся обе цепочки. Все рёбра сетки — параллельные шаги, а ⇒{\Rightarrow}​⊆↠β{} \subseteq {\twoheadrightarrow_\beta}, поэтому NN​↠βL{} \twoheadrightarrow_\beta L и KK​↠βL{} \twoheadrightarrow_\beta L. Теорема Чёрча — Россера доказана.

Из теоремы Чёрча — Россера (1.31) сразу вытекает существование общего редукта: если MM​=βN{} =_\beta N, то найдётся LL с MM​↠βL{} \twoheadrightarrow_\beta L и NN​↠βL{} \twoheadrightarrow_\beta L (индукция по определению =β{} =_\beta). Отсюда единственность нормальной формы: у терма не больше одной β-НФ — два пути сошлись бы к общему LL, а НФ дальше не редуцируется, поэтому N1N_1​≡L{} \equiv L​≡N2{} \equiv N_2. Далее, редуцируемость к НФ: если NN — нормальная форма MM, то MM​↠βN{} \twoheadrightarrow_\beta N (а не просто MM​=βN{} =_\beta N). Наконец, непротиворечивость: разные нормальные формы не β-равны — например true\mathrm{true} и false\mathrm{false}, — иначе нарушилась бы единственность НФ; так доказываются «неравенства» термов.

Порядок стягивания редексов, стало быть, на результат не влияет — только на то, завершится ли вычисление и за сколько шагов. Выбором этого порядка и занимаются стратегии редукции.