康托尔对角线证明实数比自然数多的问题

前置推荐阅读(并非必须的):《穿过一条街道的方法》,大卫·福斯特·华莱士

对于直觉主义者而言,这个世界上不存在超越性的数学对象,数学只是人类心灵中的活动。

“实无穷”就是一个典型的超越的对象,因为你永远也到达不了实无穷。直觉主义者只承认潜无穷,也就是不断展开自然数的后继过程。{0},{0,1},{0,1,2}…… 在Programmer的眼中,实数集的本质是一个永不停歇的递归算法。 所谓数学归纳法,使我们对于有限之内讨论无限的唯一手段。

1
2
NN(n) = suc(n):NN(n+1)
NN(0)

这里有一个非常形象的关于康托尔对角线方法的解释:

康托尔在证明中,把这个其实是不断在构造过程中的实数集假想成了一个超越的实体。实数集是一直在构造之中的,康托尔数也是一直在构造之中的。 依赖于下一行的实数,才能确定康托尔数的下一位。这个过程一直处于构造之中,并非已经完成的状态。在这个构造过程中,“展开下一行实数”先于“康托尔数写一位”这个操作。

换言之,写一位康托尔数的数过程,是康托尔数一直在逃避和现有展开的实数集中的数相等的过程。而只要下一行到来,康托尔数必须逃下去,不然就有可能和实数集中的某个数相等了。

康托尔说,他的的这个数永远不会在已有的这个实数列表里出现过。然而事实是,把这个生成康托尔数的算法停留在某一刻,当前生成的康托尔数,和下一行即将展开的实数到底相不相等,犹未可知。我们永远没办法比较它到底会不会和实数集中的一个数相等。

这些想法主要来自维特根斯坦,详见:维特根斯坦著, 徐友渔,涂纪亮译.《维特根斯坦全集》第七卷[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/2853/are-there-any-proofs-the-undecidability-of-the-halting-problem-that-does-not-depe/2911#2911

https://cstheory.stackexchange.com/questions/3810/is-there-an-alternative-proof-of-the-tm-halting-problem-other-than-the-standard

https://cstheory.stackexchange.com/questions/33600/constructive-proof-of-the-halting-problem