4 一阶逻辑:证明论

4.4 前束范式和子句范式

12\(\vdash\)之第一组

  1. Q: 记忆第一组。\(x_i\)不在\(\mathscr{ A}\)中自由出现,则根据K()(填编号)可以帮助记忆,写出:()。
    A: 6
    \(\vdash (\forall x_i)(\mathscr{ A}\to\mathscr{B})\leftrightarrow (\mathscr{A}\to\forall x_i\mathscr{B})\).
    \(\vdash (\exists x_i)(\mathscr{ A}\to\mathscr{B})\leftrightarrow (\mathscr{A}\to\exists x_i\mathscr{B})\).
  2. Q: 证明第一组第一式。第一式正向就是K6,反向可以发现整个右边都不自由出现(),所以由果到因知道最后一步估计是演绎定理,倒数第二步估计是\((\mathscr{A}\to(\forall x_i)\mathscr{B})\vdash\)()。这就简单了。
    A: \(x_i\)\(\mathscr{A}\to\mathscr{B}\)
  3. Q: 证明第一组第二式。左推右:我们发现“\(\sim\)在最外层的”太多了,所以设法减少这种情况。先把待证式抽象成\(\mathscr L_0\)中表达式\(\sim\mathscr{C}\to(\mathscr{A}\to\sim\mathscr{D})\),再写成外层不含\(\sim\)的等价形式()。所以只用考察证明()即可。
    A: \(\mathscr{A}\to(\mathscr{D}\to\mathscr{C})\)\(\mathscr{A},\forall x_i\sim\mathscr{B}\vdash \forall x_i\sim(\mathscr{A}\to\mathscr{B})\)
    注:\(\mathscr{A}\)\(\forall x_i\sim\mathscr{B}\)中都不含自由的\(x_i\),这就提示演绎定理。
  4. Q: 接上,右推左:\((\mathscr{A}\to\sim\mathscr{D})\to\sim\mathscr{C}\)等价于\((\sim\mathscr{A}\vee\sim\mathscr{D})\to\sim\mathscr{C}\),这提示我们只需证明\(\vdash\sim\mathscr{A}\to(\exists x_i)(\mathscr{ A}\to\mathscr{B})\)(显然)和\(\vdash \exists x_i\mathscr{B}\to(\exists x_i)(\mathscr{ A}\to\mathscr{B})\)(证明方法()),再通过重言式()即可证明。
    A: 使用K6'和K3
    \((\sim \mathscr{A}\to\sim\mathscr{C})\to((\sim \mathscr{D}\to\sim\mathscr{C})\to((\sim\mathscr{A}\vee\sim\mathscr{D})\to\sim\mathscr{C}))\)

12\(\vdash\)之第二组

  1. Q: 第二组相比第一组考察的是()不在()中自由出现的情况,此时\(\forall x_i(\mathscr{A}\to\mathscr{B})\leftrightarrow(\exists x_i \mathscr{A}\to\mathscr{B})\)的直观含义是什么?用自然语言说明。
    A: \(x_i\)\(\mathscr{B}\)
    比如:“任何时候,做了这个就是得罪我”等价于……
    注意这里“得罪我”的“我”在不同时刻是同一个我(\(x_i\)不在\(\mathscr B\)自由出现)
  2. Q: 证明第二组第一式。左推右:\(x_i\)不在\(\mathscr{B}\)自由出现,也不在\(\forall x_i(\mathscr{A}\to \mathscr{B})\)自由出现,那自然就把这俩都丢左边,最后()定理就可以用。那为了\(\mathscr B\)能丢左边,需要把原式转化成()
    右推左:前件再次出现了\(\sim\mathscr{C}\to\mathscr{B}\)这种结构,那自然可以利用连接符()改写。类似于上节。
    A: 演绎,\(\vdash \forall x_i(\mathscr{A}\to\mathscr{B})\to(\sim\mathscr{B}\to\forall x_i\sim\mathscr{A})\)\(\vee\)
  3. Q: 证明第二组第二式。左推右:前件有否定(存在量词最外层是否定),那就改写成()去掉否定。
    右推左:前件又是“复合命题”,直接用连接符()改写成()即可。
    A: \(\forall x_i \mathscr{ A},\sim\mathscr{B}\vdash \forall x_i\sim(\mathscr{A}\to\mathscr{B})\)
    \(\vee\)\(\vdash(\sim\forall x_i\mathscr{A}\vee \mathscr{B})\to\exists x_i(\mathscr{A}\to\mathscr{B})\)

