Lambda-cube ( λ-cube ) este o clasificare vizuală a opt calculi lambda tipați cu atribuire explicită de tip (sisteme tip biserică ) . Cubul este organizat în funcție de posibilele dependențe dintre tipurile și termenii acestui calcul și formează o structură naturală pentru calculul de construcție . Ideea cubului λ a fost propusă în 1991 de către logicianul și matematicianul olandez Henk Barendregt . Alte generalizări ale cubului lambda pot fi obținute luând în considerare sistemul de tip pur .
În sistemele λ-cub, variabilele sunt atribuite unuia din două feluri: sau . Toate expresiile valide sunt de asemenea sortate. Afirmația că o expresie aparține unui sort este construită deasupra aserției de tastare, adică instrucțiunea se citește după cum urmează: elementul are un tip și aparține sortării . Sortarea este folosită pentru variabile obișnuite și termeni ai calculului λ, sortarea este folosită pentru variabile și expresii de tip. Prin urmare, în sistemele λ-cub, tipurile de sortare și elementele de sortare sunt tratate ca intersectând. De exemplu, tipul unui termen poate fi scris ca un element de sortare „mai mare” . Tipurile de cultivare sunt uneori numite genuri .
Dependența este înțeleasă ca abilitatea de a defini și utiliza funcții care mapează elemente de un fel cu altul (sau același). Elementele unui sort sunt dependente de elementele unui sort dacă:
Vârful de bază al cubului este sistemul corespunzător calculului lambda tip simplu . Termenii (elementele de sortare ) depind de termeni; tipurile (elementele de sortare ) nu participă la dependențe. Cele trei axe care ies din vârful bazei dau naștere la următoarele sisteme:
Sistemele rămase sunt diferite combinații ale dependențelor enumerate. Cel mai bogat sistem (calcul lambda polimorf de ordin superior cu tipuri dependente) este de fapt un calcul de construcție .
Toate sistemele cub lambda au proprietatea de normalizare puternică : orice termen (și tip) admisibil poate fi redus la o singură formă normală după un număr finit de β-reduceri .
Diferite limbaje funcționale acceptă un subset diferit al sistemelor de tip reprezentate în cubul lambda.