回答:
LTLとCTLの違いを本当に理解するには、両方の言語のセマンティクスを研究する必要があります。LTL式は、プログラムの実行ごとに解釈されるプロパティを示します。実行の実行(実行)ごとに、行のイベントまたは状態のシーケンスとして表示できます。これが「線形時間」と呼ばれる理由です。実行の充足可能性は、別の実行に切り替える可能性なしでチェックされます。チェック中。一方、CTLセマンティクスは、すべての可能な実行で式をチェックし、分岐に直面したときにすべての可能な実行(A演算子)または1つの実行のみ(E演算子)を試行します。
実際には、これは、各言語のいくつかの式を他の言語で記述できないことを意味します。たとえば、リセットプロパティ(回路設計の重要な到達可能性プロパティ)は、実際に到達していなくても、実行中に状態に到達する可能性が常に存在することを示しています(AG EF reset)。LTLは、リセット状態に実際に到達したことのみを示し、到達することはできません。
これがあなたの質問に答えるかどうかはわかりませんが、コメントを追加したいと思います。
ソフトウェア検証用のプロパティを表現するための最良のロジックについては多くの議論がありますが、本当の議論はどこかにあります。LTLは、CTLがそれらを表現するために新しいセマンティクス(新しい充足可能性関係)を持たなければならない場合に、ソフトウェアシステムモデリング(公平性)の重要なプロパティを表現できます。ただし、CTLアルゴリズムは通常より効率的であり、BDDベースのアルゴリズムを使用できます。だから...最善の解決策はありません。これまでのところ、2つの異なるアプローチのみです。
解説者の一人は、バルディの論文「分岐対線形時間:最終対決」を提案しています。
1つのオブジェクト(たとえば、LTLの場合のトレース)が与えられた場合、CTLにはすべての時点で1つの未来のみが考慮されます。
特に、next
LTLでは一意のアクションを提供しますが、CTLでは(場合によっては)セット全体を提供します。