2.4. Godel 完备性定理

很显然, 这一节的主要目的是像证明零阶语言即命题逻辑的可靠性和完备性一样, 试着证明一阶逻辑的可靠性与完备性. Godel 于 1929 年首次得到了完备性的证明, 并在 1930 年公之于世. 我们将要给出的证明方法则是 Henkin 在 1949 年提出的. 看到这些人物的名字, 读者大约能猜到这个定理并不好证.

首先, 我们还是证一下可靠性. 由于语言更复杂了, 公理的数目大大增多, 可靠性也没有之前那么显然. 先来看一个引理.

引理 2.4.0.1 (替换引理). 如果项 可以在公式 中无冲突地替换变元 , 则 当且仅当 .

证明. 还是对公式 实行归纳.

1.

形如 . 此时
当且仅当
当且仅当
当且仅当
.

2.

形如 . 与上类似.

3.

形如 . 此时若 不在 中自由出现, 则由自由变元决定性显然. 下讨论自由出现的情形: 注意到无冲突替换要求 不在 出现且 中也可以无冲突替换, 这说明对任何 都有 . 又注意到 , 可如下做连续等价推导:

当且仅当对所有的 , 当且仅当 (归纳假设) 对所有的 , 当且仅当对所有的 , 当且仅当对所有的 , 当且仅当 .

4.

形如 . 此时 当且仅当 当且仅当 当且仅当 .

5.

形如 . 类上.

下面来证明可靠性.

定理 2.4.0.2 (可靠性定理). 一阶逻辑是可靠的. 换言之, 蕴含 .

证明. 首先, 分离规则保持有效性是显然的, 因此只需要证明每条公理都普遍有效 (valid). 换言之, .

由于公理有好几种, 而且还允许任意全称概括, 我们需要把这个定理归纳地拆成几个部分来证明.

(1) 第一组公理, 即从命题逻辑中继承的公理的有效性: 只需注意到赋值在所有素公式 (没有逻辑连接词的公式) 上的取值可以决定它在所有公式上的取值.

(2) 第二组公理: 我们已知的是 , 欲证的则是 , 而根据替换引理只要证 , 而这只要按定义展开条件中的全称量词, 然后选取 即可.

(3) 第三组公理: 拆开 的定义, 在每个 上面分离, 显然.

(4) 第四组公理: 拆开 的定义, 由自由出现变元的决定性显然.

(5) 第五组公理: 显然.

(6) 第六组公理: 考察所有满足 的模型与赋值, 不难归纳得出它在每个项上都可以将任意个 替换为 而不改变真假, 进而原子公式, 进而素公式, 进而全体公式.

最后还要证明, 普遍有效当且仅当它的某个全称概括 普遍有效, 而这由普遍有效的定义不难证明.

接下来证明完备性定理. 我们当然还是模仿在命题逻辑中使用的方法, 先使用以下引理.

引理 2.4.0.3. 一阶逻辑完备当且仅当任意一个一致的公式集都是可满足的.

其证明与命题逻辑中的证明也类似, 这里略去. 下面再证明三个可能用到的元定理.

引理 2.4.0.4 (常数概括引理)., 而常元符号 不在 中出现, 则存在同样不在 中出现的变元符号 , 使得 . 更进一步, 还存在一个 的不包含 的推演序列.

证明. 我们先证明前面. 考虑 的推演序列 . 有限个公式只出现有限个变元, 所以我们随便拿一个没出现在这些公式中的变元 , 不难发现 的一个推演序列.

下面验证更进一步的部分. 由于推演序列是有限长度的, 我们一定有一个 为有限集, , 进而 , 进而直接从这里就能由概括公理得出 , 而这一步也没有加入新的常数符号, 所以 的这个推演序列没用到 .

引理 2.4.0.5 (循环替换引理). 如果变元 不在公式 中出现, 则变元 可以在公式 中无冲突地替换 , 且 .

证明. 只要无冲突替换成立, 由简单的字符串操作就不难证明最后的式子. 而由于 里根本不出现 , 无冲突替换性由简单的归纳就能证出来.

引理 2.4.0.6 (约束变元替换引理). 如果有公式 , 变元 和项 , 则存在公式 , 它和 只有某些约束变元不一样, 而且满足

(1), ;

(2) 可以在 中无冲突地替换 .

证明. 固定 , 我们递归地构造 . 对未提到的情况, 我们构造的 都是完全不改变句子结构的, 原子公式甚至不改变句子.

