更改

跳到导航 跳到搜索
添加31,725字节 、 2026年9月10日 (星期四)
无编辑摘要
第543行: 第543行:     
其中图灵停机问题、哥德尔不完备定理拥有'''双重身份''':结论是否定性的(与康托尔、罗素问题同类),历史原证也走否定性对角线老路、不依赖 SRT;但因活在程序世界,又能被 SRT 事后更简洁地推出(§5.7.3 展示了停机问题的完整套用过程)。它们共同构成 SRT 的"自指"一面;SRT 还有另一面——"沿序数逐层构造"——见第六节。
 
其中图灵停机问题、哥德尔不完备定理拥有'''双重身份''':结论是否定性的(与康托尔、罗素问题同类),历史原证也走否定性对角线老路、不依赖 SRT;但因活在程序世界,又能被 SRT 事后更简洁地推出(§5.7.3 展示了停机问题的完整套用过程)。它们共同构成 SRT 的"自指"一面;SRT 还有另一面——"沿序数逐层构造"——见第六节。
 +
 +
== SRT的其它应用 ==
 +
 +
上一节(§5.7)的那些现象都是"自指"本身的例子——程序或句子直接谈论自己。但 SRT 的威力远不止此:它同样是构造不直接涉及自指的复杂数学对象的基本工具。Moschovakis (2010) 以"回顾展"方式列举了 18 个 SRT 发挥关键作用的结果<ref name="moschovakis2010" />,其中最重要的一类是 Kleene 本人最钟爱的'''沿序数逐层构造'''([[有效超限递归]])——把递归定义从自然数推广到[[序数]],从而定义出越来越复杂的对象。本节即以它开篇(前4个例子);此后转入其余主题——注意第5个板块中的 Rice 家族与 SRT 是“同源,但独立”的关系(并非 SRT 应用),详见该节导言。逻辑学家 Leo Harrington 对 SRT 威力的概括最为传神:
 +
 +
'''"You need a number z? You got it!"(你需要一个这样的数 z?给你!)'''<ref name="moschovakis2010" />
 +
 +
=== 通用序数记号系统与<math>\omega_1^{CK}</math> ===
 +
 +
这是 SRT '''最初的'''应用(见 3.1)。回顾§3.1 的背景:[[序数记号系统]]给可数序数指派自然数代号,使得 0 / 后继 / 极限三分可机械判定、前驱与[[柯西序列|基本序列]]可机械取出。在进入定理之前,先把本节反复用到的几个概念交代清楚("序数"本身的背景见 §3.1 的背景框):
 +
 +
* '''代号与所指''':记号系统里的每个自然数 <math>a</math> 都是一个'''代号''',它所指的序数记作 <math>|a|</math>。一个序数 <math>\alpha</math> 的'''后继'''(successor)就是 <math>\alpha+1</math>(0 的后继是 1,<math>\omega</math> 的后继是 <math>\omega+1</math>)。'''极限序数'''(limit ordinal,下文统记作 <math>\lambda</math>)则是既非 0 也非任何序数之后继的序数——它不能靠"+1"走到,只能被一列递增的序数"逼近",最典型的例子是 <math>\omega</math>(<math>0, 1, 2, 3, \ldots</math> 无限数完之后的那一步:任何自然数都不是它的"前一个")。
 +
* '''前驱与基本序列''':后继代号 <math>x</math> 的'''前驱'''(predecessor)记 <math>P(x)</math>——所指序数被"+1"之前那个序数的代号。极限代号 <math>x</math> 的'''基本序列(fundamental sequence)'''是一条可机械取出的递增代号列 <math>x_0</math>, <math>x_1,x_2,\ldots</math>,所指序数 <math>|x_0| < |x_1| < \ldots</math> 逐渐逼近 <math>|x|</math>。
 +
* <math>S_1</math> 的语法(<math>S_1</math> 是下文定理要构造的那个"通用"'''序数记号系统''',Kleene 1938 为它设计的编码方案;后文的记号系统 O 沿用同一语法):0 的代号固定为 1;代号 <math>a</math> 的后继的代号写成 '''<math>2^a</math>''';极限序数的代号写成 '''<math>3\cdot 5^e</math>''',并约定 <math>|3\cdot5^e| = \lim|\phi_e(n)|</math>(程序 <math>e</math> 逐个吐出逼近该极限的记号列,<math>\phi</math>ₑ 是编号为 <math>e</math> 的程序,见 §2.2)。取这三种质因数形态(1、2 的幂、3<math>\times5</math> 的幂)纯属编码技巧:对代号做质因数分解,就能机械判定它是 0 的代号、后继代号还是极限代号。
 +
 +
 +
