モデル検査(3) 手続き型言語に基づくモデリング

Slides:



Advertisements
Similar presentations
山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
Advertisements

Division of Process Control & Process Systems Engineering Department of Chemical Engineering, Kyoto University
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
5.制御構造と配列 場合分け( If Then Else , Select Case ) 繰返し( Do While ) 繰返しその2( For Next )
モデル検査の応用 徳田研究室 西村太一.
モデル検査のためのコンカレントシステムの仕様記述
ループで実行する文が一つならこれでもOK
プログラミング言語としてのR 情報知能学科 白井 英俊.
計算技術研究会 C言語講座 第3回 Loops (for文 while文).
配列(2) 第10回[平成15年6月26日(木)]:PN03-10.ppt 今日の内容 1 素数を求める(教科書の例):復習
プログラミングパラダイム さまざまな計算のモデルにもとづく、 プログラミングの方法論 手続き型 関数型 オブジェクト指向 代数 幾何.
Verilog HDL 12月21日(月).
プログラミング基礎I(再) 山元進.
コンパイラ 第9回 コード生成 ― スタックマシン ―
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
Model Checking (2) Temporal Logic
4.2.2 4to1セレクタ.
プロトコル検証器SPINの紹介 並列分散プログラミング講義 田浦.
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
トキのカタチ2016 電子工作(Arduino)講習
モデル検査(1) 並行システムとモデル検査 1.並行システム 2.モデル検査 3.モデル検査の実施 4.システムとアルゴリズム
プログラミング入門2 第3回 繰り返し文 芝浦工業大学情報工学科 青木 義満
第7回 条件による繰り返し.
プログラミング言語入門 手続き型言語としてのJava
プログラムの制御構造 選択・繰り返し.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
モデル検査(2) プロセス代数に基づくモデリング
モデル検査 状態遷移系 PLTL(propositional linear-time temporal logic) PLTLのモデル検査
7 ソフトウェア工学 Software Engineering モデル検査 MODEL CHECKING.
関数の定義.
最適化の方法 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第11章.
アルゴリズムとプログラミング (Algorithms and Programming)
Model Checking (2) Temporal Logic
04: 式・条件分岐 (if) C プログラミング入門 基幹7 (水5) Linux にログインし、以下の講義ページ を開いておくこと
第7回 条件による繰り返し.
逐次プログラムの正当性(2) 帰納的アサーション法(フロイド法)
計算機構成 第2回 ALUと組み合わせ回路の記述
3.条件式.
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
高度プログラミング演習 (05).
高度プログラミング演習 (05).
プログラムの制御構造 配列・繰り返し.
PHP 概要 担当 岡村耕二 月曜日 2限 平成22年度 情報科学III (理系コア科目・2年生)
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
復習 一定回数を繰り返す反復処理の考え方 「ループ」と呼ぶ false i < 3 true i をループ変数あるいはカウンタと呼ぶ
11.再帰と繰り返しの回数.
プログラムの基本構造と 構造化チャート(PAD)
モデル検査(5) CTLモデル検査アルゴリズム
モデル検査(1) 並行システムのモデリング 知能ソフトウェア特論 Intelligent Software
計算機工学特論 スライド 電気電子工学専攻 修士1年 弓仲研究室 河西良介
4 形式的設計検証技術 検証 verification 形式的検証 (4.1.2)
プログラミングⅡ 第2回.
C言語,ソースファイルの作成,コンパイル,実行
C言語復習 来週もこの資料を持参してください.
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
C言語講座 制御(選択) 2006年 計算技術研究会.
情報処理Ⅱ 2005年10月28日(金).
プログラミング基礎演習 第4回.
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
プログラミング1 プログラミング演習I 第2回.
プログラミング序論演習.
場合分け(If Then Else,Select Case) 繰返し(Do While) 繰返しその2(For Next)
情報処理Ⅱ 第3回 2004年10月19日(火).
情報処理Ⅱ 2006年10月20日(金).
C言語講座 四則演算  if ,  switch 制御文.
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
ファーストイヤー・セミナーⅡ 第10回 if文による選択処理(2).
Presentation transcript:

モデル検査(3) 手続き型言語に基づくモデリング 表現系工学特論 モデル検査(3) 手続き型言語に基づくモデリング 1.NuSMVによるモデリング 2.SPINによるモデリング 参考文献 4日で学ぶモデル検査 初級編,産業技術総合研究所システム検証センター,NTS(2006)

