第一次写博客,先复盘一道简单的证明题练练手
用自然推理系统证明:(∀x)P(x)→C⊢(∃x)(P(x)→C)(\forall x)P(x)\rightarrow C \vdash (\exists x)(P(x)\rightarrow C)(∀x)P(x)→C⊢(∃x)(P(x)→C)
思考过程
看到题目想到两种策略:右∃和右¬,感觉右∃更加自然,故首先尝试右∃:看到题目想到两种策略:右\exists和右\lnot,感觉右\exists更加自然,故首先尝试右\exists:看到题目想到两种策略:右∃和右¬,感觉右∃更加自然,故首先尝试右∃:
右边的∃可以无条件加上,故只需证(∀x)P(x)→C⊢P(x)→C右边的\exists可以无条件加上,故只需证(\forall x)P(x)\rightarrow C \vdash P(x)\rightarrow C右边的∃可以无条件加上,故只需证(∀x)P(x)→C⊢P(x)→C
此时用右→策略(右¬我没试),即证(∀x)P(x)→C,P(x)⊢C此时用右\rightarrow策略(右\lnot我没试),即证(\forall x)P(x)\rightarrow C,P(x) \vdash C此时用右→策略(右¬我没试),即证(∀x)P(x)→C,P(x)⊢C
发现左边有x的自由变元,无法推出(∀x)P(x),故无法使用→消去规则推出C,此外,右C规则应该也用不了发现左边有x的自由变元,无法推出(\forall x)P(x),故无法使用\rightarrow消去规则推出C,此外,右C规则应该也用不了发现左边有x的自由变元,无法推出(∀x)P(x),故无法使用→消去规则推出C,此外,右C规则应该也用不了
因此放弃看上去更自然的右∃策略,采用更简单粗暴的右¬:因此放弃看上去更自然的右\exists策略,采用更简单粗暴的右\lnot:因此放弃看上去更自然的右∃策略,采用更简单粗暴的右¬:
首先引入两个导出规则来简化证明过程(虽然还是很麻烦:首先引入两个导出规则来简化证明过程(虽然还是很麻烦:首先引入两个导出规则来简化证明过程(虽然还是很麻烦:
1.¬(A→B)⊢A∧¬B1.\lnot(A→B)⊢A∧¬B1.¬(A→B)⊢A∧¬B
2.¬(∃x)P(x)⊢(∀x)(¬P(x))2.¬(∃x)P(x)⊢(∀x)(¬P(x))2.¬(∃x)P(x)⊢(∀x)(¬P(x))
倒着推,首先要证(∀x)P(x)→C,¬(∃x)(P(x)→C)⊢⊥倒着推,首先要证(\forall x)P(x)\rightarrow C , \lnot(\exists x)(P(x)\rightarrow C)\vdash \bot倒着推,首先要证(∀x)P(x)→C,¬(∃x)(P(x)→C)⊢⊥
由于左边有点复杂,暂时没有看出来矛盾应该选什么,就先用导出规则2,1进行化简:由于左边有点复杂,暂时没有看出来矛盾应该选什么,就先用导出规则2,1进行化简:由于左边有点复杂,暂时没有看出来矛盾应该选什么,就先用导出规则2,1进行化简:
得到(∀x)P(x)→C,¬(∃x)(P(x)→C)⊢(∀x)(P(x)∧¬C)得到(\forall x)P(x)\rightarrow C,\lnot(\exists x)(P(x)\rightarrow C)\vdash (\forall x)(P(x)\land \lnot C)得到(∀x)P(x)→C,¬(∃x)(P(x)→C)⊢(∀x)(P(x)∧¬C)
可以轻松推出¬C,观察左右两边尝试推出C,关键需要推出(∀x)P(x)可以轻松推出\lnot C,观察左右两边尝试推出C,关键需要推出(\forall x)P(x)可以轻松推出¬C,观察左右两边尝试推出C,关键需要推出(∀x)P(x)
可以轻松推出P(x),发现左边没有x的自由变元,所以用∀引入规则推出(∀x)P(x)可以轻松推出P(x),发现左边没有x的自由变元,所以用\forall 引入规则推出(\forall x)P(x)可以轻松推出P(x),发现左边没有x的自由变元,所以用∀引入规则推出(∀x)P(x)
然后反过来写过程就OK了然后反过来写过程就OK了然后反过来写过程就OK了
策略总结
- 有时候一道题开始有多种策略可以选,当右边比较复杂时,右A/¬A/\lnotA/¬策略可能过于简单粗暴,不是很自然,确实应该先尝试其他策略。但即便如此,该策略很多时候也是有效的
- 往右边添加∀\forall∀和往左边添加∃\exists∃都需要检查自由变元,一旦发现没有自由变元,积极寻求添加这两种量词
证明过程
1. (∀ x)P(x)->C,¬(∃ x)(P(x)->C) |- ¬(∃ x)(P(x)->C) ∈
2. ¬(∃ x)(P(x)->C) |- (∀ x)(¬(P(x)->C)) 导出规则
3. |- (¬(∃ x)(P(x)->C))->(∀ x)(¬(P(x)->C)) →+ 2
4. (∀ x)P(x)->C |- (¬(∃ x)(P(x)->C))->(∀ x)(¬(P(x)->C)) ∈+ 3
5. (∀ x)P(x)->C,¬(∃ x)(P(x)->C) |- (¬(∃ x)(P(x)->C))->(∀ x)(¬(P(x)->C)) ∈+ 4
6. (∀ x)P(x)->C,¬(∃ x)(P(x)->C) |- (∀ x)(¬(P(x)->C)) →- 1,5
7. (∀ x)P(x)->C,¬(∃ x)(P(x)->C) |- ¬(P(x)->C) ∀- 6 (x/x)
8. ¬(P(x)->C) |- P(x)/\¬C 导出规则
9. |- ¬(P(x)->C)->P(x)/\¬C →+ 8
10. (∀ x)P(x)->C |- ¬(P(x)->C)->P(x)/\¬C ∈+ 9
11. (∀ x)P(x)->C,¬(∃ x)(P(x)->C) |- ¬(P(x)->C)->P(x)/\¬C ∈+ 10
12. (∀ x)P(x)->C,¬(∃ x)(P(x)->C) |- P(x)/\¬C →- 7,11
13. (∀ x)P(x)->C,¬(∃ x)(P(x)->C) |- P(x) ∧- 12
14. (∀ x)P(x)->C,¬(∃ x)(P(x)->C) |- (∀ x)P(x) ∀+ 13
15. (∀ x)P(x)->C,¬(∃ x)(P(x)->C) |- (∀ x)P(x)->C ∈
16. (∀ x)P(x)->C,¬(∃ x)(P(x)->C) |- C →- 14,15
17. (∀ x)P(x)->C,¬(∃ x)(P(x)->C) |- ¬C ∧- 12
18. (∀ x)P(x)->C |- ¬(¬(∃ x)(P(x)->C)) ¬+ 16,17
19. (∀ x)P(x)->C |- (∃ x)(P(x)->C) ¬¬- 18