'''定理(Kleene 1938)''':存在一个'''通用'''序数记号系统 <math>S_1</math>:对任何其他合法的序数记号系统<math>S</math>("合法"即满足 §3.1 说的条件——0 / 后继 / 极限三分可机械判定、前驱与基本序列可机械取出),存在可计算函数把 <math>S</math> 的代号'''保序'''地翻译为 <math>S_1</math> 的代号("保序":若 <math>|x| < |y|</math>,则翻译后所指的序数仍保持这一大小关系——翻译不打乱任何两个序数的先后)<ref name="kleene1938">'''Kleene, S. C. (1938).''' On notation for ordinal numbers. ''The Journal of Symbolic Logic'', 3(4), 150–155.【第二递归定理的原始出处,定理与证明见 p.153】</ref><ref name="rogers1967" />。
 +
 +
'''证明的思路'''(这是"有效超限递归"的范式,值得细看):想要的翻译函数 <math>\psi</math> 应该满足
 +
 +
: <math>\psi(x) = 1</math>      (<math>x</math> 是 0 的代号时) 
 +
: <math>\psi(x) = 2^\psi(P(x))</math>  (<math>x</math> 是后继序数的代号时,<math>P(x)</math> 是前驱代号) 
 +
: <math>\psi(x) = 3\cdot5^e</math>     (<math>x</math> 是极限序数的代号时,<math>e</math> 是"逐点翻译基本序列"那个程序的编号)
 +
 +
第三行的 <math>e</math> 值得拆开细看——'''<math>\psi</math> 的定义需要用到 <math>\psi</math>,循环正藏在 e 的代码里'''。设 <math>\lambda</math> 是 <math>S</math> 能命名的某个极限序数(就是上文说的那种"既非 0 也非后继、只能被逼近"的序数,例如 <math>\omega</math>),<math>x</math> 是它在 <math>S</math> 中的代号;<math>S</math> 是合法记号系统,故 <math>x</math> 自带一条可计算的基本序列 <math>x_0,x_1,x_2,\ldots</math>——一列递增的代号,所指序数逐渐逼近 <math>\lambda</math>。按上面交代的语法,极限序数的代号必须写成 <math>3\cdot 5^e</math> 的形态,所以 <math>\psi(x)</math> 必须形如 <math>3\cdot5^e</math>,其中 <math>e</math> 是这样一个程序的编号:
 +
 +
: 输入 <math>n\to </math>从 <math>x</math> 取出 <math>x_n\to </math>'''对 <math>x_n</math> 运行 <math>\psi</math>''' <math>\to </math>输出 <math>\psi(x_n)</math>
 +
 +
("逐点翻译基本序列"说的就是它。)这里有两个层面的循环,性质完全不同:
 +
 +
* '''值的层面(无害)''':<math>\psi(x) = 3\cdot5^e</math> 是'''一个完整的数''',<math>e</math> 只是其中 5 的指数;程序 <math>e</math> 的输出是 <math>\psi(x_0)</math>, <math>\psi(x_1),\ldots</math>——<math>x</math> '''下面'''各项的翻译——它从不计算 <math>\psi(x)</math> 自己(极限值由记号的形态约定,不是程序算出来的)。所以不存在"<math>\psi(x)</math> 的值里嵌着 <math>\psi(x)</math> 的值"这种直接自指。
 +
* '''代码的层面(真正的循环)''':程序 <math>e</math> 要对 <math>x_n</math> 运行 <math>\psi</math>,就必须'''在自己的代码里写死 <math>\psi</math> 的程序编号'''——而 <math>\psi</math> 此刻还在定义中。也就是说,想定义 <math>\psi</math>,得先造出一个"代码里引用了 <math>\psi</math> 的编号"的程序。这正是"右边出现了正在定义的 <math>\psi</math> 自己(及其编号)"的所指;这类循环在普通数学里非法。
 +
 +
SRT 恰好合法化它:先用 s-m-n 定理(§2.3)造一个可计算函数 <math>q(x, d)</math>——给定 <math>\psi</math> 的编号 <math>d</math>,机械地吐出"读 <math>n</math>、取 <math>x_n</math>、运行程序 <math>d</math>"那个程序的编号。于是想求的 <math>\psi</math> 满足:<math>\psi(x) = 3\cdot5^e</math>,其中 <math>e = q(x, d)</math>,而 <math>d</math> 正是 <math>\psi</math> 自己的编号。把右边整体看作 <math>d</math> 的函数、套 SRT 取不动点 <math>c</math>,令 <math>\psi = \phi_c</math>,循环即闭合;再沿序数归纳验证 <math>\psi</math> 确实是'''全函数'''("全":对每个输入代号都有输出,见 §2.1)且保序<ref name="kleene1938" />。
 +
 +
