这些天我开始学习 NuSMV。我有这个代码:
MODULE main
VAR
state: {a,b,c,d,e};
ASSIGN
init(state) := a;
next(state) := case
(state = a) : b;
(state = b) : c;
(state = c) : d;
(state = d) : e;
TRUE:Stages;
esac;
我想验证每次我们处于状态“a”时,下一个状态将是状态“b”。哪一个是正确的(即使我尝试了它们并且它们都给了我正确的):
check_ctlspec -p "AG (state=a -> AX state=b)"
check_ctlspec -p "AF (state=a -> AX state=b)"
check_ctlspec -p "AF (state=a -> AF state=b)"
check_ctlspec -p "AF (state=a -> state=b)"
我的第二个问题是:在上面的模型中,没有从状态“d”到状态“a”的转换,但是当我使用
check_ctlspec -p "AF (state=d -> AX state=a)"
结果是真的。为什么会这样?