Лямбда-куб

Матеріал з 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ω (поліморфне лямбда-числення вищого порядку з залежними типами) фактично є численням конструкцій.

Властивості систем λ-куба

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

Підтримка в мовах програмування

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

Посилання

Шаблон:Типи даних