类型理论(一)

逻辑和计算机科学的类型理论主题是基础。 我们在这里限制了自己在这里绘制一些在逻辑中很重要的方面。 对于计算机科学类型的重要性,我们将读者推荐给Reynold 1983和1985。

1.悖论和罗素的类型理论

2.简单的理论和λ - 微积分

3.分配的等级和法令原则

4.键入理论/集合理论

5.型理论/类别理论

6.系统类型,多态性,悖论的扩展

7.单价基金会

参考书目

学术工具

其他互联网资源

相关条目

1.悖论和罗素的类型理论

罗素介绍了类型的理论,以应对他对集合理论的叙述,并在“附录B:”罗素类型“的”附录B:“的”附录B:“的”附录B中“中引入了一些矛盾。通过分析陈列的定理获得了这种矛盾没有映射

f:x→战俘(x)

(其中POW(x)是类X的子类类别)可以是来说的; 也就是说,F不能使得POW(X)的每个成员B等于X的某些元素A的F(a)。这可以是“直观地”的事实,因为X的X的子集比x的元素有多于X.这一事实的证明是如此简单和基本的证据值得在这里给它。 考虑以下X的子集:

一个= {x∈x|x∉f(x)}。

此子集不能在F的范围内。对于某个A,对于某个,对于某个,那么

a∈f(a)iffa∈a

iffa∉f(a)

这是一个矛盾。

有些言论是有序的。 首先,证明不使用中间排除的法律,因此无论是无效的。 其次,在Du Bois-eRymond的工作中已经存在的方法,用于建立比给定序列的给定序列中的任何功能的速度快得多的实际功能的工作中已经存在于Du Bois-eRymond的工作中。

Russell分析了如果我们将这个定理应用于A类的类,那么允许这样的课程。 然后他导致考虑不属于自己的特殊课程

r = {w|w∉w}。

然后我们有

r∈r。

似乎似乎哥伦已经意识到所有集合的班级不能被认为是一套。

罗素向弗雷格传达这个问题,他的来信和弗雷格的答案一起出现在van heijenoort 1967中。重要的是要意识到制定(*)不适用于Frege的系统。 弗雷格本人在他对罗素的回复中写道时,表情“谓词本身就是预言”并不准确。 Frege在谓词(概念)和对象之间有区别。 a(一阶)谓词适用于对象,但它不能将谓词作为参数。 在Frege系统中的悖论的确切配方使用谓词P的延伸概念,我们将其指定为εp。 谓词的扩展本身是一个对象。 重要的Axiom V是:

εp=εq≡∀x[p(x)≡q(x)]

此Axiom断言P的延伸与Q的延伸相同,如果p和q是实质等同的。 然后,我们可以通过定义谓词将Russell的Paradox(*)翻译在Frege的系统中

R(x)iff [x =εp∧¬p(x)]

然后可以使用Axiom V以关键方式检查它

r(εr)≡¬r(εr)