12\(\vdash\)之第三组及总结

  1. Q: 第三组把\(\exists\)写开,就看起来像\(\mathscr{A}\)简单换成了()。而这显然只需考虑重言式和K()(填编号1-6或6')
    当然直接对\(\mathscr{A}\leftrightarrow \sim\sim\mathscr A\)替换定理也可。
    A: \(\sim\sim\mathscr{A}\),6'(注意K6'并不需要任何“不自由出现”条件)

  2. Q: 这12条\(\vdash\)中,如果使用()的一侧,可以造出前束范式。前束范式从形式上可以分成两部分:前面是(),后面是()。如果前面内部有()结构称为斯科伦前束范式,如果后面内部有()结构称为()。
    A: 把量词放到整体前面(例如\(\forall x_i \mathscr{A}\to\mathscr{B}\)变成\(\exists x_i(\mathscr{A}\to\mathscr{B})\)
    量词\((Q_1x_{i_1}\cdots Q_kx_{i_k})\)其中每个\(Q_i\)\(\forall\)\(\exists\),不带量词的公式\(\mathscr{D}\)
    存在量词都在全称量词前(注:显然这时所有斯科伦函项都退化成斯科伦常元)
    是合取范式或析取范式,前束合取范式或前束析取范式

  3. Q: 用这3组,()个可证等价,共12个\(\vdash\),证明任何公式都有()等价的前束范式:

    1. 公式最外层\(\sim\),进行此步归纳使用第()组。
    2. 公式最外层\(\to\),则需首先进行换名,使得\(Q_1x_{i_1}\cdots Q_kx_{i_k}\mathscr{C}_2\to R_1 x_{j_1}\cdots R_l x_{j_l}\mathscr{D}_2\)满足()条件,再不断使用()
    3. 公式最外层\(\forall\)则非常简单,只需根据意义写出一次替换(或用一次K6')即可得到\(\vdash (\forall x_i)\mathscr C\leftrightarrow\)()

    替换定理在证明中用到了哪里?
    A: 6,可证,三
    \(x_i,x_j\)不重名且它们还都和\(\mathscr{C}_2,\mathscr{D}_2\)中自由变元不重名(都是约束变元,你完全可以变元换名都换成新名)(其实就是去除变量遮蔽(shadow))
    一和二组(其中一组针对把\(R\)提前,二组针对把\(Q\)提前)
    \((\forall x_i)(Q_1x_{i_1})\cdots(Q_kx_{i_k})\mathscr D\)
    所有的“归纳”过程中,“归纳假设”只是说更短的公式有前束范式,你把更短的公式替换成其前束范式的过程中要保持可证等价,所以需要用替换定理。

  4. Q: 上题只表示了前束范式可计算性、存在性。那唯一性和计算复杂性如何?
    A: 显然不唯一。注:之后求子句范式时,这种不唯一性进一步可能导致各种可能的斯科伦式之间不逻辑等价(但一定弱等价)
    计算复杂性:提示:可以看到每个连接符都使得该连接符涉及的所有量词引起\(\Theta(1)\)的计算量。深处的量词被提出来时计算次数更多。

  5. Q: 2.证明中,前件写成前束范式,量词用\(Q_i\)表示,后件写成前束范式,量词用\(R_j\)表示。则如果归纳出了\(Q_i^*\cdots R_j(前件\to 后件)\),则星号意为()。这里是先提取前件中的量词还是后件中的?
    A: 存在和任意互换。注意提取前件中的需要互换,提取后件中的不需要。
    先提取了前件中的。总之,先提取的在前(常见错误:对于\(\forall x(\mathscr A\to\forall y\mathscr B)\),提取\(y\)时错误放到了\(\forall x\)的前面)

  6. Q: 如何理解“复杂程度与量词的交叉次数有关”?
    A: 在实际执行计算时,出现“交叉”(就是从前往后看“切换”了多少次,例如\(\forall x\forall y\exists z\forall w\forall u\)就是“切换”或说交叉两次)会影响计算复杂性。\(\Pi\)\(\Sigma\)式的计算复杂性也可能不同。
    注:数理逻辑是计算复杂性理论的“根”,\(\Sigma_n,\Pi_n\)式在其中起了重要作用。
    更具体的东西在此处略去。

弱等价性定理

  1. Q: 记\(\mathscr A^s\)\(\mathscr A\)的斯科伦式,则()\(\vdash\)()。应该对()结构归纳。其中用到R4和Gen恢复量词等等。(具体过程较难,省略)
    A: \(\mathscr A^s\)\(\mathscr A\)\(\mathscr A\)
    注:直观(模型论?)上看倒是很显然
  2. Q: 公理的斯科伦式是什么意思?之前学的公理系统中公理没有存在量词啊?
    A: 公理模式没有,公理可能有。
    总之,\(K^s\)引入了一些新的公理(但没有改变规则)
  3. Q: 由0.,可以得到\(\vdash_{K^s}\mathscr A\)\(\vdash_K\mathscr A\)的()条件。
    A: 必要
    注:\(\mathscr A^s\)能推出\(\mathscr A\). 所以从这个角度,\(K^s\)推理能力“更强”,能推出更多的定理。所以是“必要条件”(后面还会证明是充要条件)。
  4. Q: 对于已知\(\mathscr A\)\(K\)中公式,即不含新引入的斯科伦函项和斯科伦常元,可以证明上题的反向。
    证明过程:课件中需要用()定理。即若\(\mathscr{A}\)\(K\)的每个可数模型\(M\)为真,则()。
    “每个可数模型”太难考察,那怎么办?
    A: 完全性(注:也就是纯从证明论角度比较麻烦,要通过“模型为真”的关系架桥过渡)
    \(\vdash_K \mathscr A\)
    可数论域可同构于正整数集。而非空正整数集子集总有最小元,方便了考察。
  5. Q: 接上,具体证明过程是
    \(\vdash_{K^s}\mathscr A\)
    \(\vdash_{K^s}\mathscr C_i^s\)
    \(\vdash_K \mathscr C_i\)
    \(\mathscr C_i\)\(M\)为真
    \(\mathscr C_i^s\)\(M^s\)为真
    \(\mathscr A\)\(M^s\)为真
    \(\mathscr A\)\(M\)为真
    \(\vdash_K\mathscr A\)
    解说每一步的依据和其中的“架桥”思想。
    A:
    根据演绎过程找到有限条\(K^s\)中用到的公理
    根据\(K^s\)\(K\)的定义找到对应的\(K\)中的公理
    \(K\)的可靠性定理(\(M\)是任取的,论域为正整数集)
    设法构造扩展模型(用到了正整数集的性质,如上题所述)
    类似于可靠性定理,进行归纳(使用的规则还是MP和Gen. 参考题1.)
    已知\(\mathscr A\)\(K\)的公式,即不含新引入的斯科伦函项和斯科伦常元
    \(K\)的完全性定理
    架桥思想:最外层架桥是1678(用模型论架桥)
    中间层架桥是1256(对一般的定理用公理架桥)
    最内层架桥是2345(用旧系统公理的可靠性找模型)
  6. Q: 上述事实为什么推出\(K\)\(K^s\)的一致性是等价的?
    A: 一方面\(K^s\)是“扩充”(回忆\(\mathscr A^s\vdash\mathscr A\)),\(K^s\)一致则\(K\)一致。
    另一方面如果\(K^s\)不一致则能演绎出\(K\)中的矛盾式(因为矛盾能演绎出一切)。所以(根据之前结论)\(K\)也能演绎出\(K\)中的矛盾式。从而\(K\)不一致。
  7. Q: 上述事实(证明论中的弱等价)和模型论中的弱等价有何联系?
    A: \(\mathscr A\)\(\mathscr A^s\)同时不一致。根据模型论和证明论联系,不一致等价于矛盾式
    总之,两者同时为矛盾式,但不一定同时为有效式
    注:所以课件上“当且仅当为真”其实不是完全好。可以写成“\(\mathscr A\)存在为真的模型当且仅当\(\mathscr A^s\)存在为真的模型”

子句范式

  1. Q: 求子句范式过程中把()(填等价类型)等价的前束范式()化(这一步不是可证等价而是()等价),又删除所有全称量词,最后把原子都看成命题符进行命题逻辑中的演算即可。
    A: 可证,斯科伦,弱
  2. Q: 斯科伦化是弱等价(矛盾等价于矛盾,有效不一定等价于有效),那删除全称量词是弱等价嘛?
    A: 是。而且既是逻辑等价,又是弱等价。(有效等价于有效,矛盾等价于矛盾)
  • 注:它们的区别只有在赋值一层才能体现。在解释一层就没有区别了,真等价于真。“有效等价于有效,矛盾等价于矛盾”就是从这来的。
  • 总之有三层:对赋值,对解释,对整个一阶语言。低层等价推出高层等价。
    • 可证等价,逻辑等价,弱等价都是在最高层考察。即“大打包”,必须所有解释都……,才去考察……
    • “真等价于真”在解释层考察,对所有赋值打了包(所以说\(\forall x_i\mathscr A\)\(\mathscr A\)“拆包”到赋值层就不等价了)
  • 注:回忆形式记号:能互相\(\models\),或说能互相\(\vdash\),就是逻辑等价,记为\(\equiv\)

勘误集

ml-4_2.pdf

  • p82 量词的交叉在之前没有给出定义,不容易理解
  • p84 斯科伦写成斯科林了
  • p85 \(\exists x_4\)写成\(\exists y_x\)
  • p86 \(\vdash_{K^s}\mathscr B\)推出\(\mathscr B\)\(M^s\)中为真没有详细说明,不太容易看懂。其实类似可靠性定理证明