程序的模型检测-例子BDD与限界模型

Download Report

Transcript 程序的模型检测-例子BDD与限界模型

模型检测方法
中国科学院软件研究所
张文辉
http://lcs.ios.ac.cn/~zwh/pv
BDD
(ab)(bc)(ad)
a
b
b
c
d
0
c
d
0
0
d
0
0
c
d
1
0
d
0
1
c
d
1
1
d
1
1
d
1
2
0
0
BDD
(ab)(bc)(ad)
a
b
b
c
d
c
d
0
d
c
d
d
c
d
d
1
3
d
BDD
(ab)(bc)(ad)
a
b
b
c
d
c
d
0
d
c
d
d
c
d
d
1
4
d
BDD
(ab)(bc)(ad)
a
b
b
c
d
c
d
0
c
d
c
d
d
1
5
BDD
(ab)(bc)(ad)
a
b
b
c
d
c
d
0
c
d
c
d
d
1
6
BDD
(ab)(bc)(ad)
a
b
b
c
d
c
c
c
d
0
d
1
7
BDD
(ab)(bc)(ad)
a
b
b
c
d
c
c
c
d
0
d
1
8
BDD
(ab)(bc)(ad)
a
b
b
c
c
c
c
d
0
1
9
BDD
(ab)(bc)(ad)
a
b
b
c
c
c
c
d
0
1
10
BDD
(ab)(bc)(ad)
a
b
b
c
c
d
0
1
11
BDD
(ab)(bc)(ad)
a
b
b
c
d
0
c
d
0
0
d
0
0
c
d
1
0
d
0
1
c
d
1
1
d
1
1
12
d
1
0
0
BDD
(ab)(bc)(ad)
a
b
b
c
d
0
c
d
0
0
d
0
0
c
d
1
0
d
0
1
c
d
1
1
d
1
1
13
d
1
0
0
BDD
(ab)(bc)(ad)
a
b
b
0
c
d
0
1
0
c
1
1
14
0
BDD
(ab)(bc)(ad)
a
b
b
c
c
d
0
1
15
限界模型检测与验证
• 从模型的局部考察一个性质是否满足
• 对一些不满足的性质可能很快知道问题
• 对一些满足的性质也可能很快知道结论
限界模型检测与验证
限界模型检测与验证
限界模型检测与验证
• M,s |=  ,限界模型 M0, M1, ….
问题:是否存在k ,Mk,s |=m  ?
• 存在k, Mk,s |=m , 则 M,s |= 
可靠性
K
较小时,
==> 系统满足性质
较快验证系统性质
限界模型检测与验证
• M,s |=  ,限界模型 M0, M1, ….
问题:是否存在k ,Mk,s |=m  ?
• 存在k, Mk,s |=m , 则 M,s |=  可靠性
则 M,s |= 
K
较小时,
==> 系统存在问题
较快查出系统问题
自动售茶机
{p0,q0}
{p1,q0}
s3
s1
s0
{p2,q0}
s4
{p2,q0}
s5
{p3,q2}
s2
{p4,q1}
E(q0 U q2) vs A(q0 R q2)
•
•
•
•
•
•
•
•
•
•
P0:
s0
P1:
s0 s1;
s0 s2;
P2:
s0 s1 s3;
s0 s1 s5;
s0 s2 s4;
s0 s2 s5;
我们有
M2, s0 s1 s5 |= (q0 U q2)
因此
M2 满足 E(q0 U q2)
M 满足 E(q0 U q2)
M0 |= E(q0 U q2), M1 |= E(q0 U q2)
M2=(S,P2,s0,L)是最小
可确定E(q0 U q2)是否满足的限界模型
AG(q0q2) vs EF(q0q2)
•
•
•
•
•
•
•
•
•
•
P0:
s0
P1:
s0 s1;
s0 s2;
P2:
s0 s1 s3;
s0 s1 s5;
s0 s2 s4;
s0 s2 s5;
我们有
M2, s0 s2 s4 |= F(q0q2)
因此
M2 满足 EF(q0q2)
M 不满足 AG(q0q2)
M0 |=EF(q0q2), M1 |=EF(q0q2)
M2=(S,P2,s0,L)是最小
可确定AG(q0q2)是否满足的限界模型
限界模型
•
•
•
•
•
•
•
•
•
•
P0:
s0
P1:
s0 s1;
s0 s2;
P2:
s0 s1 s3;
s0 s1 s5;
s0 s2 s4;
s0 s2 s5;
•
•
•
•
•
•
P3:
s0 s1 s3 s4;
s0 s1 s3 s5;
s0 s1 s5 s0;
s0 s2 s4 s5;
s0 s2 s5 s0;
•
•
•
•
•
•
•
•
•
P4:
s0 s1 s3 s4 s5;
s0 s1 s3 s5 s0;
s0 s1 s5 s0 s1;
s0 s1 s5 s0 s2;
s0 s2 s4 s5 s0;
s0 s2 s5 s0 s1;
s0 s2 s5 s0 s2;