smv プログラム 例 3

21
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) •ププププププププ •1 プププ

Upload: gezana

Post on 05-Feb-2016

97 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

Page 1: SMV プログラム 例 3

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 は恒真

Page 2: SMV プログラム 例 3

背景説明モデル検査

設計

性質 ( 仕様 )

状態機械

モデル検査ツール

設計誤り

Page 3: SMV プログラム 例 3

状態爆発問題 (p.106)

「モデル規模の増大にともない,探索すべき状態数が急激に増大する」という問題

状態数 10 の構成要素 10 個からなるシステム状態の総数  1010 = 100 億

X

Page 4: SMV プログラム 例 3

状態削減手法

Partial Order Reduction ( 例. SPIN)遷移の独立性を考慮して検証する性質に

無関係な状態を判断することで計算量を削減する手法

記号モデル検査 ( 例. SMV, NuSMV)論理関数で状態集合や遷移関係を表し,

それらの操作によって検証を行う手法

Page 5: SMV プログラム 例 3

構成

集合演算に基づく記号モデル検査 (4.2.2) 論理関数に基づく表現 (4.2.3, 4.2.4) 2 分決定グラフに基づく記号モデル検査

の実現 (4.2.5, 4.2.6)

集合演算 論理関数

x1x2 x3

2 分決定グラフ

{001, 011, 100, 101, 111}

Page 6: SMV プログラム 例 3

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 のみ考える

Page 7: SMV プログラム 例 3

4.2.2 集合演算に基づく記号モデル検査 S: 全状態の集合 Sf :CTL 式 f が成り立つ状態の集合

求めたいもの検証したい性質fについて Sf

Sf が求まれば,初期状態集合 ISf かどうかを調べればよい

求め方部分式に対して再帰的に求める

EF(q EXq)

q EXq

q EXq

q

q

Page 8: SMV プログラム 例 3

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

Page 9: SMV プログラム 例 3

4.2.2 集合演算に基づく記号モデル検査4. SEXf

5. SAXf

f

f

SEXfSf

f

fSAXf

Sf

Page 10: SMV プログラム 例 3

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 となる

Page 11: SMV プログラム 例 3

4.2.2 集合演算に基づく記号モデル検査7. SA(fUg)

g

f g

ff

ff

T0

T0 = Sg

Ti+1= Ti (Sf SAXTi )

T1

T2

いずれ Ti+1 = Ti となる

Page 12: SMV プログラム 例 3

例 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)

Page 13: SMV プログラム 例 3

4.2.3 論理関数に基づく表現

状態集合,遷移関係を論理関数で表す2 分決定グラフを用いて効率良く表現可能

状態の 2 進表現

s1 s2 s3 s4

q p,q p q

00 01 10 11x1x2

Page 14: SMV プログラム 例 3

集合の表現

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)

Page 15: SMV プログラム 例 3

遷移関係の表現

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)}

Page 16: SMV プログラム 例 3

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

Page 17: SMV プログラム 例 3

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

… …… … …

Page 18: SMV プログラム 例 3

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 辺の始点となってい

る頂点のみを取り出す

Page 19: SMV プログラム 例 3

4.2.5 2 分決定グラフ  (BDD)

変数の順序がどのパスでも等しい BDD を考える(Ordered BDD, OBDD)

Page 20: SMV プログラム 例 3

縮約ルール

ルール 1: ノードの除去 ルール 2 :部分グラフの共有

Page 21: SMV プログラム 例 3

縮約された( Reduced ) BDDROBDD