120 12.1. Нормализация для простых типов
Это определение дает нам требуемое усиление индуктивного предположения. Нам нужно доказать,
что завершаются все программы — т. е., все замкнутые термы базового типа. Однако замкнутые термы
базового типа могут содержать подтермы функционального типа, так что и об этих термах нужно кое-
что знать. Более того, недостаточно знать, что эти подтермы завершаются, поскольку при применении
нормализованной функции к нормализованному аргументу происходит подстановка, и эта подстановка
может привести к новым шагам вычисления. Таким образом, для термов функционального типа нам
нужно более сильное условие: они не только сами должны завершаться, но, будучи примененными к
завершающимся аргументам, они должны давать завершающиеся результаты.
Форма Определения 12.1.2 характерна для метода доказательств через логические отношения. (По-
скольку сейчас мы работаем только с одноместными отношениями, правильнее было бы сказать логи-
ческие предикаты.) Если мы хотим доказать, что некоторое свойство P выполняется для всех замкну-
тых термов типа A, мы с помощью индукции на типах доказываем, что все термы типа A обладают
свойством P , что все термы типа A A сохраняют свойство P , что все термы типа (A A) (A A)
сохраняют свойство сохранения свойства P , и так далее. Мы добиваемся этого через определение се-
мейства предикатов, проиндексированных типами. Для базового типа A этот предикат – просто P . Для
функциональных типов предикат говорит, что функция должна переводить значения, удовлетворяю-
щие предикату для входного типа, в значения, удовлетворяющие предикату для типа-результата.
При помощи этого определения мы проводим доказательство нормализации в два шага. Сначала
мы убеждаемся, что каждый элемент каждого множества R
T
нормализуем. Затем мы показываем, что
каждый правильно типизированный терм типа T является элементом R
T
.
Первый шаг непосредственно следует из определения R
T
:
Лемма 12.1.3 Если R
T
t , то t завершается.
Второй шаг разбит на две леммы. Сначала мы замечаем, что членство в R
T
сохраняется при вычис-
лении.
Лемма 12.1.4 Если t : T и t t , то R
T
t тогда и только тогда, когда R
T
t .
Доказательство: Индукция по структуре типа T. Во-первых, заметим, что t завершается тогда и
только тогда, когда завершается t . Если T A, доказывать больше нечего. С другой стороны, предпо-
ложим, что T T
1
T
2
для некоторых T
1
и T
2
. Для направления «слева направо» ( ) предположим,
что R
T
t , и что R
T
1
s для некоторого произвольного s : T
1
. По определению, имеем R
T
2
t s . Од-
нако t s t s, и отсюда, по предположению индукции для типа T
2
, получаем R
T
2
t s . Поскольку
это верно для любого s, определение R
T
дает нам R
T
t . Рассуждение в направлении «справа налево»
( ) проводится аналогично.
Теперь нам нужно доказать, что каждый терм типа T принадлежит множеству R
T
. Здесь индукция
будет проводиться по деревьям вывода типов (было бы странно, если бы какое-либо доказательство,
касающееся правильно типизированных термов, не содержало бы индукцию по деревьям вывода ти-
пов!). Единственная сложность здесь заключается в обработке варианта с λ-абстракцией. Поскольку
мы проводим индукцию, доказательство, что терм λx:T
1
.t
2
принадлежит множеству R
T
1
T
2
, должно
сослаться на предположение индукции, утверждая, что t
2
принадлежит множеству R
T
2
. Однако R
T
2
определяется как множество замкнутых термов, в то время как переменная x может быть свободна в
t
2
, так что такая ссылка не работает.
Эта проблема решается с помощью стандартного приема: нужно найти подходящее обобщение пред-
положения индукции. Вместо того, чтобы доказывать утверждение о замкнутых термах, мы доказы-
ваем его обобщенную форму, включающую все замкнутые экземпляры открытого терма t.
Лемма 12.1.5 Если x
1
:T
1
, . . . , x
n
:T
n
t : T, а v
1
, . . . , v
n
— замкнутые значения типов T
1
, . . . , T
n
с
R
T
i
v
i
для каждого i, то R
T
x
1
v
1
, . . . x
n
v
n
t .
Доказательство: Индукция по дереву вывода утверждения x
1
:T
1
, . . . , x
n
:T
n
t : T. (Наиболее ин-
тересен вариант с абстракцией.)
Вариант T-Var: t x
i
T T
i
Утверждение леммы следует немедленно.
rev. 104