CTLモデルの例 計算ツリー論理 ( CTL ) は分岐時間論理であり、その 時間 モデルはツリー状の 構造で、未来は確定していません。未来にはさまざまな経路があり、そのいずれもが実際に実現する経路となる可能性があります。CTL は、ソフトウェアまたはハードウェア成果物の形式検証に使用され、通常は モデルチェッカーと呼ばれるソフトウェアアプリケーションによって、与えられた成果物が 安全性または活性特性 を備えているかどうかを判定します。たとえば、CTL は、ある初期条件 (たとえば、すべてのプログラム変数が正である、または高速道路で車が 2 つの車線をまたいでいない) が満たされた場合、プログラムのすべての実行で、望ましくない状態 (たとえば、数値をゼロで割る、または高速道路で 2 台の車が衝突する) を回避することを指定できます。この例では、初期条件を満たすプログラム状態からのすべての可能な遷移を探索し、そのようなすべての実行が特性を満たすことを保証するモデルチェッカーによって、安全性特性を検証できます。計算ツリー論理は、線形時相論理 (LTL)を含む時相論理 のクラスに属します。 CTLでしか表現できない特性とLTLでしか表現できない特性がある一方で、どちらの論理でも表現できるすべての特性はCTL でも表現できる* 。
歴史 CTLは1981年にエドモンド・M・クラーク とE・アレン・エマーソン によって初めて提案され、彼らはそれを用いていわゆる同期スケルトン 、つまり 並行プログラム の抽象化を合成した。
CTLの導入以来、CTLとLTLの相対的な利点について議論が交わされてきた。CTLはモデル検査において計算効率が高いため、産業界での利用がより一般的になり、最も成功しているモデル検査ツールの多くは仕様言語 としてCTLを使用している。[ 1 ]
CTLの構文 CTLの整形式式 の言語は 、以下の文法 によって生成されます。
ϕ ::= ⊥ ∣ ⊤ ∣ p ∣ ( ¬ ϕ ) ∣ ( ϕ ∧ ϕ ) ∣ ( ϕ ∨ ϕ ) ∣ ( ϕ ⇒ ϕ ) ∣ ( ϕ ⇔ ϕ ) ∣ 斧 ϕ ∣ 元 ϕ ∣ AF ϕ ∣ EF ϕ ∣ AG ϕ ∣ 例えば ϕ ∣ A [ ϕ U ϕ ] ∣ E [ ϕ U ϕ ] {\displaystyle {\begin{aligned}\phi &::=\bot \mid \top \mid p\mid (\neg \phi )\mid (\phi \land \phi )\mid (\phi \lor \phi )\mid (\phi \Rightarrow \phi )\mid (\phi \Leftrightarrow \phi )\\&\mid \quad {\mbox{AX }}\phi \mid {\mbox{EX }}\phi \mid {\mbox{AF }}\phi \mid {\mbox{EF }}\phi \mid {\mbox{AG }}\phi \mid {\mbox{EG }}\phi \mid {\mbox{A }}[\phi {\mbox{ U }}\phi ]\mid {\mbox{E }}[\phi {\mbox{ U }}\phi ]\end{整列}}} どこp {\displaystyle p} 原子式 の集合を範囲とします。すべての接続詞を使用する必要はありません。 たとえば、 { ¬ 、 ∧ 、 斧 、 オーストラリア 、 欧州連合 } {\displaystyle \{\neg ,\land ,{\mbox{AX}},{\mbox{AU}},{\mbox{EU}}\}} は完全な接続詞の集合から成り、他の接続詞はそれらを用いて定義することができる。
A {\displaystyle {\mbox{A}}} 「あらゆる道に沿って」(必然的に)という意味です。 E {\displaystyle {\mbox{E}}} 「少なくとも一つの道に沿って(存在する)」という意味(おそらく) 例えば、以下は適切な形式のCTL式です。
EF ( 例えば p ⇒ AF r ) {\displaystyle {\mbox{EF }}({\mbox{EG }}p\Rightarrow {\mbox{AF }}r)} 以下は、適切な形式のCTL式ではありません。
EF ( r U q ) {\displaystyle {\mbox{EF }}{\big (}r{\mbox{ U }}q{\big )}} この文字列の問題点は、U {\displaystyle \mathrm {U} } とペアになった場合にのみ発生するA {\displaystyle \mathrm {A} } またはE {\displaystyle \mathrm {E} } 。
CTLは、システムの諸状態に関する記述を行うための構成要素として、原子命題を使用します。これらの命題は、 論理演算子 と時間演算子 を用いて結合され、数式となります。
オペレーター
論理演算子 論理演算子 は、一般的な¬、∨ 、∧ 、⇒、⇔です。これらの演算子に加えて、CTL式ではブール定数 true とfalse も使用できます。
時間演算子 時間演算子は以下のとおりです。
パス上の量化子 A Φ – All : Φ は 現在の状態から始まるすべてのパスで成り立つ必要があります。 E Φ – Eが存在する: 現在の状態から出発して Φ が成り立つ経路が少なくとも 1 つ存在する。 パス固有の量指定子 X φ – Ne x t: φ は 次の状態でも成立しなければならない (この演算子はX の代わりにN と 表記されることもある)。 G φ – G グローバル: φ は 後続のパス全体で維持されなければならない。 F φ – F 最終的に、φ は 最終的に (後続の経路のどこかで) 成立しなければならない。 φ U ψ – Until : φ は 、少なくとも ある位置でψ が 成り立つまで成り立たなければならない。これは、将来的にψ が検証されることを意味する。 φ W ψ – 弱 条件: ψ が成り立つまで φ が 成り立つ必要があります。Uと の違いは、 ψ が必ず検証されるという保証がないことです。W演算子 は「unless」と呼ばれることもあります。 CTL* では、時間演算子を自由に組み合わせることができます。CTL では、演算子は常にペアでグループ化する必要があります。つまり、パス演算子の後に状態演算子が続きます。以下の例を参照してください。CTL * は、CTL よりも表現力に優れています。
最小限の演算子セット CTLには最小限の演算子セットが存在します。すべてのCTL式は、これらの演算子のみを使用するように変換できます。これはモデル検査 で役立ちます。最小限の演算子セットの1つは、{true, ∨ , ¬, EG , EU , EX }です。
時間演算子に使用される変換には、次のようなものがあります。
EF φ == E [true U ( φ )] ( F φ == [true U ( φ )] であるため)AX φ == ¬ EX (¬ φ )AG φ == ¬ EF (¬ φ ) == ¬ E [true U (¬ φ )]AF φ == A [真のU φ ] == ε EG (ε φ )A [ φ U ψ ] == з( E [( ψ ) U з( φ ∨ ψ )] ∨ EG ( ψ ) )
CTLのセマンティクス
意味 CTL式は遷移システム 上で解釈される。遷移システムは三つ組である。M = ( S 、 → 、 L ) {\displaystyle {\mathcal {M}}=(S,{\rightarrow },L)} 、 どこS {\displaystyle S} は状態の集合であり、→ ⊆ S × S {\displaystyle {\rightarrow }\subseteq S\times S} は遷移関係であり、直列であると仮定される。つまり、すべての状態には少なくとも 1 つの後継状態があり、L {\displaystyle L} は、命題文字を状態に割り当てるラベル付け関数です。M = ( S 、 → 、 L ) {\displaystyle {\mathcal {M}}=(S,\rightarrow ,L)} このような移行モデルであり、s ∈ S {\displaystyle s\in S} 、 そしてϕ ∈ F {\displaystyle \phi \in F} 、 どこF {\displaystyle F} は、言語 上の整形式式 の集合である。M {\displaystyle {\mathcal {M}}} 。
次に意味的含意 の関係( M 、 s ⊨ ϕ ) {\displaystyle ({\mathcal {M}},s\models \phi )} は再帰的に定義されるϕ {\displaystyle \phi } :
( ( M 、 s ) ⊨ ⊤ ) ∧ ( ( M 、 s ) ⊭ ⊥ ) {\displaystyle {\Big (}({\mathcal {M}},s)\models \top {\Big )}\land {\Big (}({\mathcal {M}},s)\not \models \bot {\Big )}} ( ( M 、 s ) ⊨ p ) ⇔ ( p ∈ L ( s ) ) {\displaystyle {\Big (}({\mathcal {M}},s)\models p{\Big )}\Leftrightarrow {\Big (}p\in L(s){\Big )}} ( ( M 、 s ) ⊨ ¬ ϕ ) ⇔ ( ( M 、 s ) ⊭ ϕ ) {\displaystyle {\Big (}({\mathcal {M}},s)\models \neg \phi {\Big )}\Leftrightarrow {\Big (}({\mathcal {M}},s)\not \models \phi {\Big )}} ( ( M 、 s ) ⊨ ϕ 1 ∧ ϕ 2 ) ⇔ ( ( ( M 、 s ) ⊨ ϕ 1 ) ∧ ( ( M 、 s ) ⊨ ϕ 2 ) ) {\displaystyle {\Big (}({\mathcal {M}},s)\models \phi _{1}\land \phi _{2}{\Big )}\Leftrightarrow {\Big (}{\big (}({\mathcal {M}},s)\models \phi _{1}{\big )}\land {\big (}({\mathcal {M}},s)\models \phi _{2}{\big )}{\Big )}} ( ( M 、 s ) ⊨ ϕ 1 ∨ ϕ 2 ) ⇔ ( ( ( M 、 s ) ⊨ ϕ 1 ) ∨ ( ( M 、 s ) ⊨ ϕ 2 ) ) {\displaystyle {\Big (}({\mathcal {M}},s)\models \phi _{1}\lor \phi _{2}{\Big )}\Leftrightarrow {\Big (}{\big (}({\mathcal {M}},s)\models \phi _{1}{\big )}\lor {\big (}({\mathcal {M}},s)\models \phi _{2}{\big )}{\Big )}} ( ( M 、 s ) ⊨ ϕ 1 ⇒ ϕ 2 ) ⇔ ( ( ( M 、 s ) ⊭ ϕ 1 ) ∨ ( ( M 、 s ) ⊨ ϕ 2 ) ) {\displaystyle {\Big (}({\mathcal {M}},s)\models \phi _{1}\Rightarrow \phi _{2}{\Big )}\Leftrightarrow {\Big (}{\big (}({\mathcal {M}},s)\not \models \phi _{1}{\big )}\lor {\big (}({\mathcal {M}},s)\models \phi _{2}{\big )}{\Big )}} ( ( M 、 s ) ⊨ ϕ 1 ⇔ ϕ 2 ) ⇔ ( ( ( ( M 、 s ) ⊨ ϕ 1 ) ∧ ( ( M 、 s ) ⊨ ϕ 2 ) ) ∨ ( ¬ ( ( M 、 s ) ⊨ ϕ 1 ) ∧ ¬ ( ( M 、 s ) ⊨ ϕ 2 ) ) ) {\displaystyle {\bigg (}({\mathcal {M}},s)\models \phi _{1}\Leftrightarrow \phi _{2}{\bigg )}\Leftrightarrow {\bigg (}{\Big (}{\big (}({\mathcal {M}},s)\models \phi _{1}{\big )}\land {\big (}({\mathcal {M}},s)\models \phi _{2}{\big )}{\Big )}\lor {\Big (}\neg {\big (}({\mathcal {M}},s)\models \phi _{1}{\big )}\land \neg {\big (}({\mathcal {M}},s)\models \phi _{2}{\big )}{\Big )}{\bigg )}} ( ( M 、 s ) ⊨ A X ϕ ) ⇔ ( ∀ ⟨ s → s 1 ⟩ ( ( M 、 s 1 ) ⊨ ϕ ) ) {\displaystyle {\Big (}({\mathcal {M}},s)\models AX\phi {\Big )}\Leftrightarrow {\Big (}\forall \langle s\rightarrow s_{1}\rangle {\big (}({\mathcal {M}},s_{1})\models \phi {\big )}{\Big )}} ( ( M 、 s ) ⊨ E X ϕ ) ⇔ ( ∃ ⟨ s → s 1 ⟩ ( ( M 、 s 1 ) ⊨ ϕ ) ) {\displaystyle {\Big (}({\mathcal {M}},s)\models EX\phi {\Big )}\Leftrightarrow {\Big (}\exists \langle s\rightarrow s_{1}\rangle {\big (}({\mathcal {M}},s_{1})\models \phi {\big )}{\Big )}} ( ( M 、 s ) ⊨ A G ϕ ) ⇔ ( ∀ ⟨ s 1 → s 2 → … ⟩ ( s = s 1 ) ∀ 私 ( ( M 、 s 私 ) ⊨ ϕ ) ) {\displaystyle {\Big (}({\mathcal {M}},s)\models AG\phi {\Big )}\Leftrightarrow {\Big (}\forall \langle s_{1}\rightarrow s_{2}\rightarrow \ldots \rangle (s=s_{1})\forall i{\big (}({\mathcal {M}},s_{i})\models \phi {\big )}{\Big )}} ( ( M 、 s ) ⊨ E G ϕ ) ⇔ ( ∃ ⟨ s 1 → s 2 → … ⟩ ( s = s 1 ) ∀ 私 ( ( M 、 s 私 ) ⊨ ϕ ) ) {\displaystyle {\Big (}({\mathcal {M}},s)\models EG\phi {\Big )}\Leftrightarrow {\Big (}\exists \langle s_{1}\rightarrow s_{2}\rightarrow \ldots \rangle (s=s_{1})\forall i{\big (}({\mathcal {M}},s_{i})\models \phi {\big )}{\Big )}} ( ( M 、 s ) ⊨ A F ϕ ) ⇔ ( ∀ ⟨ s 1 → s 2 → … ⟩ ( s = s 1 ) ∃ 私 ( ( M 、 s 私 ) ⊨ ϕ ) ) {\displaystyle {\Big (}({\mathcal {M}},s)\models AF\phi {\Big )}\Leftrightarrow {\Big (}\forall \langle s_{1}\rightarrow s_{2}\rightarrow \ldots \rangle (s=s_{1})\exists i{\big (}({\mathcal {M}},s_{i})\models \phi {\big )}{\Big )}} ( ( M 、 s ) ⊨ E F ϕ ) ⇔ ( ∃ ⟨ s 1 → s 2 → … ⟩ ( s = s 1 ) ∃ 私 ( ( M 、 s 私 ) ⊨ ϕ ) ) {\displaystyle {\Big (}({\mathcal {M}},s)\models EF\phi {\Big )}\Leftrightarrow {\Big (}\exists \langle s_{1}\rightarrow s_{2}\rightarrow \ldots \rangle (s=s_{1})\exists i{\big (}({\mathcal {M}},s_{i})\models \phi {\big )}{\Big )}} ( ( M 、 s ) ⊨ A [ ϕ 1 U ϕ 2 ] ) ⇔ ( ∀ ⟨ s 1 → s 2 → … ⟩ ( s = s 1 ) ∃ 私 ( ( ( M 、 s 私 ) ⊨ ϕ 2 ) ∧ ( ∀ ( j < 私 ) ( M 、 s j ) ⊨ ϕ 1 ) ) ) {\displaystyle {\bigg (}({\mathcal {M}},s)\models A[\phi _{1}U\phi _{2}]{\bigg )}\Leftrightarrow {\bigg (}\forall \langle s_{1}\rightarrow s_{2}\rightarrow \ldots \rangle (s=s_{1})\exists i{\Big (}{\big (}({\mathcal {M}},s_{i})\models \phi _{2}{\big )}\land {\big (}\forall (j<i)({\mathcal {M}},s_{j})\models \phi _{1}{\big )}{\Big )}{\bigg )}} ( ( M 、 s ) ⊨ E [ ϕ 1 U ϕ 2 ] ) ⇔ ( ∃ ⟨ s 1 → s 2 → … ⟩ ( s = s 1 ) ∃ 私 ( ( ( M 、 s 私 ) ⊨ ϕ 2 ) ∧ ( ∀ ( j < 私 ) ( M 、 s j ) ⊨ ϕ 1 ) ) ) {\displaystyle {\bigg (}({\mathcal {M}},s)\models E[\phi _{1}U\phi _{2}]{\bigg )}\Leftrightarrow {\bigg (}\exists \langle s_{1}\rightarrow s_{2}\rightarrow \ldots \rangle (s=s_{1})\exists i{\Big (}{\big (}({\mathcal {M}},s_{i})\models \phi _{2}{\big )}\land {\big (}\forall (j<i)({\mathcal {M}},s_{j})\models \phi _{1}{\big )}{\Big )}{\bigg )}}
CTLの特性解析 上記のルール10 ~ 15は、モデルにおける計算パスに関するものであり、最終的に「計算ツリー」を特徴づけるものです。これらは、与えられた状態を根とする無限に深い計算ツリーの性質に関する主張です。s {\displaystyle s} 。
例 「P」は「私はチョコレートが好きです」を意味し、「Q」は「外は暖かい」を意味するものとします。
「これから先、何があってもチョコレートが好きになる。」 「いつか、少なくとも一日くらいは、チョコレートが好きになるかもしれない。」 「私が突然チョコレートを好きになる可能性は常にある(AF)。」(注:私の人生は有限であるのに対し、 G は無限であるため、私の人生の残りの期間だけではない)。「将来何が起こるかにもよるが(E)、残りの人生(G)において、少なくとも1日(AF)はチョコレートを好きでいられる日が保証される可能性はある。しかし、もし何かがうまくいかなければ、すべては白紙に戻り、私が今後チョコレートを好きになるかどうかは全く保証されない。」 以下の2つの例は、CTLとCTL*の違いを示しています。これらの例では、until演算子にパス演算子(A またはE )を付加する必要がありません。
「これから外が暖かくなるまでは、毎日チョコレートを食べたい。外が暖かくなったら、チョコレートが好きかどうかはもう分からない。ああ、でも外はいつか必ず暖かくなる。たとえ一日だけでもね。」 「いつかは永遠に暖かい日が来るかもしれないし(AG.Q)、それまでの間は、翌日には必ずチョコレートが好きになるような方法が見つかるかもしれない(EX.P)」
拡張機能 CTLは二次 定量化によって拡張されました∃ p {\displaystyle \exists p} そして∀ p {\displaystyle \forall p} 量化計算木論理 (QCTL)へ。[ 2 ] 意味論は2つあります。
ツリー意味論。計算ツリーのノードにラベルを付けます。QCTL* = QCTL =ツリー上のMSO 。モデル検査と充足可能性 はタワー完全です。 構造意味論。私たちは状態にラベルを付けます。QCTL* = QCTL =グラフ 上のMSO 。モデル検査はPSPACE完全 ですが、充足可能性は決定不能 です。 QBFソルバーを活用するために、構造意味論を用いたQCTLのモデル検査問題をTQBF(真の量化ブール式)に還元することが提案されている。[ 3 ]
参考文献 ↑ Vardi, Moshe Y. (2001). Branching vs. Linear Time: Final Showdown (PDF) . Tools and Algorithms for the Construction and Analysis of Systems. Lecture Notes in Computer Science. Vol. 2031. Springer, Berlin. pp. 1–22 . doi : 10.1007/3-540-45319-9_1 . ISBN 978-3-540-41865-8 。 ↑ デビッド、アメリ。ラルシニー、フランソワ。マーキー、ニコラス (2016)。デシャルネ、ジョゼ。ジャガディーサン、ラダ (編)。 「QCTL の表現力について」 。 第 27 回並行性理論に関する国際会議 (CONCUR 2016) 。ライプニッツ国際情報学会議 (LIPIcs)。 59 .ダグシュトゥール、ドイツ: Schloss Dagstuhl–Leibniz-Zentrum fuer Informatik: 28:1–28:15。 土井 : 10.4230/LIPIcs.CONCUR.2016.28 。 ISBN 978-3-95977-017-0 。↑ Hossain, Akash; Laroussinie, François (2019). Gamper, Johann; Pinchinat, Sophie; Sciavicco, Guido (編). "From Quantified CTL to QBF" . 26th International Symposium on Temporal Representation and Reasoning (TIME 2019) . Leibniz International Proceedings in Informatics (LIPIcs). 147 . Dagstuhl, Germany: Schloss Dagstuhl–Leibniz-Zentrum fuer Informatik: 11:1–11:20. doi : 10.4230/LIPIcs.TIME.2019.11 . ISBN 978-3-95977-127-6 . S2CID 195345645 . EM Clarke; EA Emerson (1981). 「分岐時間時相論理を用いた同期スケルトンの設計と合成」(PDF) . Logic of Programs, Proceedings of Workshop, Lecture Notes in Computer Science . Vol. 131. Springer, Berlin. pp. 52–71 . doi : 10.1007/BFb0025774 . ISBN 3-540-11212-X 。 マイケル・ハース、マーク・ライアン(2004)。『コンピュータ科学における論理学 』 (第2 版)。ケンブリッジ大学出版局。207ページ 。ISBN 978-0-521-54310-1 。 Emerson, EA; Halpern, JY (1985). "分岐時間の時間論理における決定手続きと表現力". Journal of Computer and System Sciences . 30 (1): 1– 24. CiteSeerX 10.1.1.221.6187 . doi : 10.1016/0022-0000(85)90001-7 . Clarke, EM; Emerson, EA & Sistla, AP (1986). "時間論理仕様を用いた有限状態並行システムの自動検証" . ACM Transactions on Programming Languages and Systems . 8 (2): 244–263 . doi : 10.1145/5397.5399 . S2CID 52853200 . エマーソン、EA (1990)。「時間論理と様相論理」。ヤン・ファン・レーウェン 編『理論計算機科学ハンドブック』第B巻、MIT Press、 955-1072 頁。ISBN 978-0-262-22039-2 。