Lambdakub

Lambda-kub ( λ-kub ) är en visuell klassificering av åtta maskinskrivna lambda-kalkyler med explicit typtilldelning (Church-typed systems ) . Kuben är organiserad efter möjliga beroenden mellan typerna och termerna i denna kalkyl och bildar en naturlig struktur för konstruktionskalkylen . Idén med λ-kuben föreslogs 1991 av den holländska logikern och matematikern Henk Barendregt . Ytterligare generaliseringar av lambdakuben kan erhållas genom att betrakta systemet av ren typ .

Struktur för λ-kuben

I λ-kubsystem tilldelas variabler till en av två sorter: eller . Alla giltiga uttryck sorteras också. Påståendet att ett uttryck tillhör en sort byggs ovanpå skrivpåståendet, det vill säga påståendet lyder som följer: elementet har en typ och tillhör sorten . Sorteringen används för vanliga variabler och termer i λ-kalkylen, sorteringen  används för variabler och typuttryck. Därför behandlas sorteringstyper och sorteringselement i λ-kubsystem som korsande. Typen av en term kan till exempel skrivas som ett element av en "högre" sort . Kultivartyper kallas ibland för släkten .

Beroende förstås som förmågan att definiera och använda funktioner som mappar element av en sort till en annan (eller samma). Elementen i en sort är beroende av elementen i en sort om:

Kubens baspunkt är det system som motsvarar den enkelt skrivna lambdakalkylen . Termer (element of sort ) beror på termer; typer (sorteringselement ) deltar inte i beroenden. De tre axlarna som kommer ut från baspunkten ger upphov till följande system:

De återstående systemen är olika kombinationer av de angivna beroenden. Det rikaste systemet (polymorf lambdakalkyl av högre ordning med beroende typer) är faktiskt en konstruktionskalkyl .

Egenskaper för λ-kubsystem

Alla lambda-kubsystem har den starka normaliseringsegenskapen : vilken som helst tillåten term (och typ) kan reduceras till en enda normalform efter ett ändligt antal β-reduktioner .

Stöd i programmeringsspråk

Olika funktionella språk stöder en annan delmängd av typsystemen som representeras i lambdakuben.

Länkar