Error: Impossible to build a BDD FSM with infinite precision variables

348 Views Asked by At

I just installed nuXmv and wanted to try out the example growing-counter-integer from the examples folder. When I try to run the command: build_model, I get the error message:

file growing-counter-integer.smv: line 30: Impossible to build a BDD FSM with infinite precision variables

Does somebody know how to fix this error? Thanks in advance.

growing-counter-integer.smv file:

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

There are 1 best solutions below

0
On BEST ANSWER

When the input model contains some infinite-domain variable, like the real and integer types in your model, the end-user is supposed to use the MathSAT5 engine back-end instead of the regular approaches (like, e.g., those based on BDDs).

The commands based on MathSAT5 are easily identifiable in the nuXmv manual by the fact that they have the keyword msat in them. In this case, you are limited to invariant and LTL Bounded Model Checking. There are special commands also for simulating the system (i.e. msat_pick_state and msat_simulate).

After read_model -i <file.smv>, one would typically use the command go_msat and then select the appropriate approach for checking the given properties.

enter image description here

(slide taken from here)