关于Mendelson《数理逻辑导论》(第3版)习题2.26的疑问
嗨,我来帮你理清楚这个困惑~
你提到的这个问题,核心是对**演绎定理(Deduction Theorem)**的应用理解,很多刚接触谓词演算的同学都会在这里绕弯子。
首先,我们的目标是证明定理:
$$\vdash (\forall x) (\mathscr{A}\Rightarrow \mathscr{B}) \Rightarrow ((\forall x)\mathscr{A} \Rightarrow (\forall x)\mathscr{B})$$
这里的$\vdash$表示从空公理集可证,也就是这个式子是谓词演算$K$的定理。
为什么解法里会把$(\forall x)\mathscr{A}$也当作假设?这不是因为它能从$(\forall x)(\mathscr{A}\Rightarrow\mathscr{B})$推导出来——你说得没错,这两个式子之间没有直接的推导关系。而是因为演绎定理给了我们一个证明蕴涵式的关键技巧:
如果我们能从假设集合$\Gamma \cup {C}$推导出$D$,那么就能从$\Gamma$推导出$C \Rightarrow D$。
放到这个问题里,我们要证明的是$\vdash H_1 \Rightarrow (H_2 \Rightarrow C)$(其中$H_1=(\forall x)(\mathscr{A}\Rightarrow\mathscr{B})$,$H_2=(\forall x)\mathscr{A}$,$C=(\forall x)\mathscr{B}$)。根据演绎定理,这个目标等价于两步:
- 先证明从${H_1, H_2}$能推导出$C$;
- 再两次应用演绎定理,把假设$H_2$和$H_1$依次转化为蕴涵式的前件。
具体的推导步骤大概是这样的:
- 第一步:假设$H_1: (\forall x)(\mathscr{A}\Rightarrow\mathscr{B})$,$H_2: (\forall x)\mathscr{A}$
- 第二步:对$H_1$用全称量词消去规则(UI),得到$\mathscr{A}\Rightarrow\mathscr{B}$(满足UI的应用条件:$x$是自由变量,且代入合法)
- 第三步:对$H_2$用UI规则,得到$\mathscr{A}$
- 第四步:用分离规则(MP),从$\mathscr{A}\Rightarrow\mathscr{B}$和$\mathscr{A}$推出$\mathscr{B}$
- 第五步:对$\mathscr{B}$用全称量词引入规则(UG),得到$(\forall x)\mathscr{B}$(这里UG的条件也满足:$x$不在$H_1$和$H_2$中自由出现,因为两个假设都是全称量化的式子)
到这里我们就完成了${H_1, H_2} \vdash (\forall x)\mathscr{B}$的证明。接下来两次应用演绎定理:
- 第一次:去掉假设$H_2$,得到${H_1} \vdash (\forall x)\mathscr{A} \Rightarrow (\forall x)\mathscr{B}$
- 第二次:去掉假设$H_1$,就得到了我们要证明的定理$\vdash (\forall x)(\mathscr{A}\Rightarrow\mathscr{B}) \Rightarrow ((\forall x)\mathscr{A} \Rightarrow (\forall x)\mathscr{B})$
所以简单来说,把$(\forall x)\mathscr{A}$当作假设是演绎定理的“临时技巧”——我们不是要证明它能从原前提推出,而是用它来搭建推导的桥梁,最后再通过演绎定理把这个临时假设转化成蕴涵式的一部分。
备注:内容来源于stack exchange,提问作者user918212

