罗素问题 ——来自知乎大神

作者:LLLBK
链接:https://www.zhihu.com/question/20511488/answer/133390930
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

知乎相关领域的大神已经很多了,但是大神好像不太能脱离术语说话,并且没有人提到罗素本人的解决方案——类型论。所以还是答一下。

我的回答分三部分:澄清罗素悖论的一些误解,以ZF系统为例说明公理集合论如何避免罗素悖论,不精确的介绍罗素本人提出的类型论。



首先真的想澄清一点:
罗素悖论不等于理发师悖论!理发师悖论严重误导了没有相关知识背景的人!

为什么这么说?理发师悖论中定义了一个这样的理发师:只给那些不给自己理发的人理发,然后分析“他应不应该给自己理发”这个问题,最后得出:“他应该给自己理发”等价于“他不应该给自己理发”。而这是一个矛盾。
但是想想看,以上论证过程不正是一个归谬论证么?从一定的前提出发,经由逻辑推演最终得出矛盾的结论,这不就是归谬法吗?而归谬法说明了什么?不就是说明了这种理发师根本就不能存在嘛。所以理发师悖论实际上是在告诉我们,这样的理发师是不存在的。这有什么问题吗?并没有啊!这算什么问题,这就能带来数学危机?开什么玩笑。

我们再看罗素悖论:首先定义一个性质P:"不属于自己",然后定义一个集合S,这个S就是满足P的那些集合构成的集合,也就是问题叙述中的“全体非本身分子集合构成的集合”。那么类似理发师悖论,我们就会发现,用归谬法可以证明这个S并不存在。So far so good. 这个S不存在又有什么关系?
还真有关系,因为素朴集合论有一条概括规则:
对于任何一个合理的性质P,都存在一个集合来刻画它,这个集合由所有满足P的对象构成。(合理的,指的是外延明确的,也就是我随便找一个东西一定可以判断它有还是没有这个性质,不会出现既有这个性质又没有这个性质的情况,也就是任意a,要么Pa要么
egPa。)
比如“是大写英文字母”这一性质就可以确保{A, B,..., Z}这个集合是存在的。这条概括规则可以说是素朴集合论最基础的规则之一。回过头来看罗素悖论里的那个性质P,它显然是合理的性质,那么根据概括规则S就必须存在,但是归谬法已经证明了S不可能存在,这里出现了关于S存不存在的矛盾。这个矛盾才导致了罗素悖论。

既然出现了矛盾的结果,那就正好说明了概括规则是有问题的,是有内在矛盾的。换句话说,理发师悖论只不过是罗素悖论证明过程中的一个部分,它用“S属不属于自身”这个矛盾证明了S不可能存在。然后我们再用概括规则证明了S必须存在,这个“S存不存在”的矛盾说明了概括规则的内在矛盾性,导致了素朴集合论的崩溃。所以请不要再拿理发师悖论来类比罗素悖论了,一个小小的理发师不存在并不能导致数学危机。

啰啰嗦嗦了半天还没进入正题,只是希望澄清一下许多人对罗素悖论的误解。




公理集合论的进路( ZF(C) , NBG(C) , ...)

素朴集合论推出了逻辑矛盾,逻辑矛盾难道还能解决?显然不能,我们只能放弃素朴集合论。但是素朴集合论之前是作为整个数学的基础存在的啊,放弃了之后总不能撒手不管了,肯定得提一套新的理论出来作为数学的基础。这里有几种进路,其中一种就是其它答案中提到的公理化集合论的进路,也是主流的进路。

需要注意到,用理发师悖论式的证明来得出S不存在,这是不需要依靠集合论本身的,只需要用最基础的逻辑就够了,因此不管你集合论长什么样子,反正“S不存在”是必然为真的。
我们需要做的是,构造一个新的集合论,使得这个集合论本身也能推出“S不存在”,而不是像素朴集合论的概括规则一样推出“S存在”。这才是我们的最终目标。下面都是在围绕这个目标。

素朴集合论除了概括规则以外,其它的很大一部分都挺好的,总不能全盘否定。所以大家觉得应该改进而不是抛弃。改进的办法就是,对集合做出各种限制,从而避免出现罗素悖论那种情况。下面以ZF系统为例,用人话说一下究竟是怎么避免了罗素悖论。我们需要证明的是,ZF系统无法推出“S存在”,那么矛盾自然就消除了,根据理发师悖论的归谬证明,就可以得出S不存在了。

ZF系统是一个纯粹的公理系统,它的公理模式规定了集合的一些性质,以及如何从已有的集合产生新的集合。通过这些公理来达到对集合做出限制的目的。有一条公理叫“分离公理”跟概括规则长得很像,它说的是:
对于任意集合x和任意合理性质P,都可以产生出一个集合y,y由x中那些满足P的元素构成。(这里的合理和上面的合理不太一样,这里的合理指的是可以用该公理系统中的合式公式来刻画,不过这不是关键,所以我还是用了合理二字)
通俗的说,分离公理就是给概括规则加了个限制:由性质P定义出集合,必须在现有的集合内部分离出那些满足P的集合,不能像原来那样没有边界。

