罗素悖论提出的背景研究1902 年6 月16 日,罗素的着作《数学原理》( Principles of Mathematics) 发表前夕,他给弗雷格写了一封信,信中写道: “我在读您的着作《算术基础》( Grundgesetze derArithmetik) 时发现一个困境……。
” 他提到的这个困境可以描述为:设谓词w 表示: 不能描述自己的谓词。
那么w 能不能描述自己呢? 无论肯定还是否定的回答都会推出反面,因此我们只能说w 不是一个谓词。
罗素从这个困境想到了另一个看似不同但更一般的问题: 由所有不属于自己的集合组成的类也存在同样的困境。
因此,由这些不属于自身的集合( 每个都是一个总体) 形成的类( 总体)是不存在的。
这样,我们可以得出结论: 按照这种方式定义形成的类不能作为一个总体。
实际上,他们是两个截然不同的问题。
第一个问题涉及到谓词,一个不能描述自己的谓词。
正如弗雷格在关于概念和对象的理论中描述的那样,他在给罗素的回复中也强调,如果严格区分个体能够满足的谓词和谓词能够满足的( 高阶) 谓词的话,那么考虑自己描述自己的谓词是没有意义的。
“不能描述自己的谓词”是不存在的,因此,悖论也就不会发生。
当时,罗素并没有接受概念需要分类型的想法,而仅仅在《数学原理》的附录 B 中提到这种可能性。
对于罗素来说,第一个悖论是最重要的。
他只是在考虑其他理论,比如弗雷格的理论时,才在这些理论中描述第二个悖论的相关形式。
相反地,弗雷格却立刻意识到第二个悖论揭示出了他的系统中存在的问题。
仅仅 6 天之后,6 月22 日,弗雷格马上给罗素写了回信,信中这样写道:看来一个等式的一般形式不一定总能写成赋值过程的等式①,我提出的基本定律V②是错的,§31 中的解释也不足以保证我给出的符号组合在任何情况下都有意义。
罗素的确是在考虑康托定理时想到了这个悖论。
在康托定理中,如果万有集存在,那么对于任意一个集合,都不存在它的幂集( 所有子集的集合) 到该集合的一一映射。
在康托定理的证明中,所有不包含自身的集合构成的悖论集是在万有集的幂集上添加得到的。
然而罗素自己并没有意识到康托集合中的这个问题,当他最早在《数学原理》中提到这个悖论时,类被称为“类概念”,实际上是用来表示类中的元素。
类中的元素可以是一个或多个,而恰恰是在只有一个元素的类中,这个元素可以作为这个类的代表。
这样,“不能描述自身”这个谓词正好可以用在它自身上,这就导致了矛盾的产生。
本文会追溯第二个悖论更早一点的历史,这个悖论是由策梅罗( Zermelo) 预言的。
E.施罗德引发了这个问题的讨论,后来弗雷格,胡塞尔都参与了讨论。
最终,它出现在策梅罗给弗雷格的信中,同时希尔伯特也得出了他自己的形式。
因此,说起这个悖论的历史,远比罗素给弗雷格写信的时间更早。
罗素只是对悖论的第一种形式感兴趣,他写信给弗雷格只是为了说明弗雷格的《算术基础》中也有类似的问题。
讨论谁先提出悖论的第二形式就像介入了数学家们关于“首发现”的争论,但它确实引出了逻辑史上的一系列趣事,有些被大家所熟知,但之前并没有被联系起来。
其中最有名的“首发现”声明是策梅罗于1908 年在他的论文《良序可能性的新证明》( “A new proof ofthe possibility of a well-ordering”) 中提出的。
当策梅罗提到罗素的《数学原理》中的“集合论悖论”时,他加了一个脚注( 编号9) :……然而,我已经独立于罗素发现了这个悖论,并于1903 年之前就与希尔伯特教授等人讨论过。
③1903 年希尔伯特在给弗雷格的信中,除了感谢弗雷格提供《算术基础》第二卷中关于罗素悖论的讨论的副本外,希尔伯特还提到他在几年前就听策梅罗提起过这个悖论。
这一点恰好印证了策梅罗的声明。
实际上,希尔伯特自己也提出过类似的悖论,是关于数的集合到其自身的所有“自映射”序列所构成的集合。
希尔伯特用对角线法证明了不存在这样的“自映射”④在策梅罗的传记中,艾宾浩斯沿袭了“哥廷根”的惯例,把这个悖论的发现归功于策梅罗一个人。
( 实际上,艾宾浩斯在传记中更倾向于使用 A. 弗莱恩克( Abraham Fraenkel) 给出的术语“策梅罗———罗素悖论”⑤。
)“希尔伯特悖论”和“策梅罗悖论”很相似,同样证明了某种集合不存在。
但在“希尔伯特悖论”构造的集合中,可以给出标准集合论的运算。
我们可以根据希尔伯特1905 年7 月10日的讲稿重新构建这个悖论⑥。
希尔伯特通过构造数集M 上的自映射构成的集合到数集M 的映射,然后使用集合论的两个原理推出了矛盾。
第一个集合论的原理允许我们“把几个甚至无数个集合并成一个集合”,另一个原理认为“任何情况下,良定义的集合都可以通过自映射运算从良定义集合中生成”。
因此,有了集合M,我们就可以描述出所有从M 到M 的映射集合MM。
希尔伯特考虑任意多次使用并集运算和自映射生成的集合U,然后他再次对U 使用自映射原理得到 F =UU。
这样,F 应该是U 的子集,但运用与证明康托定理类似的对角线法,我们可以得到 F 中一个不属于U 的元素。
但是,希尔伯特的描述并不精确,尤其是他提到“任意多次”使用两种运算来生成U。
有人猜测 F 是下面无限多个集合的并集构成的:MM,( MM)M,MM∪( MM)M,( ( MM)M)M) ,MM∪( MM)M∪( ( MM)M)M) ,…如果我们任意多次重复这个过程,那么UU中的任意元素都已经被包含在这个过程中,因此这个过程生成的元素不会多于U 中的元素。
这样我们立刻知道所谓“任意多次的”运算应该超出所有的序数,对M 迭代ω 多次后作并集,在每个序数上都重复这个过程做并或做幂,如此反复。
这样看来,“希尔伯特悖论”证明了所有序数的集合是不存在的。
据说,希尔伯特怀疑其他描述这个悖论的形式中所用的“哲学”概念,例如“所有集合的集合”,或“所有序数的集合”,因此他愿意使用更一般的数学概念,如映射,“任意多次”运算。
按希尔伯特的方式,悖论可以从两个非常简单的运算( 函数空间和对已构造出来的事物集合求并集) 得出,所以它不仅仅是集合或类这种概念内部所产生的矛盾。
正如策梅罗所说,它是一个理论内部的矛盾,一个真正的悖论( antinomy) 。
希尔伯特认为悖论是可以通过构建( 可证明的) 一致的公理集合论来避免的。
1902 年4 月16 日,策梅罗给他以前的老师———E. 胡塞尔( Edmund Husserl) 写了封信。
信中策梅罗报告了他几年前的一个结果⑦,胡塞尔在信上的批注可以在胡塞尔的档案中找到⑧。
这封信源于胡塞尔1891 年为施罗德的《逻辑代数》( Algebra der Logik) 写的书评⑨。
施罗德在书中证明了如果包含“所有可以想到的东西”的万有类存在,那么一定会导致矛盾。
( 这样看来,施罗德和康托都是最早发现这个不能扩充的概念的人。
)为了在德国的逻辑学家中推广C. 皮尔士( Charles S. Peirce) 的工作以及“他的学院”瑏瑠施罗德进行了一系列的讲演。
在第四次关于类的理论的演讲中,施罗德通过定义“包含”( Subsumption) 这个概念提出了类之间的代数运算。
称一个集合a 包含于集合b,用符号表示为,读作“a 是b”或“所有的 a 是b”,显然这就是我们现在所谓的“a 是b 的子集”,表示为 a b。
施罗德关于集合运算的内容与布尔提出的“论域”的概念是相悖的,布尔用 1 表示类代数中的论域( 全集) 。
下面是弗雷格引用施罗德的论述:就像前面提到的,0 被包含在每个类中,可以从拓扑空间 1 中去掉; ……0 可以满足每个谓词。
假设用 a 表示一个类,类中元素是等价于 1 的拓扑空间类( 只要我们把所有能想到的都放入拓扑空间中 1 中,这显然是允许的) ,那么,a 中显然只包含一个拓扑空间类,即符号 1 自身,或者说是整个拓扑空间。
除此之外,这个类还包含“什么也没有”,即0。
因此,0 和 1 是等价于 1 的类,进而我们不仅有 1 =1,还有0 =1。
因为在这个例子中,作用于类的谓词是“恒等于1”。
根据第二条原理,对于作用于类的谓词,这个谓词必须也能作用于类中的每个个体。
对于施罗德来说,所有的谓词都是关于“包含”的论断,谓词“等于1”,就是其中的一个,我们现在一般写作“x=1”。
如果我们用0 表示空集,空集包含于任意集合 a 就可以表示为0a,当然也就包含于等于0 的集合,因此我们就能得到0 = 1,得出矛盾瑏瑶! 施罗德此处给出的是不存在绝对的万有类 1 的证明。
存在不包含于 1 的集合,尤其是空类0。
胡塞尔在书评中认为施罗德混淆了子集( 概念“subordinate class”) 和元素的概念。
虽然空类是任何集合的子集,但它不是任何集合的元素。
尤其从“0 是等于 1 的元素组成的集合的子集”并不能推出“0 等于1”。
而前面的矛盾正是源于 1 是所有集合构成的集合这个假设的。
策梅罗后来在给胡塞尔的信中指出: “关于这一点,如果不考虑证明的方法,施罗德是对的……”从原始的德文加比斯伯格速记法中得到的相关论述如下:由自身的子集m,m‘,……为元素形成的集合M 是不一致的,即,这样的集合( 如果我们非要把它看作集合的话) 会导致矛盾。
证明: 我们考虑那些不以自己为元素的子集m。
M 中的元素是M 自己的子集,那么M 的子集也会包含子集作为元素,他们自己( 不)是元素。
现在我们考虑的恰是那些不含有自己的子集m,但可能包含其他的子集。
) 上述所有m 构成了集合M0( 即M 的所有不含自身作为元素的子集形成的集合) ,我们证明M0具有下面的性质,( 1) M0不是M0自身的元素。
( 2) M0是M0自身的元素。
考虑( 1) : M0作为M 的子集是M 的元素,但不是M0的元素。
否则,M0就包含一个元素( 即M0本身,也是M 的子集) ,这个元素以自身为元素。
这与M0的定义矛盾。
考虑( 2) : 因为由( 1) 可知,M0是M 的子集,且不包含自身作为元素。
那么根据M0的定义,M0是M0中的元素。
这个证明表明任何集合都不可能包含自己的所有子集使之作为元素。
一个包含所有东西的万有集当然包含自己的子集,因为它们也是集合。
集合M0中的元素是所有不以自身为元素的万有集的子集,我们简单地用M0表示由所有不包含自身的集合组成的集合。
这样,M0就是罗素集,M0会导致矛盾的证明与罗素给出的是相同的: 如果说M0是自身的元素则可以推出反面,反之,如果说M0不属于自己却又推出应该属于。
我们的矛盾和罗素信中提到的是一样的,二者都可以通过直接对所有集合构成的集合( 在策梅罗的悖论中,集合至少包含它自己的所有子集) 使用康托定理得到。