4 形式的設計検証技術

24
4 形形形形形形形形形 形形 verification 形形形形形形形形形形形 形形形形形形形形形形形形形形形形形形形 形形形形形形形形形形 形形 Specification 形形形形形 (4.1.2) 形形形形形形形形形形 (形形形形 ) 形形形 形形形形形形形形形 形形形形形形形形形形形形 形形 形形形形形形形形 (4.1.1)

Upload: eavan

Post on 24-Feb-2016

54 views

Category:

Documents


0 download

DESCRIPTION

4 形式的設計検証技術. 検証  verification 求められる機能や性質を,設計が満たしているかどうかを調べること 求められる機能や性質 = 仕様 Specification 形式的検証 (4.1.2) 設計や仕様を形式的に (≒ 数学的に ) 記述し,形式的に検証を行う すべての可能な動作を考慮 比較.シミュレーション (4.1.1). 4.1.2 形式的検証. モデル検査 Model Checking 状態探索による検証 仕様は 時相論理 (temporal logic) で記述 4.3 CTL モデル検査 4.4 LTL モデル検査 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 4  形式的設計検証技術

4 形式的設計検証技術

検証  verification求められる機能や性質を,設計が満たしてい

るかどうかを調べること 求められる機能や性質 = 仕様 Specification

形式的検証 (4.1.2)設計や仕様を形式的に (≒ 数学的に ) 記述し,

形式的に検証を行うすべての可能な動作を考慮

比較.シミュレーション (4.1.1)

Page 2: 4  形式的設計検証技術

4.1.2 形式的検証

モデル検査 Model Checking 状態探索による検証仕様は時相論理 (temporal logic) で記述

4.3 CTLモデル検査 4.4 LTLモデル検査

定理証明 Theorem Proving (4.4)

CTL LTL

Page 3: 4  形式的設計検証技術

例.図 4.2

FF1ia oa

0 0 1 0 0 1 1 1

Page 4: 4  形式的設計検証技術

例.図 4.2

00 00 01 00 10 00 11 0000 01 01 01 10 01 11 01

00 11 01 11 10 11 11 1100 10 01 10 10 10 11 10

FF1

FF2

ia

ib

oa

ob

Page 5: 4  形式的設計検証技術

モデル検査,モデル検査ツール

CTLモデル検査 (4.2)SMV, NuSMV

1998 ACM Paris Kanellakis Theory and Practice Award

LTL モデル検査 (4.3)SPIN, LTSA, NuSMV

2001 ACM Software System Award 2005 ACM Paris Kanellakis Theory and Practice

Award

Page 6: 4  形式的設計検証技術

4.2 CTL モデル検査

SMV での記述例 MODULE mainVAR ia : boolean; ib : boolean; oa : boolean; ob : boolean;ASSIGN init(ia) := 0; init(ib) := 0; init(oa) := 0; init(ob) := 0; next(oa) := ia; next(ob) := !ia & ib; next(ia) := {0, 1}; next(ib) := {0, 1};

SPEC AG !(oa & ob)

FF1

FF2

ia

ib

oa

ob

Page 7: 4  形式的設計検証技術

SMV の特徴 CTL  (4.2.1)

記号モデル検査 (4.2.2~4.2.6) 論理関数で記号的に状態探索を実行

グラフ構造を明示的に取り扱わない 2 分決定グラフ (BDD) (4.2.5)

論理関数処理に適したデータ構造

Page 8: 4  形式的設計検証技術

状態グラフ ( クリプキ構造 )

状態集合 : S S = {s1, s2, s3, s4}

初期状態集合 : I S I = {s1}

遷移関係 : R SS ( 注.必ず次状態が存在するものとする ) R = {(s1, s2), (s2, s3), (s2, s4), (s3, s3), (s3, s4), (s4, s4)}

原子命題の割当 : L: S ↦ 2A

原子命題の集合 A = {p, q}

s1 s2 s3 s4

q p,q p q

Page 9: 4  形式的設計検証技術

4.2.1 CTLシンタックス (f,g は CTL 式 ) 原子命題 atomic proposition

例.変数 ib = 1 f, f g , f g , f g EXf, EFf, EGf, E(f Ug) AXf, AFf, AGf, A(fUg)

