4 形式的設計検証技術
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 PresentationTRANSCRIPT
![Page 1: 4 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/1.jpg)
4 形式的設計検証技術
検証 verification求められる機能や性質を,設計が満たしてい
るかどうかを調べること 求められる機能や性質 = 仕様 Specification
形式的検証 (4.1.2)設計や仕様を形式的に (≒ 数学的に ) 記述し,
形式的に検証を行うすべての可能な動作を考慮
比較.シミュレーション (4.1.1)
![Page 2: 4 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/2.jpg)
4.1.2 形式的検証
モデル検査 Model Checking 状態探索による検証仕様は時相論理 (temporal logic) で記述
4.3 CTLモデル検査 4.4 LTLモデル検査
定理証明 Theorem Proving (4.4)
CTL LTL
![Page 3: 4 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/3.jpg)
例.図 4.2
FF1ia oa
0 0 1 0 0 1 1 1
![Page 4: 4 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/4.jpg)
例.図 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 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/5.jpg)
モデル検査,モデル検査ツール
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 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/6.jpg)
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 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/7.jpg)
SMV の特徴 CTL (4.2.1)
記号モデル検査 (4.2.2~4.2.6) 論理関数で記号的に状態探索を実行
グラフ構造を明示的に取り扱わない 2 分決定グラフ (BDD) (4.2.5)
論理関数処理に適したデータ構造
![Page 8: 4 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/8.jpg)
状態グラフ ( クリプキ構造 )
状態集合 : 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 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/9.jpg)
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 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/10.jpg)
計算木とパス
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 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/11.jpg)
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 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/12.jpg)
セマンティクス EX, AX EXf
f がある次状態で成り立つ AXf
f がすべての次状態で成り立つ
f
計算木
f
計算木
f
![Page 13: 4 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/13.jpg)
例
s1 s2 s3 s4
q p,q p q
EXp EXpEXpAXp
EXq, AXq は?
![Page 14: 4 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/14.jpg)
セマンティクス EF, AF EFf
f があるパスでいずれ成り立つ AFf
f がすべてのパスでいずれ成り立つ
f
f
f
f
![Page 15: 4 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/15.jpg)
例
s1 s2 s3 s4
q p,q p q
EFpAFp
EFpAFp
EFpAFp
EFq, AFq は?
![Page 16: 4 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/16.jpg)
セマンティクス EG, AG EGf
f があるパスで常に成り立つ AGf
f がすべてのパスで常に成り立つ
f
f
ff
![Page 17: 4 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/17.jpg)
例
s1 s2 s3 s4
q p,q p q
EGp EGp
EGq, AGq は?
![Page 18: 4 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/18.jpg)
セマンティクス EU, AU E(f Ug)
あるパスについて,どこかで g が成り立ち,それまで f が成り立ち続けている
A(f Ug) すべてのパスについて,...
g
ff f
f
g f
g
g
![Page 19: 4 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/19.jpg)
例
s1 s2 s3 s4
q p,q p q
E(pUq) E(pUq)E(pUq)E(pUq)A(pUq) A(pUq)
![Page 20: 4 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/20.jpg)
例 (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 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/21.jpg)
簡易アービタ 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 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/22.jpg)
![Page 23: 4 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/23.jpg)
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 形式的設計検証技術](https://reader034.vdocuments.mx/reader034/viewer/2022042616/5681682d550346895dddc98f/html5/thumbnails/24.jpg)
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 つが非決定的
に選ばれて実行
どのプロセスも無限に多くの回数選ばれる