LTL和CTL有什么区别?


12

我已经阅读了CTL中的公式示例,但没有阅读过LTL中的示例,反之亦然,但是我很难对LTL公式有所了解,而真正的本质是区别。


1
互连网上的大量注释处理了此问题。用Google搜索“ LTL和CTL之间的区别”吗?
戴夫·克拉克

1
尝试写下简单的公式并评估其在Kripke结构上的语义。
维杰D

Answers:


21

要真正理解LTL和CTL之间的区别,您必须研究两种语言的语义。LTL公式表示将在每次执行程序时解释的属性。对于每个可能的执行(运行),可以将其视为一行上的一系列事件或状态,这就是为什么将其命名为“线性时间”的原因,系统会检查运行是否满足要求,而无法切换到另一运行在检查过程中。另一方面,CTL语义检查所有可能运行的公式,并且在面对分支时将尝试所有可能的运行(A运算符)或仅尝试一个运行(E运算符)。

实际上,这意味着每种语言的某些公式不能用另一种语言陈述。例如,重置属性(电路设计的重要可及性)指出,即使从未真正达到某个状态,也始终有可能在运行期间达到该状态(AG EF重置)。LTL只能声明实际上已达到复位状态,而不能声明可以达到复位状态。

ss

我不知道这是否能回答您的问题,但我想补充一些意见。

关于表达用于软件验证的属性的最佳逻辑的讨论很多,但是真正的争论在其他地方。当CTL必须具有新的语义(新的可满足性关系)来表达它们时,LTL可以表达软件系统建模的重要属性(公平性)。但是CTL算法通常更有效,并且可以使用基于BDD的算法。所以...没有最好的解决方案。到目前为止,只有两种不同的方法。

其中一位评论者建议Vardi发表论文“分支与线性时间:最终对决”


参见Vardi关于LTL与CTL的讨论:“分支与线性时间:最终对决”
Guy

非常感谢,这正是我一直在寻找的见解!
匿名Co夫

1

如果给定一个对象(例如,在使用LTL的情况下进行跟踪),则您在每个时间点仅考虑一个未来,在CTL中,它们的数量过多。

特别是,next它在LTL中给出了唯一的动作,但(可能)在CTL中给出了整个动作。


6
但是您通常将LTL公式应用于系统的所有运行,而不是仅应用于一个,从而缩小了一个或多个未来问题之间的差距。准确地说,LTL处理线性时间,而CTL处理分支时间。
戴夫·克拉克

4
说,在LTL中,您考虑一个未来就好比在CTL中,您考虑一个状态。通过这种方式定义可满足性。这不是关于多少期货,而是关于期货的结构。一个是痕迹,另一个是树。
维杰D

@Vijay-确实,结构很重要。例如,您不能只采用LTL公式,将其像FGp-> AF AG p一样转换,并获得等效的CTL公式(这两个公式不相等;此外,FGp在CTL中无法表达,而AF AG p在LTL中无法表达)。
jkff 2011年

我假设OP熟悉正式定义并要求某种直觉,因此我尝试了。说“每个模型一个未来”可以挽救这个答案吗?
拉斐尔

我不知道OP熟悉什么。例如,他们是否清楚每种情况下的模型是什么?
维杰D
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.