A Curry-Howard megfeleltetés ( Curry-Howard isomorphism , angol formulaæ-as-types interpretation ) egy megfigyelhető szerkezeti egyenértékűség a matematikai bizonyítások és programok között , amely izomorfizmusként formalizálható a logikai rendszerek és a tipizált kalkulusok között.
Haskell Curry [1] és William Howard2] , hogy a bizonyítás felépítése hasonló a számítások leírásához, a konstruktív logika állításai pedig szerkezetüket tekintve hasonlóak a számítógépre szánt, kiszámított kifejezések típusaihoz . Ennek a kapcsolatnak a korai megnyilvánulásai a Brouwer-Heiting-Kolmogorov értelmezés (1925), amely az intuicionista logika szemantikáját bizonyítások kiszámításával határozza meg, valamint Kleene (1945) megvalósíthatósági elmélete
A Curry-Howard levelezés a modern felfogásban nem korlátozódik egyetlen logikára vagy típusrendszerre sem. Például a propozíciós logika egy egyszerű tipusú λ-kalkulusnak , a másodrendű logika egy λ-számításnak a predikátumszámítás pedig egy függő típusokkal rendelkező λ- kalkulusnak felel meg .
A Curry-Howard izomorfizmus keretein belül a következő szerkezeti elemek tekinthetők egyenértékűnek:
Logikai rendszerek | Programozási nyelvek |
---|---|
nyilatkozat | Típusú |
Az állítás igazolása | Kifejezés (kifejezés) típusa |
Az állítás bizonyítható | Típus lakott |
következmény | funkcionális típus |
Konjunkció | Műalkotás típusa (párok) |
Diszjunkció | Összeg típusa (diszkriminált szakszervezet) |
Igazi Forma | egyetlen típus |
Hamis képlet | Üres típus ( ) |
Univerzális kvantor | Függő terméktípus ( -típus ) |
Létezési kvantor | Függő összeg típusa ( -típus ) |
A Curry-Howard megfeleltetés legegyszerűbb példája egy egyszerű tipizált λ-számítás és egy intuíciós propozíciós logika közötti izomorfizmus , amely csak implikációt tartalmaz . Például egy típus egy egyszerű típusos lambda-számításban megfelel a propozíciós logika propozíciójának. Ennek az állításnak a bizonyításához meg kell alkotni egy adott típusú tagot (ha ez megtehető, akkor a típusról azt mondják, hogy lakott vagy lakott ), ebben az esetben megadhatja a kívánt kifejezést: , és ez azt jelenti, hogy a tautológia bizonyított.
A Curry-Howard izomorfizmus használata lehetővé tette funkcionális programozási nyelvek egész osztályának létrehozását, amelyek futtatókörnyezete egyben automatikus próbarendszer is , mint például a Coq , az Agda és az Epigram .