モデル検査の概要(復習) モデル検査器 検査結果 モデル model checker model OK (状態遷移系) 反例 モデル記述言語 モデル検査の概要(復習)    モデル検査器 model checker 検査結果 モデル model (状態遷移系) OK 反例 モデル記述言語 C言語風のもの プロセス代数 性質 property (安全性,活性) The result is either OK or a counterexample 性質の記述 時相論理

1.NuSMVによるモデリング NuSMVの概要 例題:スイッチシステム

NuSMVの概要(1/3) SMV(Symbolic Model Verifier:カーネギーメロン大学開発)の再実装 モデリング 検証 代入文やcase式からなる簡単な言語によって,各状態に現れる変数の変化を一元的に制御 電子回路のようなシステムの記述に適している 検証 線形時相論理(LTL)と計算木論理(CTL)で性質を記述

NuSMVの概要(2/3) 全体の構造 MODULE モジュール名 VAR 変数宣言部 ASSIGN 遷移記述部 LTLSPEC 検査式記述部

NuSMVの概要(3/3)代入文とcase式 <変数名>:=<式> case式 case <条件> : <式>; <条件> : <式>; ... 1 : <式>; esac; 上から順に<条件>を評価する. 最初に真(=1)となる<条件>に対応する<式>の値を返す.

例題:スイッチシステム(1/10) 概要 1 0 変数a,bは0,1,2いずれかの値をとる. スイッチはonまたはoffの2状態をとる.

スイッチシステム(2/10) 動作仕様 変数a,bは同期して値が変化する. 変数bも0→1→2→0と繰り返して変化する. ただし,a=bのときは次の時点でもその値を保ち変化しない.初期状態は0とする. スイッチは,a=b=2なら次の時点でonとなり,a=b=1なら次の時点でoffとなる.それ以外の場合は次の時点でもその値を保ち変化しない.初期状態はoff とする.

スイッチシステム(3/10) 検査項目 スイッチがoffならば,いずれonになる. スイッチがonならば,いずれoffになる.

スイッチシステム(4/10) 紙の上でのモデル検査 状態=(aの値,bの値,スイッチの状態) スイッチがoffならば,いずれonになる (0,0,off) 成り立つ (1,0,off) スイッチがonならば,いずれoffになる bは a=bのときは 変化しない (2,1,off) 成り立たない (2,2,off) aは b=1のときは 変化しない (0,2,on) (2,2,on) スイッチは a=b=2ならon (1,0,on) (2,1,on)

スイッチシステム(5/10) 変数宣言 ---- SWITCH.smv MODULE main VAR a : { 0, 1, 2}; b : { 0, 1, 2}; sw : { on, off };

スイッチシステム(6/10) 遷移記述 ASSIGN init(a) := 0; next(a) := case b = 1: a; 1 : (a+1) mod 3; esac;

スイッチシステム(7/10) 遷移記述(続) init(b) := 0; next(b) := case a = b: b; 1 : (b+1) mod 3; esac; init(sw) := off; next(sw) := case a = 2 && b = 2: on; a = 1 && b = 1: off; 1 : sw; esac;

スイッチシステム(8/10) 線形時相論理 線形時相論理 LTL 時相論理式 読み方 解釈 Gp Globally p Always p (Linear Temporal Logic) 詳しくは次回 線形時相論理 LTL 状態遷移系における任意の1本の計算経路を考える ... 時相論理式 読み方 解釈 Gp Globally p Always p pがいつでも成り立つ Fp Finally p Future p Eventually p pがいつか成り立つ

スイッチシステム(9/10) 検査式記述 スイッチがoffならば,いずれonになる G(sw = off → F(sw = on)) 成り立つ 成り立たない off off on on off LTLSPEC G(sw = off -> F(sw = on)) LTLSPEC G(sw = on -> F(sw = off))

スイッチシステム(10/10) モデル検査 $ NuSMV SWITCH.smv -- specification G(sw = off -> F sw = on) is true -- specification G(sw = on -> F sw = off) is false -- as demonstrated by the following execution sequence Trace Type: Counterexample -> State 1.1 <- a = 0, b = 0, sw = off -> State 1.2 <- a = 1 -> State 1.3 <- a = 2, b = 1 -> State 1.4 <- b = 2 -> State 1.5 <- a = 0, sw = on -- Loop starts here -> State 1.6 <- a = 1, b = 0 -> State 1.7 <- a = 2, b = 1 -> State 1.8 <- b = 2 -> State 1.9 <- a = 0 -> State 1.10 <- a = 1, b = 0 変化した変数 だけを表示 ループの入り口 ループの入り口 の状態に戻っている

