Jednoduše typovaný lambda kalkul ( simple typed lambda calculus , lambda kalkulus s jednoduchými typy , system ) je systém typovaného lambda kalkulu , ve kterém je lambda abstrakci přiřazen speciální typ "šipka". Tento systém navrhl Alonzo Church v roce 1940 [1] . Pro formalismus kombinatorické logiky blízko lambda kalkulu uvažoval o podobném systému Haskell Curry v roce 1934 [2] .
V základní verzi systému jsou typy konstruovány ze sady proměnných pomocí jediného konstruktoru binárních infixů . Podle tradice se pro typové proměnné používají řecká písmena a operátor je považován za asociativní vpravo, to znamená, že jde o zkratku pro . Písmena z druhé poloviny řecké abecedy ( , , atd.) se často používají k označení libovolných typů, nejen typových proměnných.
Existují dvě verze jednoduchého systému. Pokud jsou jako termíny použity stejné termíny jako v netypovém lambda kalkulu , pak se systém nazývá implicitně typovaný nebo psaný Currym . Pokud jsou proměnné v lambda abstrakci označeny typy, pak se systém nazývá explicitně typovaný nebo Church typed . Jako příklad uvádíme identickou funkci ve stylu Curry: a Church-style: .
Pravidla pro redukci se neliší od pravidel pro netypizovaný počet lambda . -redukce je definována prostřednictvím substituce
.-snížení je definováno následovně
.-redukce vyžaduje, aby proměnná nebyla v termínu volná .
Kontext je sada příkazů pro psaní proměnných oddělených čárkami, např.
Kontexty se obvykle označují velkými řeckými písmeny: . Pro tento kontext můžete do kontextu přidat proměnnou „fresh“: pokud je platný kontext, který neobsahuje proměnnou , pak je to také platný kontext.
Obecná forma typizačního příkazu je:
To zní následovně: v kontextu má výraz typ .
V jednoduše zadaném lambda kalkulu se přiřazování typů termínům provádí podle níže uvedených pravidel.
Axiom. Pokud je proměnné přiřazen typ v kontextu , pak má v tomto kontextu typ . Ve formě odvozovacího pravidla:
Úvodní pravidlo . Pokud v nějakém kontextu, rozšířeném o příkaz, který má typ , má výraz typ , pak ve zmíněném kontextu (bez ) má lambda abstrakce typ . Ve formě odvozovacího pravidla:
odstranit pravidlo . Pokud je v nějakém kontextu termín typu a termín je typu , pak je aplikace typu . Ve formě odvozovacího pravidla:
První pravidlo umožňuje přiřadit typ volným proměnným jejich zadáním v kontextu. Druhé pravidlo vám umožňuje zadat abstrakci lambda pomocí typu šipky, čímž se z kontextu odstraní proměnná vázaná touto abstrakcí. Třetí pravidlo umožňuje napsat žádost (přihlášku) za předpokladu, že levý žadatel má vhodný typ šipky.
Příklady tvrzení o psaní v církevním stylu:
(axiom) (úvod ) (odstranění )