换名规则
为什么需要进行换名?举个例子
- 在下面的公式中:
∀ x F ( x ) ∨ ∃ x G ( x ) \forall x F(x)\vee\exist x G(x) ∀xF(x)∨∃xG(x) ( 1 ) ∗ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(1)* (1)∗
- F ( x ) F(x) F(x) 中的 x x x 和 G ( x ) G(x) G(x) 中的 x x x 其实不是同一个意义,因为两个 x x x 的辖域不同。
- 只有下面这种形式的 x x x 是不需要换名的:
∀ x ( G ( x ) → F ( x ) ) \forall x(G(x)\rightarrow F(x)) ∀x(G(x)→F(x)) ( 2 ) ∗ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(2)* (2)∗
-
即,一个 x x x 的辖域内同时包含了两者,才不用换名。
-
因此在我们举的例子中, ∀ x F ( x ) ∨ ∃ x G ( x ) \forall x F(x)\vee\exist x G(x) ∀xF(x)∨∃xG(x) 应该换名为 ∀ x F ( x ) ∨ ∃ y G ( y ) \forall x F(x)\vee\exist y G(y) ∀xF(x)∨∃yG(y)
-
此外还有一种情况需要进行换名,那就是,当一个字母(例如 x x x) 同时既作为 约束变元,又作为 自由变元 出现的时候,需要将 约束变元 中的 x x x 及其指导变元进行换名。举个例子:
∀ x ( G ( x , y ) → ∃ y F ( y , z ) ) \forall x(G(x,y)\rightarrow \exist y F(y,z)) ∀x(G(x,y)→∃yF(y,z))
- 首先,这个 ∀ x \forall x ∀x 的约束持续到公式的末尾
- 其次, G ( x , y ) G(x,y) G(x,y) 中的 y y y 没有任何约束,是 自由变元(没有 ∀ y \forall y ∀y 或者 ∃ y \exist y ∃y 约束它)
- 但是 F ( y , z ) F(y,z) F(y,z) 中的 y y y 被它前面的 ∃ y \exist y ∃y 约束,是 约束变元
- 到此, y y y 既做了 自由变元,也作为了 约束变元 因此,这个 y y y 作为约束变元的地方应该换名,即如下式:
∀ x ( G ( x , y ) → ∃ w F ( w , z ) ) \forall x(G(x,y)\rightarrow \exist w F(w,z)) ∀x(G(x,y)→∃wF(w,z))
常用定理
让我们再来看一个式子:
∀ x A ( x ) ∨ ∀ x B ( x ) \forall x A(x) \vee \forall x B(x) ∀xA(x)∨∀xB(x) ( 3 ) ∗ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(3)* (3)∗
- 按照第一部分的换名规则,我想应该写成 ∀ x A ( x ) ∨ ∀ y B ( y ) \forall x A(x) \vee \forall y B(y) ∀xA(x)∨∀yB(y) 但如果我告诉你这个式子其实也可以写成:
∀ x ( A ( x ) ∨ B ( x ) ) \forall x(A(x)\vee B(x)) ∀x(A(x)∨B(x)) ( 4 ) ∗ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(4)* (4)∗
- 你可能会说,合并同类项呗,这个我熟~~ 简单极了。但事实并非如此。。。。。
- 之所以这个式子可以不需要换名,而且还能把它换成一个 前束范式 的形式,可并不是 合并 那么简单。 ∃ x A ( x ) ∧ ∃ B ( x ) \exist xA(x)\wedge \exist B(x) ∃xA(x)∧∃B(x) 就不能写成 ∃ x ( A ( x ) ∧ B ( x ) ) \exist x(A(x)\wedge B(x)) ∃x(A(x)∧B(x))。为了解决这个问题,我们就要学习常用的定理来帮助我们了解这个过程。
量词否定等值式
¬ ∀ x A ( x ) ≡ ∃ x ¬ A ( x ) \neg\forall x A(x) \equiv \exist x \neg A(x) ¬∀xA(x)≡∃x¬A(x) ( 1 ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(1) (1)
¬ ∃ x A ( x ) ≡ ∀ x ¬ A ( x ) \neg\exist x A(x) \equiv \forall x \neg A(x) ¬∃xA(x)≡∀x¬A(x) ( 2 ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(2) (2)
直观理解:
- 不是所有人都喜欢数学 = 存在(至少一个)人不喜欢数学;
- 不存在一个人喜欢数学 = 所有人都不喜欢数学
量词辖域的收缩与扩张等值式
∀ x ( A ( x ) ∨ B ) ≡ ∀ A ( x ) ∨ B \forall x (A(x)\vee B) \equiv \forall A(x) \vee B ∀x(A(x)∨B)≡∀A(x)∨B ( 3 ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(3) (3)
∀ x ( A ( x ) ∧ B ) ≡ ∀ A ( x ) ∧ B \forall x (A(x)\wedge B) \equiv \forall A(x) \wedge B ∀x(A(x)∧B)≡∀A(x)∧B ( 4 ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(4) (4)
∀ x ( A ( x ) → B ) ≡ ∃ A ( x ) → B \forall x (A(x)\rightarrow B) \equiv \exist A(x) \rightarrow B ∀x(A(x)→B)≡∃A(x)→B ( 5 ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(5) (5)
- 注意,这里右边的式子变成了 存在量词 我们可以推导一下:
- 第二步可以直接把括号去了,是因为辖域收缩和扩张的前两条理论
∀ x ( B → A ( x ) ) ≡ B → ∀ x A ( x ) \forall x (B \rightarrow A(x)) \equiv B \rightarrow \forall xA(x) ∀x(B→A(x))≡B→∀xA(x) ( 6 ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(6) (6)
∃
x
(
A
(
x
)
∨
B
)
≡
∃
A
(
x
)
∨
B
\exist x (A(x)\vee B) \equiv \exist A(x) \vee B
∃x(A(x)∨B)≡∃A(x)∨B
(
7
)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(7)
(7)
∃ x ( A ( x ) ∧ B ) ≡ ∃ A ( x ) ∧ B \exist x (A(x)\wedge B) \equiv \exist A(x) \wedge B ∃x(A(x)∧B)≡∃A(x)∧B ( 8 ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(8) (8)
∃ x ( A ( x ) → B ) ≡ ∀ A ( x ) → B \exist x (A(x)\rightarrow B) \equiv \forall A(x) \rightarrow B ∃x(A(x)→B)≡∀A(x)→B ( 9 ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(9) (9)
∃ x ( B → A ( x ) ) ≡ B → ∃ x A ( x ) \exist x (B \rightarrow A(x)) \equiv B \rightarrow \exist xA(x) ∃x(B→A(x))≡B→∃xA(x) ( 10 ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(10) (10)
量词分配等值式
∀ x ( A ( x ) ∧ B ( x ) ) ≡ ∀ x A ( x ) ∧ ∀ x B ( x ) \forall x (A(x) \wedge B(x)) \equiv \forall x A(x) \wedge \forall x B(x) ∀x(A(x)∧B(x))≡∀xA(x)∧∀xB(x) ( 11 ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(11) (11)
∃ x ( A ( x ) ∨ B ( x ) ) ≡ ∃ x A ( x ) ∨ ∃ x B ( x ) \exist x (A(x) \vee B(x)) \equiv \exist x A(x) \vee \exist x B(x) ∃x(A(x)∨B(x))≡∃xA(x)∨∃xB(x) ( 12 ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(12) (12)
注意:下面这两组公式,就不是逻辑等值的了,而是只能单向推导了
∀ x A ( x ) ∨ ∀ x B ( x ) ⊨ ∀ x ( A ( x ) ∨ B ( x ) ) \forall x A(x) \vee \forall x B(x) \models \forall x (A(x) \vee B(x)) ∀xA(x)∨∀xB(x)⊨∀x(A(x)∨B(x)) ( 13 ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(13) (13)
∃ x ( A ( x ) ∧ B ( x ) ) ⊨ ∃ x A ( x ) ∧ ∃ x B ( x ) \exist x (A(x) \wedge B(x)) \models \exist x A(x) \wedge \exist x B(x) ∃x(A(x)∧B(x))⊨∃xA(x)∧∃xB(x) ( 14 ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(14) (14)
注意两个推导的方向是不同的 (13)和 (14)不作为定理出现
无名等值式
∀ x ∀ y A ( x , y ) ≡ ∀ y ∀ x A ( x , y ) \forall x \forall yA(x,y)\equiv \forall y \forall xA(x,y) ∀x∀yA(x,y)≡∀y∀xA(x,y) ( 15 ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(15) (15)
∃ x ∃ y A ( x , y ) ≡ ∃ y ∃ x A ( x , y ) \exist x \exist yA(x,y)\equiv \exist y \exist xA(x,y) ∃x∃yA(x,y)≡∃y∃xA(x,y) ( 16 ) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(16) (16)
回到式子 ( 3 ) ∗ (3)* (3)∗
- 现在让我们解答最初那个问题,你现在还以为是 合并 这么简单么?当然不是,之所以在那个公式中可以
就是因为公式 ( 13 ) (13) (13) 他保证了这个步骤可以直接变成 ( 4 ) ∗ (4)* (4)∗ 而不用非得进行 换名,当然,如果你想换名,答案也是对的。
总结一下
-
两种情况需要进行换名:
- 当辖域不同的重名变量存在时,需要使用不同的名字
- 当 约束变元 和 自由变元 命名发生冲突时,最好将 约束变元 及其 指导变元 进行改名
-
当进行量词合并或者拆分的时候,一定不要想当然,要根据合并或者拆分的规则和定理进行。