错误:无法建立具有无限精度变量的BDD FSM

时间:2019-04-24 13:32:43

标签: nusmv nuxmv

我刚刚安装了nuXmv,并想尝试从examples文件夹中获取示例递增计数器整数。当我尝试运行命令:build_model时,出现错误消息:

  

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

有人知道如何解决此错误吗?预先感谢。

growing-counter-integer.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);

1 个答案:

答案 0 :(得分:0)

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

基于MathSAT5的命令在MathSAT5中很容易识别,因为它们中包含关键字msat。在这种情况下,您只能使用不变 LTL 边界模型检查。还有一些用于模拟系统的特殊命令(即msat_pick_statemsat_simulate)。

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

nuXmv manual

(来自enter image description here的幻灯片)