如何在非原子方法中对Promela中的布尔AND评估进行建模?

时间:2015-11-22 10:37:08

标签: promela

如何在非原子方式中对Promela中的布尔AND评估进行建模?

我想对声明while (flag[j] == true && victim == i)进行建模,其中AND-evaluation应该以非原子方式进行。

这怎么可能?

1 个答案:

答案 0 :(得分:1)

loop:
if 
:: flag[j] != true -> goto done
:: else
fi;

if 
:: victim != i -> goto done
:: else
fi;

/* body of 'while' */

goto loop;
done:

/* after 'while' */

注意,虽然我面前没有Spin环境,但是你认为条件首先是什么?我会测试类似的东西:

byte i = 0

i++ >= 0 && i-- >= 0

never { assert (1 == i) } 

但无论如何,上面的第一个代码展示了如果需要的话如何使它成为非原子的。