SPINの概要 Promelaの基本 例題:スイッチシステムの記述

SPINの概要 SPIN (Simple Promela Interpreter):ベル研究所が開発 モデリング 検証 C言語風のPromela (Process Meta-Language)で各プロセスを記述 分散システムの検証に適している 検証 線形時相論理LTLで性質を記述 その他の機能も豊富

Promelaの基本(1/4) 全体の構造 mtype = .... int ... inline ... proctype ... メッセージ型の宣言 変数宣言 マクロの定義 プロセス型の定義

Promelaの基本(2/4) atomic文 } インタリーブされずに常に連続して実行してほしい文(atomic action)は,atomicで囲む. モデルの状態数削減に役立つ.

Promelaの基本(3/4) 選択文 if ::<ガード> -> <処理> ........ ::<ガード> -> <処理> fi すべての<ガード>の実行可能性(trueなら実行可能)を評価する. 実行可能な<ガード>を1つ非決定的に選び, それに続く<処理>を実行する. 実行可能な<ガード>がないときは, いずれかの<ガード>が実行可能になるまでプロセスの実行が中断(block)し,その後,実行可能になってから実行を再開する.

Promelaの基本(4/4) 反復文 do ::<ガード> -> <処理> ........ ::<ガード> -> <処理> od if ... fi と同様の動作をする. <ガード>に続く<処理>を実行した後,doに戻って同様の動作を繰り返す. ループから出るときには break を使う.

例題:スイッチシステム(1/6) 概要 再掲 1 0 変数a,bは0,1,2いずれかの値をとる. スイッチはonまたはoffの2状態をとる.

スイッチシステム(2/6) 状態遷移モデル 変数 a,b,swに初期値を代入する. 変数 a の次の値Naを決める. b==1ならば,Na=a b!=1ならば, Na=(a+1) % 3 変数 b の次の値Nbを決める. a==bならば,Nb=b a!=bならば, Nb=(b+1) % 3 変数 sw の次の値Nswを決める. a==b==2ならば,Nsw=on a==b==1ならば,Nsw=off それ以外のとき, Nsw=sw % は剰余(余り)を求める演算

スイッチシステム(3/6) メッセージ型と変数の宣言 スイッチシステム(3/6) メッセージ型と変数の宣言 この例題では,メッセージをユーザ定義シンボルとして利用 /* switch.pml */ mtype = {on, off}; int a, b, Na, Nb; mtype sw, Nsw;

他のどのガードも実行可能でないときに,else が実行可能 スイッチシステム(4/6) プロセスの定義 active proctype switch() { a = 0; b = 0; sw = off; do :: true -> if ::(b==1) -> Na = a :: else -> Na = (a+1)%3 fi; 他のどのガードも実行可能でないときに,else が実行可能

スイッチシステム(5/6) プロセスの定義 if ::(a==b) -> Nb = b :: else -> Nb = (b+1)%3 fi; if ::(a==2 && b==2) -> Nsw = on ::(a==1 && b==1) -> Nsw = off :: else -> Nsw = sw fi; atomic{a = Na; b = Nb; sw = Nsw } od }

スイッチシステム(6/6) モデル検査 SPINでは次のように入力する: Gの代わりに □ (タイピングは[]) Fの代わりに ◇ (タイピングは<>) スイッチがoffならば,いずれonになる G(sw = off → F(sw = on)) #define p sw==off #define q sw==on [](p -> <>q)

演習問題  図のような電気回路がある.スイッチにはonとoffの状態がある.スイッチにはそれぞれにタイマが付いている.(スイッチnにはタイマnが付いている.)  各タイマは各時点で1だけカウントアップし,最大値になったら次の時点で1に戻る.タイマの最大値は,タイマ1が5,タイマ2が4,タイマ3が6,タイマ4が3である.  タイマの初期値は,タイマ1が2,タイマ2が3,タイマ3が1,タイマ4が2である.  各スイッチは,対応するタイマが最大値になると,次の時点でonとなる.それ以外のときはoffとなる.  このモデルをNuSMVまたはPromelaで記述せよ.また,「豆電球が消灯していれば,いずれ豆電球が点灯する」という性質をLTLで記述せよ.命題の論理積と論理和には,C言語等と同様に,&&と||を使用できるので,それを利用すること. 1 2 3 4