命题逻辑的合理性(Soundness)和完备性(Completeness)
学习背景:
这学期在学习Michael Huth版的《面向计算机科学的数理逻辑》,老师布置了证明命题逻辑的合理性和完备性的任务,要每个人上去讲,数理逻辑这个课理解倒是很好理解,就是怎么用语言清楚地表达出来很难。所以上课成了极限拉扯现场,一人一句“为什么”,让证明变得复杂了许多。
学习总结:
参考了大神的文章,对语法和语义的理解更清楚了一点。
老师上课讲,这门课必须要弄清楚 φ1,φ2,…,φn |- ψ和 φ1, φ2, … , φn |= ψ 的区别。以编程为例,编译器可以解决前者,而程序员要解决后者。
1.语法 |-
与规则有关,我们不用去理解每个命题的实际含义,只需要单纯地按照规则进行推理即可。
φ1,φ2,…,φn |- ψ有效的含义就是
可以利用下面的规则和前提条件φ1,φ2,…,φn,找到一种证明方式,推理出ψ
自然演绎的基本规则:
2.语义 |=
与真值表有关
φ1, φ2, … , φn |= ψ 成立的含义就是
如果 φ1, φ2, … , φn 的取值都为T, 那么 ψ 的取值一定为 T.
3.命题逻辑的合理性
定理1.35 设φ1, φ2, … , φn和ψ是命题逻辑公式。若φ1,φ2,…,φn |- ψ是有效的,则φ1, φ2, … , φn |= ψ 成立。
已知条件:φ1,φ2,…,φn |- ψ是有效的,即存在一个由前提φ1,φ2,…,φn得到ψ的证明
记证明长度为k,对证明长度做数学归纳,用数学归纳法证明。
证明:①k=1仅有一行的证明,它的形式如下:
1 φ 前提
这是n=1的情况 ,φ1和ψ都等于φ。已知φ |- φ,显然当φ为T时,ψ也为真,即φ |= ψ成立。
②假设φ1,φ2,…,φn |- ψ的证明长度为k,对于所有小于k的数,证明的命题成立。
1 φ1 前提
2 φ2 前提
:
n φn 前提
:
k ψ 理由
因为不知道最后一步应用了哪种规则,所以分类讨论。
若最后一步应用的规则是合取引入 即∧i ,则ψ的证明过程应该如下
1 φ1 前提
2 φ2 前提
:
k1 ψ1 前提
:
k2 ψ2 前提
k ψ ∧i k1,k2
ψ=ψ1∧ψ2 k1<k,k2<k
由归纳假设得:对于 φ1,φ2,…,φn |- ψ1 ,φ1,φ2,…,φn |- ψ2,则 φ1,φ2,…,φn|=ψ1 ,φ1,φ2,…,φn |= ψ2成立。
φ1,φ2,…,φn都为T时,ψ1和ψ2为T,则ψ1∧ψ2为T,即ψ为T
φ1, φ2, … , φn |= ψ得证
若最后一步应用的规则是否定引入 即
,则ψ的证明过程应该如下
1 φ1 前提
2 φ2 前提
------------------------------------
k1 η 假设
:
k' η→ ⊥ → i
:
k2 ⊥ -e
------------------------------------
k ψ ∧i k1,k2
ψ= - η k’<k
由归纳假设得:φ1,φ2,…,φn |- η→ ⊥
φ1,φ2,…,φn都为T时,η→ ⊥为T,由于⊥ 为F,所以η为F,故ψ= - η为T
φ1, φ2, … , φn |= ψ得证
以类似的方式可证明其他规则
4.命题逻辑的完备性
当且仅当φ1, φ2, … , φn |= ψ 成立,φ1,φ2,…,φn |- ψ是有效的
证明步骤
步骤1: 证明 |= φ1→(φ2→(φ3→(…(φn→ψ))))成立
步骤2:证明|- φ1→(φ2→(φ3→(…(φn→ψ))))是有效的
步骤3: 最后,证明φ1,φ2,…,φn |- ψ是有效的
步骤1:
首先,我们给出重言式的概念
重言式:一个命题逻辑公式φ称为重言式,当且仅当它在真值表内的每一次赋值都为T,即 |= φ。
要证明的是:假设φ1, φ2, … , φn |= ψ 成立,证明φ1→(φ2→(φ3→(…(φn→ψ))))是重言式。
要想使该式为F,只有一种情况,即φ1,φ2,…,φn都为T且ψ为F,而因为有前提φ1, φ2, … , φn |= ψ 成立,即φ1,φ2,…,φn都为T时,ψ一定为T。因此该式唯一为F的情况都不可能成立,所以在任何赋值情况下,该式都为T。即 |= φ1→(φ2→(φ3→(…(φn→ψ))))成立。
步骤2:
要证明的是:定理1.37 若|= η成立,则|-η是有效的。换言之,若η是重言式,则η是定理。
直接证明该定理简直不是人干的事,因此我们把要证明的定理作如下转换
η的真值表共有2^n行,把每一行编码成一个矢列,构建这2的n次方个矢列的证明,最后合成一个η的证明。
编码规则如下:
设φ是一个公式,使得p1,p2,…,pn是其全部的命题原子。设l是φ的真值表中的任一行号。对所有的1≤i≤n,若pi的第l行是T,则令否则令
1.若φ的第l行是T,则
是可证的。
2.若φ的第l行是F,则是可证的。
使原真值表内的η用φ或-φ表示,即全为T。而原真值表内的命题原子用表示,
是pi或者 - pi。要证明的命题转换为,证明用以上编码规则编码后的2^n个矢列是可证的。
对语法分析数的高度做数学归纳,证明如下:
1.如果φ是命题原子,则需要证明p |- p 和-p |- -p。它们只有一行的证明,显然是可证的。
2假设对于所有语法分析树的高度小于φ的命题逻辑公式,我们要证明的命题都是成立的。如果φ的形式是φ1→φ2。则它的语法分析树形式为因此,由归纳假设得,对于φ1和φ2,命题成立。
且假设φ1的命题原子为{q1,q2,…,ql},φ2的命题原子为{r1,r2,…,rk},那么他俩的命题原子合起来一定是φ的命题原子{p1,p2,…,pn}
它们有不同的取值,分为以下四类
①φ为T,φ1和φ2都为T。
由归纳假设得,和
那么,可以得到
我们最终需要证明的是
因此我们只需要找到的证明即可。
1 φ1∧φ2 前提
-------------------------------------
2 φ1 假设
3 φ2 ∧e 1
--------------------------------------
4 φ1→ φ2 →i 2-3
②φ为T,φ1和φ2都为F。
由归纳假设得,和
那么,可以得到
我们最终需要证明的是
因此我们只需要找到
的证明即可。
1 -φ1∧-φ2 前提
2 -φ1 ∧e 1
3 -φ2 ∧e 1
-------------------------------------
4 φ1 假设
5 ⊥ -e 4,2
6 φ2 ⊥e 5
--------------------------------------
7 φ1→ φ2 →i 4-6
③φ为T,φ1为F,φ2为T
由归纳假设得,和
那么,可以得到
我们最终需要证明的是
因此我们只需要找到
的证明即可。
1 -φ1∧φ2 前提
-------------------------------------
2 φ1 假设
3 φ2 ∧e 1
--------------------------------------
4 φ1→ φ2 →i 2-3
④φ为F,φ1为T,φ2为F
由归纳假设得,和
那么,可以得到
我们最终需要证明的是
因此我们只需要找到
的证明即可。
1 φ1∧-φ2 前提
-------------------------------------
2 φ1→ φ2 假设
3 φ1 ∧e 1
4 -φ2 ∧e 1
5 φ2 →e 3,2
6 ⊥ -e 5,4
--------------------------------------
4 φ1→ φ2 -i 2-6
四种情况都已证明,则得到η的2^n个矢列都是可证的,则η是可证的。即原命题
定理1.37 若|= η成立,则|-η是有效的。换言之,若η是重言式,则η是定理。
得证。
其他规则以同样的方法证明。
步骤3
由步骤二证明的定理得,
由于 |= φ1→(φ2→(φ3→(…(φn→ψ))))成立
则|- φ1→(φ2→(φ3→(…(φn→ψ))))是有效的
加上φ1,φ2,…,φn作为的前提,应用n次蕴含消去规则,可得到φ1,φ2,…,φn |- ψ
的证明。
经过以上三步,我们由已知条件φ1, φ2, … , φn |= ψ 成立,证明出了φ1,φ2,…,φn |- ψ是有效的。即命题逻辑的完备性。
总结
我的理解不一定正确,但总算把整个过程捋了一遍,若有错误,请大家在评论区批评指正。