对于 形如 的情况, 我们由归纳假设选一个 然后再选一个 中都没出现过的变元 , 定义 .

现在只需要递归证明这个构造确实合理. 这里只录入最重要的量词情况的 (1) 的证明, 别的都很简单留给读者自己证明.

首先根据归纳假设, , 于是 , 又因为 不出现, 而 , 概括得到 , 于是 .

另一方面, 有归纳假设 . 显然有 , 由 不出现可用循环替换得到 , 进而 , 最后由 不在左边自由出现可以概括为 .

现在我们准备充分, 向完备性定理发起挑战.

定理 2.4.0.7 (Godel 完备性定理). 一阶逻辑是完备的.

证明. 只要证明一致则可满足. 假定有一个一致的公式集 , 我们自然的想像命题逻辑一样得到极大一致集, 然后构造一个结构, 最后得到一个赋值, 来满足这个公式集. 以下默认理论有等词, 因为没有等词的理论显然更简单.

Step1. 扩充得到极大一致集

为了能最后能得到结构, 我们必须给这个极大一致集附带一些额外的东西. 具体而言, 我们向原来的语言 中加入可数多个新的常元符号 , 从而它们不在 的任何公式中出现. 我们记 为扩充后的语言.

首先, 中一致. 证明是用反证法, 若它变得不一致了, 那把推演序列里的新常元用常数概括引理改成变元, 就会得到 中不一致的证据, 矛盾.

接下来添加 Henkin 公理. 我们 (由可数性) 列举 中全体 (公式, 变元) 的有序对为 . 我们递归地令

1.

, 其中 是第一个不在 中出现的新常元.

2.

, 其中 是第一个
中都没出现过的新常元符号.

我们记 , 然后来验证 一致.

反证. 如果不一致, 由证明序列的有限性一定可以找到一个最小的 使得 不一致. 由反证法元定理, 这指出 . 假定 , 则 , 由定义 不在左边出现, 于是常数概括得到 , 这与 极小是矛盾的.

类似 Lindenbaum 定理, 我们通过枚举句子做 的极大一致扩张 , 并且从过程中得到它对语法蕴含封闭 (即 指出 ).

Step2. 构造无等词公式的解释

这个结构非常有趣, 因为这个结构就是我们语言里面的东西.

上所有项的集合为 , 定义二元关系 , 对谓词 定义 , 对函数 定义 , 对常数 定义 , 得到结构 . 最后定义初始赋值 把变元 变到它自己这个项 上面, 并令其扩展, 得到结构 上的赋值 .

注意, 这个 也可以当成是我们给 添加的一个新的二元谓词.

我们证明: 对任意公式 , 当且仅当 , 其中 是在 中把等词 换成 得到的公式.

(1) 通过对项归纳不难得知 .

接下来对公式 实行归纳, 证明 当且仅当 . 我们还是只证明最复杂的量词情形, 把其他简单情形交由读者自行完成. 假设 .

(2) 从左向右; 由定义 有一条对应的 Henkin 公理 . 注意 , 我们有 蕴含 由替换引理蕴含 蕴含 由假设蕴含 蕴含 由封闭性和 Henkin 公理蕴含 蕴含 .

(3) 从右向左: 我们来证明逆否. 若 , 我们想证明 . 条件中拆掉 的定义已经给我们了一个反例项 , 满足 . 运用约束变元替代引理, 选择一个 , 它与 的差别只有约束变元, 而且 中可以无冲突地替代 . 做连续推导: 由语义等价推出 由替换引理推出 由归纳假设就得到 推出 推出 .

Step3. 构造一般公式的解释

注意上面已经证明了无等词公式的完备性. 由于等词和元语言的等于不一样, 直接做会出事, 我们要考虑一个商结构. 首先, 读者不难验证, 上的一个等价关系, 且和每个谓词和函数都是相容的 (即相等的东西判断/映射到同一个东西).

我们重新定义结构 的论域为 , 谓词 对应 , 函数 对应 , 常元 对应 . 定义初始赋值 , 然后令其自然地延拓为赋值. 我们只要证明:

对任意公式 , 当且仅当 .

归纳验证是惯常的归纳, 注意我们可以引用 中已经证明的结论来简化过程.

评注. 注意, 以上讨论的是可数语言, 证明中未曾用到选择公理; 如果讨论的语言是任意的, 我们就需要选择公理来进行公式的枚举.