Curry-Howard-vastaavuus ( Curry-Howard-isomorfismi , englanninkielinen formulaæ-as-types -tulkinta ) on havaittava rakenteellinen ekvivalenssi matemaattisten todisteiden ja ohjelmien välillä , joka voidaan formalisoida isomorfismina loogisten järjestelmien ja tyypitettyjen laskelmien välillä.
Haskell Curry [1] ja William Howard2] , että todistuksen rakentaminen on samanlaista kuin laskelmien kuvaus ja konstruktiivisen logiikan lausunnot ovat rakenteeltaan samanlaisia kuin tietokoneelle tarkoitettujen laskettujen lausekkeiden tyypit - ohjelmat . Tämän yhteyden varhaisia ilmentymiä ovat Brouwer-Heiting-Kolmogorov-tulkinta (1925), joka määrittelee intuitionistisen logiikan semantiikan todisteiden laskennan avulla, ja Kleenen (1945) realisoituvuusteoria
Curry-Howard-kirjeenvaihto ei nykyajan näkemyksessä rajoitu mihinkään logiikkaan tai tyyppijärjestelmään. Esimerkiksi lauselogiikka vastaa yksinkertaista tyyppiä olevaa λ-laskentaa , toisen asteen λ-laskentaa predikaattilaskenta vastaa λ-laskentaa, jonka tyypit ovat riippuvaisia .
Curry-Howard-isomorfismin puitteissa seuraavia rakenneosia pidetään vastaavina:
Logiikkajärjestelmät | Ohjelmointikielet |
---|---|
lausunto | Tyyppi |
Todiste lausunnosta | Termi (lauseke) tyyppi |
Väite on todistettavissa | Tyyppi asuttu |
seuraamus | toiminnallinen tyyppi |
Yhteys | Taideteoksen tyyppi (pareja) |
Disjunktio | Summatyyppi (syrjitty liitto) |
Todellinen kaava | yksi tyyppi |
Väärä kaava | Tyhjä tyyppi ( ) |
Universaali kvantori | Riippuva tuotetyyppi ( -tyyppi) |
Olemassaolon kvantori | Riippuva summatyyppi ( -tyyppi) |
Yksinkertaisin esimerkki Curry-Howard-vastaavuudesta on isomorfismi yksinkertaisen tyypin λ-laskennan ja intuitionistisen lauselogiikan välillä , joka sisältää vain implikaatiot . Esimerkiksi tyyppi yksinkertaisessa kirjoitetussa lambda-laskennassa vastaa propositionaalisen logiikan ehdotusta. Tämän väitteen todistamiseksi on tarpeen rakentaa tietyn tyyppinen termi (jos tämä voidaan tehdä, he sanovat tyypistä, että se on asuttu tai asuttu ), tässä tapauksessa voit esittää halutun termin: , ja tämä tarkoittaa, että tautologia on todistettu.
Curry-Howard-isomorfismin käyttö on mahdollistanut kokonaisen luokan toiminnallisten ohjelmointikielien luomisen, joiden ajonaikainen ympäristö on myös automaattinen todistusjärjestelmä , kuten Coq , Agda ja Epigram .