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

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

Если 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.xx)((λ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.xx)z(\lambda x.x\,x)\,z. Пути разошлись на один шаг, а вот сойтись за один шаг уже не могут: из второго терма zzz\,z получается сразу, а из первого — только за два шага, по шагу на каждую копию. Значит, одношаговое свойство ромба для β\to_\beta попросту ложно.

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

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

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

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

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

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

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

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

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

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

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

Параллельный шаг не обязан стягивать все редексы — из одного 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}, — иначе нарушилась бы единственность НФ; так доказываются «неравенства» термов.

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