程序验证(五):一阶理论的过程
主要讨论 T E T_E TE的量词自由片段以及 T A T_A TA
等价理论的判定
等价及未解释函数理论(Theory of Equality and Uninterpreted Functions)
除=外的谓词实际上使我们的讨论不必要地复杂化,去除这些累赘谓词的方法如下:
- 对每个谓词 p p p,引入一个新的(fresh)函数符号 f p f_p fp
- 引入一个新的常量 ∙ \bullet ∙
- 将每个谓词实例 p ( t 1 , . . . , t n ) p(t_1 ,..., t_n) p(t1,...,tn)替换为 f p ( t 1 , . . . , t n ) = ∙ f_p(t_1 ,..., t_n)=\bullet fp(t1,...,tn)=∙
这样就得到了等价及未解释函数理论(EUF):- EUF中唯一的谓词就是=
- 所有的公理都是相等或不等
转化方法举例:
x = y → ( p ( x ) ↔ p ( y ) ) x=y\to (p(x)\leftrightarrow p(y)) x=y→(p(x)↔p(y))
转化为
x = y → ( ( f p ( x ) = ∙ ) ↔ ( f p ( y ) = ∙ ) ) x=y\to ((f_p (x)=\bullet)\leftrightarrow (f_p (y)=\bullet)) x=y→((fp(x)=∙)↔(fp(y)=∙))
p ( x ) ∧ q ( x , y ) ∧ q ( y , z ) → ¬ q ( x , z ) p(x)\wedge q(x,y)\wedge q(y,z)\to \neg q(x,z) p(x)∧q(x,y)∧q(y,z)→¬q(x,z)
转化为
( f p ( x ) = ∙ ∧ f q ( x , y ) = ∙ ∧ f q ( y , z ) = ∙ ) → f q ( x , z ) ≠ ∙ (f_p(x)=\bullet \wedge f_q(x,y)=\bullet \wedge f_q(y,z)=\bullet) \to f_q(x,z)\ne \bullet (fp(x)=∙∧fq(x,y)=∙∧fq(y,z)=∙)→fq(x,z)=∙
一些概念
关系(relation)
给定 S S S上的二元关系 R R R, ∀ s 1 , s 2 ∈ S \forall s_1,s_2\in S ∀s1,s2∈S,或者 s 1 R s 2 s_1Rs_2 s1Rs2或者 ¬ ( s 1 R s 2 ) \neg (s_1Rs_2) ¬(s1Rs2)
一个二元关系 R R R若满足以下三个性质,即为一个等价关系(equivalence relation):
- 自反性: ∀ x ∈ S . s R s \forall x\in S.sRs ∀x∈S.sRs
- 对称性: ∀ s 1 , s 2 ∈ S . s 1 R s 2 → s 2 R s 1 \forall s_1,s_2\in S.s_1Rs_2\to s_2Rs_1 ∀s1,s2∈S.s1Rs2→s2Rs1
- 传递性: ∀ s 1 , s 2 , s 3 ∈ S . s 1 R s 2 ∧ s 2 R s 3 → s 1 R s 3 \forall s_1,s_2,s_3\in S.s_1Rs_2 \wedge s_2Rs_3 \to s_1Rs_3 ∀s1,s2,s3∈S.s1Rs2∧s2Rs3→s1Rs3
一个二元关系 R R R是同余关系(congruence relation),如果它除以上三个性质外,还满足函数同余性: - 函数同余性: ∀ s , t ∈ S n . ( ⋀ i = 1 n s i R t i ) → f ( s ) R f ( t ) \forall s,t \in S^n .(\bigwedge ^n_{i=1} s_iRt_i)\to f(s)Rf(t) ∀s,t∈Sn.(⋀i=1nsiRti)→f(s)Rf(t)
类(class)
令 R R R为 S S S上的一个等价关系,则 s ∈ S s\in S s∈S在 R R R下的等价类(equivalence class)为:
[ s ] R ≡ { s ′ ∈ S : s R s ′ } [s] _R \equiv \{s'\in S:sRs'\} [s]R≡{
s′∈S:sRs′}
S S S中的每个元素都属于 R R R的一个等价类
如果 R R R是同余关系,那么 [ s ] R [s]_R [s]R是 s s s的同余类
举例:
Consider the relation ≡ 2 \equiv _2 ≡2 over Z \mathbb{Z} Z, where a ≡ 2 b a\equiv _2 b a≡2b iff ( a m o d 2 ) = ( b m o d 2 ) (a~mod~2)=(b~mod~2) (a mod 2)=(b mod 2)
The equivalence class of 4 under ≡ 2 \equiv_2 ≡2 is:
[ 4 ] ≡ 2 = { n ∈ Z : ( n m o d 2 ) = 0 } = { n ∈ Z : n i s e v e n } [4]_{\equiv_2} = \{n\in \mathbb{Z}: (n~mod~2)=0\}=\{n\in \mathbb{Z} : n~is~even\} [4]≡2={
n∈Z:(n mod 2)=0}={
n∈Z:n is even}
分割(partition)
S S S的一个分割 P P P是一个 S S S的子集的集合,满足:
- total: ( ⋃ S ′ ∈ P S ′ ) = S (\bigcup _{S'\in P} S')=S (⋃S′∈PS′)=S
- disjoint: ∀ S 1 , S 2 ∈ P . S 1 ≠ S 2 → S 1 ∩ S 2 = ∅ \forall S_1, S_2 \in P.S_1\ne S_2\to S_1 \cap S_2 = \empty ∀S1,S2∈