通用算法:Woodin定理的一个新的简单证明

这是我最近发表的一系列文章中的第三篇,我称之为通用算法,这是一个原则上可以计算任何函数的程序,只要你能在正确的宇宙中运行它。早些时候,我已经给出了这个令人惊讶的定理的一些基本证明:参见每个函数都可以计算!在正确的宇宙中,完全接受任何所需有限集的程序.

$\newcommand\PA{\text{PA}}$这些参数建立了通用算法,但未能证明Woodin对定理的有趣强化,该定理解释了通用算法如何从任何算术世界扩展到更大的数学世界,以任何期望的方式扩展给定枚举序列。Woodin强调了他的定理是如何提出关于有限性的绝对性或非绝对性的各种哲学问题的,我觉得这非常有趣。

然而,伍丁的证明比我仅为通用算法提供的简单论证要复杂一些。请参阅Blank,R.和Enayat,A.Marginalia关于Woodin定理的论文,符号逻辑杂志, 82(1), 359-374, 2017.doi:10.1017/jsl.2016.8进一步讨论Woodin的论点和相关结果。

然而,我最近发现,事实上,只需使用初等论证的方法,就可以证明Woodin定理的更强版本。这种变化还允许人们放弃对模型的可数性要求,正如布兰克和埃纳亚特所做的那样。我对这个论点的思考受到了瓦迪姆·科索伊评论在我原来的帖子上。

采用图灵可计算性的枚举模型是很方便的,通过该模型,我们可以将图灵机程序视为提供了一种可计算枚举数字列表的方法。我们启动程序运行,它会生成一个数字列表,可能是有限的,可能是无限的,可能为空,也可能是重复的。这种使用图灵机的方法与通常的方法完全等价,只要简单地想象枚举输入/输出对以编码任何给定的可计算部分函数。

定理。(伍丁)有一个图灵机器程序$e$,具有以下属性。

  1. $\PA$证明$e$枚举了一个有限的数字序列。
  2. 对于任何有限序列$s$,都有一个$\PA$的模型$M$,其中程序$e$精确枚举$s$。
  3. 对于$e$枚举了序列$s$(可能是非标准的)的任何模型$M$和扩展$s$的M$中的任何$t\,$e$只枚举了$t$中的$N$。

正是语句(3)使这个定理比我在早先的帖子中提到的通用算法更强大,我发现它特别需要对有限性的暂时性进行哲学思考。毕竟,如果程序$e$在一个宇宙中枚举了一个有限序列$s$,那么对于任何$t$扩展$s$-我们可以想象在$s$之上绘制了一些新的模式$t$-有一个更高的宇宙,其中$e$正好枚举$t$。所以我们只需要等待足够长的时间(进入下一个宇宙),然后我们的程序$e$将精确地枚举我们想要的序列$t$。

证明。这是新的初等证明。让我们首先回顾一下通用算法的早期证明,只针对语句(1)和(2)。也就是说,让$e$是一个程序,它对$\PA$中的所有证明进行系统的穷举搜索,以获得形式语句的证明,“程序$e$没有精确地枚举序列$s$”,其中$s$是显式列出的有限数字序列。在找到这样的证明(发现的第一个这样的证明)后,它将继续精确地枚举出现在$s$中的数字。因此,在底部,程序$e$是一个任性的孩子:它搜索不应该以某种方式行为的证据,然后立即继续以完全禁止的方式行为。

(读者可能会注意到程序$e$的定义中有一个明显的循环性,因为我们在定义$e$时提到了$e$。但这根本没有问题,使用Kleene递归定理来证明这种定义是完全正确的是可计算性理论中的标准技术。也就是说,我们真的定义了一个程序$f(e)执行该任务的$询问$e$,然后根据递归定理,有一个程序$e$可以使$e$和$f(e)$计算同一个函数,这是可以证明的。因此,对于这个定点程序$e$s,它正在搜索关于自身的证明。)

很明显,程序$e$只会枚举一个有限的数字列表,因为要么它永远找不到后置证明,在这种情况下,它什么也不枚举,空序列是有限的,要么它确实找到了一个证明,在那种情况下,程序恰恰枚举了被证明的语句中显式出现的有限多个数字。所以$\PA$证明了在任何情况下$e$都枚举了一个有限列表。此外,如果$\PA$是一致的,那么您将无法反驳任何由$e$枚举的特定有限序列,因为如果您可以,那么(对于最小的这样的实例)程序$e$实际上会枚举这些数字,这是可以证明的,与$\text{Con}(\PA)$相矛盾。正是因为您无法反驳这一说法,所以可以得出结论:对于任何特定的$s$,理论$\PA$加上$e$精确枚举$s$的断言是一致的。因此,有一个$\PA$的$M$模型,其中程序$e$正好枚举了$s$。这为本程序建立了语句(1)和(2)。

现在让我修改程序,以实现关键的第三个属性。请注意,上面描述的程序肯定没有属性(3),因为一旦枚举了非空序列$s$,程序就基本完成了,因此在较高的宇宙$N$中运行它不会影响它枚举的序列。因此,为了实现(3),我们修改程序,允许它向序列中添加更多内容。

特别是,对于程序$e$的新修改版本,我们像以前一样,首先在$\PA$中搜索一个证明,即$e$枚举的列表并不完全是某个显式列出的有限序列$s$。找到这个证明后,$e$立即枚举$s$中出现的数字。接下来,它检查发现的证据。由于证明只使用了有限多个$\PA$公理,因此它是来自某个片段$\PA_n$的证明,即$\PA$s的$\Sigma_n$片段。现在,算法$e$继续在一个严格较小的片段中搜索证据,证明程序$e$没有精确地枚举某些显式列出的序列$t$,从而正确地扩展了已枚举的数字序列。当找到这样的证据时,它会立即列举(其余的)这些数字。现在简单地重复一下,在$\PA$的静态较小片段中寻找新的证据,证明静态较长的扩展不是$e$枚举的序列。

