我正在使用 nuXmv 1.1.1 对以下有限状态机进行模型检查。
MODULE main
VAR
node : {_0_0,_1_0,_1_1,_1_2,_1_3,_2_0};
DEFINE
setParentThis_r_ := case
TRUE : FALSE;
esac;
setParent_r_ := case
node=_1_3 :TRUE;
TRUE : FALSE;
esac;
ASSIGN
init(node) := _2_0 ;
next(node) := case
node =_0_0:{_0_0};
node =_1_0:{_1_1};
node =_1_1:{_1_2};
node =_1_2:{_1_3};
node =_1_3:{_0_0};
node =_2_0:{_1_0};
esac;
使用以下 CTL 规范
SPEC
A[(!(setParent_r_)) U (setParentThis_r_ -> AX(AG(!(setParent_r_))))]
nuXmv 产生规范是真实的。
具有以下 LTL 规格
LTLSPEC
(!(setParent_r_)) U (setParentThis_r_ -> X(G(!(setParent_r_))))
nuXmv 产生以下警告
******** 警告 ******** 有限状态机的初始状态集是空的。这可能会使模型检查的结果不可信。********结束警告********
我理解警告,但我不明白为什么会出现。在我看来,它应该与两种规格一起出现,或者根本不出现。
有人有解释吗?