E: あるパスでA: すべてのパスでF: いずれG: ずっとU: ~まで

Page 10: 4  形式的設計検証技術

計算木とパス

s1 s2 s3 s4

q p,q p q

s2

s3 s4

s3 s4

s4

s4

s3 s4 s4

計算木

パス

E: あるパスでA: すべてのパスでF: いずれG: ずっとU: ~まで

Page 11: 4  形式的設計検証技術

MODULE mainVAR s : {s1, s2, s3, s4};DEFINE p := s = s2 | s = s3; q := s = s1 | s = s2 | s = s4;ASSIGN init(s) := s1;

next(s) := case s = s1 : s2; s = s2 : {s3, s4}; s = s3 : {s3, s4}; s = s4 : s4; esac;

SMV がすること すべての初期状態において, CTL 式 f が成り立つかどうかを調べる

s I, s ⊨ f

s1 s2 s3 s4q p,q p q

Page 12: 4  形式的設計検証技術

セマンティクス EX, AX EXf

f がある次状態で成り立つ AXf

f がすべての次状態で成り立つ

f

計算木

f

計算木

f

Page 13: 4  形式的設計検証技術

s1 s2 s3 s4

q p,q p q

EXp EXpEXpAXp

EXq, AXq は?

Page 14: 4  形式的設計検証技術

セマンティクス EF, AF EFf

f があるパスでいずれ成り立つ AFf

f がすべてのパスでいずれ成り立つ

f

f

f

f

Page 15: 4  形式的設計検証技術

s1 s2 s3 s4

q p,q p q

EFpAFp

EFpAFp

EFpAFp

EFq, AFq は?

Page 16: 4  形式的設計検証技術

セマンティクス EG, AG EGf

f があるパスで常に成り立つ AGf

f がすべてのパスで常に成り立つ

f

f

ff

Page 17: 4  形式的設計検証技術

s1 s2 s3 s4

q p,q p q

EGp EGp

EGq, AGq は?

Page 18: 4  形式的設計検証技術

セマンティクス EU, AU E(f Ug)

あるパスについて,どこかで g が成り立ち,それまで f が成り立ち続けている

A(f Ug) すべてのパスについて,...

g

ff f

f

g f

g

g

Page 19: 4  形式的設計検証技術

s1 s2 s3 s4

q p,q p q

E(pUq) E(pUq)E(pUq)E(pUq)A(pUq) A(pUq)

Page 20: 4  形式的設計検証技術

例 (p.110)

s1 s2 s3 s4

q p,q p q

EF ( q EX(q)) が成り立つのは?

q

EX(q) EX(q)

q EX(q)

EF(q EX(q))

EF(q EX(q))

Page 21: 4  形式的設計検証技術

簡易アービタ AG(oa ob)

常に, oa と ob が同時に 1 にならない AG(ib AF(ib ob))

どの状態でも, ib が 1 ならば,いずれ必ず, ib が 0 になるか, ob が 1 になる

FF1

FF2

ia

ib

oa

ob

Page 22: 4  形式的設計検証技術
Page 23: 4  形式的設計検証技術

SMV プログラム 例 1 : 3 ビットカウンタ

MODULE mainVAR bit0 : counter_cell(1); bit1 : counter_cell(bit0.carry_out); bit2 : counter_cell(bit1.carry_out);SPEC AG AF bit2.carry_outSPEC !EF bit2.carry_out

MODULE counter_cell(carry_in)VAR value : boolean;ASSIGN init(value) := 0; next(value) := value + carry_in mod 2;DEFINE carry_out := value & carry_in;

Page 24: 4  形式的設計検証技術

MODULE mainVAR gate1: process inverter(gate3.output); gate2: process inverter(gate1.output); gate3: process inverter(gate2.output);SPEC (AG AF gate1.output) & (AG AF !gate1.output)

MODULE inverter(input)VAR output: boolean;ASSIGN init(output) := 0; next(output) := !input;

FAIRNESS running

SMV プログラム例 2 : 非同期システム 1 つが非決定的

に選ばれて実行

どのプロセスも無限に多くの回数選ばれる