Все дороги ведут в Рим. Точно? На это есть теорема Чёрча — Россера, которая гарантирует единственность нормальной формы, какими бы путями мы к ней ни шли. Конечно, надо заметить, что в Тьюринг-полном языке мы можем такой нормальной формы и не достичь, но вот если достигаем, то она единственна, то есть каким путём ни иди, всегда придёшь именно в Рим.
Если и , то найдётся такой, что и . Иначе говоря, обладает свойством ромба (сходимостью):
Доказательство удобно вести через параллельную редукцию. Нам понадобятся три оператора редукции над термами:
- — обычная, одношаговая β-редукция: значит, что в выбрали ровно один редекс и стянули его (один шаг — один редекс);
- — параллельная редукция: значит, что стянули произвольный набор редексов, уже присутствующих в (нуль, один, два — сколько угодно), каждый не более одного раза, и только имеющиеся, а не их будущие копии;
- — многошаговая редукция (рефлексивно-транзитивное замыкание ): значит, что есть цепочка любой длины, в том числе нулевой.
Одношаговая редукция — частный случай параллельной, а та — частный случай многошаговой:
Почему свойство ромба не доказывается прямо для одношаговой редукции (рис. 1.1, а)? Мешает копирование редексов. Возьмём терм, в котором два редекса — внешний и внутренний:
Стянем внешний редекс — внутренний при подстановке удвоится: получим . Стянем внутренний — получим . Пути разошлись на один шаг, а вот сойтись за один шаг уже не могут: из второго терма получается сразу, а из первого — только за два шага, по шагу на каждую копию. Значит, одношаговое свойство ромба для попросту ложно.
Параллельная редукция лечит ровно эту болезнь: размножившиеся копии редекса она стягивает все разом, за один тик. Для неё свойство ромба уже верно (рис. 1.1, б), и доказывается оно приёмом Такахаси — через полную развёртку.
Полной развёрткой назовём терм, в котором одновременно стянуты все редексы, видимые в , — самый жадный из возможных параллельных шагов. Определение — индукцией по строению терма:
Первое правило: — переменная развёртывается в себя.
Второе правило: — развёртка проходит под абстракцию.
Третье правило: , если — не редекс ( — не абстракция): части развёртываются независимо.
Четвёртое правило: — сам редекс стягивается, а его части ещё и развёртываются.
Развернём терм из контрпримера по этим правилам:
- — весь терм есть редекс, работает четвёртое правило: внешний редекс стянут, обе его части ушли в развёртку;
- — применение — не редекс: третье правило, затем первое для каждой переменной;
- — внутренний редекс: четвёртое правило, затем дважды первое;
- — осталось выполнить подстановку.
Итого : развёртка стянула и внешний редекс, и внутренний — ещё до того, как тот успел размножиться. Всю конструкцию держит лемма о треугольнике.
Лемма о треугольнике. Полную развёртку нельзя обогнать: каким бы ни был параллельный шаг , из ровно один параллельный шаг ведёт в :
Параллельный шаг не обязан стягивать все редексы — из одного шаги ведут в целый веер термов, и полная развёртка — лишь крайняя, самая жадная точка этого веера. Поэтому шаг в общем случае настоящий; нулевым он оказывается, только когда всё уже стянуто и .
Редукция, которая сразу стягивает все видимые редексы одним разом, называется редукцией Гросса — Кнута . Но она нам неинтересна: в ней нет никакой вариативности — из терма такой шаг ведёт ровно в один результат. А теорема Чёрча — Россера как раз про вариативность: пути стягивают редексы в произвольном порядке, и в жёсткие шаги Гросса — Кнута их не разложить. Нужна именно свобода стягивать любое подмножество.
Свойство ромба из треугольника получается очевидно. Пусть и . По лемме о треугольнике и — берём , и обе стороны замыкаются одним шагом (рис. 1.2, справа). Общая точка одна на всех: она не зависит ни от , ни от .
Осталось поднять свойство ромба с одного параллельного шага на многошаговую редукцию (рис. 1.1, в). Вложения (1.32) позволяют читать любую цепочку -шагов как цепочку -шагов и наоборот. Поэтому распишем и как две цепочки параллельных шагов, выложим их по сторонам сетки и достроим её клетка за клеткой — каждую клетку замыкает свойство ромба для .
Заполнив всю сетку, в нижней вершине получаем терм , в который сходятся обе цепочки. Все рёбра сетки — параллельные шаги, а , поэтому и . Теорема Чёрча — Россера доказана.
Из теоремы Чёрча — Россера (1.31) сразу вытекает существование общего редукта: если , то найдётся с и (индукция по определению ). Отсюда единственность нормальной формы: у терма не больше одной β-НФ — два пути сошлись бы к общему , а НФ дальше не редуцируется, поэтому . Далее, редуцируемость к НФ: если — нормальная форма , то (а не просто ). Наконец, непротиворечивость: разные нормальные формы не β-равны — например и , — иначе нарушилась бы единственность НФ; так доказываются «неравенства» термов.
Порядок стягивания редексов, стало быть, на результат не влияет — только на то, завершится ли вычисление и за сколько шагов. Выбором этого порядка и занимаются стратегии редукции.