smv プログラム 例 3
DESCRIPTION
SMV プログラム 例 3. MODULE main VAR request : boolean; state : {ready, busy}; ASSIGN init(state) := ready; next(state) := case state = ready & request : busy; 1 : {ready, busy}; esac; SPEC AG(request -> AF state = busy). - PowerPoint PPT PresentationTRANSCRIPT
SMV プログラム 例 3MODULE mainVAR request : boolean; state : {ready, busy};ASSIGN init(state) := ready; next(state) := case state = ready & request : busy; 1 : {ready, busy}; esac;SPEC AG(request -> AF state = busy)
•上から条件を評価•1 は恒真
背景説明モデル検査
設計
性質 ( 仕様 )
状態機械
モデル検査ツール
設計誤り
状態爆発問題 (p.106)
「モデル規模の増大にともない,探索すべき状態数が急激に増大する」という問題
状態数 10 の構成要素 10 個からなるシステム状態の総数 1010 = 100 億
X
状態削減手法
Partial Order Reduction ( 例. SPIN)遷移の独立性を考慮して検証する性質に
無関係な状態を判断することで計算量を削減する手法
記号モデル検査 ( 例. SMV, NuSMV)論理関数で状態集合や遷移関係を表し,
それらの操作によって検証を行う手法
構成
集合演算に基づく記号モデル検査 (4.2.2) 論理関数に基づく表現 (4.2.3, 4.2.4) 2 分決定グラフに基づく記号モデル検査
の実現 (4.2.5, 4.2.6)
集合演算 論理関数
x1x2 x3
2 分決定グラフ
{001, 011, 100, 101, 111}
4.2.2 集合演算に基づく記号モデル検査a. EF f ≡ E (true U f)b. EG f ≡ AF(f)c. AF f ≡ A (true U f)d. AG f ≡ EF(f) EX, EU, AX, AU のみ考える
4.2.2 集合演算に基づく記号モデル検査 S: 全状態の集合 Sf :CTL 式 f が成り立つ状態の集合
求めたいもの検証したい性質fについて Sf
Sf が求まれば,初期状態集合 ISf かどうかを調べればよい
求め方部分式に対して再帰的に求める
EF(q EXq)
q EXq
q EXq
q
q
4.2.2 集合演算に基づく記号モデル検査2. Sf = S – Sf
3. Sf g = Sf Sg, Sf g = Sf Sg
s1 s2 s3 s4
q p,q p q
pp
pq pq
4.2.2 集合演算に基づく記号モデル検査4. SEXf
5. SAXf
f
f
SEXfSf
f
fSAXf
Sf
4.2.2 集合演算に基づく記号モデル検査6. SE(fUg)
g
f g
f
f
f
f
f
f
f
T0
T0 = Sg
Ti+1= Ti (Sf SEXTi )
T1T2
いずれ Ti+1 = Ti となる
4.2.2 集合演算に基づく記号モデル検査7. SA(fUg)
g
f g
ff
ff
T0
T0 = Sg
Ti+1= Ti (Sf SAXTi )
T1
T2
いずれ Ti+1 = Ti となる
例 4.3
s1 s2 s3 s4
q p,q p q
EF(q EXq)
q EXq
q EXq
q
qq EXq
T0
T1, T2
S EF(q EXq) = {s1, s2}
EF(q EXq)
EF(q EXq)
4.2.3 論理関数に基づく表現
状態集合,遷移関係を論理関数で表す2 分決定グラフを用いて効率良く表現可能
状態の 2 進表現
s1 s2 s3 s4
q p,q p q
00 01 10 11x1x2
集合の表現
s1 s2 s3 s4
q p,q p q
00 01 10 11
例. Sq = {s1, s2, s4}fq (x1,x2)= x1x2 x1x2 x1x2
x1x2
Sq の特性関数 (characteristic function)
遷移関係の表現
s1 s2 s3 s4
q p,q p q
00 01 10 11
N (x1,x2,x1’,x2’)= x1x2 x1x2’ …
x1x2
= {(00,01), (01,10), (01,11), (10,10), (10,11), (11,11)}R = {(s1, s2), (s2, s3), (s2, s4), (s3, s3), (s3, s4), (s4, s4)}
4.2.4 論理関数に基づく記号モデル検査2. fp =fp Sp = S – Sp
3. fp q =fp fq Sp q = Sp Sq
fpq =fp fq Sp q = Sp Sq
s1 s2 s3 s4
q p,q p q
00 01 10 11例. Sq = {s1, s2, s4}, fq (x1,x2)= x1x2 x1x2 x1x2
fq (x1,x2) = fq (x1,x2) = x1x2
x1x2
4.2.4 論理関数に基づく記号モデル検査4. fEXq(x1,x2)=
Exist(N(x1,x2,x1’,x2’)fq(x1’,x2’), {x1’,x2’})
x1,x2,x1’,x2’0 0 0 00 0 0 10 0 1 00 0 1 10 1 0 00 1 0 10 1 1 00 1 1 1
01000011
11011101
01000001
N fq Nfq
1
1
s1 s2 s3 s4q p,q p q
EXq EXqEXq EXq
… …… … …
4.2.4 論理関数に基づく記号モデル検査4. fEXp(x1,x2)=
Exist(N(x1,x2,x1’,x2’)fp(x1’,x2’), {x1’,x2’})
s1 s2 s3 s4 s2 s3
s1 s2 s3 s4q p,q p q
N fp
s1 s2 s3 s4Nfp
s1 s2 s3Exist 辺の始点となってい
る頂点のみを取り出す
4.2.5 2 分決定グラフ (BDD)
変数の順序がどのパスでも等しい BDD を考える(Ordered BDD, OBDD)
縮約ルール
ルール 1: ノードの除去 ルール 2 :部分グラフの共有
縮約された( Reduced ) BDDROBDD