近年、科学技術の発達によりハードウェア・ソフトウェアは複雑かつ大規模な
ものとなっている。そのため設計段階において誤りが生じる可能性が高くなっ
てきている。その結果、設計されたシステムに誤りが無い事を保証するための
論理設計や検証手法の確立が重要な課題となっており、数学的に設計の正しさ
を保証することができる検証手法が重要視されてきている。
時相論理はその検証手法でも有効な手段の一つである。しかし検証における計
算量はP-Spaceであることも知られている。しかし、その詳細は対象となる問題や時相
論理の種類、検証法によって異なる。本研究ではLTTL(Linear Time
Temporal Logic)、ITL(Interval Temporal Logic)の2つの論
理に対して、
Semantic Tableaux、Resolutionという2つの決定手続きを実装し、
充足性のチェックにかかる計算時間を実測、比較しその違いについて考
察する。
本研究で用いるTemporal operatorは5種類ありLTTLでは□(allways),
◇(sometime) ITL では&(chop)、|(bar)を用いる。
またそれぞれの論理で用いるoperatorの○(Next)がある。
LTTLでは時間を直線的で、1クロックづつに分ける離散的な時間を考える。この論理は 終了時間が存在しない無限の時間で考える論理である。
2.1. Semantic Tableaux
定義1 sを状態として、vs(A)は命題論理式Aに対応する状態sでの 真理値を表すとする。LTTLでは、状態は時刻に対応する。時刻i の状態をsiとする。 □ A: 最初の状態 s0から引き続く、任意の状態 si において vs0(A) = T かつ vSi(A) = T が成り立つときである。
表1 LTTLの展開規則
αルールにおける展開で導出された式はAND、βルールはORで結合して
いるものとする。古典論理に関する展開については省略する。
このルールにより、論理式をツリー状に展開することで充足性のチェックを行う。
Semantic Tableauxでは展開したツリーの全ての葉に以下のマークを示せば終了であ
る。
葉は次のように分けられる。
また、この論理では考える時間が無限なので、無限にイベントが延期される 場合を検出するeventualityのチェックを行わなければならない。eventuality のチェックとは、任意のループで、起こるべき事象が今までに発生しているかど うかを調べる事である。 これは展開を行ってできた葉の親をたどっていき、起こるべき事象が過 去に発生していたかどうかを調べることで十分である[1]。
2.2. Resolution
定義2
Resolutionの展開規則は、次のようになる。
全ての論理式は Pi ∧ □Q という形のCNFに変換することがで
きる。このCNFを使ってResolutionを考える(PとQ は節)[4]。
CNFに変換する過程でP,Qがリテラルでない場合の□(P ∨ Q)
という形のときは (□ P ∨ □ Q) ⇒ □ (P ∨ Q)
と右向きにしか論理が成り立たないので、P ∨ Qを新しい変数Rに置き換
える。よって式は
命題変数と、その否定 p, ¬p をリテラルという。
next operator のついた式やリテラルを項という。
always operatorとnext operatorとリテラルだけでできたものを元素項といい、
さらにsometime operatorがついたものを条件項という。
元素項の集合でできたものを節といい、項の集合でできたもの
を類似節という。
もとの論理式を節で表したものをCNFという。
節が□、◇の場合は、節を現在時刻と次の時刻に展開する。
Resolutionでの終了条件は、CNF Si
をresolutionして得られるSi+1がSi = Si+1とな
るか、S ∋ [](nil)となった場合である。もし後者の場合ならこの論理
式は充足可能(unsatisfiable)でない。
ITLでは真理値は時間区間に対応して決まる。
定義3
&を任意な2つの時区間の結合とし、時区間 t でのAの評価を vt (A)
とする。論理式での時区間の結合(chop)も同じ記号&で表す。
vt (P & Q) = vt' (P) ∧ vt''となり、
t = t' & t''
また、chopの双対であるbar |を次のように定義する。
P | Q = ¬ (¬ P & ¬ Q)
さらに○についてはAより1時区間短い式で考える。
ITLではtableau methodの展開を時間が0であるemptyと0
以外の時間であるmoreに分けて考える[2][3]。
ITLでは終了時間が存在するため、eventualityに関しては、展開終了時刻にその
事象が起こっているなら、その論理式でのeventualityは満たされていると考える
ことができるのでチェックを行う必要がない。
次に□p、 ◇pのITLへの変換を示す。
◇ p = true & p
□ p = false | p
この変換を用いてITLの展開を行う。
表2 ITLの展開規則
ITLでのresolutionを考える。これもCNFへの変換を考える。
まず、ここでは □、◇をchop、barへ変換する。
chop P & Qの場合を考える。この式をempty、moreに分けて考える
とemptyの場合、時刻が0なのでP ∧ Q となり、moreの場合Pが発生
していると考えるので、more(P) & Q = more(P & Q)となり、Qが起こる
のが未来に延長されていると考えることができる。
次にbar P | Qの場合はempty(P)のとき、事象PまたはQが発生していれば
いいのでP ∨ Qとなり、more(P)のときは事象Pが発生しているか、Qが
発生しているかを考えればよいのでmore(P) | Q = more(P | Q )
と変換することができる。
よって式は次のように変換してresolutoinを行う。
これらの論理を実装し、充足性のチェックにかかる時間を計りその結果
をグラフに示した。図1、図2は単純なallways operator、
Sometime operatorのネストにかかった時間をそれぞれに示す。
またいろいろな論理式を実際に展開し、それにかかった平均時間を表3
に示す。かかった時間にある **** は計測したCPUのメモリ
不足のため計測できなかったことを示している。
LTTLのresolutionに関しては、eventualityのチェックが完全でないため、
sometime operatorの入った論理式は展開できないものが数多くあった。
図1 Allways operator の個数
図2 Sometime operator の個数
図1、図2からわかることは、LTTLとITLではallways、sometime operator のネストに関しては対称的な結果となった。それに対し、resolutionでの 展開はtemporal operatorのネストはCNFに変換する時にネストの省略を 行っている。そのためsemantic tableauxよりは高速に展開が行えたと考えられる。
表3 いろいろな論理式の展開にかかった時間[s]
しかし、いろいろな論理式の展開を行った表3で分かるように
operatorの組み合わせが増加すると、resolutionでは展開を行うことが
できなくなった。それに対し、LTTL、ITLでは時間は増加しているが展開
はほとんど可能であった。
LTTL、ITLは変数やoperatorの数が増加すればかかる時間も指数オーダーでほ
とんど増加している。しかし、一部の式では高速に行えるものもあった。
Resolutionについては現在、CNFは線形リストで表している。そのためresolution
できないものもリストに入っているのでresolutionの対象を探すのに、時間が
かかっている。また、次の時刻に対して展開を行うたびに、リストが
大きくなる可能性があり複雑な式ではメモリ不足の為に展開を行うことが
できなくなったと考えられる。
その解決策としてリストをハッシュ化することで、clashed literalを効率的
に探索し、resolutionを行う回数を減らす事ができればより高速に実行でき
ると考えられる。
本研究では、各種の時相論理の自動検証を行った。まだどの論理での
充足性のチェックにtemporal operatorが増加すると、時間がかかっ
てしまう。そのなかでresolutionはまだ効率が悪く展開を行えない
式がたくさんある。しかし、与える式によってはsemantic tableauxよりも高速
に行えるものもあった。
これからの課題として、まず検証系の実装自体の効率が悪いので高速に行え
るようにする。さらにハッシュ化、並列化、BDD化など考慮し高速化を図る。
Sinji Kono, ``A Combination of Clasual and Non Clausal Temporal Logic Program,'' July 12 1993.
Sinji Kono, ``Automatic Verification on Interval Temporal Logic,'' Apr 24 1994.
G.Venkatesh SSE Group ``A Decision Method for Temporal Logic Base on Resolution''