我们也有一个矛盾。 (请注意,用于定义谓词R,我们已经使用了谓词的Impriticative存在量量化。可以证明弗雷格系统的预测版本一致(参见Heck 1996以及进一步的改进Ferreira 2002)。

从这个帐户中可以清楚地看出,类型的想法已经存在于Frege的工作中:我们发现对象,谓词(或概念),谓词谓词等区别(这一点在1940年中强调。)这个层次结构被称为“罗素(1959年)的扩展层次结构”,罗素作为他的悖论承认其必要性。

2.简单的理论和λ - 微积分

如上所述,区别:对象,谓词,谓词的谓词等,似乎足以阻止拉塞尔的悖论(并且这是Chwistek和Ramsey的认可)。 我们首先描述了众议翅膀和稍后在本节中的类型结构,我们介绍了由于教堂1940基于λ-微积分而引起的优雅配方。 这些类型可以定义为

我是个人的类型

()是命题的类型

如果a1,...,a是类型的(a1,...,a)是相应类型A1,...,a的对象的n-ary关系的类型

例如,对单个的二进制关系类型是(i,i),二进制连接的类型是((),()),对各个的量子类型是((i))。

对于形成命题,我们使用这种类型的结构:因此,如果r为类型(a1,...,a)和i为i = 1,...,...,n,则r(a1,...,a)是一个命题,如果r为类型(a1,...,...,a),...,...,n。 该限制使得不可能形成表单p(p)的命题:p的类型应该是形式(a),并且P只能施加到A型的参数,因此由于a与(a)不同,因此不能应用于自身。

然而,简单类型理论不是预测性:我们可以定义类型(i,i)的对象q(x,y)

∀p[p(x)⊃p(y)]

假设我们有两个人A和B,这样Q(A,B)持有。 我们可以将p(x)定义为q(x,a)。 然后清除p(a)保持,因为它是q(a,a)。 因此p(b)也持有。 以不确定的方式证明,Q(A,B)意味着Q(B,A)。

替代更简单的配方,仅保留了类别的概念,类等级等,由Gödel和Tarski制定。 实际上,这种更简单的版本被Gödel在他的1931年论文中使用了非确定的命题。 发现不可确定命题的发现可能是由启发式论点的激励,即它不太可能会扩展一阶逻辑的完整性定理,以键入理论(参见他在Königsberg1930的讲座结束Gödel收集了工作,第三份,AWODEDY和CARUS 2001和Goldfarb 2005)。 tarski有一个版本的理论中表达的可命定定理版本(见2008)。 看Schiemer和Reck 2013。

我们有0型对象,对于个人,1类型的对象,对于类的类,2型对象,适用于个人类等级,等等。 两个或更多个参数的函数,就像关系一样,不需要包括在原始对象中,因为可以将关系定义为有序对的类,并且有序对是类的类。 例如,有序对的单个A,B可以被定义为{{a},{a,b}},其中{x,y}表示唯一元素是x和y的类。 (Wiener 1914建议与课程相似减少关系。)在该系统中,所有命题都具有形式A(B),其中A是类型N + 1和B型符号的标志。 因此,该系统构建在给定域的任意类或对象子集的概念上,并且在给定域的所有子集的集合可以形成下一个类型的新域。 从给定的个人域名开始,然后迭代此过程。 例如在斯科特1993中强调,在设定的理论中,这种形成子集的过程迭代到Transfinite中。

在这些类型的类型理论中,如在集合理论中,函数不是原始对象,而是表示为功能关系。 例如,添加函数由类型(i,i,i)的对象表示为三元关系。 通过将其作为原始物体引入原始对象的简单类型理论的优雅配方是由教会于1940年给出的。它使用λ-微分符号(Barendregt 1997)。 由于这种制定在计算机科学中是重要的,因为与类别理论的联系,以及用于马丁-Löf型理论,我们将详细描述。 在这种制定中,谓词被视为一种特殊的功能(命题功能),一个返回弗雷格的想法(参见例如Quine 1940)。 此外,函数的概念被视为比谓词和关系的概念更原始,并且不再定义一个功能作为一种特殊的关系。 (OppeNheimer和Zalta 2011呈现了针对这种原始函数表示的一些论点。)该系统的类型如下所定义

有两种基本类型I(个人类型)和O(命题类型)

如果A,B是类型,则A→B,来自A到B的功能类型是一种类型

我们可以以这种方式形成这些类型:

我→o。(谓词的类型)

(i→o)→o。(谓词的谓词类型)

这对应于类型(i)和((i)),但也是新类型

我→我。(功能类型)

(I→i)→我。(功能类型)

写字很方便

a1,...,一个→b

a1→(的a2→...→(一个→b))

通过这种方式

a1,...,一个→o

对应于类型(A1,...,A)。

一阶逻辑仅考虑表单的类型

我,......,我→我。(功能符号类型),和

我,......,我→o。(谓词类型,关系符号)

注意到

一个→b→c

代表

一个→(b→c)

(与右侧的协会)。

对于这一逻辑的条款,由于咖喱(在教堂纸上出现类似的想法)并且在R. Hindley的书籍类型理论上详细介绍,我们不得遵循教会的账户,而是遵循教会的账户,而是略有变化。 像教堂一样,我们使用λ-微积分,这为函数提供了一般符号

是:: =x|mm|λx.m

在这里,我们使用所谓的BNF表示法,在计算科学方面非常方便。 这给出了λ-术语的句法规范,该术语在扩展时,即:

每个变量都是函数符号;

两个功能符号的每个并置是函数符号;

每个λx.m是函数符号;

没有其他功能符号。

函数应用Mn的符号比数学符号不同,这将是m(n)。 一般来说,

m1m2m3

代表

(m1m2)立方米

(与左侧的协会)。 术语λx.m表示为n关联m [x:= n]的函数。 这个表示法如此方便,一个人表示为什么它没有广泛用于数学。 λ-微积分的主要方程(β-转换)

(λx.m)n =是[x:= n]

这表达了λx.m作为函数的含义。 我们已经使用M [x:= n]作为表示当n在矩阵M中的变量x代替时产生的表达式的值。一个通常将该等式视为重写规则(β-还原)

(λx.m)n→是[x:= n]

在没有型号的λ微积分中,可能是这样的重写不会终止。 规范示例由术语Δ=λx.xx和应用程序给出

δδ→δδ

(请注意与Russell的悖论相似。)咖喱的想法然后将类型视为令人疑惑,以兰姆达术语,写作m:a表示m满足谓词/类型a。的含义

n:一个→b

那么

∀m,如果m:a然后nm:b

这证明了以下规则

n:一个→bm:一个

nm:b

是:b [x:一个]

λx.m:一个→b

一般来说,一个与表格的判断有关

的x1:a1,...,xn:an⊢m:一个

其中x1,...,xn是不同的变量,m是x1,...,xn之间的所有自由变量的术语。 为了能够让教会的系统,一个人增加一些常数以形成命题。 通常情况下

不是:o→o

意味着:o→o→o

并:o→o→o

forall:(一个→o)→o

这个词

λx.¬(xx)

表示不适用于自己的谓词的谓词。 然而,该术语没有类型,即,不可能找到这样的

λx.¬(xx):(一个→o)→o

这是罗素的悖论无法表达的事实的正式表达。 莱布尼斯平等

q:我→我→o

将被定义为

q =λx.λy.∀(λp.imply(px)(py))

一个人通常写入∀x[m]而不是∀(λx.m),然后可以将q的定义重写为

q =λx.λy.∀p[意味着(px)(py)]

此示例再次示出了我们可以在简单类型理论中制定非法定义。

使用λ-术语和β-还原最方便,用于代表简单类型理论所需的复杂替代规则。 例如,如果我们希望在命题中替换谓词λx.qax以进行p

意味着(尼龙)(pb)

我地有

意味着((λx.qax)一个)((λx.qax)b)

并且,使用β-减少,

意味着(qaa)(qab)

总之,简单类型的理论禁止自我申请,但并非存在的循环中存在的圆形定义。

λ - 微积分形式主义还允许更清楚地分析罗素的悖论。 我们可以将其视为谓词的定义

rx =¬(xx)

如果我们认为β-减少作为展开定义的过程,我们会看到已经有一个问题,了解R R的定义

rr→¬(rr)→¬(¬(rr))→...

在某种意义上,我们有一个非良好的定义,这与矛盾一样有问题(一个与其否定等同于其否定的命题)。 一个重要的定理,归一化定理说,这不能用简单的类型发生:如果我们有m:a,则以强的方式常规(从m终止开始的任何序列)。

有关此主题的更多信息,我们指的是教会简单类型理论的条目。

3.分配的等级和法令原则

拉塞尔介绍了另一个层次结构,这并不是由正式系统中表达的任何正式悖论的动机,而是担心“循环”以及与骗子的悖论相似的非正式悖论。 如果一个男人说“我撒谎”,那么我们就会让人想起罗素的悖论:一个相当于自己否定的命题。 如果我们将整数定义为“不定寸不到100字”,则获得另一个非正式的这种矛盾的情况。 为了避免这种非正式的悖论,罗素认为有必要介绍另一种层次结构,所谓的“分枝层次”。 对如此层次结构的需求暗示在拉塞尔1903的附录B中。有趣的是,这在那里与等同的命题的身份问题和一类命题的逻辑产物相关联。 彻底的讨论可以在拉塞尔1959年第10章中找到。由于这种分枝层次的概念在逻辑和尤其是校正理论中一直是极其影响力,我们在一些细节中描述了它。

为了进一步激励这种层次结构,这里是罗素的一个示例。 如果我们说

拿破仑是可靠的。

我们不将这句话引用到任何属性的汇编。 据说,“待玄会”的财产是预测性的。 如果我们另一方面说

拿破仑拥有伟大的普通品质

我们指的是素质的整体。 据说,“拥有一般普通的所有品质”是令人生畏的。

另一个例子,也来自罗素,表明了人们如何导致骗子悖论中想起的问题。 假设我们建议定义

一个典型的英国人是一个拥有大多数英国人所拥有的所有物业的人。

很明显,大多数英国人没有大多数英国人拥有的所有物业。 因此,根据这个定义,典型的英国人应该是无典型的。 根据Russell的说法,问题是,“典型”一词已经通过对所有属性的引用来定义,并且已被视为本身属性。 (在定义随机数的概念时出现类似的问题,CF.Martin-löf“建设性数学”(1970)的注意事项。)Russell推出了分枝的层次结构,以处理此类明显循环非法定义。 一个人应该区分一阶属性,就像是Corsican一样,这不参考属性的整体,并考虑二阶属性仅引用一阶属性的总体。 然后可以引入三阶属性,可以参考二阶属性的总体,等等。 这清楚地消除了与Impriticative定义相关的所有循环。

在大约同一时间,Poincaré进行了类似的分析。 他强调了“令人遗憾的”分类的重要性,而不是使用量化在这一课程中定义课程的元素(Poincaré1909)。 Poincaré使用了以下例子。 假设我们有一个元素0,1和一个令人满意的集合

x + 0 = 0

x +(y + 1)=(x + y)+1

让我们说,如果它包含0并且如果它保持x,则该属性是归纳。

一个谨慎的,潜在的“危险”,定义是如果满足所有归纳属性,则定义一个元素是一个数字。 然后易于表明这个属性“是一个数字”本身就是归纳。 实际上,0是一个数字,因为它满足所有归纳属性,如果x满足所有归纳属性,那么x + 1就是这样。 同样,很容易显示x + y是一个数字,如果x,y是数字。 实际上,x + x的属性q(z)是incuctive:q(0)由于x + 0 = x而保持,如果x + z是数字,则x +(z + 1)=(x + z)+1。 然而,这种整个论点是循环,因为财产“成为一个数字”不是预测性,并且应该被怀疑治疗。

相反,一个应该引入一个分布的属性和数字层次结构。 在开始时,一个只有一阶的归纳属性,它不将其定义引用到属性的整体,并且一个定义订单1的数量是满足所有第一阶归纳属性的元素。 然后可以接下来考虑二阶电感属性,可以参考一阶属性的集合,以及订单2的数量,即满足订单2的归纳属性的元素。然后,可以类似地考虑订单3的数量,等等。 Poincaré强调这一事实是,许多订单2是FortiOri offor ofder 1,更一般地,多个订单N + 1是FortiOri命令n。 因此,我们有一个越来越多的限制的序列:订单1,2,...的归纳属性和越来越多的对象系列的序列:订单1,2,...也,属性“为多个顺序n”本身是命令n + 1的归纳属性。

如果x,y是命令数量,似乎似乎尚不能证明x + y是命令n。 另一方面,可以示出如果x是多个订单n + 1,并且y多个顺序n + 1则x + y是多个顺序n。 实际上,“x + z是多个顺序n”的属性p(z)是命令n + 1:p(0)保持的归纳属性,因为x + 0 = x是命令n + 1的数量,因此订单n,如果p(z)保持,则如果x + z是一个顺序n,那么x +(z + 1)=(x + z)+1,且SO p(z + 1)保持。 由于Y是N + 1的数量,并且P(z)是订单N + 1,P(Y)保持的归纳属性,因此x + y是多个订单n。 该示例说明了由分布层次结构引入的复杂性。

如果像罗素一样弗赖尔格,则进一步放大复杂性,甚至定义了自然数量的基本对象,如类的类。 例如,数字2被定义为具有恰好两个元素的所有类别的类别。 我们再次在分布层次结构中获得不同订单的自然数。 除了罗素本人外,尽管所有这些并发症,Chwistek试图以分枝方式开发算术,并通过Skolem强调这种分析的兴趣。 在最近的发展中看到Burgess和Hazen 1998。

(本章完)

相关推荐