【问题标题】:How to transform LTL into Automato in Promela - SPIN?如何在 Promela - SPIN 中将 LTL 转换为 Automato?
【发布时间】:2016-08-05 02:48:34
【问题描述】:

如何在 PROMELA 中将 LTL 转换为 Automata?我知道使用命令 SPIN -f "ltl x" 可以将 LTL 转换为永不声明,但我想要 LTL 的自动机而不是否定的自动机。如果我之前否定 LTL 以生成从不声明,这是正确的。谁能帮我?

【问题讨论】:

  • this 会有所帮助,还是您严格要求基于 spin 的解决方案?
  • 实际上我想要一种将 LTL 转换为 PROMELA Automata 的方法。我认为这个网站变成了一个从未声明过的网站。如果一个 put [](q11 -> !q0) 用于转换,则响应是 never 声明: never { /* G(q11 -> !q0) / accept_init : / init */ if :: (!q0) || (!q11) -> 转到 accept_init fi; } 你认为我可以只使用代码 sn -p Never{} 中的代码吗?这是 LTL G(q11 -> !q0) 的自动机。感谢您的帮助。
  • 是的,never { }里面的代码代表ltl公式/步驰自动机。
  • 非常感谢帕特里克。
  • 仅作记录,本题链接this other one

标签: model-checking spin promela


【解决方案1】:

Spin 生成与LTL 公式 匹配的Buchi Automaton 等效的Promela 代码,并将其封装起来进入一个 never 块。

来自docs

NAME 从不 - 声明临时声明。

语法从不{序列}

DESCRIPTION 永不声明可用于定义系统行为: 无论出于何种原因,都特别感兴趣。它是最常用的 指定不应该发生的行为。索赔定义为 一系列关于系统状态的命题或布尔表达式 这必须在为行为指定的顺序中变为真 兴趣匹配。

因此,如果您想查看与给定LTL公式匹配的代码,您只需键入:

~$ spin -f "LTL_FORMULA"

例如:

~$ spin -f "[] (q1 -> ! q0)" 
never  {    /* [] (q1 -> ! q0) */
accept_init:
T0_init:
    do
    :: (((! ((q0))) || (! ((q1))))) -> goto T0_init
    od;
}

获取相同代码以及Buchi Automaton 图形表示的另一种方法是发送至follow this link


查看您的 您的 cmetsthis other 问题,您似乎想检查两个 LTL 公式 pg 是相互矛盾的,也就是说,一个模型 满足 p 是否必然违反 g反之亦然。

理论上可以使用spin完成。但是,这个工具并没有简化Buchi Automaton的代码,因此很难处理它的输出。

我建议您改为下载 LTL2BA(在以下link)。要设置它,您只需解压缩 tar.gz 文件并在控制台中键入 make

我们来看一个用法示例:

~$ ./ltl2ba -f "([] q0) && (<> ! q0)"
never {    /* ([] q0) && (<> ! q0) */
T0_init:
    false;
}

由于 [] q0&lt;&gt; ! q0 相互矛盾,返回的 Buchi 自动机empty [n.b.: by empty 我的意思是它没有接受执行]。在这种情况下,代码 never { false; }empty Buchi Automaton规范形式,没有任何接受执行。


免责声明: 将输出与 never { false } 进行比较以确定 Buchi Automaton 是否为空,可能会导致 简化步骤无法转换规范形式中的所有自动机,则会产生>虚假。

【讨论】:

  • 感谢您的所有解释。我想检查 LTL A 是否与 LTL B 矛盾。为此,我将 LTL A 转换为 buchi 自动机(这将是我在 PROMELA 中的程序)并根据 LTL B 检查该程序。如果显示一些反例这是因为那些 LTL 是矛盾的。
  • @Georgia 如果您只是检查两个 LTL 公式 合取 是否会更容易empty 自动机,又名 never { false }?
  • 我可以在 Spin Model Checker 中执行此操作吗?你能告诉我怎么做吗?起初我没有验证这些 TL 的模型,只有 LTL。
  • 谢谢。你帮了我很多。你知道一些证明它的文章吗?我的意思是,证明两个矛盾的 LTL 的自动机是空的?
  • @Georgia 我不记得有任何特定的文章对此进行了说明,尽管如果您查找 Buchi AutomatonsKripke Structures 被定义你可能会发现一些东西。为了澄清你的初步想法,我建议你阅读this。请注意,当我说 empty 时,我真正的意思是,就接受执行而言,交集是 empty,即 没有路径无限次与接受状态相交,但如果不应用简化可能会有一些状态。
猜你喜欢
  • 2014-06-27
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-11
  • 1970-01-01
  • 2013-06-12
相关资源
最近更新 更多