21.2. Конечные и бесконечные типы 225
Определение 21.1.5 Наименьшая неподвижная точка F записывается µF . Наибольшая неподвижная
точка F записывается νF .
Пример 21.1.6 Для вышеприведенной порождающей функции E
1
имеем µE
1
νE
1
a, b, c .
Упражнение 21.1.7 : Допустим, порождающая функция E
2
для универсума a, b, c определяется
следующими правилами вывода:
a
c
b
a b
c
Явно выпишите множество пар, составляющих отношение E
2
, как мы это проделали выше для E
1
.
Перечислите все E
2
-замкнутые и все E
2
-консистентные множества. Чему равны µE
2
и νE
2
?
Заметим, что множество µF само по себе F -замкнуто (следовательно, оно является наимень-
шим F -замкнутым множеством), а νF F -консистентно (следовательно, оно является наибольшим F -
консистентным множеством). Это наблюдение дает нам пару базовых способов рассуждения:
Следствие 21.1.8 из 21.1.4 :
1. Принцип индукции: Если X является F -замкнутым, то µF X.
2. Принцип коиндукции: Если X является F -консистентным, то X νF .
Интуиция, которя стоит за этими принципами, основывается на взгляде на множество X как на преди-
кат, определенный своим характеристическим множеством — подмножеством U, для которого предикат
верен. Показать, что свойство X выполняется для некоторого элемента x — то же, что показать, что
x принадлежит множеству X. Принцип индукции говорит, что всякое свойство, чье характеристиче-
ское множество замкнуто относительно F (т. е., F сохраняет свойство X), верно для всех элементов
индуктивно определенного множества µF .
Соответственно, принцип коиндукции дает нам способ проверить, принадлежит ли x коиндуктивно
определенному множеству νF . Чтобы показать x νF , достаточно найти множество X, такое, что
x X и X F -консистентно. Несмотря на то, что коиндукция несколько менее известна, чем индукция,
принцип коиндукции играет важную роль во многих областях информатики; например, это основной
прием доказательства в теориях параллелизма, основанных на бисимуляции, а также лежит в основе
многих алгоритмов проверки моделей.
Принципы индукции и коиндукции широко применяются в этой главе. Мы не выписываем каждое
индуктивное рассуждение в виде порождающих функций и предикатов; напротив, мы, в интересах
краткости, часто используем уже известные нам инструменты, например, структурную индукцию. Ко-
индуктивные алгоритмы представляются подробнее.
Упражнение 21.1.9 Рекомендуется, : Покажите, что принципы обыкновенной индукции на
натуральных числах (2.4.1), а также лексикографической индукции по парам натуральных чисел
(2.4.4) следуют из принципа индукции 21.1.8
21.2. Конечные и бесконечные типы
Мы намерены конкретизировать общие определения наибольшей неподвижной точки и коиндуктив-
ного метода доказательства подробностями, относящимися к наследованию. Однако прежде, чем мы
это сделаем, требуется формально показать, как можно рассматривать типы в виде (конечных либо
бесконечных) деревьев.
Для краткости в этой главе мы имеем дело только с тремя конструкторами типов: , и Top.
Мы представляем типы как (возможно, бесконечные) деревья, чьи вершины помечены одним из трех
символов , или Top. Определения подогнаны к нашим конкретным потребностям; изложение общей
теории бесконечных помеченных деревьев можно найти у Курселя (Courcelle 1983).
Мы используем запись 1, 2 для обозначения множества последовательностей, состоящих из еди-
ниц и двоек. Напомним, что пустая последовательность изображается знаком , а запись i
k
означает k
копий i. Если π и σ — последовательности, то π, σ обозначает конкатенацию π и σ.
rev. 104