LTLとCTLの違いは何ですか?


12

私はすでにCTLの式の例を読んでいますが、LTLの場合はその逆ではありませんが、LTLの式と実際の違いは何なのかを理解するのに苦労しています。


1
インターウェブ上の多くのメモがこの問題に対処しています。「LTLとCTLの違い」をGoogleで検索しましたか?
デイブクラーク

1
簡単な式を書き留め、Kripke構造のセマンティクスを評価してみてください。
ヴィジェイD

回答:


21

LTLとCTLの違いを本当に理解するには、両方の言語のセマンティクスを研究する必要があります。LTL式は、プログラムの実行ごとに解釈されるプロパティを示します。実行の実行(実行)ごとに、行のイベントまたは状態のシーケンスとして表示できます。これが「線形時間」と呼ばれる理由です。実行の充足可能性は、別の実行に切り替える可能性なしでチェックされます。チェック中。一方、CTLセマンティクスは、すべての可能な実行で式をチェックし、分岐に直面したときにすべての可能な実行(A演算子)または1つの実行のみ(E演算子)を試行します。

実際には、これは、各言語のいくつかの式を他の言語で記述できないことを意味します。たとえば、リセットプロパティ(回路設計の重要な到達可能性プロパティ)は、実際に到達していなくても、実行中に状態に到達する可能性が常に存在することを示しています(AG EF reset)。LTLは、リセット状態に実際に到達したことのみを示し、到達することはできません。

ss

これがあなたの質問に答えるかどうかはわかりませんが、コメントを追加したいと思います。

ソフトウェア検証用のプロパティを表現するための最良のロジックについては多くの議論がありますが、本当の議論はどこかにあります。LTLは、CTLがそれらを表現するために新しいセマンティクス(新しい充足可能性関係)を持たなければならない場合に、ソフトウェアシステムモデリング(公平性)の重要なプロパティを表現できます。ただし、CTLアルゴリズムは通常より効率的であり、BDDベースのアルゴリズムを使用できます。だから...最善の解決策はありません。これまでのところ、2つの異なるアプローチのみです。

解説者の一人は、バルディの論文「分岐対線形時間:最終対決」を提案しています。


ヴァルディによってCTL対LTLの説明を参照してください:「線形時間対分岐:決勝対決」
ガイ

たくさんのおかげで、まさに私が探していた洞察のようなものです!
匿名のward

1

1つのオブジェクト(たとえば、LTLの場合のトレース)が与えられた場合、CTLにはすべての時点で1つの未来のみが考慮されます。

特に、nextLTLでは一意のアクションを提供しますが、CTLでは(場合によっては)セット全体を提供します。


6
ただし、通常は、1つだけでなくシステムのすべての実行にLTL式を適用し、1つ/多くの将来の問題のギャップを埋めます。CTLが分岐時間を処理するのに対して、LTLは線形時間を処理すると言う方が正確です。
デイブクラーク

4
LTLで1つの未来を考えると言うことは、CTLで1つの状態を考えると言うようなものです。充足可能性はこのように定義されます。未来の数ではなく、未来の構造です。1つはトレースであり、もう1つはツリーです。
ヴィジェイD

@Vijay-確かに、構造が重要です。たとえば、LTL式を取得してFGp-> AF AG pのように変換し、同等のCTL式を取得することはできません(これら2つの式は同等ではありません。さらにFGpはCTLでは表現できず、AF AG pはLTLでは表現できません)。
jkff

私はOPが正式な定義に精通しており、何らかの直感を求めていると仮定したため、私の試みです。「モデルごとに1つの未来」と言うことで、この答えを救うことができますか?
ラファエル

OPが何に精通しているのかわかりません。たとえば、それぞれの場合にモデルが何であるかが明確になっていますか?
ヴィジェイD
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.