在 SPIN ltl 公式中使用 (U)ntil 运算符

2023-11-29

我试图了解如何在 ltl 公式中正确使用 Until 运算符。我发现this定义(如下)要清楚:

Until

AUB:如果存在 i 则为真:

  • B is true in [si, si+1, si+2, … ]

  • for all j such that 0 ≤ j < i, formula A is true in [sj, sj+1, sj+2, … ]

meaning:

  • B 在时间 i 为真

  • 对于 0 到 i-1 之间的时间,公式 A 成立

仍然使用“true at time i”的形式化

带有示例 ltl 公式的示例代码:

mtype = {Regular, Reverse, Quit}

mtype state = Regular;

init {
do ::
   if
   ::state == Regular -> state = Reverse
   ::state == Reverse -> state = Quit
   ::state == Quit -> break
   fi
od
}

ltl p0 { [] ((state == Reverse) U (state != Reverse))}

根据我给出的until运算符的定义,我不明白上面的ltl公式如何不产生任何错误。不会state == Reverse需要始终为真,直到state != Reverse?最初state == Regular.

以下是运行测试后的 SPIN 输出:

(Spin Version 6.4.6 -- 2 December 2016)
    + Partial Order Reduction

Full statespace search for:
    never claim             + (p0)
    assertion violations    + (if within scope of claim)
    acceptance   cycles     + (fairness disabled)
    invalid end states  - (disabled by never claim)

State-vector 28 byte, depth reached 13, errors: 0
        9 states, stored (11 visited)
        2 states, matched
       13 transitions (= visited+matched)
        0 atomic steps
hash conflicts:         0 (resolved)

Stats on memory usage (in Megabytes):
    0.000   equivalent memory usage for states (stored*(State-vector + overhead))
    0.288   actual memory usage for states
  128.000   memory used for hash table (-w24)
    0.534   memory used for DFS stack (-m10000)
  128.730   total actual memory usage


unreached in init
    (0 of 12 states)
unreached in claim p0
    _spin_nvr.tmp:14, state 20, "-end-"
    (1 of 20 states)

pan: elapsed time 0 seconds

强直到

Its 正式定义 is:

M, sk ⊨ ϕ U ψ

∃ j ∈ N 。

  1. (j≥k)∧

  2. ∀ i ∈ N . ((k ≤ i < j) ⇒ (<si, si+1> ∈ Rt)) ∧

  3. (M, sj ⊨ ψ) ∧

  4. ∀ i ∈ N . ((k ≤ i < j) ⇒ (M, si ⊨ ϕ))

where

  • M 是克里普克结构

  • Rt is the transition relation

解释:

  • Conditions (1)-(2) enforce the sequence of states (sk, sk+1, ..., sj, ...) to be a valid execution path of the transition system over which the ltl formula can be evaluated.

  • Condition (3) forces ψ to hold in sj.

  • Condition (4) forces ϕ to hold in any state si that lies along the path from sk (included) up to sj (excluded).

Since an implication with a false premise is always true, the logical implication inside condition (4) is trivially satisfied for any i that lies outside of the range [k, j). Whenever j is picked to be equal to k, as in your question, the range [k, j) = [k, k) is empty and any choice of i lies outside said interval. In this case, regardless of the fact M, s ⊨ ϕ holds (or not) for some s, condition (4) is trivially satisfied for any choice of i and it no longer imposes any constraint over the execution path (sk, sk+1, ..., sj, ...). In other words, when j = k condition (4) no longer provides any meaningful contribution to the verification of property ϕ U ψ over the state sk.


弱直到

之间的区别弱直到,特此表示为ϕ W ψ, and 强直到就是它弱直到也满足任何执行路径 s.t.G (ϕ ∧ ¬ψ), 然而强直到强迫F ψ.


实例分析

该物业p0

[] ((state == Reverse) U (state != Reverse))

需要p1

((state == Reverse) U (state != Reverse))

保持系统的每一个状态。我会崩溃p1为了清楚起见,分为两个部分,并定义ϕ平等state == Reverse and ψ平等state != Reverse (note: ϕ <-> !ψ).

