LTL和CTL有什么区别?


12

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


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

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

Answers:


21

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

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

◊◻s◊◻s

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

关于表达用于软件验证的属性的最佳逻辑的讨论很多,但是真正的争论在其他地方。当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.