4 一阶逻辑:证明论
4.1 形式系统
6条公理和2条规则
- Q: 某个具体的一阶语言\(\mathscr L\)和形式系统\(K_\mathscr L\)有何联系?怎么理解“考虑一个固定但未具体指定的一阶语言”?
A: 给定某个一阶语言\(\mathscr L\)(不同的一阶语言可能有不同的字符集),就能以某些固定的规则,构造相应的系统\(K_\mathscr L\)。各个具体不同的\(\mathscr L\)对应的系统\(K_\mathscr L\)有差别。
某个系统\(K_\mathscr L\)一定基于某个固定、具体的一阶语言\(\mathscr L\),所以说“固定”。
各个一阶语言各自生成的系统有一些共性。我们想考察共性。所以说不具体指定一阶语言。 - Q: \(K\)的公理除了重言式的替换实例(即K1-K3),还有对于\(\forall\)辖域内的公式使用()(选填一种“替换”)。以及K6:()
A:
公式中项替换(注:即\(\forall x_i\mathscr A(x_i)\to \mathscr A(t)\),其中\(t\)在\(\mathscr A\)中对\(x_i\)自由。而\(x_i\)不在\(\mathscr A\)自由出现时则自然地\(\mathscr A(t)\)就是\(\mathscr A\). 即K4和K5本质相同,只是书写时为了强调起见我们可以分开做两种标记)
\(\forall x_i(\mathscr A\to\mathscr B)\to (\mathscr A\to (\forall x_i)\mathscr B)\)(当\(\mathscr A\)中不含\(x_i\)自由出现) - Q: 对于K6的附加条件“当\(\mathscr A\)中不含\(x_i\)自由出现”,请用自然语言举出直观上的反例(语义层面)。
A: K6的原意:例如:花钱(\(\mathscr A(x_i)\)),办事(\(\mathscr B(x_i)\)),如果要花的钱数量和具体办什么事无关,那也就是花某个确定数额的钱能办一切事。
但如果\(\mathscr A\)中含有\(x_i\)自由出现,就变成了“根据具体事情不同定价”了,这时就不一定花某个确定数额的钱办一切事。 - Q: 接上,如果K6不加上述条件,那么怎么改写,直观意义为何?(称为K6')
A: \(\forall x_i(\mathscr A\to\mathscr B)\to(\forall x_i\mathscr A\to \forall x_i\mathscr B)\).
接上问则直观意义是你出的起论域中涉及的所有可能的报价(\(\forall x_i \mathscr A\)),就能办任何事。 - Q: 为什么不把Gen写成公理\(\mathscr A\to\forall x_i \mathscr A\)?这样不就可以只用MP一条公理了吗?
A: (从模型论角度考察)若\(\mathscr A\)有效则\(\forall x_i\mathscr A\)有效是对的。但\(\mathscr A\to\forall x_i \mathscr A\)不有效。所以如果这样定义形式系统就“与直观不符”
核心是\(\mathscr A\to\forall x_i \mathscr A\)深入到了赋值一层,可以单独看使得前件满足后件不满足的赋值。相比之下,Gen规则只到了解释这一层,前件要为真就是对于一个解释(中任意赋值)为真。
“打包强卖”
注:顺带一提:\(L\)的演绎定理在\(K\)不成立。 - Q: 命题逻辑中,重言式都是定理:即()性定理。而命题逻辑是一阶逻辑的子系统(公理和规则都被包含)。
由于(),故一阶逻辑中,重言式也都是定理。
但这是完全性吗?
A: 完全
为了得到一阶逻辑中证明某个重言式的序列可以把命题逻辑中证明相应重言式的序列步步作替换。
否。有效式不一定是重言式。完全性定理要考察所有有效式是否都是定理。 - Q: 如何证明一阶逻辑中的可靠性定理?上题证明了K1-K3,而K4和K5利用“公式中项替换的赋值”关于\(v'(x_i)=v(t)\)的结论即可证明。
那K6呢?
A:
第一问(证明方法):验证公理模式的实例都有效,并对证明步数归纳。这和命题逻辑相同。
第二问(K6证明):
- 从前到后走一步:如果\(\forall x_i (\mathscr A\to\mathscr B)\)被\(v\)满足,那么一切\(v'\)和\(v\)为\(i-\)等值都有\(v'\models \mathscr A\to\mathscr B\).
- 从后到前走一步:现在考察\(v\)的任意一个\(i-\)等值的\(v''\),欲证\(v\models \mathscr A\)成立时一定\(v''\models \mathscr B\)成立。
- 好的,现在已知\(v''\models \mathscr A\to\mathscr B\),故\(v''\models \mathscr B\)的证明只差\(v''\models \mathscr A\)条件了。
- 差的这个条件:只用看\(x_i\)在\(\mathscr A\)中不自由出现,因此\(v,v''\)对于一切\(\mathscr A\)中自由出现的变元赋值相同,就可以用之前结论(上一篇“闭式”题1.)了。从而证明完成。
注:规范的证明中,开头一定要强调任一解释,任一赋值等字眼。
- Q: 接上,如何用可靠性说明一致性?
A: 与命题逻辑相同,即:定理都有效,所以如果推出了自相矛盾,则\(\mathscr A\)和\(\sim\mathscr A\)都有效。这是不可能的。
注:FOL的一致性考察的是\(\mathscr A\)和\(\sim\mathscr A\)是否可能同时有效。
依据,演绎定理
- Q: 依据关系的起点和归纳定义过程分别是什么?
A: 起点:直接从\(\Gamma\)抄的公式,自己是自己的依据。
归纳过程:“有向无环图”,继承所有直接或间接前趋。 - Q: 在已知()不依据于()时,我们可以从\(\Gamma,\mathscr A\vdash \mathscr B\)得到()。
请具体解说归纳过程。
A: \(\mathscr B\),\(\mathscr A\),\(\Gamma \vdash \mathscr B\).
序列长度为1显然。否则根据定义,“不依据”的直接“前趋”还是“不依据”的(即可归纳)。 - Q: 演绎定理正向:从条件()\(\vdash\)(),和(\(K\)相比\(L\)演绎定理额外多的)限制(),可以推出\(\Gamma \vdash\)()。归纳起点和\(L\)中相同。归纳过程如果\(\mathscr B\)是()规则得到的,那跟\(L\)中也相同。
A: \(\Gamma,\mathscr A\),\(\mathscr B\),演绎过程中不用对\(\mathscr A\)中自由变元的Gen,\(\mathscr A\to\mathscr B\),MP - Q: 接上,如果不是MP规则得到,那就是()规则得到的,即\(\mathscr B\)就是\(\forall x_j\mathscr C\),其中\(x_j\)不在\(\mathscr A\)自由出现。则由归纳假设\(\Gamma\vdash \mathscr A\to\mathscr C\),经过使用一次()规则和一次()公理与MP即得结果。(注意:这里K6使用的前提要求已经被满足了)
A: Gen,Gen,K6 - Q: 除了上面的情况,还有一种演绎定理成立的典型条件:上题的\(\mathscr C\)()。
A: 不依据于\(\mathscr A\)(这时有\(\Gamma \vdash \mathscr C\),从而显然了)
(注:此处的2.至4.说法和课件稍有不同,即我显式地把“不依据”和“不用某些Gen”两种情况分开写了)
(个人觉得课件分类有点混乱,参考勘误)
演绎定理应用
- Q: 这个加了条件的演绎定理为什么可以得出HS对任意的\(\mathscr A,\mathscr B,\mathscr C\)成立?
A: 这只需对\(\mathscr A,\mathscr A\to\mathscr B,\mathscr B\to\mathscr C\vdash \mathscr C\)用一次正向演绎定理。
而原\(\vdash\)过程只用了MP,故显然演绎定理是可用的。
总之,唯一可能造成麻烦的就是正向演绎定理中的对自由变元用Gen - Q: 一句话证明\(\vdash\forall x_{i_1}\cdots \forall x_{i_n} \mathscr A\to \forall x_{j_1}\cdots \forall x_{j_n} \mathscr A\)(其中\(j_1,\cdots,j_n\)是\(i_1,\cdots,i_n\)重排列)如下:
\(\forall x_{i_1}\cdots \forall x_{i_n} \mathscr A\vdash \forall x_{j_1}\cdots \forall x_{j_n} \mathscr A\)显然满足()条件,故可用演绎定理()向。
A: 不对\(\forall x_{i_1}\cdots \forall x_{i_n} \mathscr A\)中自由变元使用Gen
正 - Q: 为了证明\(\vdash \forall x_i (\mathscr A\to\mathscr B)\to(\exists x_i\mathscr A\to\exists x_i\mathscr B)\),根据K3和\(\exists\)定义和演绎定理得到只需证明\(\forall x_i(\mathscr A\to\mathscr B), \forall x_i \sim\mathscr B\vdash\)()即可。
该式证明简单,且只需对()使用Gen,因此可以用一次演绎定理以及一些简单后续处理得到()
A: \(\forall x_i\sim\mathscr A\),\(x_i\),\(\forall x_i(\mathscr A\to\mathscr B)\vdash \exists x_i\mathscr A\to\exists x_i\mathscr B\) - Q: 上面过程再用第二次演绎定理时有什么需要注意的?
A: 注意使用“元定理”(“打包推理过程”)是否会破坏演绎定理的成立前提。
(第一次使用演绎定理时,就“打了一些包”。要说明这其中不会破坏第二次演绎定理的使用)
具体地对演绎定理,只有对\(\mathscr A\vdash\mathscr B\)过程中Gen过的\(x_i\),才需要在证明\(\vdash \mathscr A\to\mathscr B\)过程中Gen(也就是“打包”推理过程没有Gen额外的变量)
K6'
- Q: “6条公理和2条规则”题3.中的新公理模式(记为K6')怎么用原来的K1-K6推出?
A: 如果K6成立,那么\(x_i\)不在\(\mathscr A\)自由出现。
(1)\(\forall x_i(\mathscr A\to\mathscr B)\vdash \forall x_i(\mathscr A\to\mathscr B)\)(假设)
(2)\(\forall x_i(\mathscr A\to\mathscr B)\vdash \mathscr A\to\mathscr B\)(K5)(我不区分K4,K5,以后同。但最规范的是要区分)
(3)\(\forall x_i \mathscr A,\forall x_i(\mathscr A\to\mathscr B)\vdash \forall x_i \mathscr A\)(假设)
(4)\(\forall x_i\mathscr A,\forall x_i(\mathscr A\to\mathscr B)\vdash \mathscr A\)(3)(K5)
(5)\(\forall x_i\mathscr A,\forall x_i(\mathscr A\to\mathscr B)\vdash \mathscr B\)(2)(4)
(6)\(\forall x_i\mathscr A,\forall x_i(\mathscr A\to\mathscr B)\vdash \forall x_i\mathscr B\)(Gen)
和上一题完全类似地使用两次演绎定理即可。 - Q: 上面没用到K6,这意味着什么?
A: 这个问题有意在误导人。演绎定理需要K6. - Q: 解释“K6逆转前件后件还对,K6'则不行”(最好从“直观”和形式化角度都考察)
A: K6逆转:用演绎定理(注意已知\(\mathscr A\)中无自由出现的\(x_i\)),直观解释略。
K6'逆转:直观上,交换前件后件后,前件\(\forall \cdots\to\forall \cdots\)前提太强,所以前件作为一个整体太弱(合理即可)。具体举赋值的反例略。 - Q: 用K6'试图考察演绎定理,则用和之前类似的证明流程,可以说明不涉及()时结论和原来的演绎定理一致(且不需要\(x_i\)不自由出现的条件)
每次涉及Gen(比如对\(\mathscr B\)用Gen即\(\mathscr B\vdash \forall x_i\mathscr B\))时,形如\(\Gamma \vdash\mathscr A\to\mathscr B\)变成了形如()的式子,而不是原来的()
所以,这是个稍微有点不同的“打包”(元定理)。这个打包不如K6的好用。
A: Gen,\(\Gamma \vdash \forall x_i\mathscr A\to\forall x_i\mathscr B\),\(\Gamma \vdash \mathscr A\to\forall x_i\mathscr B\)
勘误集
ml-4_1.pdf
- p25 - p27 分类混乱。这里一开始是说考察使用Gen规则的情况,后来变成了把“开头出现了\(\forall x_i\)”的式子分为两类(其中一类用Gen,一类不用)
- p30 (9)多了一个\(\vdash\)