本文使用 Zhihu On VSCode 创作并发布

各位朋友七夕快乐!

上一篇文章Gödel完备性定理 —— 一阶谓词逻辑演绎系统 Part I中笔者介绍了一阶谓词逻辑的语言和演绎系统,并粗略讨论了Gödel完备性定理的一些意义。这篇文章我们将完整证明完备性定理。并在文末简要讨论Löwenheim–Skolem定理及其衍生出的Skolem悖论。

重述Gödel完备性定理如下:

是一个一阶语言。
。若
,则

换而言之,一切一阶逻辑的真命题都是可证明的。

可证明性是依赖于演绎系统的。我们采用上篇文章引入的演绎系统

。重述其的7种公理:

和2种演绎规则:

我们先在一个限定的情况下证明这个定理:

  • 不含等号
    (这时我们只有公理A1~A5);
  • 。即只考虑前提和结论都不含自由变量的情况。

在证明弱化的完备性定理后,我们会讨论如何推广这两种情况。

一致性,极大一致性,可满足性

在命题逻辑完备性证明(命题逻辑演绎系统的可靠性与完备性)中使用过这些概念。复述定义如下:

称为:
  • 一致的,若不存在

    使得
    同时成立。
  • 极大一致的,若它是一致的,且对任意
    ,都有
  • 可满足的,若存在模型
    使得
    对每个
    都成立。
    可满足与
    存在一个模型同义,笔者会自由替换使用这两个说法。

和命题逻辑一样,我们的核心是证明:[定理0] 一致的

是可满足的

如果假设这个结论,完备性定理可以自然由它推出。(过程见命题逻辑演绎系统的可靠性与完备性末尾)

见证集

Henkin在1949年对Gödel完备性定理的证明中,引入了一个所谓见证性(witnessing)的概念:

称为

见证的,若:对于所有只含有

作为自由变量的
,若
,则存在常量符号
使得

我们把定理0的证明拆成两大模块:

  • [定理1] 极大一致并具有见证性的

    是可满足的

  • [定理2] 若所有极大一致并具有见证性的
    是可满足的,则所有一致的
    是可满足的

项模型,定理1的证明

在这个小节我们始终假设

是极大一致并具有见证性的。

Henkin创造性地引入项模型(term model)的概念:

考虑

中全体闭项(closed terms)构成的集合
(闭项是指不含变量只含常量的项)。定义
的项模型
,其包括:
  • 论域

    ;
  • 谓词指派:对于谓词符号
    ,
    成立当且仅当
    ;
  • 函数指派:对于函数符号
    ;
  • 常数指派:对于常数符号
    ,

我们要证明这个构造出来的项模型确实是满足

的模型。

是一个
上的赋值。令
(
)。对于
,用
表示对每个
,将
中每个自由出现的
替换成
。由于每个
都是闭项,这样的替换总是合法的。

[引理1.1] 对每个项

,有

的长度用归纳法。

假设结论对长度小于

的项成立。考虑长度为
的项
  • ,则
  • ,则
  • ,则
    。由归纳假设,

[引理1.2] 对每个公式

,
当且仅当

的长度用归纳法。

假设结论对长度小于

的项成立。考虑长度为
的项
  • 是原子公式,则
    ,其中
    。有
  • ,其中
    。有
  • ,其中
    。有
  • ,其中
    。这是唯一不显然的情况。

先证

方向:假设
。设
是将
中所有
替换为
得到的公式。于是
。由
的极大一致性,有
。由下面的引理1.2.1和肯定前件,得到
。由
的见证性,存在
使得
。定义

以及赋值

。于是
。由归纳假设,有
,即
。注意到
-等价的,而
不是
的自由变量,于是有
。这与
矛盾。
方向:假设
。则存在与
-等价的
使得
。定义

由归纳假设,有

。令
的定义同前,则有
。因为
,由A4和MP得
。但是前面已经证了
,这与
的一致性矛盾。

[引理1.2.1]

