第一次写博客,先复盘一道简单的证明题练练手
用自然推理系统证明: ( ∀ 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
∧
¬
B
1.\lnot(A→B)⊢A∧¬B
1.¬(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)
然 后 反 过 来 写 过 程 就 O K 了 然后反过来写过程就OK了 然后反过来写过程就OK了
策略总结
- 有时候一道题开始有多种策略可以选,当右边比较复杂时,右 A / ¬ A/\lnot A/¬策略可能过于简单粗暴,不是很自然,确实应该先尝试其他策略。但即便如此,该策略很多时候也是有效的
- 往右边添加 ∀ \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