顺带分辨两行的差异:第二行 <math>\psi(x) = 2^\psi(P(x))</math> 是'''值依赖值'''的循环,且 <math>P(x)</math> 指向更小的序数,本质上是良基的("良基":不存在无穷下降链,所以"沿序数从小到大做归纳"是合法的);第三行则是'''编号依赖编号'''的循环(<math>e</math> 的代码里嵌着 <math>\psi</math> 的编号),良基性救不了它——必须 SRT。
 +
 +
 +
[[文件:Kleene记号系统O.png|缩略图|'''图5''':[[Kleene's O|Kleene 记号系统 O]] 的树状结构示意。每个自然数都是某个序数的代号——规则:<math>\mid 1\mid = 0</math>(最底层);<math>\mid 2^x\mid = \mid x\mid + 1</math>(后继,沿着"2 的幂"链向上);<math>\mid 3\cdot5^e\mid = \lim_n\mid\phi_e(n)\mid</math>('''极限'''——'''记号里携带基本序列程序的编号 e,这正是 SRT 大显身手的地方''')。所有构造序数都在这棵树上生长;树顶是 <math>\omega_1^CK</math>(无法被任何机械记号触及的边界)。]]
 +
 +
在 <math>S_1</math> 的基础上,Kleene 进一步构造了带树状[[偏序关系]]的'''序数记号系统 O(Kleene's O)'''——"偏序"(partial order)指只在部分代号对之间定义的"小于"关系(O 中记作 <O,反映所指序数的大小)。O 是通用且极大的:每个可被任何合法记号系统命名的序数(称为'''构造序数''',constructive ordinal)在 O 中都有代号。全体[[递归序数|构造序数]]的[[上确界]](supremum:不小于它们中任何一个的最小序数)
 +
 +
: '''<math>\omega_1^{CK}</math> = 最小的非构造序数(Church–Kleene 序数)'''
 +
 +
是逻辑学中最基本的"普适常数"之一:它是"机械命名能力"在序数世界中的绝对边界<ref name="kleene1938" /><ref name="rogers1967" />。Rogers 用同样的 SRT 技术证明:O 上的"序数加法"可由一个可计算函数实现<ref name="rogers1967" />。
 +
 +
问题来了:同一序数 <math>\alpha</math> 在系统中有'''无穷多个代号''',用不同代号构造出的 <math>H_\alpha</math> 会不会不同?
 +
 +
Kiselyov 以现代眼光补充了这段历史的思想动机:Kleene 放弃用 <math>\lambda</math> 项(他与 Church 两年前的方案)做序数代号,正是因为 <math>\lambda</math> 项作为'''函数'''无法被机械地比较大小;极限序数的代号必须携带'''程序的编号'''而非函数本身——"只有编号(有穷对象)才能被直接给出,这是有穷主义立场的要求"<ref name="kleene1938" /><ref name="kiselyov" />。
 +
 +
=== 构造序数 = 递归序数 ===
 +
 +
可数序数有两种自然刻画:"'''构造序数'''"(能被某个机械记号系统命名,见 6.1)与"'''递归序数'''"(某个可计算良序的长度——即存在一个可计算的大小关系,把一堆自然数排成该长度的"无限队列")。
 +
 +
* '''Markwald–Spector 定理(1954/1955)''':两种刻画恰好等价——构造序数 ⟺ [[递归序数]]<ref name="rogers1967" /><ref name="moschovakis2010" />。
 +
 +
这是经典集合论事实"第二数类的两种刻画等价"的可计算版本;两个方向的证明都以 SRT 为归纳枢纽<ref name="moschovakis2010" />。
 +
 +
=== 超算术层级与 Spector 唯一性定理 ===
 +
 +
需要先铺垫三个概念。
 +
 +
'''[[神谕]](oracle)''':给程序外接一块只读"数据库"——集合 A。程序运行中可随时查询"数 n 是否属于 A"并立即得到正确答案。这样的 A 称为神谕;"以 A 为神谕可计算"衡量的是:'''若把 A 白送给你,你还能多算出什么'''。
 +
 +
'''[[Turing跳跃]](Turing jump)''':对任何集合 A,把"哪些以 A 为神谕的程序会停机"这一问题本身收集成一个集合,记作 A′(读作"A 撇")。可以证明:A′ 以 A 为神谕仍不可计算——每跳一次,都得到一个严格更难的"相对版停机问题"。特别地,从空集 <math>\emptyset</math> 出发跳一次得到的 <math>\emptyset'</math>,正是通常意义下的停机问题(5.7.3)。
 +
 +
'''沿构造序数"盖楼"''':现在从 <math>H_0 = \emptyset</math> 出发,沿构造序数(见 6.1)逐层往上盖:
 +
 +
: <math>H_{\alpha+1}</math> = (<math>H_\alpha</math>)′ (后继层:再跳一次,复杂度升一级) 
 +
: <math>H_\lambda = \cup_n H_{\lambda_n}</math> (极限层:把下面各层沿一条可计算上升的序列 <math>\lambda_0 < \lambda_1 < \lambda_2 < \ldots</math> 并起来——'''沿哪条序列取并由 <math>\lambda</math> 的代号给出''',6.1 里"记号携带程序编号"的约定在此派上用场)
 +
 +
在某一层 <math>H_\alpha</math> 中可计算的集合,称为'''[[超算术的]](hyperarithmetical, HYP)'''。这栋楼的前几层串起熟悉的图景:'''只盖有穷多层,得到的恰好是通常的算术层级'''——穷尽一阶算术(量词只作用于自然数)可定义的全部集合;盖到第 <math>\omega</math> 层(<math>\omega</math> 即 6.1 中最小的无穷序数),得到的集合已足以一举判定[[皮亚诺公理]]体系的全部真语句——包括所有皮亚诺公理体系证明不了的真命题(对照 5.7.4 的不完备性);而楼并不停在这里,它沿构造序数一直盖到 <math>\omega_1^CK</math> 为止。HYP 因此是真正高于算术层级的层级——至于它究竟高到哪一步(恰好等价于一个"二阶量词"的定义能力),正是 6.4 的主题。<ref name="moschovakis2010" />
 +
 +
问题来了:同一序数 <math>\alpha</math> 在系统中有'''无穷多个代号''',用不同代号构造出的 <math>H_\alpha</math> 会不会不同?
 +
 +
* '''Spector 唯一性定理(1955)''':不会。<math>H_\alpha</math> 的可计算度只依赖序数 <math>\alpha</math> 本身,与代号选择无关;而且不同代号之间的翻译是一致可计算的<ref name="spector1955">Spector, C. (1955). Recursive wellorderings. ''The Journal of Symbolic Logic'', 20, 151–163.</ref><ref name="moschovakis2010" />。
 +
 +
证明需要同时构造'''两个互相缠绕的函数'''(互相引用对方编号),由双递归定理(见 §5.2 的 [[雷蒙德·斯穆里安|Smullyan]] 版本)合法化——这是有效超限递归技术的高峰之一。Kleene 对这个学生的工作推崇备至,他常讲自己如何"行为不端"地接受它作为博士论文、又作为期刊编辑指定自己为审稿人并立即录用——"非常不合规矩,但我认为最终有利于逻辑!"<ref name="moschovakis2010" />。
 +
 +
=== <math>HYP = \Delta^1_1</math> 与有效描述集合论 ===
 +
 +
'''背景''':在自然数的集合(数学分析的对象)上,可以用"二阶量化"分层:<math>\Sigma^1_1</math> 集是"存在一个实数使得某个可计算性质成立"的集合(存在投影),<math>\Pi^1_1</math> 是其对偶(全称),<math>\Delta^1_1 = \Sigma^1_1 \cap \Pi^1_1</math> 是"两面都可定义"的集合——可类比为分析学中"既可开逼近又可闭逼近"的集合。
 +
 +
* '''Kleene 定理(1955)''':自然数的集合 A 是 <math>\Delta^1_1</math> 的,当且仅当 A 是[[超算术]]的(HYP)<ref name="kleene1955">Kleene, S. C. (1955). On the forms of the predicates in the theory of constructive ordinals (second paper). ''American Journal of Mathematics'', 77, 405–428.【<math>\Delta^1_1</math> = 超算术集合(HYP)的原始定理出处(§6.4)】</ref><ref name="moschovakis2010" />。
 +
 +
这把可计算性理论(HYP,由机器和序数定义)与[[描述集合论]](<math>\Delta^1_1</math>,由投影/量化定义)两大传统焊接在一起,是 Kleene 获 1983 年 AMS Steele 奖的核心成果之一。证明的两个引理([[Kleene's O]] 是 <math>\Pi^1_1</math> 集、且是 <math>\Pi^1_1</math> 中"最复杂"的完备集)都靠 SRT 沿良基树作[[有效超限递归]]建立<ref name="moschovakis2010" />.
 +
 +
在此基础上,SRT 向实数空间([[贝尔空间|Baire 空间]],即自然数无穷序列的空间)推广后,成为'''[[有效描述集合论]]'''的引擎,三个代表性结果:
 +
 +
1. '''[[Suslin–Kleene定理]]''':[[博雷尔集|Borel 集]](从开集出发经可数次并、交、补生成的集合)与 <math>\Delta^1_1</math> 集之间可以可计算地互译。它同时蕴含经典 [[米哈伊尔·苏斯林|Suslin]] 定理(<math>\Delta^1_1 = Borel</math>)和上述 Kleene 定理,是两大传统的汇合点<ref name="moschovakis2010" />;
 +
2. '''[[赋范归纳定理]]'''(Moschovakis 1974):对带有良好"秩函数"结构的归纳定义,其最小/最大不动点保持在相应的可定义层级内。它的证明使用"关系版 SRT"(不动点代码 <math>\varepsilon</math>* 使自己的每个后继元组都由自己的前段定义)。这可视为对 Kleene 1944 年错误(见 3.3)的"正确打开方式":SRT 只给某个不动点,要拿到'''最小'''不动点需要额外的秩结构<ref name="moschovakis2010" />;
 +
3. '''[[编码引理]]'''(Moschovakis 1970):在 ZF+DC+AD(确定性公理,一个与大[[基数]]理论相关的集合论假设)下,若[[连续统]]可满射到基数 <math>\kappa</math>,则可满射到 <math>\kappa</math> 的幂集。证明通过'''带参数的 SRT'''作有效超限递归——SRT 由此进入基数算术这一纯集合论领域;它还是 '''[[Jackson 定理]]'''(1989:在 AD 下,三型存在量词的 Kleene 序数恰好等于'''最小的弱不可达基数''')的基本工具——这是连接高类型递归论与大基数理论的最惊人结果之一<ref name="moschovakis2010" />。
 +
 +
此外,Kleene 1940 年代为直觉主义数学(拒绝排中律的构造性数学)构造的'''可实现性(realizability)'''中,[[bar递归定义]]、[[bar归纳]]与[[连续性原理]]的验证也本质地使用 SRT 的各种形式<ref name="moschovakis2010" />。
 +
 +
=== r.e. 索引集理论:Rice、Rice-Shapiro 与 Myhill ===
 +
 +
本板块把"程序行为性质"当作一个独立的研究对象。核心概念是'''索引集(index set)''':给定某类程序行为,把"行为落在这类里"的全部程序编号收集起来,就得到 <math>\mathbb{N}</math> 的一个子集。若用程序 e 的定义域 <math>W_e</math>(§2.4)来编码行为、用 <math>\mathcal{A}</math> 表示某类 r.e. 集,则写法是
 +
 +
: <math>A = \{ e : W_e \in \mathcal{A}\}</math>
 +
 +
(换成函数视角就是 <math>A = { e : \phi_e</math> 具有性质 <math>\mathcal{A}\}</math> 。)可判定、可枚举这类词只能作用于自然数集合,索引集正是那道翻译层——它把"程序行为问题"转写成 <math>\mathbb{N}</math> 的子集,之后才能问"这个性质能判定吗、能枚举吗"。两个要点:其一,此类性质必须'''只看行为、不看代码'''(同一函数的两个不同编号在 A 中必须同真同假),否则退化为平凡的代码分析。
 +
 +
与 SRT 的关系必须先分清:下面三个结果中,'''只有 Myhill 定理是 SRT 的应用'''(其证明核心是"程序 z 引用 z 自己的编号",见 6.5.3);'''Rice 与 Rice-Shapiro 不是 SRT 的推论'''——它们的标准证明分别是停机归约(对角线矛盾)与有限集/紧致性论证,全程不需要 SRT,SRT 至多给 Rice 提供一条事后捷径。也就是说,Rice 家族与 SRT"同源,但独立":共享对角线血统,却不靠 SRT 的代码不动点力量成立。Rice 家族因此不宜与双递归定理等并列在 §5.2 的"推论"名义之下;本文把它们放在本板块,与 Myhill 定理并置,正是为了并排呈现"独立成立"与"依赖 SRT"这两种截然不同的关系。
 +
 +
==== [[Rice定理]](1951) ====
 +
 +
'''陈述''':程序行为的任何'''非平凡'''性质都不可判定。精确地说:设 <math>\mathcal{A}</math> 是某类部分可计算函数,既非空也非全体,则它的索引集 <math>A = \{ e : \phi_e \in \mathcal{A}\}</math> 不是可计算集(更不是递归集)。
 +
 +
* '''证明思路(停机归约——教科书标准路线,不依赖 SRT)''':
 +
# 取一个"见证"函数 <math>\phi_a \in \mathcal{A}</math>。若处处无定义的函数恰好也在 <math>\mathcal{A}</math> 中,就对"补性质"(行为不在 <math>\mathcal{A}</math> 中)重做一遍论证——两类情况完全对称,故以下不妨设"恒发散"<math>\notin \mathcal{A}</math>;
 +
# 对每个 <math>x</math>,用 s-m-n 定理(§2.3)机械地造一个程序 <math>h(x)</math>:它先模拟"程序 <math>x</math> 在输入 <math>x</math> 上"的运行——这一步是对角线(让 <math>x</math> 面对自己的行为);一旦该模拟停机,<math>h(x)</math> 就转而执行程序 <math>a</math>;若模拟永不停机,<math>h(x)</math> 也永不停机;
 +
# 于是 <math>x</math> 停在自己的输入上 ⟺ <math>h(x)</math> 计算的是 <math>\phi_a</math>(<math>\in \mathcal{A}</math>)⟺ <math>h(x) \in A</math>。若 <math>A</math> 可计算,就能机械判定"<math>x</math> 是否停在 <math>x</math> 上",停机问题被解决——矛盾(§5.7.3)。
 +
 +
* 直觉:任何非平凡的"行为分类"都把停机问题吸收为自己内部的一个子问题——你若想机械地给每个程序的行为贴标签,就不得不先回答"程序 <math>x</math> 停在自己身上吗",而那正是不可判定的对角线问题<ref name="rice1953">'''Rice, H. G. (1953).''' Classes of recursively enumerable sets and their decision problems. ''Transactions of the AMS'', 74, 358–366.【Rice 定理原始论文】【§6.5.1】</ref>.
 +
 +
'''注(SRT 捷径,非本质)''':[[莱斯定理|Rice 定理]]也可用 SRT 三行证完:设 <math>A</math> 可计算,取变换规则 <math>f(x) = "x <math>\in A</math> 时给一个 <math>\notin A</math> 的编号,否则给一个 <math>\in A</math> 的编号"(A 非空非全,顺序搜索即可机械实现),SRT 给出不动点 <math>m</math> 使 <math>\phi_m = \phi_{f(m)}</math>。若 <math>m\in A</math>,则 <math>f(m)\notin A</math>,同一函数 <math>\phi_m = \phi_{f(m)}</math> 却一个在 A 内、一个在 A 外(索引集只看行为),矛盾;<math>m\notin A</math> 同理。这条证明虽短,却是'''事后捷径'''——它没有揭示 Rice 定理与停机问题的血缘,而后者(上面的归约)才是定理的标准证明与本质机制<ref name="rogers1967" />。
 +
 +
==== Rice-Shapiro 定理(1956) ====
 +
 +
Rice 定理回答"'''能否'''判定";[[莱斯-夏皮罗定理|Rice-Shapiro 定理]]进一步刻画"'''何时能半判定'''"——把注意力从"A 是否可计算"收窄到"A 自身何时是 r.e. 的":
 +
 +
设 <math>A = \{ e :W_e \in \mathcal{A}\}</math> 是索引集。A 是 r.e. 的,'''当且仅当''' <math>\mathcal{A}</math> 是"有限可生成"的:存在一个可计算列举的有限集列 <math>\mathcal{S} = \{S_0,S_1,S_2,\ldots</math>},使得 <math>W\in \mathcal{A}</math> ⟺ <math>\delta</math>中存在某个 <math>S_i \subseteq W</math>。
 +
 +
含义:一个行为性质若能'''被枚举地识别'''(索引集 r.e.),它就必须由'''有限证据'''决定——W 一旦包含某个预列的有限集 <math>S_i</math>,性质即成立;反之,性质成立也只需某个有限子集作证。"能识别 ⟹ 只依赖有限信息"这一半是紧致性式的论证(若性质的成立只靠无限多证据,枚举过程就永远等不到决定性的一刻);"有限可生成 ⟹ 可枚举"那一半是直接列举。两个方向都与 SRT 无关。
 +
 +
Rice-Shapiro 不是 SRT 的推论,而是索引集理论中独立的结构定理,并且它比 Rice 定理更强——由它可以推出 Rice 定理:若非平凡索引集 A 可计算,则 A 与补集都是 r.e. 索引集,Rice-Shapiro 给 <math>\mathcal{A}</math> 与其补类都套上"有限可生成";而有限可生成自动蕴含"超集仍在类中",把两个类里各自的成员并起来,就得到同时属于两类的一个 r.e. 集,矛盾。可见在"识别程序性质"的问题上,真正的母定理是 Rice-Shapiro 而非 SRT。<ref name="rogers1967" /><ref name="soare1987" />
 +
 +
==== [[Myhill定理]]:[[创造集]] = [[完备集]] ====
 +
 +
'''背景''':停机问题集合 <math>K = \{e : \text{程序} e \text{在输入} e \text{上停机}\}</math> 是 r.e. 集中"最不可判定"的——任何 r.e. 集都能通过可计算的翻译归约到它(称为 '''r.e.-完备''',complete)。另有一个看似完全不同的概念:一个 r.e. 集 A 称为'''创造集(creative set)''',如果它的补集是"能系统地生产反例"的——存在一个可计算程序,你给它任何与 A 不交的 r.e. 集,它都能吐出一个既不在 A 里也不在那个集合里的元素。创造性是 Post 1944 年为刻画"不可判定的源泉"而引入的概念。
 +
 +
* '''定理(Myhill 1955)''':每个创造集都是 r.e.-完备的;两个概念重合<ref name="myhill1955">Myhill, J., & Shepherdson, J. C. (1955). Effective operations on partial recursive functions. ''Zeitschrift für mathematische Logik und Grundlagen der Mathematik'', 1, 310–317.</ref><ref name="rogers1967" /><ref name="moschovakis2010" />.
 +
 +
'''证明中 SRT 的关键一步''':想把任意 r.e. 集 B 归约到创造集 A,需要构造一个程序 z,使得"若 x <math>\in B</math>,则 z 枚举出 {u(z)};否则 z 枚举空集"——'''z 的定义里用到了 z 自己的编号'''(u(z) 是生产反例的程序作用于 z)。这正是 SRT 合法化的自指;没有这个自指,证明无法闭合。由此 Rogers 还得到推论:'''所有创造集在"可计算的重新命名"意义下完全相同(两两递归同构)'''——从可计算性角度看它们"长得一模一样"<ref name="rogers1967" />。
 +
 +
=== 有效运算的连续性:Myhill–Shepherdson 与 KLS–Čeĭnin 定理 ===
 +
 +
'''背景''':一个"程序变换"<math>\Phi</math> 把函数 <math>\phi</math> 变成新函数 <math>\Phi(\phi)</math>。有两种实现方式:'''按代码操作'''(给 <math>\Phi</math> 输入 <math>\phi</math> 的程序编号,让它随便分析代码——类似"按名调用")与'''按值操作'''(<math>\Phi</math> 只能查询 <math>\phi</math> 在具体输入上的输出,像黑盒——类似"按值调用")。直觉上按代码操作更强大(能读源代码),但:
 +
 +
'''Myhill–Shepherdson 定理(1955)''':对可计算变换而言,两种方式恰好等价——任何"按代码"的可计算变换都能改写成"按值"的图灵机计算,反之亦然<ref name="myhill1955" /><ref name="moschovakis2010" />.
 +
 +
证明的两个关键引理(变换必然是单调的、必然是连续的)都依赖 SRT:构造一个"监视 <math>\Phi</math> 是否已输出、在此之前模仿函数 <math>\phi_1</math>、之后叛变为函数 <math>\phi_2</math>"的程序 z——z 的行为取决于 z 自己(经 <math>\Phi</math> 处理后)的表现,由 SRT 提供,再用"同一函数的不同编号必须得到同一结果"逼出矛盾<ref name="moschovakis2010" />.
 +
 +
'''Kreisel–Lacombe–Shoenfield–Čeĭnin 定理(1957/1962)''':作用在全函数上的可计算变换必然是'''连续'''的——输出在任何点的值只依赖输入函数的有限个值;而且可用确定性图灵机实现。<ref name="moschovakis2010" />
 +
 +
[[尤里·切宁|Čeĭnin]] 的版本——"构造度量空间之间的每个可计算算子都是有效连续的"——是俄罗斯'''构造性分析'''学派(用可计算性重新奠基数学分析)的中心结果之一<ref name="moschovakis2010" />。证明中 SRT 出现两次,用法与上述如出一辙。
 +
 +
此外,Rogers 用 SRT 证明了 '''[[Blum定理]]''':任意两个"通用部分函数"(即[[解释器]])都只差一个可计算的重新编号(递归同构)——编号系统在"重新命名"意义下本质唯一<ref name="rogers1967" />.
 +
 +
=== Solovay 可证性逻辑 ===
 +
 +
'''背景''':'''可证性逻辑(provability logic)'''研究"可证"这个概念的抽象规律,把 "⌜<math>\phi</math>⌝ 在 PA 中可证" 抽象为模态算子 □<math>\phi</math>。[[模态逻辑]]系统 '''GL'''([[Gödel-Löb 逻辑|Gödel-Löb 逻辑]])是候选公理系统。
 +
 +
'''Solovay 定理(1976)''':一个模态公式在 PA 的所有解释下都可证,当且仅当它是 [[Gödel-Löb 逻辑|GL]] 的定理。即 GL '''恰好'''完全刻画了 PA 的可证性逻辑<ref name="solovay1976">Solovay, R. M. (1976). Provability interpretations of modal logic. ''Israel Journal of Mathematics'', 25, 287–304.</ref><ref name="moschovakis2010" />。
 +
 +
[[罗伯特·索洛韦|Solovay]] 的证明漫长精巧,其关键引理需要构造一个'''自指的'''函数 h——h 的定义中引用 h 自己的编号。Solovay 本人用一句话带过:"表面上的循环用递归定理以通常方式处理"<ref name="moschovakis2010" />。Moschovakis 评论:无法想象不借助 SRT 如何凭空想出这个构造——在此意义上 SRT 是可证性逻辑这块基石中不可或缺的成分<ref name="moschovakis2010" />。
 +
 +
=== 应用地图一览 ===
 +
 +
{| class="wikitable"
 +
|-
 +
! 领域
 +
! 代表性结果
 +
! SRT 的角色
 +
|-
 +
| r.e. 索引集理论
 +
| Rice 定理;Rice-Shapiro;Myhill:创造集 = 完备集
 +
| 前两者:同源但独立(非 SRT);Myhill:构造"监控自己"的程序〔§2〕
 +
|-
 +
| 有效运算
 +
| Myhill–Shepherdson;KLS–Čeĭnin 连续性
 +
| 证明单调性与连续性〔§§3–4〕
 +
|-
 +
| 可证性逻辑
 +
| Solovay:GL 完备性
 +
| 构造自指函数〔§6〕
 +
|-
 +
| 序数记号
 +
| 通用系统、Kleene's O、<math>\omega_1^{CK}</math>
 +
| 最初的用武之地〔§7〕
 +
|-
 +
| 超算术理论
 +
| Markwald–Spector;Spector 唯一性;HYP = <math>\Delta^1_1</math>
 +
| 每个证明的归纳枢纽〔§§8–9〕
 +
|-
 +
| 有效描述集合论
 +
| Suslin–Kleene;赋范归纳;编码引理
 +
| 关系版/参数版 SRT〔§10〕
 +
|-
 +
| 高类型递归
 +
| Kleene 1959 体系;Jackson 定理
 +
| 理论的第一块基石〔§11〕
 +
|-
 +
| 直觉主义数学
 +
| 可实现性、bar 递归合法性
 +
| 验证自指定义〔§12〕
 +
|-
 +
| 函数式编程
 +
| Y 组合子的推广、部分求值
 +
| 元编程的不动点原理<ref name="kiselyov" />
 +
|}
 +
 +
(表中"§"编号均指 Moschovakis 2010<ref name="moschovakis2010" /> 的章节。)
 +
 +
== 评注与影响 ==
 +
 +
# '''简单性与普适性的反差'''。SRT 的全部证明只有一行对角线,应用却横跨逻辑学几乎所有分支。Moschovakis 指出:其广泛适用性恰恰'''源于'''这种简单——它极易被翻译到自然数以外的语境(实数空间、任意 Polish 空间、高类型对象、模态逻辑),在每个语境中重新化身<ref name="moschovakis2010" />。
 +
# '''两个递归定理的分工'''。第一递归定理保证'''递归定义有最小解'''(函数层面、序理论的不动点);第二递归定理保证'''自指定义合法'''(代码层面的不动点)。前者回答"这个函数方程有解吗",后者回答"我能在定义中引用被定义者自己的代码吗"。强定理蕴含弱定理,反之不然(见 4.4)。
 +
# '''自指的数学化'''。从 Gödel 的替换函数、Turing 的通用机、von Neumann 的自复制自动机,到 quine、计算机病毒、编译器自举,乃至人工智能中"系统改进自身"的设想,"系统谈论自身"的可行性边界都由同一种对角线结构划定。Kleene 递归定理是这一结构最干净、最一般的陈述。
 +
# '''历史反讽'''。Kleene 1938 年发明 SRT 是为了构造序数记号,而 1944 年他恰恰因为"拿到一个不动点却误以为拿到最小不动点"而犯下著名错误,直到 1955 年才纠正(见 3.3)——这个故事最恰当地说明了理解两个递归定理'''区别'''的重要性。
 +
# '''Rogers 的总评''':递归定理是"一个基本的研究工具、一个深刻的结果"(a basic research tool <math>\ldots</math> a deep result),它的深刻在于"以优雅和智识上的经济性,处理那些否则需要繁复构造的问题"<ref name="rogers1967" />;虽然它的直接效果常是产生各种"病态"结构(自我枚举的集合、自我打印的程序),但它在 Myhill 定理等结果中起到了"在此前独立定义的概念之间建立正则联系"的作用<ref name="rogers1967" />。
 +
 +
<references />

导航菜单