查看“︁柯里-霍华德同构”︁的源代码
←
柯里-霍华德同构
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{More footnotes|time=2019-3-6}} [[Image:Coq plus comm screenshot.jpg|thumb|300px|以[[函數式編程]]寫作的:在[[Coq]]軟件中自然數加法交換性的證明。nat_ind 代表數學归纳,eq_ind 代替等於,f_equal 代表在等式兩邊取同樣的函數。 前面的定理參照顯示 m = m + 0和S(m + y)= m + S y。]] '''柯里-霍華德对应'''({{lang-en|'''Curry-Howard correspondence'''}})是在[[计算机程序]]和[[数学证明]]之间的紧密联系;这种对应也叫做'''柯里-霍華德同构'''、'''公式为类型对应'''或'''命题为类型对应'''。这是对[[形式逻辑]]系统和数学[[运算]]之间符号的相似性的推广。它被认为是由美国数学家[[哈斯凯尔·柯里]]和逻辑学家威廉·阿尔文·霍瓦德(William Alvin Howard)独立发现的。 ==對應的起源、范围和結論== '''对应'''可以在两个层面上看到,首先是[[类比]]层次,它声称對一个函数计算出的值的类型的断言可类比于一个逻辑定理,计算这个值的程序可类比于这个定理的证明。在理论[[计算机科学]]中,这是连接[[λ演算]]和[[类型论]]的毗邻领域的一个重要的底层原理。它被经常以下列形式陈述为“'''证明是程序'''”。一个可选择的形式化为“'''[[命题]]为[[类型]]'''”。其次,更加正式的,它指定了在两个数学领域之间的[[同构]],就是以一种特定方式形式化的[[自然演绎]]和[[简单类型λ演算]]之间是[[双射]],首先是证明和项,其次是证明归约步骤和beta归约。 有多种方式考虑柯里-霍華德对应。在一个方向上,它工作于“把证明编译为程序”级别上。这裡的“证明”最初被限定为在[[构造性逻辑]]中—典型的是[[直觉逻辑]]系统中的证明。而“程序”是在常规的[[函数式编程]]的意义上的;从[[语法]]的观点上看,这种程序是用某种[[λ演算]]表达的。所以柯里-霍華德同构的具体实现是详细研究如何把来自直觉逻辑的证明写成λ项。(这是霍華德的贡献;柯里贡献了[[组合子]],它是相对于是高级语言的λ演算是能写所有东西的机器语言)。最近,同样处理[[经典逻辑]]的柯里-霍華德对应的扩展可被公式化了,通过对经典有效规则比如[[双重否定除去]]和[[皮尔士定律]]关联上明确的用续体比如{{tsl|en|call-with-current-continuation|call/cc}}处理的一类项。 还有一个相反的方向,对一个程序的[[正确性]]关联上“证明提取”的可能性。这在非常丰富的[[类型论]]环境中是可行的。实际上理论家对推进非常丰富类型的函数式编程语言的开发的动机,已经部分地混合了希望带给柯里-霍華德对应更加显著的地位的因素。 == 类型 == 依据[[λ演算]],我们将使用λx.E来指示带有形式参数x和函数体E的函数。在应用于参数比如a的时候,这个函数生成E,并带有x的所有[[自由变量|自由出现]]都被替换为a。有效的λ演算表达式有如下形式之一: * v(这裡的v是个变量) * λv.E(这裡的v是个变量,而E是个λ演算表达式) * (E F)(这裡的E和F是λ演算表达式) 通常我们将缩写((A B)C)为(A B C),缩写λa.λb.E为λab.E。一个表达式被称为是“闭合的”,如果它不包含[[自由变量]]。 ===類型確定規則=== 类型可以依赖于'''类型变量''',它被指示为小写的希腊字母α, β等等。在我们概念中类型变量是被隐含的[[全称量化]]的,就是说,如果一个值有包括类型变量的一个类型,则它必须由这个类型变量的所有可能实例组成。我们可以定义任意表达式的类型为如下: *一个变量比如x可以有任意类型。 *如果变量x有类型α,而表达式E有类型β,则λx.E有指示为α→β的类型;就是说,它是取类型α的值,并映射到类型β的值。 *在表达式(E F)中,如果F有类型α,则E必须有类型α→β(就是说它必须是期望类型α的参数的函数)并且这个表达式有类型β。 例如,考虑函数'''K''' = λa.λb.a。假定a有类型α而b有类型β。则λb.a有类型 β→α,而λa.λb.a有类型α→(β→α)。我们接受→是右结合的约定,所以这个类型也可以写为α→β→α。这意味着'''K'''函数接受类型α的参数并返回一个函数,它接受类型β的参数并返回类型α的值。 类似的,考虑函数'''B''' = λa.λb.λc.(a (b c))。假定c有类型γ,则b必须有形如γ→β的某种类型,表达式(b c)有类型β。a必须有形如β→α的某种类型,表达式(a (b c))有类型α。那么λc.(a (b c))有类型γ→α;λb.λc.(a (b c))有类型(γ→β)→γ→α,而λa.λb.λc.(a (b c))有类型(β→α)→(γ→β)→γ→α。你可以把这解释为意味着'''B'''函数接受类型(β→α)的参数和类型(γ→β)的参数并返回一个函数,它接受类型γ的参数并返回类型α的结果。 === 类型居留问题 === 很明显λ-表达式可以有非常复杂的类型。你可能要问是否有带有给定类型的λ-表达式。找到带有特定类型的λ-表达式的问题叫做[[类型居留问题]]。 答案是非常引人注目的:有带有特定类型的闭合λ-表达式,当且仅当这个类型对应于一个逻辑定理,在这裡的→符号再次解释为意味着逻辑蕴涵的时候。 例如,考虑恒等函数λx.x,它接受类型ξ的参数并返回类型ξ的结果,所以有类型ξ→ξ。ξ→ξ当然是逻辑定理:给定一个公式ξ,你可以结论出ξ。 '''K'''函数的类型α→β→α也是一个定理。如果已知α为真,则你可以结论出如果β为真就能推出α。这有时也叫做[[存在图|重复规则]]。'''B'''的类型是 (β→α)→(γ→β)→γ→α。你可类似的把它解释为逻辑[[重言式]];如果已知(β→α)为真,则如果已知(γ→β)为真,你就能推出γ蕴涵α。 在另一方面,考虑α→β,它不是定理。明显的没有这种类型的λ-项;它必定是接受类型α的参数并返回某个完全无关的和未约束类型的结果的函数。这是不可能的,因为你不能从这种函数里得到什么东西,除非把它放到其他什么地方之中。 尽管有类型β→(α→α)的函数(比如,λb.λa.a,它接受一个参数b,忽略参数,并返回恒等函数),却没有类型(α→α)→β的函数,如果存在的话,它会是转换恒等函数到任意值的函数。 === 直觉逻辑 === 尽管所有居留类型对应于逻辑定理为真,逆命题却不为真。即使我们限制我们的尝试到只包含→运算的逻辑公式,所谓的逻辑的[[蕴涵命题演算|蕴涵片段]],不是所有经典有效的逻辑公式是居留类型。例如,类型((α→β)→α)→α是非居留的,尽管叫做[[皮尔士定律]]的对应逻辑公式是重言式。 直觉逻辑是比经典逻辑弱的系统。经典逻辑把自身关注于在抽象的、柏拉图主义意义上为真的公式,而直觉逻辑只在可以为它构造一个证明的时候认为公式为真。公式α ∨ ¬α示例了这种区别;它是经典逻辑的一个定理而不是直觉逻辑的定理。尽管它是经典的真的,在直觉逻辑中这个公式断言了我们要么'''证明'''α要么证明¬α。因为我们不是总能做到这些事情之一,它不是直觉逻辑的一个定理。 在居留类型和有效逻辑公式之间的对应完全是双向的,如果我们限制我们的注意力到[[直觉逻辑]]的蕴涵片段(这也叫做[[希尔伯特代数]])。 == 希尔伯特演繹系統和組合子邏輯的對應 == 形式上刻画直觉逻辑的一个简单方式是[[希尔伯特演繹系統]]。它有两个公理模式。所有形式为 : α→β→α 的公式都是公理,所有形式为 : (α→β→γ)→(α→β)→α→γ 的公式都是公理。 唯一的演绎规则是[[肯定前件]],它声称如果我们已经证明了两个定理,一个有形式α→β而另一个有形式α,我们可以结论出β也是定理。以这种方式推导出来的公式的集合正好是直觉逻辑的集合。特别的是,皮爾士定律不能以这种方式演绎。(对皮爾士定律不能以这种方式演绎的证明请参见[[海廷代数]]条目)。 如果我们增加皮爾士定律为第三个公理模式,这个系统就有能力证明在经典逻辑的蕴涵片段中的所有定理。 考虑λ-表达式的下列两个函数: : '''K''': λxy.x : '''S''': λxyz.(x z (y z)) 可以证明任何函数都可以通过适当的'''K'''和'''S'''相互应用来建立。(有关证明请参见[[组合子逻辑]])。例如,上面定义的函数'''B'''等价于('''S'''('''K''' '''S''')'''K''')。如果一个函数比如'''B''',可以表达为'''S'''和'''K'''的复合,则这个表达式可以直接转换成类型'''B'''的一个证明,它被解释为逻辑公式,是直觉逻辑的一个定理。本质上,'''K'''的外观对应于第一个公理模式的使用,'''S'''的外观对应于第二个公理模式的使用,而函数应用对应于肯定前件演绎规则的使用。 第一个公理模式是α→β→α,并且它精确的是'''K'''函数的类型;类似的第二个公理模式(α→β→γ)→(α→β)→α→γ,是'''S'''函数的类型。肯定前件声称如果我们有两个表达式,一个类型是α→β(就是说,接受类型α的值并返回类型β的值)而另一个类型是α(就是说,类型α的值),则我们应当能够找到类型β的值;明显的,我们可以通过应用这个函数到这个值之上来得到;结果会有类型β。 {| class="wikitable" ! 希爾伯特式直覺蘊含邏輯 ! 簡單類型的組合子邏輯 |- style="height:70px" valign=bottom | <math>\frac{}{\Gamma_1, \alpha, \Gamma_2 \vdash \alpha} Assum</math> | <math>\frac{}{\Gamma_1, x:\alpha, \Gamma_2 \vdash x:\alpha}</math> |- style="height:70px" valign=bottom | <math>\frac{}{\Gamma \vdash \alpha \rightarrow (\beta \rightarrow \alpha)} Ax_ 1</math> | <math>\frac{}{\Gamma \vdash K: \alpha \rightarrow (\beta \rightarrow \alpha)}</math> |- style="height:70px" valign=bottom | <math>\frac{}{\Gamma \vdash (\alpha\!\rightarrow\!(\beta\!\rightarrow\!\gamma))\!\rightarrow\!((\alpha\!\rightarrow\!\beta)\!\rightarrow\!(\alpha\!\rightarrow\!\gamma))}Ax_2</math> | <math>\frac{}{\Gamma \vdash S: (\alpha\!\rightarrow\!(\beta\!\rightarrow\!\gamma))\!\rightarrow\!((\alpha\!\rightarrow\!\beta)\!\rightarrow\!(\alpha\!\rightarrow\!\gamma))}</math> |- style="height:70px" valign=bottom | <math>\frac{\Gamma \vdash \alpha \rightarrow \beta \qquad \Gamma \vdash \alpha}{\Gamma \vdash \beta}\textit{Modus~Ponens}</math> | <math>\frac{\Gamma \vdash E_1:\alpha \rightarrow \beta \qquad \Gamma \vdash E_2:\alpha}{\Gamma \vdash E_1\;E_2:\beta} </math> |} === 证明α→α === 作为一个简单的例子,我们将构造定理α→α的证明。这是恒等函数'''I''' = λx.x的类型。函数(('''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演算的對應== 在下表第一列中的推导规则定义了直觉蕴涵[[自然演绎]](为蕴涵连结词准备一个介入和一个除去规则)的标准系统。在第二列中给出<math>\lambda</math>-演算的标准类型指派(赋值)系统。 {| class="wikitable" |- ! 直觉蕴涵自然演绎 ! lambda演算类型指派规则 |- | <math> {{} \over \Gamma, \alpha \vdash\alpha } \quad {\rm (Ax)} </math> | <math> {{} \over \Gamma, x{:}\alpha \vdash x:\alpha } \quad {\rm (Ax)} </math> |- | <math>{ \Gamma, \alpha\vdash\beta \over \Gamma\vdash\alpha\rarr\beta}\quad (\rarr{\rm{I}}) </math> | <math>{ \Gamma, x{:}\alpha\vdash E:\beta \over \Gamma\vdash \lambda x.E: \alpha\rarr\beta}\quad (\rarr{\rm{I}}) </math> |- | <math>{\Gamma\vdash\alpha\rarr\beta\qquad\Gamma\vdash\alpha \over \Gamma \vdash \beta}\quad(\rarr{\rm{E}})</math> | <math>{\Gamma\vdash E:\alpha\rarr\beta\qquad\Gamma\vdash F:\alpha \over \Gamma \vdash (E\ F):\beta}\quad(\rarr{\rm{E}})</math> |} == 相继式演算 == 希尔伯特式证明是很难构造的。证明逻辑定理的更加直觉的方式是[[格哈德·根岑|根岑]]的[[相继式演算]]。相继式演算以同希尔伯特式证明对应于组合子表达式一样的方式对应于λ-表达式程序。 直觉逻辑的蕴涵片段的相继式演算规则是: :<math> {{} \over \Gamma, \alpha \vdash\alpha }</math> ('''公理''') :<math>{ \Gamma, \alpha\vdash\beta \over \Gamma\vdash\alpha\rarr\beta}</math> ('''Right →''') :<math>{\Gamma\vdash\alpha\qquad\qquad\Sigma, \beta\vdash\gamma \over \Gamma, \Sigma, \alpha\rarr\beta \vdash \gamma} </math> ('''Left →''') Γ表示[[上下文]],它是假设的集合。<math>\Gamma\vdash a</math>指示假定上下文Γ我们可以证明a。逻辑定理完全由其证明不需要假设的那些公式t组成的;就是说,t是一个定理,当且仅当我们可以证明<math>\vdash t</math>。详情请参见[[相继式演算]]。 在相继式演算中的证明是树,它的根是我们要证明的定理,而它的叶子是公理模式实例;每个内部节点必须标记为要么'''Right →'''要么'''Left →''',并且必须包含依据指定规则从子节点推出的一个公式。 相继式演算证明紧密的对应于λ-演算表达式。断言<math>\Gamma\vdash a</math>可以被解释为意味着,给定带有在Γ中列出类型的值,我们可以制造带有类型a的一个值。'''公理'''对应于带有新的无约束的类型的新变量介入。 '''Right →'''规则对应于函数抽象: :<math>{ \Gamma, \alpha\vdash\beta \over \Gamma\vdash\alpha\rarr\beta}</math> ('''Right →''') 什么时候我们能结论出某个程序Γ包含类型α→β的函数?在Γ加上类型α的一个值的时候,包含了足够的机械来允许我们制造类型β的一个值。 '''Left →'''规则对应于函数应用: : <math>{ \Gamma \vdash \alpha \qquad \Sigma, \beta \vdash \gamma \over \Gamma, \Sigma, \alpha\rarr\beta \vdash\gamma}</math> ('''Left →''') 如果我们可以制造类型α的一个值,并且如果给出类型β的一个值,我们还可以制造类型γ的一个值,则类型α→β的一个函数将允许我们制造类型γ的一个值:首先我们可以制造α,接着应用α→β函数于它,并接着使用结果的β值来制造类型γ的一个值。 ===例子=== 例如,(β→α)→(γ→β)→γ→α的相继式演算如下: :<math>\cfrac { \gamma \vdash \gamma \qquad \cfrac { \beta \vdash \beta \qquad \alpha \vdash \alpha} {\beta,\beta \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</math> (β→α)→(γ→β)→γ→α的证明告诉我们如何制造带有这个类型的一个λ-表达式。首先,介入分别带有类型α和β的变量a和b。'''Left →'''规则声称制造程序 (λb.a b),它构造类型α的一个值。我们再次使用'''Left →'''来构造(λb.a (λg.b g)),它仍有类型α。 ==参见== * [[直觉主义]] * [[BHK释义]] * [[直觉类型论]] * [[经典逻辑]] * [[中间逻辑]] * [[线性逻辑]] * [[构造性证明]] * [[Curry-Howard对应]] * [[可计算性逻辑]] * [[博弈语义]] ==引用== === 開創性引用 === * {{Citation | last1=Curry | first1=Haskell | title=Proceedings of the National Academy of Sciences | chapter=Functionality in Combinatory Logic | year=1934 | volume=20 | pages=584-590}}. * <cite id="CurryFeys_paragraph9E">{{Citation | last1=Curry | first1=Haskell B. | last2=Feys | first2=Robert | others=William Craig | title=Combinatory Logic Vol. I | publisher=North-Holland | location=Amsterdam | year=1958}}, with 2 sections by William Craig, see paragraph 9E</cite>. * De Bruijn, Nicolaas (1968), ''Automath, a language for mathematics'', Department of Mathematics, Eindhoven University of Technology, TH-report 68-WSK-05. Reprinted in revised form, with two pages commentary, in: ''Automation and Reasoning, vol 2, Classical papers on computational logic 1967-1970'', Springer Verlag, 1983, pp. 159-200. * {{Citation | last1=Howard | first1=William A. | editor1-last=Seldin | editor1-first=Jonathan P. | editor2-last=Hindley | editor2-first=J. Roger | title=to H.B. Curry: Essays on Combinatory Logic, Lambda Calculus and Formalism | origyear=1969 | publisher=[[Academic Press]] | location=Boston, MA | isbn=978-0-12-349050-6 | chapter=The formulae-as-types notion of construction | pages=479–490|date=1980年9月}} (original manuscript from 1969). * === 對應的擴展 === * {{Citation | last1=Griffin | first1=Timothy G. | title=Conf. Record 17th Annual ACM Symp. on Principles of Programming Languages, POPL '90, San Francisco, CA, USA, 17-19 Jan 1990 | year=1990 | chapter=The Formulae-as-Types Notion of Control | pages=47–57}}. * {{Citation | last1=Parigot | first1=Michel | title=Logic Programming and Automated Reasoning: International Conference LPAR '92 Proceedings, St. Petersburg, Russia | publisher=[[Springer-Verlag]] | location=Berlin, New York | series=Lecture Notes in Computer Science | isbn=978-3-540-55727-2 | year=1992 | volume=624 | chapter=Lambda-mu-calculus: An algorithmic interpretation of classical natural deduction | pages=190–201}}. * {{Citation | last1=Herbelin | first1=Hugo | editor1-last=Pacholski | editor1-first=Leszek | editor2-last=Tiuryn | editor2-first=Jerzy | title=Computer Science Logic, 8th International Workshop, CSL '94, Kazimierz, Poland, September 25-30, 1994, Selected Papers | publisher=[[Springer-Verlag]] | series=Lecture Notes in Computer Science | isbn=978-3-540-60017-6 | year=1995 | volume=933 | chapter=A Lambda-Calculus Structure Isomorphic to Gentzen-Style Sequent Calculus Structure | pages=61-75}}. * {{Citation | last1=Gabbay | first1=Dov | last2=de Queiroz | first2=Ruy | title=Journal of Symbolic Logic | chapter=Extending the Curry-Howard interpretation to linear, relevant and other resource logics | year=1992 | volume=57 | pages=1319–1365}}. (Full version of the paper presented at ''Logic Colloquium '90'', Helsinki. Abstract in ''JSL'' 56(3):1139-1140, 1991.) * {{Citation | last1=de Queiroz | first1=Ruy | last2=Gabbay | first2=Dov | editor1-last=Dekker | editor1-first=Paul | editor2-last=Stokhof | editor2-first=Martin | title=Proceedings of the Ninth Amsterdam Colloquium | chapter=Equality in Labelled Deductive Systems and the Functional Interpretation of Propositional Equality | year=1994|publisher=ILLC/Department of Philosophy, University of Amsterdam | isbn=9074795072 | pages=547-565}}. * {{Citation | last1=de Queiroz | first1=Ruy | last2=Gabbay | first2=Dov | title=Bulletin of the Interest Group in Pure and Applied Logics | chapter=The Functional Interpretation of the Existential Quantifier | year=1995 | volume=3(2-3) | pages=243-290}}. (Full version of a paper presented at ''Logic Colloquium '91'', Uppsala. Abstract in ''JSL'' 58(2):753-754, 1993.) * {{Citation | last1=de Queiroz | first1=Ruy | last2=Gabbay | first2=Dov | editor1-last=de Rijke | editor1-first=Maarten | title=Advances in Intensional Logic | chapter=The Functional Interpretation of Modal Necessity | isbn=978-0-7923-4711-8 | year=1997|publisher=[[Springer-Verlag]] |series=Applied Logic Series | volume=7 | pages=61-91}}. * {{Citation | last1=de Oliveira | first1=Anjolina | last2=de Queiroz | first2=Ruy | title=Logic Journal of the Interest Group in Pure and Applied Logics | chapter=A Normalization Procedure for the Equational Fragment of Labelled Natural Deduction | publisher=[[Oxford Univ Press]] | year=1999 | volume=7(2) | pages=173-215}}. (Full version of a paper presented at ''2nd WoLLIC'95'', Recife. Abstract in ''Journal of the Interest Group in Pure and Applied Logics'' 4(2):330-332, 1996.) === 綜合性論文 === * {{Citation | last1=De Bruijn | first1=Nicolaas Govert | editor1-last=Groote | editor1-first=Philippe de | title=The Curry-Howard isomorphism | publisher=Academia-Bruyland | series=Cahiers du Centre de logique (Université catholique de Louvain) | isbn=978-2-87209-363-2 | volume=8 | chapter=On the roles of types in mathematics | chapterurl=http://alexandria.tue.nl/repository/freearticles/597627.pdf | pages=27–54 | accessdate=2008-08-28 | archive-date=2021-03-06 | archive-url=https://web.archive.org/web/20210306092423/http://alexandria.tue.nl/repository/freearticles/597627.pdf | dead-url=no }}, the contribution of de Bruijn by himself. *{{Citation | last1=Geuvers | first1=Herman | editor1-last=Groote | editor1-first=Philippe de | title=The Curry-Howard isomorphism | publisher=Academia-Bruyland | series=Cahiers du Centre de logique (Université catholique de Louvain) | isbn=978-2-87209-363-2 | volume=8 | chapter=The Calculus of Constructions and Higher Order Logic | pages=139–191}}, contains a synthetic introduction to the Curry-Howard correspondence. * {{Citation | last1=Gallier | first1=Jean H. | editor1-last=Groote | editor1-first=Philippe de | title=The Curry-Howard isomorphism | publisher=Academia-Bruyland | series=Cahiers du Centre de logique (Université catholique de Louvain) | isbn=978-2-87209-363-2 | volume=8 | chapter=On the Correspondence between Proofs and Lambda-Terms | chapterurl=ftp://ftp.cis.upenn.edu/pub/papers/gallier/cahiers.pdf | pages=55–138}}, contains a synthetic introduction to the Curry-Howard correspondence. === 書籍 === *{{Citation | editor1-last=De Groote | editor1-first=Philippe | title=The Curry-Howard Isomorphism | publisher=Academia-Bruylant | series=Cahiers du Centre de Logique (Université catholique de Louvain) | isbn=978-2-87209-363-2 | year=1995 | volume=8}}, reproduces the seminal papers of Curry-Feys and Howard, a paper by de Bruijn and a few other papers. * {{citation | last1=Sörensen | first1=Morten Heine | last2=Urzyczyn | first2=Paweł | title=Lectures on the Curry-Howard isomorphism | publisher=[[Elsevier Science]] | year=2006 | origyear=1998 | isbn=978-0-44452-077-7 | volume=149 | series=Studies in Logic and the Foundations of Mathematics}}, notes on proof theory and type theory, that includes a presentation of the Curry-Howard correspondence, with a focus on the formulae-as-types correspondence * Girard, Jean-Yves (1987-90). ''[http://www.monad.me.uk/stable/Proofs+Types.html Proof and Types] {{Wayback|url=http://www.monad.me.uk/stable/Proofs+Types.html |date=20080418044121 }}''. Translated by and with appendices by Lafont, Yves and Taylor, Paul. Cambridge University Press (Cambridge Tracts in Theoretical Computer Science, 7), ISBN 0-521-37181-3, notes on proof theory with a presentation of the Curry-Howard correspondence. * Thompson, Simon (1991). ''[http://www.cs.kent.ac.uk/people/staff/sjt/TTFP/ Type Theory and Functional Programming] {{Wayback|url=http://www.cs.kent.ac.uk/people/staff/sjt/TTFP/ |date=20210323203228 }}'' Addison-Wesley. ISBN 0-201-41667-0. ==外部链接== * Thompson, Simon (1991). ''[http://www.cs.kent.ac.uk/people/staff/sjt/TTFP/ Type Theory and Functional Programming] {{Wayback|url=http://www.cs.kent.ac.uk/people/staff/sjt/TTFP/ |date=20210323203228 }}'' Addison-Wesley. ISBN 0-201-41667-0. {{DEFAULTSORT:Curry-Howard correspondence}} [[Category:证明论]] [[Category:计算机逻辑]] [[Category:类型论]] [[Category:1934年计算机科学]]
该页面使用的模板:
Template:Citation
(
查看源代码
)
Template:Lang-en
(
查看源代码
)
Template:More footnotes
(
查看源代码
)
Template:Tsl
(
查看源代码
)
Template:Wayback
(
查看源代码
)
返回
柯里-霍华德同构
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息