Лямбда-куб

Материал из testwiki
Перейти к навигации Перейти к поиску
λ-куб. Стрелка вдоль каждого ребра указывает на направление включения; более простая система является частным случаем более сложной.

Ля́мбда-куб (λ-куб) — наглядная классификация восьми типизированных лямбда-исчислений с явным приписыванием типов (систем, типизированных по Чёрчу). Куб организован в соответствии с возможными зависимостями между типами и термами этого исчисления и формирует естественную структуру для исчисления конструкций. Идею λ-куба предложил в 1991 году нидерландский логик и математик Хенк Барендрегт. Дальнейшие обобщения лямбда-куба можно получить, рассматривая чистую систему типов.

Структура λ-куба

В системах λ-куба переменные относят к одному из двух сортов: или . Все допустимые выражения тоже разделяются по сортам. Утверждение о принадлежности выражения к сорту надстраивается над утверждением типизации, то есть высказывание A:B:C читается так: элемент A имеет тип B и принадлежит сорту C. Сорт используется для обычных переменных и термов λ-исчисления, сорт  — для переменных и выражений типа. Поэтому в системах λ-куба типы сорта и элементы сорта рассматриваются как пересекающиеся. Например, тип терма (λx:α.x):(αα): может быть записан как элемент более «высокого» сорта (αα)::. Типы сорта иногда называют родами.

Под зависимостью понимается возможность определять и использовать функции отображающие элементы одного сорта в другой (или тот же). Элементы сорта s1 зависят от элементов сорта s2, если:

  • для допустимого выражения F[x]:τ:s1, возможно содержащего переменную x:σ:s2, мы можем определить лямбда-абстракцию (λx:σ.F[x]):(στ):s1;
  • для функции G:(στ):s1 должно быть допустимо её применение к элементу Y:σ:s2, при этом результат должен быть элементом типа τ сорта s1, то есть (GY):τ:s1.

Базовой вершиной куба служит система λ, соответствующая просто типизированному лямбда-исчислению. Термы (элементы сорта ) зависят от термов; типы (элементы сорта ) в зависимостях не участвуют. Три оси, выходящие из базовой вершины, порождают следующие системы:

  • термы, зависящие от типов: система λ2 (лямбда-исчисление с полиморфными типами, система F);
  • типы, зависящие от типов: система λω_ (лямбда-исчисление с операторами над типами);
  • типы, зависящие от термов: система λP (лямбда-исчисление с зависимыми типами).

Остальные системы представляют собой различные комбинации перечисленных зависимостей. Наиболее богатая система λPω (полиморфное лямбда-исчисление высшего порядка с зависимыми типами) фактически представляет собой исчисление конструкций.

Свойства систем λ-куба

Все системы лямбда-куба обладают свойством Шаблон:Не переведено: любой допустимый терм (и тип) за конечное число β-редукций приводится к единственной нормальной форме.

Поддержка в языках программирования

Различные функциональные языки поддерживают различное подмножество представленных в лямбда-кубе систем типов.

Ссылки