使用变量而不是整数时出现 nuXmv 语法错误

nuXmv syntax error when using variable instead of integer

我在 muXmv 中有一个模型,我在其中使用一系列值进行初始化,例如 -

VAR 
  x : 0..100;
ASSIGN
  init(x) := 10..50;

这很好用。

但是,当我使用变量而不是值时,

ASSIGN 
  init(x) := LB..UB;

DEFINE
  LB := 10;
  UB := 50;

它抛出语法错误 -

line 14: at token "..": syntax error

line 14: Parser error

不确定我哪里出错了?

还有没有更好的方法在 nuxmv 中声明常量?

A definition 不一定是常量,它只是表达式的名称(其值在每次转换后可能会发生变化)。 例如

MODILE main()
VAR
    x : 0..100;
    y : 0..100;
DEFINE
    sum := x + y;

...

不知道为什么NuSMV/nuXmv语法特别禁止使用一对标识符而不是一对常量。


另一种选择是:

MODULE main()
VAR
    x : 0..100;

ASSIGN
  init(x) := INTERVAL;

DEFINE
  INTERVAL := 10 .. 50;

另一种选择是使用约束式方法:

MODULE main()
VAR
    x : 0..100;

DEFINE
    LB := 10;
    UB := 50;

INIT
    LB <= x & x <= UB;

如果您真的发现自己在与许多常量值作斗争,一种选择是编写一个通用的 TEMPLATE 模型,然后使用 正则表达式 + 脚本工具 自动生成您需要的各种具体模型