Curry-Howardova korespondence ( Curry-Howard isomorphism , anglický formulæ-as-types výklad ) je pozorovatelná strukturální ekvivalence mezi matematickými důkazy a programy , která může být formalizována jako izomorfismus mezi logickými systémy a typizovanými výpočty.
Haskell Curry [1] a William Howard2] , že konstrukce důkazu je podobná popisu výpočtů a výroky konstruktivní logiky jsou svou strukturou podobné typům počítaných výrazů – programů pro počítač . Prvními projevy tohoto spojení jsou Brouwer-Heiting-Kolmogorovova interpretace (1925), která definuje sémantiku intuicionistické logiky prostřednictvím výpočtu důkazů, a teorie realizovatelnosti Kleene (1945).
Curry-Howardova korespondence v moderním pohledu není omezena na žádný logický nebo typový systém. Například výroková logika odpovídá jednoduchému typovanému λ-kalkulu , druhého řádu odpovídá λ-kalkulu a kalkulu odpovídá λ-počet se závislými typy .
V rámci Curryho-Howardova izomorfismu jsou následující strukturní prvky považovány za ekvivalentní:
Logické systémy | Programovací jazyky |
---|---|
tvrzení | Typ |
Důkaz prohlášení | Typ termínu (výrazu). |
Výrok je prokazatelný | Typ obydlený |
implikace | funkční typ |
Spojení | Typ uměleckého díla (páry) |
Disjunkce | Typ součtu (diskriminovaná unie) |
Opravdová formule | jediný typ |
Falešný vzorec | Prázdný typ ( ) |
Univerzální kvantifikátor | Typ závislého produktu ( -type) |
Kvantifikátor existence | Typ závislého součtu ( -type) |
Nejjednodušším příkladem Curry-Howardovy korespondence je izomorfismus mezi jednoduchým typovaným λ-kalkulem a kusem intuicionistické výrokové logiky , která zahrnuje pouze implikaci . Například typ v jednoduchém typu lambda kalkulu odpovídá tvrzení výrokové logiky. K prokázání tohoto tvrzení je nutné zkonstruovat termín zadaného typu (pokud to lze provést, pak o typu říkají, že je obydlený nebo obydlený ), v tomto případě můžete uvést požadovaný termín: , a to znamená, že tautologie byla prokázána.
Použití Curryho-Howardova izomorfismu umožnilo vytvořit celou třídu funkčních programovacích jazyků , jejichž runtime prostředí je také automatickým důkazním systémem , jako jsou Coq , Agda a Epigram .