基于对角线引理和维特根斯坦思想对于悖论的分析庄朝晖厦门大学计算机科学系悖论的定义悖论的出现:在20世纪初期关于数学基础的讨论中,出现了大量的悖论,比如康托尔悖论、罗素悖论、理查德悖论等等。悖论的定义:“如果某一理论的公理和推理规则看上去是合理的,但在这个理论中却推出了两个互相矛盾的命题,或者证明了这样一个命题,它表现为两个互相矛盾的命题的等价式。那么,我们说这个理论包含一个悖论。”对角线引理两类悖论:拉姆塞((FrankP.Ramsey))在“数学基础”论文中,把悖论分为逻辑-数学悖论和语义悖论两大类,后来这两大类悖论也被称为语形悖论和语义悖论。对角线引理:1962年,汤姆森(J.F.Thomson)发表论文“论几个悖论”,令人信服地显示所谓的语形悖论和语义悖论实际上有共同的结构,都与康托尔对角线方法有密切的关联。理发师悖论理发师悖论:在一个小镇上有一位理发师,这位理发师遵守这样的规则:“给而且只给那些不给自己理发的人理发”。现在问理发师是否要给自己理发。如果理发师不给自己理发,那么根据定义,他要给自己理发;如果理发师给自己理发,那么根据定义他不能给自己理发。主流的(蒯因)解决方案:不存在这样的理发师。或者,不存在能够遵守该规则的理发师。因此,“理发师悖论”往往被认为是伪悖论。本文认为,理发师悖论依然是典型的悖论。对于理发师悖论的可能证明过程:假设有如此一位理发师。如果他要给自己理发,根据他的规则,他不给自己理发。如果他不给自己理发,根据他的规则,他要给自己理发。矛盾。因此假设不成立,如此一位理发师不存在。这样的证明过程是可疑的。以下我们进行新的分析。理发师的规则,对于他人都是没有问题的。问题发生在对于自己。以下是简化版。对于理发师悖论的分析例1:小庄说:我给自己理发当且仅当我不给自己理发。(在保留特征后的简化版)可能解决方案是:不存在能够遵守该规则的小庄,不存在既给自己理发又不给自己理发的小庄。这样的解决方案是有些奇怪的。本文的方案:规则对于“小庄要不要给自己理发”没有定义,只是给出了一个矛盾式。如果认为存在定义,就会产生矛盾。两种方案比较:本来没有规则,谈不上有没有能守规则的人。本文的方案更根本。例2:小庄说:我给自己理发当且仅当我给自己理发。分析:规则对于“小庄要不要给自己理发”,什么都没有定义,只是给出一个重言式。共同的是,对于“小庄要不要给自己理发”什么都没有定义,什么都没有讲。没有给出定义的两种语句:矛盾式是不懂得如何讲话,什么都没有讲。重言式是懂得如何讲话,但讲了一句废话,也什么都没有讲。递归函数的例子例3:f(x)=f(a)当x=a分析:f(a)的值其实没有定义。例4:f(x)f(a)当x=a分析:f(a)的值其实没有定义。如果认为存在定义,会产生矛盾。例5:f(x)=1-f(a)当x=a,f(x)=0,其他情况分析:f(a)的值其实没有定义。如果认为存在定义,会产生矛盾。同样地,对于理发师悖论,解决方案是:理发师给出的规则,对于“理发师是否要给自己理发”没有给出定义。这个规则用于自身时,是没有定义的。如果认为存在定义,就会产生矛盾。理发师貌似给出对于所有人的规则,然而其实上,他并没有给出对于自己的规则。背后的成见:当我们给出规则的时候,我们以为规则必然处处有定义,其实规则并不一定处处有定义。对于理发师悖论,主流解决方案是“不存在符合规则的理发师”,而我们的解决方案是:“理发师给出的规则对于是否给自己理发并没有定义,如果认为有定义就会矛盾”。“理发师是否给自己理发”,是没有定义的。在没有规则的地方,谈不上有没有能守规则的人。对角线引理1962年,汤姆森(J.F.Thomson)发表论文“论几个悖论”,令人信服地显示所谓的语形悖论和语义悖论实际上有共同的结构,都与康托尔对角线方法有密切的关联。他基于康托尔对角线方法,提出对角线引理。汤姆森成功地将罗素悖论、格雷林悖论和理查德悖论等表达成对角线的形式。以下,我们来思考一下对角线方法。康托尔对角线方法1891年,康托尔使用对角线方法证明:实数集是不可数的。以下是证明过程。设M为所有形如:(x1,x2,x3,x4……)(其中的xi是0或1)的元素的集合。假设M可数的。那么我们可以枚举M中的元素。例如:E1=(0,0,0,0,……)E2=(1,1,1,1,……)E3=(0,1,0,1,……)……在此基础上,定义E0=(b1,b2,b3,……bu,……),其中b1与a1.1不同,b2与a2.2不同,一般地,对于所有的n,bn与an.n不同。在上例中,E0=(1,0,1,……)。E0显然是M中的元素。现在,不妨设E0等于某一个Ei。然而,根据E0的定义,bi与ai.i不同,因此E0不等于Ei。矛盾。因此,假设是错误的,集合M是不可数的。因为集合M与实数集之间可以建立一一映射,因此实数集也是不可数的。对于对角线方法的分析分析:在康托尔对角线证明中,bi的值除了0和1,还有一个可能是没有定义。一个隐含前提是,在该点有定义,从而导致矛盾的出现。所以,矛盾得到的结论应该是:在该点没有定义。维氏的正对角线方法设M为所有形如:(x1,x2,x3,x4……)(其中的xi是0或1)的元素的集合。假设M可数的。那么我们可以枚举M中的元素。例如:E1=(0,0,0,0,……)E2=(1,1,1,1,……)E3=(0,1,0,1,……)……在此基础上,定义E0=(0,1,0,……)。E0显然是M中的元素。现在,不妨设E0等于某一个Ei。根据E0的定义,bi与ai.i相同,也就是说Ei的第i位定义为与自身相同。这时候,可以认为bi是没有定义的。因为这时候,这个规则说的是:“做与你所做的相同的事情!”,相当于什么都没有说。从以上的正对角线方法,很清楚地可以看出,Ei的第i位是没有定义的。这个性质不妨称为定义的“不完整性”。定义的不完整性正对角线方法与逆对角线方法是相似的,都具有定义的“不完整性”。维特根斯坦曾经问道:“为什么矛盾比同义语反复更加令人害怕?”维氏对于其他悖论的统一分析维特根斯坦虽然没有像汤姆森一样提出明确的“对角线引理”,但我们在他的著作中可以发现,他对于对角线相关悖论的分析方法也是一致的。在分析罗素悖论时,维氏说:“矛盾的根源在于把函项作为自身的函项。这种矛盾的结果意味着,‘f’永不能作为一个论证用在‘f(x)’中。……你可以说‘f(f)’是没有意义的,或者说括号外的‘f’代替着更高阶层的函项。”维氏在分析“说谎者悖论”的时候说:“这语句本身是没有用的,这些推论也同样是这样”在分析格雷林悖论时,他说:“在这里,‘这种矛盾是真的’意味着它得到证明;它是从对‘h’这个词的规则中推寻出来的。它的使用正要表明,‘h’是一个词,这个词在被置于“ξ∈h”之中时不会产生任何命题。”结论当我们给出规则的时候,规则并不一定处处有定义。如果我们认为规则处处有定义,这将会导致矛盾。矛盾的起因是:规则并不一定处处有定义。在维氏看来,悖论往往是思维混乱所产生,起源于逻辑或者规则的误用,起源于语言的误用。悖论其实并不可怕,关键只要将错误的逻辑和规则使用看清楚和限制住就可以了。数学历史上一个例子是0除0的除法。如果根据a*b=c来定义c/a=b,那么就可以得出2=0/0=3。矛盾。但这个矛盾并不可怕,它只是说明我们的除法规则需要完善。所以,数学家们规定0除以0是没有意义的。同样地,在我们的悖论中,只要看清并限定:这里的规则用于自身时是没有定义的。如此,既保留了规则的有用成分,又排除了规则的误用成分。符合解悖方案的三大原则a.消除了该消除的:说明了悖论出现的原因和地方,让悖论不能产生危害。b.保留了该保留的:尽可能让数学保持原样。只是提出自我引用的函数在某个点上没有意义,并没有伤及整个函数。c.自然的,非特设的:对角线引理提示了悖论的统一结构,维氏的分析符合我们的逻辑常识。附录:格雷林悖论的对角线形式设M为所有形容词的集合,则M是可数的。我们可以枚举M中的元素(E1,E2,…)。E1不适合自身,则第一行第一列记为0。E2适合自身,则第二行第二列记为1。例:E1=(0,0,0,0,……)E2=(1,1,1,1,……)E3=(0,1,0,1,……)……在此基础上,定义E0=(1,0,1,……)。E0表示他谓的(heterological),是一新的形容词。对角线相关悖论的特点基于可数集,在实无穷的意义上,定义一个与集合中所有元素不同的元素。然后,又认为这个元素也是在可数集之中。如此,产生矛盾。如果可以找到得可以否定的前提条件,就将矛盾的责任归于该前提。本文则认为,矛盾是来源于误用新元素的规则。新元素的规则,不一定处处有定义。这个新元素与其他元素不同的地方在于,它是基于可数集定义的。给定可数集的一个元素,这个新元素才得以继续展开一位。对于对角线方法的构造性理解可数集的“所有”元素,“所有”作何解释?以康托尔对角线证明为例,整个证明思路大概如下:给定所有01串的展开规则,形成一个可数集,在此可数集之上,再构造一个新的规则,这个新的规则一方面不同于已有规则一方面又是01串的展开规则,产生矛盾。本文认为,“所有”应做构造性的理解。可数集的展开与新元素的展开,相互追随趋于无穷。这样并没有矛盾。因为新元素可以永远不同于已展开的可数集。一个相关小悖论考官先在黑板上写下“1,2,3”,然后说:“在黑板上写下比黑板上所有数更大的数。”现在黑板上所有数字是“1,2,3”。这时候,我们在“3”后面写一个“4”,报告考官已经完成任务。考官可能会发难道:“现在黑板上的所有数字是1,2,3,4,你写的4并没有满足要求。”注意:这里发生了对“所有”这个词的误用。这里的“所有数”是一个不断扩充的有限集。谢谢诸位老师!