Chapter 2 谓词逻辑
谓词逻辑(predicate logic)也称一阶逻辑(first-order logic),可以处理命题内部的逻辑结构,以及包含全称量词和存在量词的逻辑关系。
变量是实际值的一个占位符(place holder)
作为形式语言的谓词逻辑
谓词词汇由两个集合组成:谓词符号集 P \mathcal{P} P,函数符号集 F \mathcal{F} F,常值看作零元函数nullary。
项(terms):表示对象。定义:
- 任何变量都是项。
- 若 c ∈ F c \in \mathcal{F} c∈F是零元函数,则c是项。
- 若 t 1 , t 2 , … , t n t_1,t_2,\dots,t_n t1,t2,…,tn是项,且 f ∈ F f\in\mathcal{F} f∈F的元 n > 0 n>0 n>0,则 f ( t 1 , t 2 , … , t n ) f(t_1,t_2,\dots,t_n) f(t1,t2,…,tn)是项。
- 没有其他类型的项。
BN范式: t : : = x ∣ c ∣ f ( t 1 , t 2 , … , t n ) t::=x \ | \ c \ | \ f(t_1,t_2,\dots,t_n) t::=x ∣ c ∣ f(t1,t2,…,tn),其中 x x x取遍变量集合var, c c c取遍 F \mathcal{F} F中的零元函数符号, f f f取遍 F \mathcal{F} F中的 n > 0 n>0 n>0的符号。
公式:表示真值。在 ( F , P ) (\mathcal{F}, \mathcal{P}) (F,P)定义:
- 若 P ∈ P P\in\mathcal{P} P∈P是 n ≥ 1 n\ge 1 n≥1元的谓词符号, t 1 , t 2 , … , t n t_1,t_2,\dots,t_n t1,t2,…,tn是 F \mathcal{F} F上的项,则 P ( t 1 , t 2 , … , t n ) P(t_1,t_2,\dots,t_n) P(t1,t2,…,tn)是公式。
- 若 ϕ , ψ \phi, \psi ϕ,ψ是公式,则 ( ¬ ϕ ) , ( ϕ ∧ ψ ) , ( ϕ ∨ ψ ) , ( ϕ → ψ ) (\neg \phi), (\phi \land \psi), (\phi\lor\psi), (\phi\to\psi) (¬ϕ),(ϕ∧ψ),(ϕ∨ψ),(ϕ→ψ)也是公式。
- 若 ϕ \phi ϕ是公式, x x x是变量,则 ( ∀ x ϕ ) , ( ∃ x ϕ ) (\forall x \phi), (\exists x \phi) (∀xϕ),(∃xϕ)也是公式。
- 没有其他形式的公式。
自由变量和约束变量 设 ϕ \phi ϕ是谓词逻辑中的公式。称 x x x在 ϕ \phi ϕ中的一次出现是自由的,如果 x x x是 ϕ \phi ϕ的语法分析树中的一个叶结点,而且不存在从结点 x x x到 ∀ x \forall x ∀x或 ∃ x \exists x ∃x的向上路径。否则,称 x x x的出现是约束的。对 ∀ x \forall x ∀x或 ∃ x \exists x ∃x,我们称除去 ϕ \phi ϕ的任何形如 ∀ x \forall x ∀x或 ∃ x \exists x ∃x的子公式的 ϕ \phi ϕ分别是 ∀ x \forall x ∀x或 ∃ x \exists x ∃x的作用范围。
变量代换 给定变量
x
x
x、项
t
t
t、和公式
ϕ
\phi
ϕ,定义
ϕ
[
t
/
x
]
\phi[t/x]
ϕ[t/x]为用
t
t
t代替
ϕ
\phi
ϕ中变量
x
x
x的每个自由出现而得到的公式。
给定变量
x
x
x、项
t
t
t、和公式
ϕ
\phi
ϕ,说
t
t
t关于
ϕ
\phi
ϕ中的
x
x
x是自由的,如果对出现在
t
t
t中的任何变量
y
y
y,
ϕ
\phi
ϕ中没有自由的叶结点
x
x
x处于
∀
y
\forall y
∀y或
∃
y
\exists y
∃y的作用范围之内。
谓词逻辑的证明论
自然演绎规则
约定:
ϕ
[
t
/
x
]
\phi[t/x]
ϕ[t/x]总假定
t
t
t对
ϕ
\phi
ϕ中
x
x
x是自由的。
在命题逻辑自然演绎基础上加上:
相等的证明规则
t
=
t
=
i
,
t
1
=
t
2
ϕ
[
t
1
/
x
]
ϕ
[
t
2
/
x
]
=
e
\frac{}{t=t}=i, \qquad \frac{t_1=t_2 \quad \phi[t_1/x]}{\phi[t_2/x]}=e
t=t=i,ϕ[t2/x]t1=t2ϕ[t1/x]=e
全称量词的证明规则
[
x
0
⋮
ϕ
[
x
0
/
x
]
]
∀
x
ϕ
∀
x
i
,
∀
x
ϕ
ϕ
[
t
/
x
]
∀
x
e
\frac{\left[ \begin{array}{c} x_0 & \\ & \vdots\\ & \phi[x_0/x] \end{array}\right]}{\forall x\phi}\forall xi, \qquad \frac{\forall x\phi}{\phi[t/x]}\forall xe
∀xϕ⎣⎢⎡x0⋮ϕ[x0/x]⎦⎥⎤∀xi,ϕ[t/x]∀xϕ∀xe
存在量词的证明规则
ϕ
[
t
/
x
]
∃
x
ϕ
∃
x
i
,
∃
x
ϕ
[
x
0
ϕ
[
x
0
/
x
]
⋮
χ
]
χ
∃
x
e
\frac{\phi[t/x]}{\exists x\phi}\exists xi, \qquad \frac{\exists x\phi \ \left[ \begin{array}{c} x_0 & \phi[x_0/x] \\ & \vdots\\ & \chi \end{array}\right]}{\chi}\exists xe
∃xϕϕ[t/x]∃xi,χ∃xϕ ⎣⎢⎡x0ϕ[x0/x]⋮χ⎦⎥⎤∃xe
量词等价(假设 x x x在 ψ \psi ψ中是不自由的):
¬
∀
x
ϕ
⊣
⊢
∃
x
¬
ϕ
¬
∃
x
ϕ
⊣
⊢
∀
x
¬
ϕ
\neg\forall x\phi\dashv\vdash\exists x\neg\phi\qquad\neg\exists x\phi\dashv\vdash\forall x\neg\phi
¬∀xϕ⊣⊢∃x¬ϕ¬∃xϕ⊣⊢∀x¬ϕ
∀
x
ϕ
∧
ψ
⊣
⊢
∀
x
(
ϕ
∧
ψ
)
∀
x
ϕ
∨
ψ
⊣
⊢
∀
x
(
ϕ
∨
ψ
)
\forall x\phi\land\psi\dashv\vdash\forall x(\phi\land\psi)\qquad\forall x\phi\lor\psi\dashv\vdash\forall x(\phi\lor\psi)
∀xϕ∧ψ⊣⊢∀x(ϕ∧ψ)∀xϕ∨ψ⊣⊢∀x(ϕ∨ψ)
∃
x
ϕ
∧
ψ
⊣
⊢
∃
x
(
ϕ
∧
ψ
)
∃
x
ϕ
∨
ψ
⊣
⊢
∃
x
(
ϕ
∨
ψ
)
\exists x\phi\land\psi\dashv\vdash\exists x(\phi\land\psi)\qquad\exists x\phi\lor\psi\dashv\vdash\exists x(\phi\lor\psi)
∃xϕ∧ψ⊣⊢∃x(ϕ∧ψ)∃xϕ∨ψ⊣⊢∃x(ϕ∨ψ)
∀
x
(
ψ
→
ϕ
)
⊣
⊢
ψ
→
∀
x
ϕ
∃
x
(
ψ
→
ϕ
)
⊣
⊢
ψ
→
∃
x
ϕ
\forall x (\psi\to\phi)\dashv\vdash\psi\to\forall x\phi\qquad\exists x (\psi\to\phi)\dashv\vdash\psi\to\exists x\phi
∀x(ψ→ϕ)⊣⊢ψ→∀xϕ∃x(ψ→ϕ)⊣⊢ψ→∃xϕ
∃
x
(
ϕ
→
ψ
)
⊣
⊢
∀
x
ϕ
→
ψ
∀
x
(
ϕ
→
ψ
)
⊣
⊢
∃
x
ϕ
→
ψ
\exists x (\phi\to\psi)\dashv\vdash\forall x\phi\to\psi\qquad\forall x (\phi\to\psi)\dashv\vdash\exists x\phi\to\psi
∃x(ϕ→ψ)⊣⊢∀xϕ→ψ∀x(ϕ→ψ)⊣⊢∃xϕ→ψ
∀
x
ϕ
∧
∀
x
ψ
⊣
⊢
∀
x
(
ϕ
∧
ψ
)
∃
x
ϕ
∨
∀
x
ψ
⊣
⊢
∃
x
(
ϕ
∨
ψ
)
\forall x \phi\land\forall x\psi\dashv\vdash\forall x(\phi\land\psi)\qquad\exists x \phi\lor\forall x\psi\dashv\vdash\exists x(\phi\lor\psi)
∀xϕ∧∀xψ⊣⊢∀x(ϕ∧ψ)∃xϕ∨∀xψ⊣⊢∃x(ϕ∨ψ)
∀
x
∀
y
ϕ
⊣
⊢
∀
y
∀
x
ϕ
∃
x
∃
y
ϕ
⊣
⊢
∃
y
∃
x
ϕ
\forall x\forall y\phi\dashv\vdash\forall y\forall x\phi\qquad\exists x\exists y\phi\dashv\vdash\exists y\exists x\phi
∀x∀yϕ⊣⊢∀y∀xϕ∃x∃yϕ⊣⊢∃y∃xϕ
谓词逻辑的语义
模型 假设 F \mathcal{F} F是函数符号的集合, P \mathcal{P} P是谓词符号的集合,每个符号所需要的变量个数是固定的。符号对 ( F , P ) (\mathcal{F}, \mathcal{P}) (F,P)的一个模型 M \mathcal{M} M由下面的数据集合组成∶
- 非空集 A A A是具体值的全集;
- 对每个零元函数 f ∈ F f\in \mathcal{F} f∈F,A 中的一个具体元素 f M f^\mathcal{M} fM;
- 对每个元数为 n > 0 n>0 n>0的 f ∈ F f\in \mathcal{F} f∈F,从集合 A A A上 n n n元集合 A n A^n An到 A A A的具体函数 f M : A n → A f^\mathcal{M}:A^n\to A fM:An→A;
- 对每个 n > 0 n>0 n>0元谓词 P ∈ P P\in \mathcal{P} P∈P, A A A上 n n n元子集 P M ⊆ A n P^\mathcal{M}\subseteq A^n PM⊆An。
环境 从变量集var到相关模型中值的论域集合 A A A的函数 l : v a r → A l:\mathbf{var}\to A l:var→A。对这样的 l l l,用 l [ x ↦ a ] l[x\mapsto a] l[x↦a]表示将 x x x映到 a a a并且将其他变量 y y y映到 l ( y ) l(y) l(y)的查询表。
给定关于对 ( F , P ) (\mathcal{F}, \mathcal{P}) (F,P)的模型 M \mathcal{M} M和环境 l l l,对于 ( F , P ) (\mathcal{F}, \mathcal{P}) (F,P)上每个逻辑公式 ϕ \phi ϕ,通过对 ϕ \phi ϕ的结构归纳定义一个满足关系 M ⊨ l ϕ \mathcal{M}\models_l\phi M⊨lϕ。若 M ⊨ l ϕ \mathcal{M}\models_l\phi M⊨lϕ成立,则称在模型 M \mathcal{M} M中,相对于环境 l l l, ϕ \phi ϕ的赋值为T。
P P P∶如果 ϕ \phi ϕ的形式为 P ( t 1 , t 2 , … , t n ) P(t_1, t_2,\dots,t_n) P(t1,t2,…,tn),则在集合 A A A中将 t 1 , t 2 , … , t n t_1, t_2,\dots,t_n t1,t2,…,tn解释为:把所有变量根据 l l l的值代替。用这种方式,对每项(通过 f ∈ F f\in \mathcal{F} f∈F)计算 a 1 , a 2 , … , a n a_1, a_2, \dots, a_n a1,a2,…,an的值,其中任何函数符号 f ∈ F f\in \mathcal{F} f∈F通过 f M f^\mathcal{M} fM来0+解释。现在 M ⊨ l P ( t 1 , t 2 , … , t n ) \mathcal{M}\models_l P(t_1, t_2,\dots,t_n) M⊨lP(t1,t2,…,tn)成立当且仅当 ( a 1 , a 2 , … , a n ) ∈ P M (a_1, a_2, \dots, a_n)\in P^\mathcal{M} (a1,a2,…,an)∈PM。
∀ x \forall x ∀x∶ 关系 M ⊨ l ∀ x ψ \mathcal{M}\models_l \forall x\psi M⊨l∀xψ成立当且仅当 M ⊨ l [ x ↦ a ] ψ \mathcal{M}\models_{l[x\mapsto a]}\psi M⊨l[x↦a]ψ对所有 a ∈ A a\in A a∈A都成立。
∃ x \exists x ∃x∶ 对偶地, M ⊨ l ∃ x ψ \mathcal{M}\models_l \exists x\psi M⊨l∃xψ成立当且仅当 M ⊨ l [ x ↦ a ] ψ \mathcal{M}\models_{l[x\mapsto a]}\psi M⊨l[x↦a]ψ对某个 a ∈ A a\in A a∈A成立。
¬ \neg ¬∶ 关系 M ⊨ l ¬ ψ \mathcal{M}\models_l \neg\psi M⊨l¬ψ成立当且仅当 M ⊨ l ψ \mathcal{M}\models_l\psi M⊨lψ不成立。
∨ \lor ∨∶ 关系 M ⊨ l ψ 1 ∨ ψ 2 \mathcal{M}\models_l \psi_1\lor \psi_2 M⊨lψ1∨ψ2成立当且仅当 M ⊨ l ψ 1 \mathcal{M}\models_l\psi_1 M⊨lψ1成立或 M ⊨ l ψ 2 \mathcal{M}\models_l\psi_2 M⊨lψ2成立。
∧ \land ∧∶关系 M ⊨ l ψ 1 ∧ ψ 2 \mathcal{M}\models_l \psi_1\land \psi_2 M⊨lψ1∧ψ2成立当且仅当 M ⊨ l ψ 1 \mathcal{M}\models_l\psi_1 M⊨lψ1和 M ⊨ l ψ 2 \mathcal{M}\models_l\psi_2 M⊨lψ2都成立。
→ \to →∶ 关系 M ⊨ l ψ 1 → ψ 2 \mathcal{M}\models_l \psi_1\to\psi_2 M⊨lψ1→ψ2成立当且仅当只要 M ⊨ l ψ 1 \mathcal{M}\models_l\psi_1 M⊨lψ1成立,则 M ⊨ l ψ 2 \mathcal{M}\models_l\psi_2 M⊨lψ2成立。
语义推导
Γ
\Gamma
Γ是谓词逻辑中的公式集合(可能是无限集合),
ψ
\psi
ψ是谓词逻辑公式。
- 语义推导 Γ ⊨ ψ \Gamma\vDash\psi Γ⊨ψ成立当且仅当对所有的模型 M \mathcal{M} M和查询表 l l l,对所有的 ϕ ∈ Γ \phi\in\Gamma ϕ∈Γ, M ⊨ l ϕ \mathcal{M}\models_l \phi M⊨lϕ都成立,则 M ⊨ l ψ \mathcal{M}\models_l \psi M⊨lψ也成立。
- 公式 ψ \psi ψ是可满足的当且仅当存在某个模型 M \mathcal{M} M和环境 l l l,使得 M ⊨ l ψ \mathcal{M}\models_l \psi M⊨lψ成立。
- 公式ψ是有效的当且仅当在我们能够检测 ψ \psi ψ的所有模型 M \mathcal{M} M和环境 l l l中, M ⊨ l ψ \mathcal{M}\models_l \psi M⊨lψ成立。
- 集合 Γ \Gamma Γ是一致的或可满足的当且仅当存在一个模型 M \mathcal{M} M和一个环境 l l l,使得对所有的公式 ϕ ∈ Γ \phi\in\Gamma ϕ∈Γ, M ⊨ l ψ \mathcal{M}\models_l \psi M⊨lψ成立。
谓词逻辑的不可判定性
定理:谓词逻辑中有效性判定问题是不可判定的:不存在对任意给定的 ϕ \phi ϕ,判定 ⊨ ϕ \vDash\phi ⊨ϕ是否成立的程序。
证(A. Church):
(此处与原书稍有符号上和语句上的不同,是笔者对照英文原版并加入了自己的解释,更方便理解。读罢此证明,感觉丘奇大神之智慧精妙如斯,令人叹服。)
方法:问题归约法。选择另一个不可解问题,用当前问题的可解性推出被选择问题的可解性。
引理:波斯特对应问题不可解。波斯特对应问题:已知有限序列对 ( s 1 , t 1 ) , ( s 2 , t 2 ) , … , ( s k , t k ) (s_1,t_1), (s_2, t_2), \dots, (s_k, t_k) (s1,t1),(s2,t2),…,(sk,tk),其中所有的 s i , t i s_i, t_i si,ti都是正长度的二进制字符串。是否存在下标序列 i 1 , i 2 , … , i n ( n ≥ 1 ) i_1, i_2, \dots, i_n(n\ge1) i1,i2,…,in(n≥1),使得字符串的串联 s i 1 s i 2 … s i m s_{i1}s_{i2}\dots s_{im} si1si2…sim等于 t i 1 t i 2 … t i m t_{i1}t_{i2}\dots t_{im} ti1ti2…tim?
原定理证明:
假设谓词逻辑有效性可判定。求解波斯特对应问题。已知对应问题的实例 C C C: s 1 s 2 … s k , t 1 t 2 … t k s_{1}s_{2}\dots s_{k}, t_{1}t_{2}\dots t_{k} s1s2…sk,t1t2…tk。需要在有限的时空里构建对所有实例都一致的谓词逻辑公式 ϕ \phi ϕ,使得 ⊨ ϕ \vDash \phi ⊨ϕ成立,当且仅当波斯特对应问题 C C C有一个解。
构造公式(这里是整个证明的核心,公式不好理解的话在必要性那里有解释):
选择一个常量 e e e,以及两个需要一个自变量的函数符号 f 0 f_0 f0和 f 1 f_1 f1。把 e e e视为空位符串或空字, f 0 f_0 f0和 f 1 f_1 f1分别代表与0和1拼接。若 b 1 b 2 … b l b_1b_2\dots b_l b1b2…bl是二进制位的字符串,将它编码为项 f b l ( f b l − 1 … ( f b 2 ( f b 1 ( e ) ) ) … ) f_{b_l}(f_{b_{l-1}}\dots(f_{b_2}(f_{b_1}(e)))\dots) fbl(fbl−1…(fb2(fb1(e)))…),简记为 f b 1 b 2 … b l ( e ) f_{b_1b_2\dots b_l}(e) fb1b2…bl(e)
谓词符号 P ( v , w ) P(v, w) P(v,w)表示存在某个下标序列 ( i 1 , i 2 , … , i m ) (i_1, i_2, \dots, i_m) (i1,i2,…,im),使得 v v v是由 s i 1 s i 2 … s i m s_{i_1}s_{i_2}\dots s_{i_m} si1si2…sim表示的项, w w w是由 t i 1 t i 2 … t i m t_{i_1}t_{i_2}\dots t_{i_m} ti1ti2…tim表示的项。 v v v和 w w w使用同样的下标序列构造出一个串;只是 v v v使用 s i s_i si, w w w使用 t i t_i ti。
语句 ϕ \phi ϕ有结构: ϕ 1 ∧ ϕ 2 → ϕ 3 \phi_1\land\phi_2\to\phi_3 ϕ1∧ϕ2→ϕ3,其中,设 ϕ 1 = def ⋀ i = 1 k P ( f s i ( e ) , f t i ( e ) ) ϕ 2 = def ∀ v ∀ w ( P ( v , w ) → ⋀ i = 1 k P ( f s i ( v ) , f t i ( w ) ) ) ϕ 3 = def ∃ z P ( z , z ) \phi_1\overset{\text{def}}{=}\bigwedge_{i=1}^kP(f_{s_i}(e), f_{t_i}(e))\\ \phi_2\overset{\text{def}}{=}\forall v\forall w \left( P(v, w) \to \bigwedge_{i=1}^kP(f_{s_i}(v), f_{t_i}(w)) \right)\\ \phi_3\overset{\text{def}}{=}\exists z P(z, z) ϕ1=defi=1⋀kP(fsi(e),fti(e))ϕ2=def∀v∀w(P(v,w)→i=1⋀kP(fsi(v),fti(w)))ϕ3=def∃zP(z,z)论断 ⊨ ϕ \vDash \phi ⊨ϕ成立,当且仅当波斯特对应问题 C C C有解。
构造完毕。
必要性:
建立公式 ϕ \phi ϕ的模型:
A A A是所有有限二进制串的集合。 e M = ε , f 0 M ( s ) = def s 0 , f 1 M ( s ) = def s 1 e^\mathcal{M}=\varepsilon, f_0^\mathcal{M}(s)\overset{\text{def}}{=}s0, f_1^\mathcal{M}(s)\overset{\text{def}}{=}s1 eM=ε,f0M(s)=defs0,f1M(s)=defs1,
P M = def { ( v , w ) ∣ ∃ ( i 1 , i 2 , … , i m ) s.t. v = s i 1 s i 2 … s i m , w = t i 1 t i 2 … t i m } P^\mathcal{M}\overset{\text{def}}{=}\{(v, w) | \exists (i_1, i_2, \dots, i_m) \text{ s.t. } v=s_{i_1}s_{i_2}\dots s_{i_m}, w=t_{i_1}t_{i_2}\dots t_{i_m}\} PM=def{(v,w)∣∃(i1,i2,…,im) s.t. v=si1si2…sim,w=ti1ti2…tim}。
对 ϕ \phi ϕ的含义解释:
ϕ 1 \phi_1 ϕ1:在 i = 1 … k i=1\dots k i=1…k时都有 ( s i , t i ) ∈ P M (s_i, t_i)\in P^\mathcal{M} (si,ti)∈PM。(下标序列是 ( i ) (i) (i),所以命题恒真,有 M ⊨ ϕ 1 \mathcal{M}\vDash\phi_1 M⊨ϕ1。)
ϕ 2 \phi_2 ϕ2:只要 ( v , w ) ∈ P M (v, w)\in P^\mathcal{M} (v,w)∈PM,则对 i = 1 … k i=1\dots k i=1…k时都有 ( v s i , w t i ) ∈ P M (vs_i, wt_i)\in P^\mathcal{M} (vsi,wti)∈PM。(下标序列是 ( i 1 , i 2 , … , i m , i ) (i_1, i_2, \dots, i_m, i) (i1,i2,…,im,i),所以有 M ⊨ ϕ 2 \mathcal{M}\vDash\phi_2 M⊨ϕ2。)
ϕ 3 \phi_3 ϕ3:存在一个串 z z z和某个下标序列,既能表示成 s i 1 s i 2 … s i m s_{i_1}s_{i_2}\dots s_{i_m} si1si2…sim,又能表示成 t i 1 t i 2 … t i m t_{i_1}t_{i_2}\dots t_{i_m} ti1ti2…tim,即波斯特对应问题有一个解 z z z。
由假设 M ⊨ ϕ 1 ∧ ϕ 2 → ϕ 3 \mathcal{M}\vDash\phi_1\land\phi_2\to\phi_3 M⊨ϕ1∧ϕ2→ϕ3,又因为 M ⊨ ϕ 1 ∧ ϕ 2 \mathcal{M}\vDash\phi_1\land\phi_2 M⊨ϕ1∧ϕ2,所以 M ⊨ ϕ 3 \mathcal{M}\vDash\phi_3 M⊨ϕ3,即问题 C C C有解。
充分性:
设问题 C C C有解 ( i 1 , i 2 , … , i n ) (i_1, i_2, \dots, i_n) (i1,i2,…,in),需证明:若 M ′ \mathcal{M}' M′是含有常量 e M ′ e^{\mathcal{M}'} eM′、两个一元函数 f 0 M ′ , f 1 M ′ f_0^{\mathcal{M}'}, f_1^{\mathcal{M}'} f0M′,f1M′,以及二元谓词 P M ′ P^{\mathcal{M}'} PM′的任意模型,则它必满足 ϕ \phi ϕ。有三种可能性:(简单情况) M ′ ⊭ ϕ 1 , M ′ ⊭ ϕ 2 \mathcal{M}'\nvDash\phi_1, \mathcal{M}'\nvDash\phi_2 M′⊭ϕ1,M′⊭ϕ2或(复杂情况)在 M ′ ⊨ ϕ 1 ∧ ϕ 2 \mathcal{M}'\vDash\phi_1\land\phi_2 M′⊨ϕ1∧ϕ2情形下证明 M ′ ⊭ ϕ 3 \mathcal{M}'\nvDash\phi_3 M′⊭ϕ3
使用在有限二进制串数据结构递归定义的解释函数 interpret \textbf{interpret} interpret:
interpret ( ε ) = def e M ′ interpret ( s 0 ) = def f 0 M ′ ( interpret ( s ) ) interpret ( s 1 ) = def f 1 M ′ ( interpret ( s ) ) \textbf{interpret}(\varepsilon)\overset{\text{def}}{=}e^{\mathcal{M}'}\\ \textbf{interpret}(s0)\overset{\text{def}}{=}f_0^{\mathcal{M}'}(\textbf{interpret}(s))\\ \textbf{interpret}(s1)\overset{\text{def}}{=}f_1^{\mathcal{M}'}(\textbf{interpret}(s)) interpret(ε)=defeM′interpret(s0)=deff0M′(interpret(s))interpret(s1)=deff1M′(interpret(s))由 M ′ ⊨ ϕ 1 \mathcal{M}'\vDash\phi_1 M′⊨ϕ1知对 i = 1 … k i=1\dots k i=1…k, ( interpret ( s i ) , interpret ( t i ) ) ∈ P M ′ (\textbf{interpret}(s_i), \textbf{interpret}(t_i))\in P^{\mathcal{M}'} (interpret(si),interpret(ti))∈PM′
由 M ′ ⊨ ϕ 2 \mathcal{M}'\vDash\phi_2 M′⊨ϕ2知对所有 ( v , w ) ∈ P M ′ (v, w)\in P^{\mathcal{M}'} (v,w)∈PM′, i = 1 … k i=1\dots k i=1…k, ( interpret ( v s i ) , interpret ( w t i ) ) ∈ P M ′ (\textbf{interpret}(vs_i), \textbf{interpret}(wt_i))\in P^{\mathcal{M}'} (interpret(vsi),interpret(wti))∈PM′
从 ( s , t ) = ( s i 1 , t i 1 ) (s, t)=(s_{i_1}, t_{i_1}) (s,t)=(si1,ti1)开始,反复使用第二个事实得
( interpret ( s i 1 s i 2 … s i n ) , interpret ( t i 1 t i 2 … t i n ) ) ∈ P M ′ (\textbf{interpret}(s_{i_1}s_{i_2}\dots s_{i_n}), \textbf{interpret}(t_{i_1}t_{i_2}\dots t_{i_n}))\in P^{\mathcal{M}'} (interpret(si1si2…sin),interpret(ti1ti2…tin))∈PM′因为 s i 1 s i 2 … s i n s_{i_1}s_{i_2}\dots s_{i_n} si1si2…sin和 t i 1 t i 2 … t i n t_{i_1}t_{i_2}\dots t_{i_n} ti1ti2…tin一起形成了 C C C的一个解,所以它们是相等的。因此 interpret ( s i 1 s i 2 … s i n \textbf{interpret}(s_{i_1}s_{i_2}\dots s_{i_n} interpret(si1si2…sin和 interpret ( t i 1 t i 2 … t i n ) ) \textbf{interpret}(t_{i_1}t_{i_2}\dots t_{i_n})) interpret(ti1ti2…tin))是 A ′ A' A′中的相同元素,因为相同内容的解释带来相同的结果。所以在 M ′ \mathcal{M}' M′中 ∃ z P ( z , z ) \exists z P(z, z) ∃zP(z,z)。
证毕。
谓词逻辑的表达能力
软件模型、设计标准和硬件或程序的执行模型经常通过有向图来描述。这样的模型 M \mathcal{M} M就是定义在具体“状态”集合 A A A上的二元谓词 R R R的解释。
例:给定状态集合
A
=
{
s
0
,
s
1
,
s
2
,
s
3
}
A=\{s_0, s_1, s_2, s_3\}
A={s0,s1,s2,s3},令
R
M
R^\mathcal{M}
RM是集合
{
(
s
0
,
s
1
)
,
(
s
1
,
s
0
)
,
(
s
1
,
s
1
)
,
(
s
1
,
s
2
)
,
(
s
2
,
s
0
)
,
(
s
3
,
s
0
)
,
(
s
3
,
s
2
)
}
\{(s_0, s_1), (s_1, s_0), (s_1, s_1), (s_1, s_2), (s_2, s_0), (s_3, s_0), (s_3, s_2)\}
{(s0,s1),(s1,s0),(s1,s1),(s1,s2),(s2,s0),(s3,s0),(s3,s2)}。用有向图描述这个模型,当且仅当
(
s
,
s
′
)
∈
R
M
(s, s')\in R^\mathcal{M}
(s,s′)∈RM,存在一条从结点
s
s
s,到结点
s
′
s'
s′的边。在这种情形下,通常记作
s
→
s
′
s\to s'
s→s′。
紧致性定理 设
Γ
\Gamma
Γ是谓词逻辑的一个语句集合。若
Γ
\Gamma
Γ的所有有限子集都是可满足的,则
Γ
\Gamma
Γ也是可满足的。
证: 用反证法证明∶ 假设 Γ \Gamma Γ是不可满足的,那么语义推导 Γ ⊨ ⊥ \Gamma \vDash\bot Γ⊨⊥成立,因为没有模型使所有的 ϕ ∈ Γ \phi\in\Gamma ϕ∈Γ都为真。由完备性,这意味着矢列 Γ ⊢ ⊥ \Gamma \vdash\bot Γ⊢⊥是有效的。(注意,这里用到了关于矢列的更一般的概念,可以处理无限多个前提。合理性和完备性依然为真。)因此,在自然演绎中,这个矢列有一个证明; 只能是上下文的一个有限片段,只能使用 Γ \Gamma Γ中有限个前提集合 Δ \Delta Δ。但是 Δ ⊢ ⊥ \Delta \vdash\bot Δ⊢⊥也是有效的,因此,由合理性,有 Δ ⊨ ⊥ \Delta \vDash\bot Δ⊨⊥。但是后者与 Γ \Gamma Γ的所有有限子集都是可满足的矛盾。
Löwenheim-Skolem 定理 设 ψ \psi ψ是谓词逻辑的一个语句,对任何自然数 n ≥ 1 n\ge1 n≥1,存在 ψ \psi ψ的至少有 n n n个元素的模型。则 ψ \psi ψ有无限个元素的模型。
证明 公式 ϕ n ) = def ∃ x 1 ∃ x 2 … ∃ x n ∧ 1 ≤ i < j ≤ n ¬ ( x i = x j ) \phi_n)\overset{\text{def}}{=}\exists x_1\exists x_2\dots\exists x_n\land_{1\le i<j\le n}\neg(x_i=x_j) ϕn)=def∃x1∃x2…∃xn∧1≤i<j≤n¬(xi=xj)说明至少有 n n n个元素。考虑语句集合 Γ = def { ψ } ∪ { ϕ n ∣ n ≥ 1 } \Gamma\overset{\text{def}}{=}\{\psi\}\cup\{\phi_n|n\ge 1\} Γ=def{ψ}∪{ϕn∣n≥1},并设 Δ \Delta Δ是其任意一个有限子集。设 k ≥ 1 k\ge 1 k≥1满足∶对所有使 ϕ ∈ Δ \phi\in\Delta ϕ∈Δ的 n n n, n ≤ k n\le k n≤k。因为后一个集合是有限的,所以 k k k必然存在。由假设, { ψ , ϕ k } \{\psi, \phi_k\} {ψ,ϕk}是可满足的;但对所有 n ≤ k n\le k n≤k, ϕ k → ϕ n \phi_k\to\phi_n ϕk→ϕn是有效的(为什么?)。因此, Δ \Delta Δ也是可满足的。紧致性定理蕴涵:某个模型 M \mathcal{M} M满足 Γ \Gamma Γ;特别地, M ⊨ ψ \mathcal{M}\vDash\psi M⊨ψ成立。因为对所有 n ≥ 1 n\ge1 n≥1, M \mathcal{M} M满足 ϕ n \phi_n ϕn,所以 M \mathcal{M} M不可能只有有限个元素。
可达性:给定有向图中的结点 n n n和 n ′ n' n′,是否存在从 n n n到 n ′ n' n′的有限长度的迁移路径?
可达性用谓词逻辑是不可表达的∶ 不存在仅以 u u u和 v v v为自由变量且仅有一个二元谓词符号 R R R的谓词逻辑公式 ϕ \phi ϕ,使得 ϕ \phi ϕ在有向图中成立当且仅当该有向图中存在一条从伴随 u u u的结点到伴随 v v v的结点的路径。
证:假设存在一个公式 ϕ \phi ϕ,满足存在一条从与 u u u相伴的结点到与 v v v相伴的结点的路径。设 c c c和 c ′ c' c′是常量,设 ϕ n \phi_n ϕn是公式,表达存在一条从 c c c到 c ′ c' c′的长度为 n n n的路径:我们定义 ϕ 0 \phi_0 ϕ0为 c = c ′ c=c' c=c′, ϕ 1 \phi_1 ϕ1是 R ( c , c ′ ) R(c, c') R(c,c′),且对 n > 1 n>1 n>1,定义 ϕ n = def ∃ x 1 ∃ x 2 … ∃ x n − 1 ( R ( c , x 1 ) ∧ R ( x 1 , x 2 ) ∧ ⋯ ∧ R ( x n − 1 , c ′ ) ) \phi_n\overset{\text{def}}{=}\exists x_1\exists x_2\dots\exists x_{n-1}(R(c, x_1)\land R(x_1, x_2)\land\dots\land R(x_{n-1}, c')) ϕn=def∃x1∃x2…∃xn−1(R(c,x1)∧R(x1,x2)∧⋯∧R(xn−1,c′))令 Δ = { ¬ ϕ i ∣ i ≥ 0 } ∪ { ϕ [ c / u ] [ c ′ / v ] } \Delta=\{\neg\phi_i | i\ge 0\}\cup\{\phi[c/u][c'/v]\} Δ={¬ϕi∣i≥0}∪{ϕ[c/u][c′/v]}。 Δ \Delta Δ中的所有公式都是语句且 Δ \Delta Δ是不可满足的,因为 Δ \Delta Δ中所有语句的合取说的是不存在长度为0、1、…的从标识为 c c c的结点到标识为 c ′ c' c′的结点的路径,但存在一条从 c c c到 c ′ c' c′的有限路径,因为 ϕ [ c / u ] [ c ′ / v ] } \phi[c/u][c'/v]\} ϕ[c/u][c′/v]}为真。然而, Δ \Delta Δ的每个有限子集都是可满足的,因为存在任意有限长的路径。因此,由紧致性定理, Δ \Delta Δ本身是可满足的。这是一个矛盾。因此,不存在这样的公式 ϕ \phi ϕ。
使用二阶逻辑表达可达性:将量词应用于谓词。
软件的微观模型
在软件的建模和推理中应用模型检测和语义推导。
(略)