为了简化问题,我们假设您的系统由以下三种状态组成:

  • s_0:常规状态,这也恰好是初始状态
  • s_1: 反向状态
  • s_2:最终状态

为了p0持有,p1对于这些状态中的每一个都必须成立。

  • 处于状态s_0该财产ψ成立,因此p1也适用于j equal 0.
  • 处于状态s_1该财产ψ is false。然而,我们有这样的ϕ坚持s_1 and ψ坚持s_2这是它的直接且唯一的继承者。所以财产p1坚持s_1.
  • 处于状态s_2该财产ψ is true, so p1又是微不足道的满足了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 SPIN ltl 公式中使用 (U)ntil 运算符 的相关文章

  • SQL运行减法

    我的结果集如下 Item ExpectedQty ReceivedQty Short Item01 30 45 5 Item01 20 45 5 Item02 40 38 2 item03 50 90 10 item03 30 90 10
  • 读取具有多个命名空间的 XML 文件

    我有一个包含多个命名空间的 XML 文件 但我无法从任何节点获取值 文本
  • 传递参数以从 C# 访问查询

    我设计了一个访问查询 如下所示 SELECT Replace names lion kiss AS Expr1 FROM table1 这两个值是lion and kiss 它们是临时的 现在我希望它们是两个变量 这样我就可以从 C 向它传
  • 安装 Vaadin 后出现 NoClassDefFoundError

    我想使用 Vaadin 做一个项目 但遇到了一些问题 这就是我所做的 我下载了 Eclipse 并安装了 Vaadin for Eclipse 插件 然后 我创建了一个新的 Vaadin 7 项目 它下载了一些 Ivy 依赖项 但是当我按下
  • Java 和 PHP 之间的加密不匹配

    我正在开发一个将数据传递给第三方应用程序的加密系统 加密是用Java 完成的 解密是用PHP 完成的 尽管进行了多次尝试 我还是无法让 PHP 应用程序打开加密的字符串 出于测试目的 我创建了一个 PHP 脚本 该脚本也对数据进行加密 因此
  • 将数组转换为向量的最简单方法是什么?

    将数组转换为向量的最简单方法是什么 void test vector
  • 使用多个复选框进行 Jquery 过滤

    对于当前的项目 我正在创建一个简单的产品目录 该目录应该能够通过带有几组复选框的 Jquery 进行过滤 在一组或多组复选框中 当选中两个或更多复选框时 逻辑应为 或 而在使用两组或更多组复选框时 逻辑应为 与 我目前正在使用的一个很好的
  • 使用java和gmail发送邮件[重复]

    这个问题在这里已经有答案了 我想发送一封带有日历附件 javaxmail 的电子邮件 我创建了这个类 public void sendEmail String to Calendar calendar try String d uname
  • NativeBase 按钮​​不显示文本

    我遇到的问题是 NativeBase 中的按钮不显示其文本 我几乎使用了他们网站文档中的示例代码 但是当我渲染它时 它显示了三个我可以触摸的按钮 但没有任何标题 有任何想法吗 请看代码 App js import React from re
  • 数组元素上的简洁事件监听器

    我想知道是否有更简洁的方法来执行相同的操作 我正在尝试侦听执行相同操作的两个单独按钮上的事件 并且这两个按钮具有相同的 返回 类 并且我已将它们分配给一个名为 returnButton 的数组 我想要一个事件侦听器 它可以侦听两个按钮并将单
  • 在 android 的 ksoap2 中使用不带“i:type=”属性的 addMapping

    我在ksoap2中使用envelope addMapping函数 我需要让它生成没有i type属性的项目 这是我的代码生成的肥皂请求
  • 如何在 Objective-C 中执行回调

    如何在 Objective C 中执行回调函数 我只是想看看一些完整的例子 我应该理解它 为了完整起见 由于 StackOverflow RSS 只是随机地为我复活了这个问题 另一个 较新的 选项是使用块 interface MyClass
  • ivy 依赖部分中的小箭头 -> 有何作用?

    我正在使用 ivy 我工作的公司有一些有趣的 ivy 和 ant 小教程 每个教程都有帮助完全地当在依赖项部分使用时 绕过了 ivy 构建 xml 文件中箭头的作用 因此 考虑到这个设置

随机推荐