简洁地说:程序$e$每次都在$\PA$的一个严格较小的片段中搜索一个证明,即$e$并没有精确地枚举某个明确列出的序列$s$,该序列扩展了迄今为止已经枚举的内容,当找到时,它会枚举这些新元素,并重复。

我们仍然可以在$\PA$中证明$e$枚举了一个有限序列,因为每次使用的$\PA$s片段都在下降,而$\PA$$证明这种情况只会有限次地发生。所以陈述(1)成立。

同样,你不能反驳任何特定的有限序列$s$是由$e$枚举的序列,因为如果你能做到这一点,那么在标准模型中,程序最终会找到这样的证明,然后可能会找到一个又一个,直到最后,它会找到$e$没有精确枚举某个有限序列$t$的最后一个证明,此时程序将精确枚举$t$,并且以后再也不会添加到其中。因此,该证明将证明是一个错误的语句。这是一个矛盾,因为证明是标准的。

同样,正是因为您无法反驳这些陈述,所以程序$e$为任何特定的有限$s$枚举$s$与$\PA$是一致的。所以,语句(2)成立。

最后,对于语句(3),假设$M$是$\PA$的模型,其中$e$正好枚举了一些有限序列$s$。如果$s$是空序列,则$M$认为$\PA$中没有证据表明$e$没有为任何特定的$t$精确枚举$t$。因此,它认为$\PA+$“$e$精确枚举$t$”的理论是一致的。因此,在$M$中,我们可以建立该理论的Henkin模型$N$,它是$M$的最终扩展,其中$e$根据需要精确地枚举$t$。

如果$s$不是空的,那么它被$M$中的$e$枚举,因为在$M$的某些片段$\PA_n$中最终有一个证明,证明它不应该这样做,但它从未在任何严格较小的$\PA$片段中找到有关$s$扩展的相应证明。因此,$M$从$\PA_n$中得到了一个证明,即$e$没有精确地枚举$s$,尽管它确实枚举了。

注意,$n$必须是非标准的,因为$M$对于每个标准$k$都有一个可定义的$\Sigma_k$-truth谓词,并且使用该谓词,$M$可以看到每个$\PA_k$-provable语句都必须为true。

正是由于模型$M$缺乏严格较小片段$\PA_{n-1}$的证明,因此对于任何特定的有限$t$扩展$M$中的$s$,该模型认为理论$t=\PA_}+$“$e$精确枚举$t$”是一致的。由于$n$是非标准的,因此该理论包含了所有实际的$\PA$公理。在$M$中,我们可以建立该理论的Henkin模型$N$,它将是$M$的最终扩展,其中$\PA$保持不变,程序$e$按照语句(3)的要求精确枚举$t$。 量化宽松政策

推论。设$e$是定理的通用算法程序。然后

  1. 对于任何无限序列$S:\mathbb{N}\to\mathbb{N}$,存在$\PA$的模型$M$,其中程序$e$枚举以$S$开头的(非标准有限)序列。
  2. 如果$M$是$\PA$的任何模型,其中程序$e$枚举某些(可能是非标准的)有限序列$s$,而$s$是任何扩展$s$的$M$可定义无限序列,则$M$有一个末端扩展,其中$e$列举以$s$开头的序列。

证明。(1) 将$S:\mathbb{N}\修复为\mathbb2{N}$。通过一个简单的紧性参数,存在一个真算术模型$M$,其中序列$S$是某些编码的非标准有限序列$t$的标准部分。根据主定理,$M$有一个端点扩展$M^+$,其中$e$枚举$t$,它根据需要扩展$S$。

(2) 如果$e$枚举$M$中的$s$,$\PA$的模型,而$s$是$M$定义的$M$-无限序列,那么通过$M$内的紧致性参数,我们可以在$M$内部构建一个模型$M'$,其中$s$由一个元素编码,然后应用主定理找到另一个最终扩展$M^+$,其中,$e$将枚举该元素,因此,它列举了$S$的扩展。量化宽松政策

关于“通用算法:Woodin定理的一个新的简单证明

  1. Pingback:通用定义-它可以在正确的宇宙中定义任何你喜欢的物体|乔尔·戴维·哈姆金斯

  2. Pingback:通用有限集|乔尔·戴维·哈姆金斯

  3. 只是对程序$e$存在性的一点评论。我认为,在试图理解它时,循环性并不是主要问题。真正的问题是,根据克莱恩定理,你最终得到的程序是一个任性的孩子。为什么一个程序首先要搜索一个它没有枚举序列$s$的证据,最后却枚举了这个序列?

    让我明确地写下如何应用克莱恩定理:
    我们将程序$f(e)$定义为:
    1.它搜索$e$没有精确枚举序列$s$的证据。
    2.找到这样的证明后,$f(e)$(而不是$e$!)枚举了这个序列。
    然后根据这个定理,我们得到了一个程序$e$,它搜索关于自身的证明,然后以禁止的方式运行。

    但如果$e$为某些序列$s$找到了这样的证明,则$T$是不一致的。因此,实际上$e$在$T$中找不到这样的证明。另一方面,这意味着$T$与程序$e$枚举任何序列$s$的事实一致(因为没有找到相反的证据)。因此,有一个$\PA$的$M$模型,其中程序$e$正好枚举了$s$。

    这基本上和你写的一样,但由于某种原因,改写了
    对我来说更容易理解。也许它会帮助像我这样经验不足的读者🙂

留下回复

您的电子邮件地址将不会被发布。 已标记必填字段*