system: [SYSTEM]

user: 1. 康托对角线法中的逻辑推理问题详析 根据笔者以往论文中的详尽讨论 [ 1 ] [ 2 ] [ 3 ]，经典的康托对角线法实际隐含逻辑循环或言循环论证，也就是无意中把欲证明的结论当做前提了。用逻辑公式的形式表示，即为： 康托对角线法实际能做到的反证法是：(A→B)→(﹁B→﹁A) 其中A为命题“实数可数”，B为命题“全部实数可与位数一一对应”。(注意，这里是简化说法，详细的完备说法见前文中，比如“顺序”、“激活”、“可变状态”等等限定词这里都省略了)。这个命题当然等价于“由所有位的全部不同排列组合的状态数可与由之产生的位数顺序地一一对应”。直观上，由位数的由来、意义、作用，就不可能。当然还有证明。 在康托的经典(非完备)的对角线法的表述中，上式中的B仅仅为“全部实数可以在表中排成一列”。这在“实数可数”的前提下是显然的，由可数的定义直接得到的，所以无须证明。因此，在康托的非完备的对角线法中，(A→B)为真。所以自然可以先假设“A为真”，也就是“如果实数可数”(为真)。由此，由康托的经典的(非完备)对角线法的反证法，看似可以“求得”﹁A，即A的反命题“实数不可数”。但前文早已详述，康托对角线法实际能做到的，是依赖于“位数”、多进制下的每位、“顺序一一对应”、“每位可变状态”这些前提的。于是问题就不是康托认为的那么简单了。此时的(A→B)，加进这些隐含的、对角线法所必需的假设、前提后，就成为“如果实数可数，全部实数就可与每一位一一对应”，而这个(A→B)为真与否，也就是能否作为对角线法的前提，是需要证明的。而要证明其为真，恰恰需要由本来有待证明的(﹁B→﹁A)来证明。即(﹁B→﹁A)→(A→B)。这当然是逻辑循环，也就是循环论证。当然，如果B真，也就是“全部实数可以与每一位一一对应”为真，则A自然也真，也就是“实数可数”为真，同时(B→A)自然也为真，但这推不出(A→B)。即我们没有(B→A)→(A→B)这样的逻辑关系。进而，由前文我们已经知道，正是由对角线法(前提当然不同于康托的)，我们可以得到：(B→C)→(﹁C→﹁A)，其中B的定义与上面相同，而C为“全部实数可以排成一列”。由对角线法，我们得到否定的结果，从而推出结论﹁B，也就是“全部实数不可能与每一位在那些隐含的前提下一一对应上”。这是已经证明的事实了，于是，(A→B)不可能为真，也就是实际上我们有﹁(A→B)，当然(A→﹁B)就更不成立，于是，我们不可能再做出假设“A真”也就是“实数可数”，因为(A→B)根本不成立。于是，康托想通过对角线法的反证法而得到“A假”也就是“实数不可数”的目的是达不到的。总之，实数可以不与自然数一一对应(这当然并不是不可数)，和实数不可以(绝不，总不)和自然数一一对应(这才是“不可数”)，是两回事，我们不应混淆。 由以上的分析应该非常清楚康托对角线法的所谓反证法的逻辑脉络了。我们还可以这样看这个问题：康托先是假设了命题A(实数集可数)，想用、或以为用其对角线法证明了“非A”(实数集不可数)。但其实际能做到的仅仅是假设了“A与B”(其中B为“所列可数的实数集与其自己的元素的位数一一对应”)，由反证法，康托实际得到的并不是其想得到的、以为已经得到的“非A”，而是“非(A与B)”，按简单的数理逻辑规则，有： 非(A与B) = (非A)或(非B)，它原先想、或认为已经证明的“非A”，其实并没有被证明。因为在这个式子中，两个命题是“或”的关系，而由于对角线法的“操作本质”，命题B与“非B”都是“刚性”的，必须的，于是，“非A”(也就是命题“实数集合不可数”)并没有被证明。在上述所谓“反证法”中，A与“非A”，都没有被证明。也就是其成立与否并不影响整个式子的真值性。 当然也可以这样等价地看这个问题：如果没有明确地提出康托对角线法的“隐含”假设B，则由于对角线法的规则，决定了原先康托所列出的、假设可数的全部实数集，其实不过只能是实数集的一个真子集，而不可能是整个实数集。这个真子集与其元素的位数一一对应(通俗说就是“数量一样多”)，换句话说，就是其想证明的东西，已经包括在其前提中了。因为无论有限还是无穷情况，一个与多进制下位数一样多的集合，显然比这个多进制下这个数量的位数所可以表示的数要少的多。于是，也可以把这种证明错误看成是逻辑上的“循环论证”。等于是自己证自己。 以下视角，也许使问题更加清晰。我们可以设计一个“反对角线法”，就是先找任意一个实数A，然后逐位求反，而每位求反后，都找一个相应位与求反后的A的那一位的数值一样的实数，依次类推。这样得到的一个实数列表，从一开始就排除了实数A。它的本质，是先把A单独挑出来，再去建立不包括A的实数子集。它与康托对角线法没有实质不同，不过前后顺序正相反而已。但我们看到，这里从一开始建立的就是实数的真子集，也就是不完备的实数集。我们不可能还有先假设实数可数，然后就单独挑出一个实数，去建立不包括这个实数的实数子集，就说实数不可数了。这里完全没有这样的逻辑。实数可数这个假设根本插不进去，也就根本无由证明它的否命题。康托对角线法的结构与上面的“反对角线法”没有什么不同，不过次序相反。“反对角线法”是直接主动建立非完备实数集(子集)，而“康托对角线法”是徒具反证法的形式，就是先假设实数可数，而且可以排成那么一列(一张表)，再通过难以察觉的隐蔽方式偷偷地改变了这张表，以找出一个不在“改动后”的表中的实数(对角线上求反得到的那个实数)，然后宣称“证明”了“改动前”的表是不完备的。而事实上，你只要去求反(改动原表)而得到原表外的实数，表立即就“变的”不完备了。这与主动直接建立一个不完备的实数表根本没有不同。不过一个显然，一个隐蔽而已。事实上，康托对角线法等价于使用了选择公理。而选择公理的本质，就说按某种规则，选择某集合的一些元素组成该集合的一个子集合。前文已经讨论了，康托对角线法的本质，就是在前n位的2 n 个不同的组合形式可以表示的2 n 个不同的实数中，仅选择n个组合表示的实数，这就是那张二维表中的所列出的实数，这当然是整个实数集的一个真子集，而且与位数是顺序一一对应的。从这个角度，也可以看出康托对角线法的本质与局限。 此外，笔者在文献 [ 10 ] [ 11 ] 中讨论了所谓“十–一混合进制”下及“三维立体”下的康托对角线法在证明实数集合不可数的适用性问题。指出了其局限性。也就是说，对角线法的使用严重依赖于多进制的每位多值性(而且必须是处于“激活”状态的)和多进制下的、从第一个实数及第一位开始的(隐含这张表存在这个“第一”为条件)每位与实数个数的逐位、逐个的严格的一一对应(对角线所要求的)。而这当然构成一个特殊的函数关系，也就是对角线法所依赖的隐含的也就是在对角线法中没有明说的前提条件。但注意，实数可不可数，是没有这个前提的，也就是完全不依赖于这个前提，即对实数可数、不可数的定义而言，这个前提条件(隐含着的)，完全多余。而这也是笔者论证康托对角线法没有证明实数不可数的依据。换言之，如果我们改动上述函数关系的任何一个(作为数学，这当然必须被允许)，都足以使康托对角线法无由进行下去，其结果也就是无法证明实数不可数。当然，在“十--一混合进制”下，由于仍旧不能彻底摆脱多进制因素，所以如果我们不按每位而是按该进制下的“每十进制段”来改变每段的一进制表达，找出不在该表中的实数仍是可以的，但这不是典型的“对角线法”了，而可以称为是“类对角线法”(篇幅所限，从略)。该文图1所示三维情况，也是一样。尽管把这两个平面展开成一个无始无终的平面，如不改动其中实数已经排好的位置(严格说，任何的一个可数排列，都要依赖于一种具体的排法。比如有理数可数，就不能随便去排，如把作为有理数的整数1、2、3、4、......次序去排有理数，就就永远也排不出所有有理数。因此严格说，一旦假设一种排法排出了所有一个集合，就不能随意更动其排列顺序，对无穷集合应该如此)，就无法再用对角线法，因为它没有对角线。但我们仍旧有办法可以找出一个实数不在此表中，它等价于把此表合成一个有起始位的表，其中原先的表中顺序排列的实数元素要“交叉”地排在新表中。也就是要改动其顺序、位置。然后重新对此表运用康托对角线法。总之，只要是在：1、多进制下，每位多状态；2、有起始位置；3、顺序逐位、逐个一一对应，则此实数表必不完备，也就是列不出全部实数。但这绝对不是实数不可数。比如经常有教师在回答学生“把对角线上“产生”的那个实数加在原表中，实数不就又可数了”的问题时，总会也只会说“那你再在此表中运用对角线法”不就得了。学生往往也无话可说了。但真的就此打住了吗？非也。康托对角线法的假设是：“如果实数可数，它就可以排成一列，............”。在多进制等前提下，通常被认为否定了这个假设。但前已述及，在如此多的隐含前提下，实际“任何一列”，就成了“这么一列”，它绝不再是无条件、无前提的了。于是此时的“否定假设”，等于是要么否定实数可数，也就是不可数；要么否定的是它可以“这么地”排成一列。也就是实数虽然可数，但却只是不能这么地(有条件地)排成一列。也就是即使实数不能这么排成一列，也不见得就是不可数。前述老师说的没错，对角线法当然可以不断用下去；但他同时忘了，对角线法产生的新实数照样可以不断添加到原系统中去，形成新的可数集。因为康托早有结论：一个可数集加1，不断加1，甚至加一个可数集合，仍旧是可数的。由于所谓不断地重复康托对角线法，只能是可数多地进行这种“重复操作”，因此，我们可以把所有对角线法产生的新的实数的全部组成一个新的可数集合(它本身当然不能再进行对角线法了，就如任何整数加1还是整数，但所有整数集合再加1可就不是整数了)。这个集合，当然不能再用对角线法去证明其不可数(因它本身就是对角线法的直接产物)。前述“老师”只看到事物的一面，而没有看到事物的另一面。除非我们能够证明，不能“这么”排成一列的实数就是不可数的，但这是另一个证明了，对角线法由于被揭示出是需要额外的隐含假设的，因此已经不行了(对角线法只是证明了不能“这么”排出全部实数，但这不是不可数)。 总之，问题的实质是，既然多进制的位数与所列实数一一对应上了，实数就不可能由这个特殊的、有前提条件的“列出”全部表达出，但这不是不可数。直观地理解，所谓多进制下的每一位，它都有多于1的状态，而这个多状态是干什么的？人们摆脱原始的结绳记事、计数，发明多进制干什么？它不就是用较少的位数，来表示更多的数吗？它的目的，就是使位数与多进制可以表示的数之间不会一一对应。如此，才可以用少的位数，表示更多的数。也就是，位数对它所可以表示的数的数量而言，是大大被“压缩”的，如此，现在把位数与列出的实数一一对应了，而多进制可表示的数由前述理由可以大大多于位数，所以，位数不能与它所可以表示的数(这里是实数)一一对应是显然的。但这不是不可数。有理数也不能与位数一一对应，但有理数却可数。 此外，前述有理数也不能与位数一一对应，指的是按康托这么每一位对应一个有理数的方式，也就是函数关系。任何对应，都是在一定的方式下的，也就是函数关系下的，没有无往而不适的所谓抽象的对应。我们说什么和什么对应上了，并不是永远就非得对应，而是在这个函数关系下，它们对应上了。有理数的可数性，是怎么实现的？也就是证明的？用类似对角线法的方法可以证明吗？也就是把有理数表示成无穷小数，一一排列，能证明有理数可数？有人认为，可数的位数不能与实数一一对应，就是实数不可数。这是大错！可数、不可数的定义中，没有也绝对不会有这个对位数要求。如果有，定义中就要老老实实地写上，数学不是要求严格吗。“位数”的属性不仅仅是其总数可数，而且还有位数的每一位是多态的(多进制下的)，而这个多态，又恰恰是用于表示不同的实数的。其目的恰恰就是用较少的位数去表示尽可能多的实数，以压缩表示空间。如果位数与实数一一对应，表面上是一个一一对应，但由于每一位的多值性，这实际上是一个一对多的对应，用函数的话就是“隐函数”、“复合函数”的概念。打个比方：如果有人拿一元钱的票子，换另一人十元的票子，说咱们一一对应，一张换一张。任何人会换吗？谁都知道十元钱的票子可以顶十张一元钱的票子。这里直接把“十元钱”对应于对角线法中的“位数”，把“一元钱”对应于表中的实数个数，再多动动脑子想一想，看谁还会不明白？而康托对角线法等于是说，既然十元一张的票子与一元一张的票子可以张张地“一一对应”，于是所有一元票子的总价值就不可能等于所有十元票子总价值。是这样吗？我们多印一元市值的票子，完全可以使二者等值。只要不再要求张张一一对应，而是按市值对应，即每一十元票子可以对应十张一元票子即可了。实际上，之所以央行在已有一元票子的基础上还要发行印刷十元票子，是为了用较少的纸张更多地表示钱的市值，目的与功效与人们创建多进制一样。不得不用如此浅显的例子讨论数学、逻辑方面的问题，只能说是不得已，而且还很必要。