柯里 霍華德對應是在計算機程式和數學證明之間的緊密聯絡；這種對應也叫做柯里 霍華德同構、公式為型別對應或命題為型別對應。這是對形式邏輯系統和數學運算之間符號的相似性的推廣。它被認為是由美國數學家哈斯凱爾柯里和邏輯學家威廉阿爾文霍瓦德（William Alvin Howard）獨立發現的。 對應的起源、範圍和結論 對應可以在兩個層面上看到，首先是類比層次，它聲稱對一個函式計算出的值的型別的斷言可類比於一個邏輯定理，計算這個值的程式可類比於這個定理的證明。在理論計算機科學中，這是連線 λ 演算和型別論的毗鄰領域的一個重要的底層原理。它被經常以下列形式陳述為 證明是程式。一個可選擇的形式化為 命題為型別。其次，更加正式的，它指定了在兩個數學領域之間的同構，就是以一種特定方式形式化的自然演繹和簡單型別 λ 演算之間是雙射，首先是證明和項，其次是證明歸約步驟和 beta 歸約。 有多種方式考慮柯里 霍華德對應。在一個方向上，它工作於 把證明編譯為程式 級別上。這裡的 證明 最初被限定為在構造性邏輯中 典型的是直覺邏輯系統中的證明。而 程式 是在常規的函數語言程式設計的意義上的；從語法的觀點上看，這種程式是用某種 λ 演算表達的。所以柯里 霍華德同構的具體實現是詳細研究如何把來自直覺邏輯的證明寫成 λ 項。（這是霍華德的貢獻；柯里貢獻了組合子，它是相對於是高階語言的 λ 演算是能寫所有東西的機器語言）。最近，同樣處理經典邏輯的柯里 霍華德對應的擴充套件可被公式化了，透過對經典有效規則比如雙重否定除去和皮爾士定律關聯上明確的用續體比如處理的一類項。 還有一個相反的方向，對一個程式的正確性關聯上 證明提取 的可能性。這在非常豐富的型別論環境中是可行的。實際上理論家對推進非常豐富型別的函數語言程式設計語言的開發的動機，已經部分地混合了希望帶給柯里 霍華德對應更加顯著的地位的因素。 型別 依據 λ 演算，我們將使用 λxE 來指示帶有形式引數 x 和函式體 E 的函式。在應用於引數比如 a 的時候，這個函式生成 E，並帶有 x 的所有自由出現都被替換為 a。有效的 λ 演算表示式有如下形式之一： v（這裡的 v 是個變數） λvE（這裡的 v 是個變數，而 E 是個 λ 演算表示式） E F（這裡的 E 和 F 是 λ 演算表示式） 通常我們將縮寫 （A B）C 為 A B C，縮寫 λaλbE 為 λabE。一個表示式被稱為是 閉合的，如果它不包含自由變數。 型別確定規則 型別可以依賴於型別變數，它被指示為小寫的希臘字母 α β 等等。在我們概念中型別變數是被隱含的全稱量化的，就是說，如果一個值有包括型別變數的一個型別，則它必須由這個型別變數的所有可能例項組成。我們可以定義任意表達式的型別為如下： 一個變數比如 x 可以有任意型別。 如果變數 x 有型別 α，而表示式 E 有型別 β，則 λxE 有指示為 αβ 的型別；就是說，它是取型別 α 的值，並對映到型別 β 的值。 在表示式 E F 中，如果 F 有型別 α，則 E 必須有型別 αβ（就是說它必須是期望型別 α 的引數的函式）並且這個表示式有型別 β。 例如，考慮函式 K λaλba。假定 a 有型別 α 而 b 有型別 β。則 λba 有型別 βα，而 λaλba 有型別 αβα。我們接受是右結合的約定，所以這個型別也可以寫為 αβα。這意味著 K 函式接受型別 α 的引數並返回一個函式，它接受型別 β 的引數並返回型別 α 的值。 類似的，考慮函式 B λaλbλca b c。假定 c 有型別 γ，則 b 必須有形如 γβ 的某種型別，表示式 b c 有型別 β。a 必須有形如 βα 的某種型別，表示式 a b c 有型別 α。那麼 λca b c 有型別 γα；λbλca b c 有型別 γβγα，而 λaλbλca b c 有型別 βαγβγα。你可以把這解釋為意味著 B 函式接受型別 βα 的引數和型別 γβ 的引數並返回一個函式，它接受型別 γ 的引數並返回型別 α 的結果。 型別居留問題 很明顯 λ 表示式可以有非常複雜的型別。你可能要問是否有帶有給定型別的 λ 表示式。找到帶有特定型別的 λ 表示式的問題叫做型別居留問題。 答案是非常引人注目的：有帶有特定型別的閉合 λ 表示式，當且僅當這個型別對應於一個邏輯定理，在這裡的符號再次解釋為意味著邏輯蘊涵的時候。 例如，考慮恆等函式 λxx，它接受型別 ξ 的引數並返回型別 ξ 的結果，所以有型別 ξξ。ξξ 當然是邏輯定理：給定一個公式 ξ，你可以結論出 ξ。 K 函式的型別 αβα 也是一個定理。如果已知 α 為真，則你可以結論出如果 β 為真就能推出 α。這有時也叫做重複規則。B 的型別是 βαγβγα。你可類似的把它解釋為邏輯重言式；如果已知 βα 為真，則如果已知 γβ 為真，你就能推出 γ 蘊涵 α。 在另一方面，考慮 αβ，它不是定理。明顯的沒有這種型別的 λ 項；它必定是接受型別 α 的引數並返回某個完全無關的和未約束型別的結果的函式。這是不可能的，因為你不能從這種函數里得到什麼東西，除非把它放到其他什麼地方之中。 儘管有型別 βαα 的函式（比如，λbλaa，它接受一個引數 b，忽略引數，並返回恆等函式），卻沒有型別 ααβ 的函式，如果存在的話，它會是轉換恆等函式到任意值的函式。 直覺邏輯 儘管所有居留型別對應於邏輯定理為真，逆命題卻不為真。即使我們限制我們的嘗試到只包含運算的邏輯公式，所謂的邏輯的蘊涵片段，不是所有經典有效的邏輯公式是居留型別。例如，型別 αβαα 是非居留的，儘管叫做皮爾士定律的對應邏輯公式是重言式。 直覺邏輯是比經典邏輯弱的系統。經典邏輯把自身關注於在抽象的、柏拉圖主義意義上為真的公式，而直覺邏輯只在可以為它構造一個證明的時候認為公式為真。公式 α α 示例了這種區別；它是經典邏輯的一個定理而不是直覺邏輯的定理。儘管它是經典的真的，在直覺邏輯中這個公式斷言了我們要麼證明 α 要麼證明 α。因為我們不是總能做到這些事情之一，它不是直覺邏輯的一個定理。 在居留型別和有效邏輯公式之間的對應完全是雙向的，如果我們限制我們的注意力到直覺邏輯的蘊涵片段（這也叫做希爾伯特代數）。 希爾伯特演繹系統和組合子邏輯的對應 形式上刻畫直覺邏輯的一個簡單方式是希爾伯特演繹系統。它有兩個公理模式。所有形式為 αβα 的公式都是公理，所有形式為 αβγαβαγ 的公式都是公理。 唯一的演繹規則是肯定前件，它聲稱如果我們已經證明了兩個定理，一個有形式 αβ 而另一個有形式 α，我們可以結論出 β 也是定理。以這種方式推匯出來的公式的集合正好是直覺邏輯的集合。特別的是，皮爾士定律不能以這種方式演繹。（對皮爾士定律不能以這種方式演繹的證明請參見海廷代數條目）。 如果我們增加皮爾士定律為第三個公理模式，這個系統就有能力證明在經典邏輯的蘊涵片段中的所有定理。 考慮 λ 表示式的下列兩個函式： K λxyx S λxyzx z y z 可以證明任何函式都可以透過適當的 K 和 S 相互應用來建立。（有關證明請參見組合子邏輯）。例如，上面定義的函式 B 等價於 S K S K。如果一個函式比如 B，可以表達為 S 和 K 的複合，則這個表示式可以直接轉換成型別 B 的一個證明，它被解釋為邏輯公式，是直覺邏輯的一個定理。本質上，K 的外觀對應於第一個公理模式的使用，S 的外觀對應於第二個公理模式的使用，而函式應用對應於肯定前件演繹規則的使用。 第一個公理模式是 αβα，並且它精確的是 K 函式的型別；類似的第二個公理模式 αβγαβαγ，是 S 函式的型別。肯定前件聲稱如果我們有兩個表示式，一個型別是 αβ（就是說，接受型別 α 的值並返回型別 β 的值）而另一個型別是 α（就是說，型別 α 的值），則我們應當能夠找到型別 β 的值；明顯的，我們可以透過應用這個函式到這個值之上來得到；結果會有型別 β。 希爾伯特式直覺蘊含邏輯 簡單型別的組合子邏輯 frac Gamma_1 alpha Gamma_2 vdash alpha Assum frac Gamma_1 xalpha Gamma_2 vdash xalpha frac Gamma vdash alpha rightarrow beta rightarrow alpha Ax_ 1 frac Gamma vdash K alpha rightarrow beta rightarrow alpha frac Gamma vdash alpharightarrowbetarightarrowgammarightarrowalpharightarrowbetarightarrowalpharightarrowgamma Ax_2 frac Gamma vdash S alpharightarrowbetarightarrowgammarightarrowalpharightarrowbetarightarrowalpharightarrowgamma frac Gamma vdash alpha rightarrow beta qquad Gamma vdash alphaGamma vdash betatextit ModusPonens frac Gamma vdash E_1alpha rightarrow beta qquad Gamma vdash E_2alphaGamma vdash E_1E_2beta 證明 αα 作為一個簡單的例子，我們將構造定理 αα 的證明。這是恆等函式 I λxx 的型別。函式 S K K 等價於恆等函式。作為對證明的描述，它聲稱了我們需要首先應用 S 到 K。我們做如下： αβα αβγαβαγ 如果我們在 S 中設 γ α，我們得到： αβααβαα 因為這個公式的前件 αβα 是一個已知定理，並且實際上正好是 K，我們可以應用肯定前件並推匯出後件： αβαα 這是函式 S K 的型別。現在我們需要應用這個函式到 K。我們再次操縱公式使得前件看起來像 K，這次我們替代 β 為 βα αβααα 我們再次應用肯定前件來推出後件： αα 我們完成了。 一般的說，這個過程是隻要程式包含形如 P Q 的應用，我們應當首先證明對應於 P 和 Q 的型別的定理。因為 P 要被應用於 Q，對於某種 α 和 β，P 的型別必定有形式 αβ 而 Q 的型別必定有形式 α。我們可以透過肯定前件規則推出 β。 證明 βαγβγα 作為一個更加複雜的例子，我們看對應於函式 B 的定理的證明。B 的型別是 βαγβγα。B 等價於 S K S K。這是對證明定理 βαγβγα 的指引。 首先我們需要構造 K S。我要使 K 公理的前件看起來像 S 公理，透過設定 α 等於 αβγαβαγ，和 β 等於 δ αβα αβγαβαγδαβγαβαγ 因為前件正好是 S，我們可以推出後件： δαβγαβαγ 這是對應於 K S 的定理。現在我們要應用 S 到這個表示式。取得 S αβγαβαγ 我們設定 α δ，β αβγ 和 γ αβαγ，生成 δαβγαβαγδαβγδαβαγ 我們可以接著推出後件： δαβγδαβαγ 這是型別 S K S 的公式。這個定理的一個特殊情況有 δ βγ βγαβγβγαβαγ 我們需要應用最後這個公式到 K。我們再次特殊化 K，這次是替代 α 為 βγ，替代 β 為 α αβα βγαβγ 這同於前者公式的前件，所以我們推出後件： βγαβαγ 交換變數 α 和 γ 的名字得到 βαγβγα 這就是我們要證明的。 自然演繹和 lambda 演算的對應 在下表第一列中的推導規則定義了直覺蘊涵自然演繹（為蘊涵連結詞準備一個介入和一個除去規則）的標準系統。在第二列中給出 lambda 演算的標準型別指派（賦值）系統。 直覺蘊涵自然演繹 lambda 演算型別指派規則 over Gamma alpha vdashalpha quad rm Ax over Gamma x alpha vdash xalpha quad rm Ax Gamma alphavdashbeta over Gammavdashalphararrbetaquad rarr rm I Gamma x alphavdash Ebeta over Gammavdash lambda xE alphararrbetaquad rarr rm I GammavdashalphararrbetaqquadGammavdashalpha over Gamma vdash betaquad rarr rm E Gammavdash EalphararrbetaqquadGammavdash Falpha over Gamma vdash E Fbetaquad rarr rm E 相繼式演算 希爾伯特式證明是很難構造的。證明邏輯定理的更加直覺的方式是根岑的相繼式演算。相繼式演算以同希爾伯特式證明對應於組合子表示式一樣的方式對應於 λ 表示式程式。 直覺邏輯的蘊涵片段的相繼式演算規則是： over Gamma alpha vdashalpha 公理 Gamma alphavdashbeta over Gammavdashalphararrbeta Right GammavdashalphaqquadqquadSigma betavdashgamma over Gamma Sigma alphararrbeta vdash gamma Left Γ 表示上下文，它是假設的集合。Gammavdash a 指示假定上下文 Γ 我們可以證明 a。邏輯定理完全由其證明不需要假設的那些公式 t 組成的；就是說，t 是一個定理，當且僅當我們可以證明 vdash t。詳情請參見相繼式演算。 在相繼式演算中的證明是樹，它的根是我們要證明的定理，而它的葉子是公理模式例項；每個內部節點必須標記為要麼 Right 要麼 Left ，並且必須包含依據指定規則從子節點推出的一個公式。 相繼式演算證明緊密的對應於 λ 演算表示式。斷言 Gammavdash a 可以被解釋為意味著，給定帶有在 Γ 中列出型別的值，我們可以製造帶有型別 a 的一個值。公理對應於帶有新的無約束的型別的新變數介入。 Right 規則對應於函式抽象： Gamma alphavdashbeta over Gammavdashalphararrbeta Right 什麼時候我們能結論出某個程式 Γ 包含型別 αβ 的函式？在 Γ 加上型別 α 的一個值的時候，包含了足夠的機械來允許我們製造型別 β 的一個值。 Left 規則對應於函式應用： Gamma vdash alpha qquad Sigma beta vdash gamma over Gamma Sigma alphararrbeta vdashgamma Left 如果我們可以製造型別 α 的一個值，並且如果給出型別 β 的一個值，我們還可以製造型別 γ 的一個值，則型別 αβ 的一個函式將允許我們製造型別 γ 的一個值：首先我們可以製造 α，接著應用 αβ 函式於它，並接著使用結果的 β 值來製造型別 γ 的一個值。 例子 例如，βαγβγα 的相繼式演算如下： cfrac gamma vdash gamma qquad cfrac beta vdash beta qquad alpha vdash alpha betabeta rightarrow alpha vdash alpha Left rightarrow qquad cfrac gamma beta rightarrow alpha gamma rightarrow beta vdash alpha qquad cfrac beta rightarrow alpha gamma rightarrow beta vdash gamma rightarrow alpha qquad cfrac beta rightarrow alpha vdash gamma rightarrow beta rightarrow gamma rightarrow alpha vdash beta rightarrow alpha rightarrow gamma rightarrow beta rightarrow gamma rightarrow alpha Right rightarrow Right rightarrow Right rightarrow Left rightarrow βαγβγα 的證明告訴我們如何製造帶有這個型別的一個 λ 表示式。首先，介入分別帶有型別 α 和 β 的變數 a 和 b。Left 規則聲稱制造程式 λba b，它構造型別 α 的一個值。我們再次使用 Left 來構造 λba λgb g，它仍有型別 α。 參見 直覺主義 BHK 釋義 直覺型別論 經典邏輯 中間邏輯 線性邏輯 構造性證明 CurryHoward 對應 可計算性邏輯 博弈語義 引用 開創性引用 with 2 sections by William Craig see paragraph 9E De Bruijn Nicolaas 1968 Automath a language for mathematics Department of Mathematics Eindhoven University of Technology THreport 68WSK05 Reprinted in revised form with two pages commentary in Automation and Reasoning vol 2 Classical papers on computational logic 19671970 Springer Verlag 1983 pp 159200 original manuscript from 1969 對應的擴充套件 Full version of the paper presented at Logic Colloquium 90 Helsinki Abstract in JSL 56 311391140 1991 Full version of a paper presented at Logic Colloquium 91 Uppsala Abstract in JSL 58 2753754 1993 Full version of a paper presented at 2nd WoLLIC95 Recife Abstract in Journal of the Interest Group in Pure and Applied Logics 4 2330332 1996 綜合性論文 the contribution of de Bruijn by himself contains a synthetic introduction to the CurryHoward correspondence contains a synthetic introduction to the CurryHoward correspondence 書籍 reproduces the seminal papers of CurryFeys and Howard a paper by de Bruijn and a few other papers notes on proof theory and type theory that includes a presentation of the CurryHoward correspondence with a focus on the formulaeastypes correspondence Girard JeanYves 198790 Proof and Types Translated by and with appendices by Lafont Yves and Taylor Paul Cambridge University Press Cambridge Tracts in Theoretical Computer Science 7 ISBN 0521371813 notes on proof theory with a presentation of the CurryHoward correspondence Thompson Simon 1991 Type Theory and Functional Programming AddisonWesley ISBN 0201416670 外部連結 Thompson Simon 1991 Type Theory and Functional Programming AddisonWesley ISBN 0201416670 Category 證明論 Category 計算機邏輯 Category 型別論 Category1934 年計算機科學