[定理1']

是是极大一致并具有见证性的。若
的一个项模型,则

对任意

,因为
是句子,
对所有
成立。由引理1.2,
对所有赋值
成立。于是
。于是

定理2的证明

在这个小节我们始终假设

是一致的。注意到根据定义,如果
不一致,则存在
使得
。而
是命题逻辑的重言式,因此根据演绎定理和肯定前件我们能推出

对于一切

都成立

[引理2.1]

中的唯一自由变量是
。设常量
未出现在
中的任何元素或者
中。若
,则

的证明。令
是出现在这个证明中的前提的集合。于是
同时也是
的证明,并且
是有限集。

是一个未出现在
中的变量。我们将归纳证明
成立。假设对
  • 是公理A1, A2, A3中的一个,则显然
    也是对应的公理。于是
  • 是公理A4,
    。在
    关于
    是自由的,由于
    不出现在
    中,在
    关于
    仍是自由的。有
    ,这仍是公理A4。于是
  • 是公理A5,
    ,由于
    不出现在
    中,且
    ,有
    。这仍是公理A5。于是
  • , 那么由假设
    未出现在
    中。于是
  • (
    )通过肯定前件得到。则
    通过肯定前件得到。由归纳假设有
  • (
    )通过全称普遍化得到。则
    通过全称普遍化得到。由归纳假设有
    。 这样就归纳完毕。我们证明了
    . 接下来有

[引理2.2]

。设常量
未出现在
中的任何元素或者
中。若
,则
是一致的。

假设

不一致的。存在
且不含常量
,使得
。 接下来有

这与

的一致性矛盾。

[引理2.2.1]

,则

见Gödel完备性定理 —— 一阶谓词逻辑演绎系统 Part I

[引理2.3]

,则
是一致的。

证明与命题逻辑完全相同,见命题逻辑演绎系统的可靠性与完备性。

在开始证明定理2之前,为了应用引理2.2我们需要另一个可数的常数符号集。这里的做法是重新标号:对

,令
是将
中每个常数
替换成
得到的。设
。有

[引理2.4]

一致当且仅当
一致;
可满足当且仅当
可满足。

显然。

[定理2'] 存在

,使得
,且
是极大一致且具有见证性的。

(在命题逻辑中我们用了Zorn引理证明一致集包含在极大一致集当中,这对于更熟悉代数的笔者来说是自然的,但实际上是overkill。由于我们选取的符号集是可数的,不需要Zorn引理,简单的归纳就能证明。这里同理。同时我们也建立Gödel完备性定理弱于Zorn引理这一声明。) 、

根据引理2.4对

中的句子的常量重新标号,使得每个奇数编号
都不在
中出现。

注意到由于

的符号集是可数的,有
。因此
也是可数的。设
是其的一个枚举。我们归纳地定义
(
) 如下:
  • 假设
    (
    ) 已经被定义,我们定义:

由引理2.3,若

一致,则
也一致。
  • 假设

    (
    ) 已经被定义,我们定义
    如下:
    • ,根据我们的构造存在常量
      未在
      中出现。定义
      。这时有
      。由引理2.2,若
      一致,则
      也一致。
    • 对于其他情况(
      ),定义

这样我们构造的每个

(
)都是一致的。令
。显然根据上面的构造
是具有见证性的,我们要证明它是极大一致的:

假设

不一致,则存在
使得
。这两个证明都只有有限长度,因此存在有限子集
使得
。这说明
是不一致的。但是存在
使得
,这与
的一致性矛盾。因此
是一致的。
的极大性是显然的:对
,要么
要么
。因此要么
要么
包含等号的情况

对于

包含等号的情况,原证明中的

引理1.2是不成立的。考虑

。显然有
,但是
,因为
在项模型的论域
中是不同的元素。

对于这个问题的修补,解决办法是将等号视作一种等价关系。我们考虑项模型的商模型。为此,我们需要先证明等号构成等价关系。

在下面的引理3.1~3.3中,设

[引理3.1] 自反性:

未出现在
中。

[引理3.2] 对称性:

未出现在
中。先证

由演绎定理,有

。然后证

[引理3.3] 传递性:

未出现在
中。先证

应用两次演绎定理,得

。然后证

由前面三个引理,我们可以在

上定义等价关系

显然与闭项等价的项仍是闭项。考虑商集

考虑项模型的商模型

,其包括:
  • 论域

  • 谓词指派:对于谓词符号
    ,
    成立当且仅当
    ;
  • 函数指派:对于函数符号
    ;
  • 常数指派:对于常数符号
    ,

读者可以自行使用公理A7验证这个商模型是良定义的。

剩下的证明与原证明一致。我们于是证明了Gödel完备性定理对包含等号的一阶逻辑语言

成立。

从句子到公式的推广

我们证明了:

[Gödel完备性定理,弱形式]

是一个一阶语言。
。若
,则

我们希望把这个结论推广到

的情况。
的定义:对于任意模型
和赋值
,若
对于所有
成立,则

我们需要处理前提和结论中的自由变量。思路是把每个出现的自由变量用常量替换。为此我们依然需要对常量符号集做重新标号。

,通过重新标号我们假定
不含所有奇数标号的常量
。把
中每个自由变量
替换成
得到的公式记作
。相应地,对集合
,对其中每个元素做相应操作后,该集合记为

。显然有
。注意到
都没有自由变量,根据弱形式的Gödel完备性定理,有
。设
是其的证明。

中出现的最大编号的变量。考虑把公式
中每个常量
替换成
得到的公式记作
。我们可以通过归纳证明
(细节从略,有时间再补)。特别地,我们有
。考虑到证明长度有限,我们只需考虑
的有限子集
使得
。用
次演绎定理得到

对这个式子中每个自由变量

应用全称普遍化,再通过公理A4和肯定前件替换成
,就得到

应用

次肯定前件得到
。于是

紧致性定理

[紧致性定理]

有模型当且仅当
的任意有限子集都有模型。

在有了定理0后,「可满足性」与「一致性」就完全等价了。紧致性定理建立了「有限可满足性」与「可满足性」的等价,它是从完备性定理立刻得到的推论。它的核心是任意一个证明的长度总是有限的。

注意到尽管紧致性定理依赖于完备性定理,但是紧致性定理的表述实际上不依赖于演绎系统的选取。

一个方向是显然的。另一方向,假设

的任意有限子集都有模型但是
没有模型。那么
是不一致的,存在
使得
。然而这两个证明的长度都是有限的,因此存在有限子集
使得
。于是
是不一致的。即
没有模型,矛盾。

Löwenheim–Skolem定理,Skolem悖论

[向下Löwenheim–Skolem定理]

是一致的,则它有一个论域

至多可数的模型。

在完备性定理的证明中,我们证明了存在极大一致且具有见证性的

使得
满足项模型的商模型
。显然它的论域
是至多可数的。

向下Löwenheim–Skolem定理发表后,Skolem提出了所谓的Skolem悖论:总所周知我们常用的ZF集合论是一个一阶逻辑的理论。它的公理有:

  • 外延公理

  • 配对公理:引入一个二元函数符号
    ,称为两个元素的配对集,满足
  • 并集公理:引入一个一元函数符号
    ,称为集合的并集,满足
  • 幂集公理
  • 分离公理模式:设
    ,且
    。有
  • 空集公理:引入一个常量符号
    ,称为空集,满足
  • 无穷公理
  • 正规公理
  • 替代公理模式:设
    ,且
    。有
    ,其中
    的缩写。

根据向下Löwenheim–Skolem定理,ZF集合论存在一个可数模型,也就是一个 「可数ZF集合论」,其中全体集合是可数的!而大家在数学分析中熟知的Cantor定理,声称

。Cantor定理可以从ZF集合论中推出,但它却证明了不可数集的存在。这看起来与向下Löwenheim–Skolem定理是矛盾的:

如果全体集合是可数的,怎么可能存在不可数集呢?

笔者不是逻辑学专业的学生,对这个问题的理解比较粗浅。笔者认为这是因为我们定义「可数集」的方式不同。从原始定义来说,我们称集合

是至多可数集,若存在单射
。当我们证明向下Löwenheim–Skolem定理时,我们构造了项模型。项模型的基数至多可数,是在「元语言」或者「标准ZF集合论」的意义下至多可数。而考虑一个「可数ZF集合论」,我们通过Cantor定理的确能构造出在「可数ZF集合论」模型内的一个不可数集
。但是实际上
在「标准ZF集合论」的意义仍然是可数的。换而言之,我们能够在「元语言」中描述这个单射
,但是
却不存在于「可数ZF集合论」模型内,因此
在「可数ZF集合论」模型内是不可数的。

语言谓词函数isprime_G?del完备性定理 —— 一阶谓词逻辑演绎系统 Part II相关推荐

  1. 【面向计算机的数理逻辑/软件理论基础笔记】一阶谓词逻辑系统的证明理论,包含演绎定理、可证等价关系和完备性定理

    一阶形式系统KLK_\mathcal{L}KL​ 一阶形式系统KLK_\mathcal{L}KL​是指由一阶语言L\mathcal{L}L以及下面的公理和推理规则组成: 公理集: (K1):A→(B→ ...

  2. 哥德尔90年前的「不完备性定理」,奠定了计算机与AI的理论基础

    大神早已远去,而他的光芒仍在人间. 1931 年,奥地利裔美国著名数学家库尔特 · 哥德尔(Kurt Gödel)在一篇论文<Über formal unentscheidbare Sätze ...

  3. c语言atol是什么缩写,C语言atol函数的可移植版本疑问

    C语言atol函数的可移植版本疑问 更多相关问题 5.可以通过酿酒制作药膳的中药有: 2.1.2.2 事件A表示"击中目标",事件B表示"击毁目标",则A.B的 ...

  4. 哥德尔不完备性定理——从数学危机到哲学危机

    一.哥德尔不完备性定理的基本内容 一个普遍公认的事实是,哥德尔不完备性定理在数理逻辑中占有极其重要的地位,是数学与逻辑发展史中的一个里程碑. 哥德尔关于形式系统的不完备性定理,首次发表在他的论文< ...

  5. 写的函数符号表里没有_你有没有想过,C语言 main 函数到底为啥这么写?

    但凡是学过C语言的人,都知道要先写main函数,然而很多时候我们看到的main函数却各有差异,这究竟是为啥?哪种是对的呢?今天我们就来聊聊main函数. 那么main函数一共有多少个版本呢? 1.ma ...

  6. python del函数_python del函数是什么以及如何使用?

    这是关于Python里比较难得一个函数,甚至于章节不多,但是讲的内容却很多很多,大家对部分内容不知道有没有过了解--面向对象,而在这里主要用到的函数就是del,大家如果不知道的话,可以跟随小编一起来看 ...

  7. R语言str_trim函数去除字符串中头部和尾部的空格

    R语言str_trim函数去除字符串中头部和尾部的空格 目录 R语言str_trim函数去除字符串中头部和尾部的空格 #导入包和库 #仿

  8. R语言sqrt函数为数值开平方根实战

    R语言sqrt函数为数值开平方根实战 目录 R语言sqrt函数为数值开平方根实战 #基本语法 #sqrt函数开平方根

  9. R语言数学函数:abs绝对值、sqrt平方根、ceiling向上近似整数、floor向下近似整数、trunc去除小数部分、round近似到指定小数位、signif近似到有效数字、三角函数、指数、对数

    R语言数学函数:abs绝对值.sqrt平方根.ceiling向上近似整数.floor向下近似整数.trunc去除小数部分.round近似到指定小数位.signif近似到有效数字.三角函数.指数.对数 ...

最新文章

  1. 面试官:什么是NIO?NIO的原理是什么机制?
  2. 50的阶乘用c语言编写,求10000的阶乘(c语言代码实现)
  3. Android10.0 startActivity启动过程
  4. 2016 VR年终大趴行业大佬齐聚,共同探讨AR、VR的商业化道路之变
  5. POJ-2391 Ombrophobic Bovines 网络流-拆点构图
  6. 计算机辅助教学应用论文,高校计算机辅助教学应用论文
  7. 一个小栗子聊聊JAVA泛型基础
  8. Linux的软连接、硬链接和find命令
  9. Java基础---集合框架---迭代器、ListIterator、Vector中枚举、LinkedList、ArrayList、HashSet、TreeSet、二叉树、Comparator
  10. 分类算法学习(四)——决策树算法的原理及简单实现
  11. 不懂投资的基金会计不是好的产品经理
  12. SQL Server2012版完全卸载
  13. mysql 员工登记表_员工部门信息表-myemployees
  14. 项目实训(一)基于unity的2D多人乱斗闯关游戏设计与开发 unity的下载及了解
  15. 仙武:开局神级召唤!(一)
  16. 王者荣耀4.4日服务器维护,王者荣耀:4.4全天停服更新,只为响应全国性“悼念活动”!...
  17. 南京邮电大学嵌入式系统开发实验5:嵌入式Linux下LED报警灯驱动设计及编程
  18. String为什么要设计成final
  19. 【快速技巧】手机拍摄的视频如何旋转并保存?
  20. 服务器主板显示ff,MSI K9A2-CF主板显示错误代码“FF”

热门文章

  1. mac在当前文件夹打开终端,献给不喜欢终端打字的小伙伴
  2. C++语言实现hello world代码
  3. Python的pip下载特定版本TensorFlow方法
  4. ROS 控制台:rqt_console 因为比较简单。。。
  5. linux服务器搭建_Linux下搭建FTP服务器笔记
  6. 收入超10亿?罗永浩:要真有这个收入 我早就还完债做智能产品去了
  7. 乔布斯亲笔签名Apple II使用手册拍出80万美元高价
  8. 潮流配色+定制音效 OPPO Enco X蓝调版真无线降噪耳机解析
  9. 董明珠为什么做不好手机?
  10. 华为、小米和OPPO将采用联发科最新5G SoC天玑720