YaChudo

Лямбда-куб

Переглядів: 0. Оновлено 10.10.2026.

λ-куб. Стрілка уздовж кожного ребра вказує на напрямок включення; простіша система є окремим випадком складнішої.

Ля́мбда-куб (λ-куб) — наочна класифікація восьми типізованих лямбда-числень з явним приписуванням типів (систем, типізованих за Черчем). Куб організований відповідно до можливих залежностей між типами і термами цього числення і формує природну структуру для числення конструкцій. Ідею λ-куба запропонував 1991 року нідерландський логік і математик Генк Барендрегт. Подальші узагальнення лямбда-куба можна отримати, розглядаючи чисту систему типів.

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

У системах λ-куба змінні відносять до одного з двох сортів: ∗ {\displaystyle \ast } або ◻ {\displaystyle \Box } . Всі допустимі вирази теж поділяються за сортами. Твердження про належність виразу до сорту надбудовується над твердженням типізації, тобто висловлювання A : B : C {\displaystyle A:B:C} читається так: елемент A {\displaystyle A} має тип B {\displaystyle B} і належить до сорту C {\displaystyle C} . Сорт ∗ {\displaystyle \ast } використовується для звичайних змінних і термів λ-числення, сорт ◻ {\displaystyle \Box }  — для змінних і виразів типу. Тому в системах λ-куба типи сорту ∗ {\displaystyle \ast } і елементи сорту ◻ {\displaystyle \Box } розглядаються як перетинні. Наприклад, тип терма ( λ x : α . x ) : ( α → α ) : ∗ {\displaystyle (\lambda x:\alpha .\,x):(\alpha \to \alpha ):\ast } можна записати як елемент «вищого» сорту ( α → α ) : ∗ : ◻ {\displaystyle (\alpha \to \alpha ):\ast :\Box } . Типи сорту ◻ {\displaystyle \Box } іноді називають родами.

Під залежністю розуміють можливість визначати і використовувати функції, які відбивають елементи одного сорту в інший (або той самий). Елементи сорту s 1 {\displaystyle s_{1}} залежать від елементів сорту s 2 {\displaystyle s_{2}} , якщо:

  • для допустимого виразу F [ x ] : τ : s 1 {\displaystyle F[x]:\tau :s_{1}} , який, можливо, містить змінну x : σ : s 2 {\displaystyle x:\sigma :s_{2}} , можна визначити лямбда-абстракцію ( λ x : σ . F [ x ] ) : ( σ → τ ) : s 1 {\displaystyle (\lambda x:\sigma .\,F[x]):(\sigma \to \tau ):s_{1}} ;
  • для функції G : ( σ → τ ) : s 1 {\displaystyle G:(\sigma \to \tau ):s_{1}} має бути допустимим її застосування до елемента Y : σ : s 2 {\displaystyle Y:\sigma :s_{2}} , при цьому результат має бути елементом типу τ {\displaystyle \tau } сорту s 1 {\displaystyle s_{1}} , тобто ( G Y ) : τ : s 1 {\displaystyle (G\,Y):\tau :s_{1}} .

Базовою вершиною куба є система λ → {\displaystyle \lambda ^{\rightarrow }} , що відповідає просто типізованому лямбда-численню. Терми (елементи сорту ∗ {\displaystyle \ast } ) залежать від термів; типи (елементи сорту ◻ {\displaystyle \Box } ) в залежностях участі не беруть. Три осі, що виходять з базової вершини, породжують такі системи:

  • терми, які залежать від типів: система λ 2 {\displaystyle \lambda 2} (лямбда-числення з поліморфними типами, система F);
  • типи, які залежать від типів: система λ ω _ {\displaystyle \lambda {\underline {\omega }}} (лямбда-числення з операторами над типами);
  • типи, які залежать від термів: система λ P {\displaystyle \lambda P} (лямбда-числення з залежними типами).

Решта систем є різними комбінаціями перелічених залежностей. Найбагатша система λ P ω {\displaystyle \lambda P\omega } (поліморфне лямбда-числення вищого порядку з залежними типами) фактично є численням конструкцій.

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

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

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

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

Посилання

Джерело: стаття у Вікіпедії та історія редагувань (автори).