还有一条公理叫正则公理
任意非空集x,里面肯定包含了一个元素y,使得x和y没有公共元素,也就是xcap y=emptyset

还有一条xx公理保证了,如果x是集合,那么{x}也是集合,这条公理具体名字我不记得了...


下面写一下ZF系统避免罗素悖论的通俗版(说了是通俗版就不要喷不严谨了吧):

对于任意x,根据xx公理,可得{x}也是集合。由于{x}是集合,所以根据正则公理,{x}里面有一个元素跟{x}本身交集为空,但是{x}里面只有一个元素x,也就是说x跟{x}不相交,xcap{x}=emptyset,也就是说x不是自己的元素。因此,forall x, x
otin x
而罗素悖论里定义的那个S是什么?就是所有不属于自己的集合构成的嘛,既然每个集合都不属于自己,那么S就是所有集合构成的集合,也就是大全集。但是根据分离公理,要想通过性质P定义出一个集合,必须从已有的集合里面分离出来,但是哪个集合能分得出大全集啊...显然,没有一个集合有这样的本事可以分离出一个大全集。所以,根据公理集合论可以推出:大全集S(也就是罗素悖论里的那个S)是不会存在的,既然S不存在,那么就不会产生罗素悖论中关于“S存不存在”的矛盾,因此就避免了矛盾。

严谨的证明版本如下:
假设存在大全集,那么对性质“x
otin x”应用分离公理,就可以得到S={x|x
otin x}是一个集合,但是经过分析可知Sin S当且仅当S
otin S,发生矛盾,因此假设错误,大全集不存在。而S其实就是大全集本身,因此S也不存在。因此不会产生罗素悖论中关于“S存不存在”的矛盾。证毕。




类型论的进路
(有更新,因为之前我自己对类型论的理解有偏差)

上面是ZF系统的解决方案。公理集合论的方案是主流方案,但其实罗素本人也想出来了一个方案——类型论,不知道为什么所有的答案都没有提到,虽然类型论确实不是主流,但好歹是罗素本人提出来的,给个面子也应该介绍一下啊......

我们先跑个题,看看说谎者悖论:这句话是谎话。
这句话之所以成为悖论,是因为它描述的对象正好是它本身,它在试图谈论自己本身的性质。
理发师悖论其实也来源于这种自指——理发师说的话里面包含了
作者:LLLBK
链接:https://www.zhihu.com/question/20511488/answer/133390930
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

他自己。
一般的说来,自指总会导致一些不好的事情,比如数论系统的自指导致了哥德尔不完全性定理,判定一切图灵机停机的图灵机的自指导致了停机问题,而S={x|x
otin x}的自指则导致了罗素悖论。

罗素想要一网打尽由自指产生的问题,他在《数学原理》中说:
使我们能够避免不合法总体的那个原则可以陈述如下:“凡是牵涉到一个汇集的全体,它本身不能是该汇集的一个分子”......必须使关于总体的陈述不属于这个总体的范围之内。

罗素提出了一个很直观的解决方案——分阶。(也叫分类型,分type)

直观地认识这个世界,人会觉得世界是由一个一个的个体对象组成的,比如苹果桌子电脑手机等等,这都是现实中存在的实体。我们把这种东西叫做对象,它们属于type 0.
对象可以构成集合,比如一袋苹果,几部手机,这些都是对象构成的集合。这样的集合我们称为type 1,一阶的集合。
一阶集合自己也可以构成集合,这就是“集合的集合”,这和对象的集合显然有区别,我们称这种集合叫type 2,二阶集合。
......
类似的可以构造更高阶的集合。显然,只能是高阶集合包含低阶对象或集合,不能同阶之间包含,更不能低阶包含高阶。按照这种规定,我们根本不能笼统的称一个x是集合,我们只能称它是哪一阶的集合。
现在我们看S={x|x
otin x},由于类型论精确了集合的概念,我们就得问,这个S究竟是哪一阶的集合?会发现它哪一阶都不是,证明如下:
对任意n,假设S是n阶集合,对n+1阶集合x来说,由于x
otin x,那么就有xin S,则违反了类型论的规定,故假设错误。因此,对任意n,S都不是n阶集合。这就把S排除在集合概念之外了,避免了罗素悖论。

这还不够。

集合论的语言是什么?是一阶语言,也就是包含forall, exists, x, 
eg, vee,dots等等的语言。我们要对集合论进行类型化,为什么不干脆完全改造一阶语言?别忘了罗素是谁,罗素是理想语言主义的领军人物,他甚至想着改造自然语言以适应逻辑语言。改造一阶语言具体方案如下:

