考虑这个简单的 PROMELA 模型:
#define p (x!=4)
int x = 0;
init {
do
:: x < 10 ->
x++;
od
}
我想用这个简单的声明来验证这个模型,它是使用 spin -f 生成的:
never { /* []p */
accept_init:
T0_init:
do
:: ((p)) -> goto T0_init
od;
}
但是,使用验证
spin -a model.pml
cc -o pan pan.c
./pan
没有结果。尝试 -a 选项也不会产生结果。任何随机模拟都表明,在某些时候显然 p 是错误的,那么尽管我用自旋生成了它,为什么 never 声明不起作用?
我错过了一些基本的东西吗?