390
8.3.8. Решение: В расширенной семантике тупиковые состояния вообще отсутствуют — всякий терм, не
являющийся значением, либо переходит в другой терм обыкновенным образом, либо явно превращается
в wrong (это, разумеется, тоже надо доказать), — так что свойство продвижения тривиально. С другой
стороны, теорема о редукции субъекта сообщает нам больше информации, чем раньше. Поскольку у
wrong никакого типа нет, утверждение, что правильно типизированный терм может перейти только
в другой правильно типизированный терм, означает, в частности, что он не может перейти во wrong.
В сущности, доказательство старой теоремы о продвижении становится частью нового доказательства
сохранения.
9.2.1. Решение: Потому что множество типов пустое (в синтаксисе типов нет базового варианта).
9.2.3. Решение: Пример такого контекста:
Γ f : Bool Bool Bool, x:Bool, y:Bool
В общем случае, годится любой контекст вида
Γ f:S T Bool, x:S, y:T
где S и T — произвольные типы. Рассуждения такого рода играют ключевую роль в алгоритме рекон-
струкции типов из Главы 22.
9.3.2. Решение: Предположим, что терм x x имеет тип T, и сведем это предположение к противоречию.
По лемме об обращении, левый подтерм (x) должен иметь тип T
1
T
2
, а правый подтерм (тоже x)
должен иметь тип T. Согласно варианту леммы об обращении, относящемуся к переменным, как x :
T
1
T
2
, так и x : T
1
, должны происходить из связываний в Γ. Поскольку у x в Γ может быть только
одно связывание, имеем T
1
T
2
T
1
. Но это невозможно — все типы имеют конечный размер, так
что тип не может служить подвыражением самого себя. Мы получили требуемое противоречие.
Заметим, что, если бы было разрешено иметь бесконечные выражения для типов, мы могли бы
найти решение для уравнения T
1
T
2
T
1
. К этому вопросу мы вернемя в Главе 20.
9.3.3. Решение: Предположим, что Γ t : S и Γ t : T. С помощью индукции по построению
Γ t : T мы докажем, что S T.
Вариант T-Var: t x
где x:T Γ
Согласно пункту 1 леммы об обращении (9.3.1), последнее правило во всяком дереве вывода типа
Γ t : S также должно быть T-Var, и S T.
Вариант T-Abs: t λy:T
2
.t
1
T T
2
T
1
Γ, y:T
2
t
1
: T
1
Согласно пункту 2 леммы об обращении, последнее правило во всяком дереве вывода Γ t : S также
должно быть T-Abs, и в этом дереве вывода должно иметься поддерево с выводом Γ, y:T
2
t
1
: S
1
,
причем S T
2
S
1
. По предположению индукции (относительно поддерева с заключением (Γ, y:T
2
t
1
: T
1
)) получаем S
1
T
1
, откуда немедленно следует S T.
Варианты T-App, T-True, T-False, T-IF: Аналогично.
9.3.9. Решение: Индукция по дереву вывода Γ t : T. На каждом шаге индукции мы предполагаем,
что требуемое свойство выполняется для всех поддеревьев (т. е., если Γ s : S и s s’, то Γ s’ : S,
если Γ s : S доказано как поддерево текущего дерева вывода), и рассматриваем варианты последнего
правила в дереве.
Вариант T-Var: t x x:T Γ.
Не может возникнуть (не сществует правил вычисления, имеющих на левой стороне переменную).
Вариант T-Abs: t λx:T
1
.t
2
Не может возникнуть.
Вариант T-App: t t
1
t
2
Γ t
1
: T
11
T
12
Γ t
2
: T
11
T T
12
Рассматривая правила вычисления на Рис. 9.1 с применениями в левой стороне, мы видим, что t t
может быть вычислено тремя способами: E-App1, E-App2 и E-AppAbs. Каждый из этих случаев мы
рассмотрим отдельно.
rev. 104