前置推荐阅读(并非必须的):《穿过一条街道的方法》,大卫·福斯特·华莱士
对于直觉主义者而言,这个世界上不存在超越性的数学对象,数学只是人类心灵中的活动。
“实无穷”就是一个典型的超越的对象,因为你永远也到达不了实无穷。直觉主义者只承认潜无穷,也就是不断展开自然数的后继过程。{0},{0,1},{0,1,2}…… 在Programmer的眼中,实数集的本质是一个永不停歇的递归算法。 所谓数学归纳法,使我们对于有限之内讨论无限的唯一手段。
1 | NN(n) = suc(n):NN(n+1) |
这里有一个非常形象的关于康托尔对角线方法的解释:
康托尔在证明中,把这个其实是不断在构造过程中的实数集假想成了一个超越的实体。实数集是一直在构造之中的,康托尔数也是一直在构造之中的。 依赖于下一行的实数,才能确定康托尔数的下一位。这个过程一直处于构造之中,并非已经完成的状态。在这个构造过程中,“展开下一行实数”先于“康托尔数写一位”这个操作。
换言之,写一位康托尔数的数过程,是康托尔数一直在逃避和现有展开的实数集中的数相等的过程。而只要下一行到来,康托尔数必须逃下去,不然就有可能和实数集中的某个数相等了。
康托尔说,他的的这个数永远不会在已有的这个实数列表里出现过。然而事实是,把这个生成康托尔数的算法停留在某一刻,当前生成的康托尔数,和下一行即将展开的实数到底相不相等,犹未可知。我们永远没办法比较它到底会不会和实数集中的一个数相等。
这些想法主要来自维特根斯坦,详见:维特根斯坦著, 徐友渔,涂纪亮译.《维特根斯坦全集》第七卷[M]. 河北教育出版社,2003 年(第一篇附录三)
关于停机问题
有一些人(指庄朝晖的一系列文章)因为发现康托尔的对角线方法不成立就说停机问题是错的,没有意义。这是不对的,而且误导性非常强。
这些东西三言两语解释不清楚,目前能得到的最好的材料应该是MIT的公开课,先真正理解什么是停机问题和Undecidability:https://ocw.mit.edu/courses/18-404j-theory-of-computation-fall-2020/
然后,确保你分清楚了什么是Proof of negation和proof by contradiction。
这里有几个Stack Exchange上的补充,可能对想偏的人有用:
https://cstheory.stackexchange.com/questions/33600/constructive-proof-of-the-halting-problem