1

我刚刚安装了 nuXmv 并想从示例文件夹中尝试示例增长计数器整数。当我尝试运行 command:build_model时,我收到错误消息:

文件 grow-counter-integer.smv:第 30 行:不可能构建具有无限精度变量的 BDD FSM

有人知道如何解决这个错误吗?提前致谢。

增长计数器整数.smv 文件:

MODULE main

VAR state : { s0, s1, s2, s3 };

VAR c : integer;
VAR lim : real;

ASSIGN
 init(state) := s0;
 next(state) :=
  case
   state = s0 : s1;
   state = s1 : s2;
   state = s2 & c < lim : s2;
   state = s2 & c >= lim : s3;
   state = s3 : s1;
   TRUE : state;
  esac;

 init(c) := 0;
 next(c) := (state = s2 & next(state) = s2)?(c+1):(0);

 init(lim) := 2;
 next(lim) := (state = s3 & next(state) = s1)?(lim + 1):(lim);

INVARSPEC c < 3;
INVARSPEC c < 4;
INVARSPEC c < 5;
INVARSPEC c < 6;
INVARSPEC c < 20;

LTLSPEC G F (state = s3);

4

1 回答 1

1

当输入模型包含一些无限域变量时,例如模型中的realinteger类型,最终用户应该使用MathSAT5引擎后端而不是常规方法(例如,基于 BDD 的方法)。

基于的命令在nuXmv 手册MathSAT5中很容易识别,因为它们中有关键字。在这种情况下,您仅限于不变量LTL有界模型检查。还有用于模拟系统的特殊命令(即和)。msatmsat_pick_statemsat_simulate

之后read_model -i <file.smv>,通常会使用该命令go_msat,然后选择适当的方法来检查给定的属性。

在此处输入图像描述

(幻灯片取自这里

于 2019-04-24T14:53:18.577 回答