(以下可能需要一些一阶语言的基础,但我会尽量用人话说...)

先简单提一下一阶语言:forall,exists,wedge,vee,
ightarrow这些就不说了,那些构成公式的规则也不说了,基本谓词PQR这些也不说了,这些都可以自行查找。这里的关键是,一阶语言是要有论域的,论域就是我们应用一阶语言去谈论的东西。一阶语言本身没有任何意义,它只是一堆无意义的符号而已。只有当我们指定了论域,也就是指定了我们到底用符号在表示什么东西,一阶语言才是有意义的

一阶语言的论域,就是0阶的对象,和0阶的对象变元。对象就是前面说过的那些,比如“苹果”“足球”这种个体实体。对象变元就是用来指代不确定对象的一个记号,也就是x啊y啊这些可以构成forall x, exists x的量化公式的变元。

一阶语言的谓词(也就是性质),是针对0阶的对象和对象变元而言的。基本谓词“P,Q”(比如“是红的”、“是圆的”)等等当然算一阶谓词,因为它们是直接描述0阶实体对象的性质的。但一阶谓词还包括一些更多的东西,比如这个:“存在一个论域中的对象x,x的颜色和...不相同”。这里描述的也是一个0阶对象的性质,这个性质就是“有一个颜色不相同的x存在”。

一阶命题当然就是用一阶谓词描述具体0阶对象性质的那些命题啦。比如“这个苹果是红的”“存在一个东西跟这个苹果的颜色不同”等等,都是一阶命题。


二阶语言想要描述的是一阶的东西,包括一阶谓词和一阶命题。具体的做法就是,在原有的论域中加入所有的一阶谓词和一阶命题,然后在语言中加入一阶谓词常元变元和一阶命题常元变元。

这样说好像不太好理解,直观的说就是二阶语言谈论的对象不仅包括原有的0阶实体对象,还包括一阶语言中的命题和性质。那么二阶语言中的“性质”(二阶谓词)就应该是“性质的性质”“命题的性质”,二阶命题就应该是“性质的命题”“命题的命题”。举例来说:“甜的”是一个形容食物的一阶谓词,那么 “用来形容食物的” 就是一个二阶谓词,它描述了“甜的”这一谓词的性质。对应的二阶命题就是“甜的 这一性质是用来形容食物的”。
为了更好地理解二阶性质和二阶命题,可以把它跟一阶进行对比,“苹果是甜的”描述的是苹果这一实体的性质,“甜的 这一性质是用来形容食物的”并没有描述任何实体的性质,它是“甜的”这一性质的性质。

类似的,可以构造更高阶的语言,只要把低阶的命题和谓词纳入论域,并且在语言中添加相应的谓词常元变元和命题常元变元就OK。高阶命题描述的是低阶对象的性质。这里精确化了“命题”“谓词”的概念,将命题和谓词分阶了。

这种类型论理论上可以消除一切由于语言上的自指而产生的悖论。比如说谎者悖论,“这句话是谎话”,这句话到底是哪一阶的命题呢?不管它是哪一阶的命题,它都不能描述自己,因为一个命题只能描述比自己更低阶的东西。因此这句话不是一个合法命题,不是命题也就没有什么真假之分,因此不构成悖论。


类型论还是很直观的,“关于命题的命题”“关于性质的性质”“集合的集合”,好像确实跟普通的命题和普通的性质和普通的集合有分别,确实高一个阶层。但这种类型论并没有成为主流,原因如下:

从数学上说:集合论是要用到数学上的,一阶语言更是数学的基础语言,类型论不允许我们笼统的说“所有的集合”“所有的元素”等等,必须区分阶才能继续讨论。这给数学带来很大的麻烦,比如我们用集合论刻画自然数有一种方法是0=emptyset,1={0},2={0,1},3={0,1,2}...这时要讨论自然数的性质就很麻烦了,每个自然数阶数都不一样。

从哲学上说:类型论要面临一个很重要的问题——“是真的”这一谓词属于哪一阶?我们可以说一阶命题“苹果是甜的”是真的,也可以说“甜的 这一性质是用来形容食物的”这个二阶命题是真的,我们可以说任意阶的命题是真的。那么“是真的”就高于任意的阶,但阶数是无穷的,因此这是不可能的。
当然,支持类型论的哲学家有自己的办法,比如:可以否认“是真的”是一个谓词,他们可以说“真”并不是命题的性质。
不考虑上述哲学上的撕逼。还有一点就是,类型论管得太宽了。他禁止了一切形式的自指,然而并非所有自指都是坏的或没有意义的,比如“这句话有七个字”就不是坏的。有些自指是有必要的,比如书的末尾卖个萌写上“这句话是本书的结尾了”。



这就是本回答的结尾了。
原文地址:https://www.cnblogs.com/liuzhenbo/p/7887726.html