六谈由悖论看概念的可操作性
——评陈波《思维魔方》,兼析“EPR悖论”及“图灵停机问题”
2016-03-17黄汝广
黄汝广
六谈由悖论看概念的可操作性
——评陈波《思维魔方》,兼析“EPR悖论”及“图灵停机问题”
黄汝广
针对陈波《思维魔方》的“希尔伯特超级旅馆”部分进行了简短评析,同时指出反证法必须满足的四个基本要求,并通过分析“EPR悖论”及“图灵停机问题”,强调了排除隐性假设对反证法的重要性。
希尔伯特超级旅馆;反证法;隐性假设;EPR悖论;图灵停机问题
陈波先生的《思维魔方——让哲学家和数学家纠结的悖论》是其学术专著《悖论研究》的一个通俗版本,被誉为“国内第一本关于悖论的逻辑科普”[1]。悖论一直是一个很有趣的话题,然而“悖论虽然重要,但它们对于关于基础的辩论的影响被夸大了。”[2]
《思维魔方》对康托尔的实无穷与对角线法赞誉有加,并分析了所谓的希尔伯特超级旅馆。陈先生认为,希尔伯特的解答,对应了一些诸如“ℵ0+n=ℵ0”“ℵ0+ℵ0=ℵ0”的算式,表明“普通算术的很多运算对超穷数失效”,“在常识的眼光看来,无穷确实太怪异了!”比如按常识,“ℵ0+n=ℵ0”两边同时减去ℵ0,结果是“n=0”!
事实上,在康托尔集合论中,“ℵ0+n=ℵ0”与数的运算并无任何关系,它只不过是如下法则的一个方便记忆的“符号式简写”:一个无穷可数集增加有限个元素后,仍然是一个无穷可数集。然而,这个法则本质上却混淆了实无穷与潜无穷。比如:当希尔伯特说超级旅馆住满了旅客时,是实无穷;而当他将已入住旅客依次后挪以空出前面的房间时,又是潜无穷了!
笔者曾论证,由于对角线法存在漏项问题,康托尔关于(0,1)不可数的证明根本无效。实际上,即便不漏项,其证明仍然无效:按照实无穷观,实施“一一对应”操作之后,就不应还有潜在未对应的数,但对角线法偏偏构造出了另外的“新”数,这显然只能求助于潜无穷了;退一步,就算“新”数是实无穷的,但只要可数,根据“ℵ0+ℵ0=ℵ0”,最终结果也必然可数!
在该书的“逻辑预备知识”一节,陈先生对归谬式、反证式推理作了一些介绍,然而不够详尽。笔者认为,从操作主义的观点看,一个有效的归谬法或反证法论证,应符合下列要求:(1)排除一切隐性假设,保证想要否定的假设是唯一的;(2)推理过程有效,并能在有限步骤内完成,或者符合完全归纳法;(3)矛盾和假设必须有逻辑关系,一旦否定假设,矛盾应随之消除;(4)矛盾的导出必须涉及不依赖于假设的事实(或原理、定理等)。只有满足了以上条件,我们才好断言矛盾的根源是在于“唯一假设”与“事实”不相容,并进而根据矛盾律否定“唯一假设”。
关于假设“唯一”的重要性,在著名的“EPR悖论”中体现的最为充分。按照马克斯·雅默《量子力学的哲学》的分析,“EPR悖论”的论证包含了四个前提假设[3]:(1)物理实在性判据;(2)理论完备性条件;(3)量子力学的有效性;(4)相互作用的定域性。那么逻辑上讲可以否定上述任何一个假设,但结果就是爱因斯坦和玻尔两人各说各话。
我们知道,爱因斯坦对量子力学的几率解释很不满意,他不相信上帝在掷骰子。其实在“EPR悖论”之前,爱因斯坦主要是想挑战量子力学的有效性,但都被玻尔一一化解了,不得已,才承认其有效性,转而否定完备性:认为量子力学的几率描述,是由于漏了一个未知的隐变量,而考虑隐变量的完备理论将给出确定性描述。
实际上,“EPR悖论”的关键是爱因斯坦认为量子纠缠态不合理[4],然而量子纠缠态又是量子力学的必然推论,因此在逻辑上,或许更应该否定其有效性,而不是完备性。不然,所谓的不完备就只是指适用范围不够大,并不是相对于隐变量理论而言的。
要谈论反证法,“图灵停机问题”当然是不可回避的,依据张再跃《数理逻辑》,其论证如下[5]:
“假设停机问题可解,则存在能行过程H,对任意程序Pe与输入X,H能判断Pe对输入X是否停机,设当Pe对输入X停机时有H(Pe,X)=1,当Pe对输入X不停机时有H(Pe,X)=0。利用H定义过程F:对任意自然数n,若H(Pe,n)=1,则F(n)=H(Pe,n)+1;若H(Pe,n)=0,则F(n)= 0。因为过程H是能行的,所以过程F也是能行的,设计算F的程序编号为e0,则F可表示为Pe0,即对任意n均有F(n)=Pe0(n)。接下来考察程序Pe0对输入e0的情况:若停机,则H(Pe0,e0)=1,从而F(e0)=Pe0(e0)+1≠Pe0(e0);若不停机,则Pe0(e0)无定义,而由H(Pe0,e0)=0,却得F(e0)=0≠Pe0(e0)。上述矛盾表明,停机问题是不可解的。”
首先,既然“若H(Pe,n)=1,则F(n)=H(Pe,n)+1”,为什么不把H(Pe,n)=1代入,从而得出F(n)=1?(这里1和0是表示状态,故只能按布尔代数计算。)实际上,在笔者看来,拿“若H(Pe,n)=1,则F(n)=1”来对应“若H(Pe,n)=0,则F(n)= 0”,是再自然不过的事。
简而言之,上述定义不过就是F(n)=H(Pe,n)而已;但如此一来,“若停机,则H(Pe0,e0)=1,从而F(e0)=Pe0(e0)+1≠Pe0(e0)”这个所谓的矛盾就不存在了!至于“若不停机,则Pe0(e0)无定义,而由H(Pe0,e0)=0,却得F(e0)=0≠Pe0(e0)”这个所谓的矛盾,笔者认为很让人费解:因为按定义,Pe0(n)=F(n),又“因为过程H是能行的,所以过程F也是能行的”,那么程序Pe0当然也是能行的;这也就是说,对于任何输入,程序Pe0总是能够停机。
同时我们还发现,在定义中任意程序Pe的输入X都被换成了自然数n,但对那些输入不是自然数的程序该怎么办呢?另有一种论证思路如下:利用万能图灵机H来构造一个新程序D,它以H的输出为输入,若输入为1则不停机,若输入为0则停机。再用H来判定D,则导致矛盾:如果H判定D可停机,则D的输入为1,结果D不停机;如果H判定D不停机,则D的输入为0,结果D停机。
退一步讲,即使每个程序的输入都是自然数,定义仍然存在问题:假如H(P1,n)=1,H(P2,n)=0,F(n)=?事实上,含两个独立变量的函数不可能简化为只有一个独立变量!要避免这个问题,似乎应该这样定义——对任意自然数n,F(n)=H(Pn,n);但这就需要Pn与n有某种确定的函数关系,比如Pn=T(n):也即任给一个自然数n,就可以通过函数T生成一个特定的程序Pn;显然,函数T的存在只能是一个假设,这也就是说,否定H其实并非唯一选择!
很显然,这里所构造的D是一个死循环!而我们要问的是,一个程序要如何界定?或者说,死循环真是程序吗?笔者认为,一个程序的核心应该是其功能,没有任何功能的死循环,是错误而不是程序!
假设死循环是程序,那么万能图灵机H就必须满足如下条件:能够判断死循环不可停机,并且整个判断过程不能触发死循环!但是,以H的输出为输入的死循环D却又必然会被触发。要消除这里所谓的矛盾,除了否定“万能图灵机H”外,否定“死循环是程序”同样可以达到目的;而且,由于“万能图灵机H”只是一个假设,以H的输出为输入的所谓新程序D也就只能是一个假设,因此我们还有第三个选择——以H的输出为输入的死循环不是程序!
这后一种选择,笔者其实是受了罗素的启发,我们知道,为了消除所谓的“罗素悖论”,罗素对“集合”与“类”的概念进行了区分——所有集合都是类,但并非所有类都是集合,不是集合的类为真类;而不属于自身的集合所构成的类,是一个真类。
我们还曾指出,否定式的自我指涉,其实违反了同一律,在逻辑上是一个矛盾式,也即A=非A;但是,这种不涉及任何事实的自我否定式的矛盾,对于反证法并没有任何意义,而所谓新程序D的构造,恰恰是利用了否定式的自我指涉。
事实上,假设存在万能图灵机H,即使一个程序P对输入X不停机,我们也能将其改造为可停机的:先调用H判断P对输入X是否停机,如果判断停机,则对P输入X进行运算,并输出最终结果;如判断不停机,则不对P输入X,而直接输出——“别浪费时间了,洗洗睡吧!”
当然,这并不意味着存在万能图灵机H,实际上,笔者倒是非常认同不存在万能图灵机H的观点,但认为它是不可能被证明的,至少上述两种证明都是不能让人满意的。
总之,对于反证法论证,排除一切隐性假设至关重要,而导致隐性假设的主要根源是概念界定不严格,没有可操作性,结果把一些似是而非的东西引入了进来。悖论产生的根源,其实也在于此,比如“飞矢不动悖论”,芝诺根本没有对“飞”“动”进行任何界定,就大谈起“不动”来。
[1]陈波.思维魔方——让哲学家和数学家纠结的悖论[M].北京:北京大学出版社,2014.
[2]高尔斯,主编.齐民友,译.普林斯顿数学指南[M].北京:科学出版社,2014.
[3]马克斯·雅默.秦克诚,译.量子力学的哲学[M].北京:商务印书馆,2014.
[4]李晓.浅谈EPR悖论与量子纠缠[J].科技创新与应用,2015(29):74.
[5]张再跃.数理逻辑[M].北京:清华大学出版社,2013.
(作者单位:深圳南天电力有限公司)
10.16653/j.cnki.32-1034/f.2016.18.025