问题标签 [nusmv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nusmv - Nusmv 中的数字代码
我是 NUSMV 的新手,我正在尝试为 reconize 41708 建模一个数字代码,但用户不能再犯 3 个错误。如果您输入更多 3 错误,当您输入要解锁的特殊代码时,系统会进入阻塞状态等待。如果您不能帮助我提出想法并建议完成代码,这是我的代码。
model-checking - 使用 nuSMV 进行假设担保的感应
我有一个异步对称环形协议,它有 5 个满足给定属性的进程。我想证明(或获得反例)该属性对于具有 6 个或更多进程的协议是正确的;那是
∀n.φ(n)
我决定使用假设保证,并nuSMV
用于模型检查。
我知道以前版本的SMV可以Cadence
支持此功能,但是有什么方法可以实现假设保证nuSMV
吗?
如果没有,我可以使用其他模型检查器SPIN
吗?
谢谢你。
nusmv - Nusmv无法用输入变量(IVAR)检查ctl属性的错误如何处理?
模块 主要
IVAR v1 :布尔值;
VAR v2:布尔值;
规格名称 p1 := AG (v1&v2);
文件 ltlerror.smv:第 8 行:属性包含输入变量:
models - NuSMV:IVAR 和 VAR 之间的区别
IVAR
我知道 . 中(输入变量)和VAR
(状态变量)之间的区别NuSMV
。但是,我能够理解使用时的反例VAR
,但我不是在其他情况下。
让我用一个例子来展示它。
NuSMV 给出的反例(足够清楚)是:
现在,将 v1 和 v2 更改为 IVAR。
反例是:
有人可以解释为什么这个反例如此奇怪吗?它有几个嵌套循环。输出是什么意思?
compiler-construction - NuSMV开发:改变case语句中“TRUE”的功能
最近我尝试将一些模型转换为 Nusmv 模型,但我想尝试更改“TRUE:”关键字的功能。众所周知,“case ... esac;”中的“TRUE:” 当案例条件没有特定条件时,可以定义一些您想要的操作,但是,我要求天气“真”可以执行最后一次操作,例如:
换句话说,当'a'=0时,如果上次'a'被赋值-10,那么这次也将被赋值-10;如果上次'a'被分配了10,这次它也将被分配10。
那么,现在的问题是,是否可以通过更改 NuSMV 的源代码来做到这一点,你能告诉我哪个是在“case”中实现“TRUE”函数的 c 语言文件吗?
感谢您的帮助!
model-checking - nuXmv 为 LTL 公式清空初始状态集
我正在使用 nuXmv 1.1.1 对以下有限状态机进行模型检查。
使用以下 CTL 规范
nuXmv 产生规范是真实的。
具有以下 LTL 规格
nuXmv 产生以下警告
******** 警告 ******** 有限状态机的初始状态集是空的。这可能会使模型检查的结果不可信。********结束警告********
我理解警告,但我不明白为什么会出现。在我看来,它应该与两种规格一起出现,或者根本不出现。
有人有解释吗?
nusmv - 为 NuSMV 中的变量分配随机值
我在 NuSMV 中有以下代码。
所以 x 是一个变量,可以取整数值 0,1,2,3,4,5。接下来,我初始化它并制定它的转换规则。
上面应该说的是 x 最初是 1。然后如果 y=1 且 z=23,x 变为 4,否则 x 可以假设其域中的任何随机值。逻辑的这个“否则”部分是我怀疑的。我是否正确编码?y 和 z 是变量,其代码未在此处显示。为 y 和 z 假设一些东西。
或者我应该写:
因为我从本文档的第 4 页确定以上内容是正确的。
但这对于非常大的域是不可行的。假设 x 可以取 0 到 293 之间的任何值。
logic - 了解 NuSMV 中递归定义的错误
我在 NuSMV 中有一段代码出现了错误。代码是: -
所以当我在 NuSMV 中编译它时,它给出了一个错误:recursively defined: x1
现在我可以通过删除与 x2 关联的下一个语句来处理 x1 的转换规则,这意味着我替换x1=d & next(x2)=c : a;
为x1=d : a;
orx1=d & x2=d : a;
我想了解导致错误的 NuSMV 软件的机制以及上述修复解决错误的原因。我认为这与我不明白的同步实现有关。有人可以给出精确的详细技术解释吗?
并解释为什么 variable 没有错误x2
。它的转换规则也使用 next 运算符定义。
logic - NuSMV 陷入了一个微不足道的僵局
假设我在 NuSMV 中编写了一个从状态 S1 开始的模型。我想在这个模型检查器中检查我是否最终在所有情况下都达到状态 S70。现在可视化我编码的 NuSMV 模型,如下所示:
从上面很明显,最终会达到 S70,但可能需要超过 70 个时间步长。为什么?因为您可能会先进入 S2,然后再进入 S3,而不是再进入 S4,然后再回到 S2,这种模式会重复,比如 100 次。NuSMV 软件也考虑了这种可能性,以确认肯定会达到 S70。
问题是 NuSMV 表示无法到达 S70 并生成了一个反例,这正是:-
所以反例就是这4个步骤。但令我惊讶的是,NuSMV 无法弄清楚这种僵局最终会随着时间的推移而得到解决。为什么我得到一个非直观的结果?
我在图中显示的自动机可能是我希望我的 NuSMV 代码表示的,但我错误地编码了一两行,但我不这么认为。否则 NuSMV 怎么会认为它可以从 S2 转到 S3。如果它可以计算出可以从 S2 转到 S3,那么为什么要在 S2 处终止上面的反例呢?
有人可以解释吗?