I try to use NuSMV to check my model and here is the code.
However, when I input NuSMV kernel.smv
in the shell, it occur an error
file kernel.smv: line 16: nested NEXT operators: next(_b)
in definition of next(_cond)
in definition of next(tx.fired) at line 16
I'm a newbie in NuSMV model checker, so I could not fix this syntax error. Please help, thanks!
I was able to create a MVCE out of your image:
Here the design problem is exactly what the model checker tells you in the error message:
There is a double nesting of the
next()
operator within itself, and this isn't supported as it would require the execution horizon to be increased beyond the current_state + chosen_transition pair, and know which transition is taken from a future state that is still under construction.Workaround.
Let's take the following model, which has the same problem as yours:
we want
scnd
to betrue
iff the value offrst
is going to change amidst thenext()
and thenext(next())
state.To do so, we can delay the beginning of the execution trace, so that we can predict the future value of
frst
with sufficient advantage.Let's see it with an example: