Љî‚Q

論文紹介:
Time Limited Model Checking
2006/10/18
上田研究室 M1
西村 光弘
1
Introduction
• 筆者の目標:以下の2面性をサポートする論理型言
語とmodel checking techniquesを見つけること
– 詳述性、検証性、正当性
– Reactiveかつ実時間のシステムをデザイン・実装
• ツールとしてのHybrid cc
– ハイブリッドオートマトンをhccプログラムに変換するメカニ
ズムが存在する
– オートマトンとして見ると、直感的に容易であるようなシス
テムをモデル化するにはとても向いている
2
Model Checking
• Reactiveなシステムの動きを検証可能
• アルゴリズムは到達可能性のある状態すべてを列挙し、
動きのすべてを分析する
• 利点
– 完全自動的
– 数学的な専門性が必要とならない
– 反例が返ってくる
Hcc + Model Checking techniques
↓
Hccで記述したシステムにModel Checkingを適用可
3
能にする環境の記述
• Model Checkingの適用するのに必要なこと
– Model Checking toolにほぼ受け入れられる形式にシ
ステムの仕様を変える
– 時間の概念と変数の初期値を使って、Model Checker
で操作されるような構造にグラフ構造を変換する
– デザインが適切な論理形式を満たすというプロパティ
からなっていること
↓ 注目していくところ
モデルを表現するための形式化
有限性を保証するための制限
4
Hybrid Concurrent Constraint
programming
Syntax
5
定義をみて伺えること
• 否定情報と決定した行動の実行が同時に
起こるから、強いプリエンプションをモデル
化できる
• プログラムのストアは有限の時間隔の間で、
無限の時間、変化できない→安定条件
6
• prevはinterval phaseが始まった点(point
phase)での制約の値を返す
• dot(X)はXの微分係数
7
Modelling
システムのプロパティを検証する際に初めにするこ
との一つは、システムのための正式なモデルを作
ること
– このモデルでは検証するつもりのプロパティを捉えるこ
とが必要
↓
システムの状態を捉える=ある瞬間の変数値を含
むシステムの記述を捉える
↓
Hccを形式化することから初めて、状態遷移グラフ
を作り、最終的に時間の概念を含むこと
8
Basics
• ハイブリッドシステムの振る舞いを捉えるこ
とのできるグラフ構造を定義する(Kripke
Structure)
– Var:変数の全体集合
– V:V⊆Verで変数の集合
• システムのプロパティを記述したプログラムの節を
表す集合
• 各瞬間のプログラムの状態を記述した集合
– Var内の変数は型(boolean, integer,etc)をもつ
9
状態と遷移の集合を一階述語論理式で記述
• 遷移を(R(V,V’,T,A))と表す
– Tは、遷移がp→i, i→p, normal transitionのどれかを表
現する
– Aは、今の遷移で、どのagentが実行されているかを教
えてくれる
• グラフ構造は制約の集合とラベルの集合
– 制約は変数の値を定義する。もし実数変数なら時間
の経過とともに値の変化を定義する
– ラベルはシステムの実行点を表し、その時のシステム
のストアに依存してactiveかdisabledになる
10
定義1.1
• Hccのsyntaxで制約の集合をC
• 可能性のあるラベル全ての集合をL
↓
• 状態の集合をS⊆2C∪Lと定義する
11
定義1.2 Hybrid cc Structure
• APをatomic propositionの集合として、
Hybrid cc Structure M =(S,S0,T,A,R,L)
–
–
–
–
–
Sは状態の有限集合
S0はS0⊆S、Sの初期状態
T={n,p,i} 遷移の型の集合(pがp→Iのほう)
Aは各種のagentを表す命題の集合
RとLは次のページ
12
定義1.2 Hybrid cc Structure
– R⊆S×S×T×Aは遷移関係である
• 例:状態s,s’⊆S, agentのAがあったとすると、
R(s,s’,n,A) or R(s,s’,p,A) or R(s,s’,i,A)
– LはS→2AP
• 原子命題がその状態において真であるような状態
にラベル付けされた機能をLとする
• 状態の無限列をπ=s0s1s2・・・として、状態s
からのMのpathは
13
s0=s and R(si, si+1, X, Y) (∀i≧0)
Labelling
• Hccソースにラベル付けを行う
• Pはstatement
• Plは以下の表に従って変換できる
↓
14
Graph construction
• Hybrid cc Structure M =(S,S0,T,A,R,L)のグラフの
書き方
– nodeは状態、arcs(n,p,iの3種類)は遷移を表す
– 初期nodeでは、最初に実効される命令に相当するラ
ベルの集合を、ラベル付けした機能に割り当てる
– 各状態で、次ステップで実行されうる命令のラベルに
よってプログラムの実行点を表す
– ストアの中でactiveになっているラベルの集合を得る
機能revisionをもつ
15
• 各ラベルは異なる並行プロセスに相当し、activeか
disabledになる
– Active:このラベルに関連する操作が実行されるための状態が
満たされている時
– Disabled:storeが必要条件を満たしていないため、このラベルに
よって表される操作が、その時点では実行できない
• Hcc計算はpointとinterval phaseの相互の順序である
• 各point phaseではDefault ccが実行され、それに対応して
特定の時点でのシステムのstoreを計算する
– 瞬間の計算では、プリエンプション操作に含まれない全ての
agentが実行されなければならない
– その後で、全てのプリエンプションagentが実行される(静止点に
到達するまでずっと)
– 最後にstoreにあるtemporal agentが実行される
16
• point phaseの終わりの一時的な操作の実行はPoint phase
からinterval phaseへの道筋に相当する
• 上記のphaseでは今のDefault ccの実行で更新される。同時
にask agentのガード条件が変わらない間の最小の時間間
隔も計算されている
• 一度、全てのagentを分析したら、時間間隔を得る。それか
ら、離散的変数値(他のプロセスによって修正されるかもし
れないため、どんな瞬間でも変わりうる)が安定したpathに
従って、次のpoint phaseへいく。
• 新nodeでは、時間を更新し、その瞬間の変数値を前の
interval phaseでの変数の限界値にセットする
• プログラムのglobalな処理時間で制約を課すためにuserが
特定した時間間隔を使う
– この制約がグラフ構造を有限にする
17
次の2つの場合を区別する
1つ目の場合
• 今の瞬間で、もしpoint phase(前の瞬間ですでに出現して
いて、もう一つのnode nによってグラフに表された)の終
わりとなる静止点があるのなら、
↓
今のnodeと、nがつなげられているのと同じnodeを結ばな
いといけない
• この場合、とても強い結果を得る
• userに特定された時間制限に到達したため、グラフの構
造をカットしなかったから、グラフは完結する
↓
つまり、システムはどんな動きも表す
18
もう一つの場合
• もし、今の静止点がグラフにまだ出現していなかったのなら、
– 構造を続けなければならない
– 今のnodeと、p-arcによってつなげられる新しいnodeを作らないといけない
– 次のinterval phaseの初期状態と比較して、storeと実行点を含む新しい
nodeを作らなければならない
• Userによって定められた時間制限に到達した場合、構造は終わり、か
つ、得られるモデルは現行の検証に対してだけ有効である
• そのモデルは異なる検証に対して再使用できない
• 仕様と実際のagentがあるとして、仕様内で後に続くagentがどれかを
決定するのは容易である
• 上記の目的で機能followを使う
• 機能revisionはどのラベルがactiveでdisabledであるかを決定するため
に定義される
19
20
Operator
• Tell:ある情報をstoreに加える操作
– グラフでは新しいnodeを作り、前の時点でのstoreに新
しい制約を加える
• Positive Ask:ガード条件がstore内で満たされて
いるかどうかを識別→満たされているならA実行
– グラフでは新しいnodeを作り、そのnodeには前の時点
の変数における制約を持ち続け、positive askの条件
を加える
– Storeに制約が加えられ、矛盾が生じるとプログラムの
実行をやめる
– 自分への矢印(ループ)はstoreがpositive askの条件を
取り入れない時をモデル化するときに使う
– bodyのラベルが加えられる
21
Oprator2
• Negative ask: (if a else A)でガードのaが今
のstoreで満たされないこと識別する→満た
されていないならA実行
– 1:ガードのaがstoreから得られる時
• 新しいnodeを作り、そのnodeのラベルに条件aを加
え、実行されるagentの集合からnegative ask操作を
削除する
– 2:storeとdefault情報がagentのbody実行を許
す場合
• 別の1つのnodeを作り、negative askのbodyで表さ
れるラベルを加える
22
Operator3
• Hiding:変数の∃を表す
– グラフではstoreが変化しないが、ラベルは更新される
新しいnodeを作る
– 変数のリネーム情報は補助構造から導入される
• Parallel:言語の並行な振る舞いを表す
– 実行の異なる枝をつくる
– 一つのノードに対してActiveなラベルの数と同じ直系
の子ができる
• Hence:bodyのagentが今から後の各瞬間で実行
される
– ラベルは静止点に達するまでdesabledになる
– 今のnodeから新しいnodeをつくる(p-arc)
– Storeとlabel functionはhccによって計算される
23
定理1.3
グラフの正当性を証明する
• Hccの仕様Sから組み立てたHybrid cc Structure
をTとすると
δ(T)⊆【S】
δ: (rootから始めて、一つのpathでの各hccのnode
のプログラムstoreの繋がりによって与えられる)T
のtraceを表す
【S】:hccの仕様Sのoperational semanticを表す
24
Transformation
• Hybrid cc Strutureのinterval phaseを線形ハイブ
リッドオートマトンのlocation(=節)とする
• 同様にpoint phaseをlocationをつなぐarcsとする
• 各locationにおいて、変数の集合と変数の微分
係数を、(interval phaseに対応して得られる)状態
によって定義する
• Invariantはinterval phaseで定義されたask agent
のガード条件の否定
25
• locationでプログラムが満たす最大時間間隔を課す制約
を加える。この限界はinterval phaseで計算される区間に
よって定義される
• 線形ハイブリッドオートマトンの各arcはHybrid cc Structure
のpoint phaseにあたる
• arcは2つのlocationを結ぶ(それぞれのpoint phaseの前と
次のinterval phaseを表す)
• 変数の集合は更新され、新しい値はpoint phaseで計算さ
れたstoreから得られる
• arcに関するラベルはpoint phaseからinterval phaseにいく
arcに関するラベル
• urgentラベルの集合はnull(この概念はhccでは使われな
いため)
• 最後に、synchronizationラベルには制限を課さず、各arc
に異なるラベルを割り当てる
26
27
Conclusions
• Hccのプログラムに対して、システムの振る舞い
をグラフ構造として表現を返す自動変換を定義し
た
• Hccのプログラムの意味論で安定性に基づいて
設計したので、point phaseとinterval phaseの一連
の順序通りに計算することが保証される
• 分析とそれに伴う制限を時間間隔に与えることで、
有限状態のmodel-checkerを使用できることを保
証できる
• 線形ハイブリッドオートマトンで制限をつけないよ
うなアルゴリズムを研究していく
28