程序验证(五):一阶理论的过程

程序验证(五):一阶理论的过程

主要讨论 T E T_E TE的量词自由片段以及 T A T_A TA

等价理论的判定

等价及未解释函数理论(Theory of Equality and Uninterpreted Functions)

除=外的谓词实际上使我们的讨论不必要地复杂化,去除这些累赘谓词的方法如下:

  1. 对每个谓词 p p p,引入一个新的(fresh)函数符号 f p f_p fp
  2. 引入一个新的常量 ∙ \bullet
  3. 将每个谓词实例 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,s2S,或者 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 xS.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,s2S.s1Rs2s2Rs1
  • 传递性: ∀ 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,s3S.s1Rs2s2Rs3s1Rs3
    一个二元关系 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,tSn.(i=1nsiRti)f(s)Rf(t)
类(class)

R R R S S S上的一个等价关系,则 s ∈ S s\in S sS R R R下的等价类(equivalence class)为:
[ s ] R ≡ { s ′ ∈ S : s R s ′ } [s] _R \equiv \{s'\in S:sRs'\} [s]R{ sS: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 a2b 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={ nZ:(n mod 2)=0}={ nZ:n is even}

分割(partition)

S S S的一个分割 P P P是一个 S S S的子集的集合,满足:

  • total: ( ⋃ S ′ ∈ P S ′ ) = S (\bigcup _{S'\in P} S')=S (SPS)=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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值