是否可以在SPIN / PROMELA中检查变量的最大值

时间:2014-07-11 10:37:59

标签: parallel-processing multicore spin promela model-checking

在我的模型检查代码中,我只想找到某个变量的最大值。我现在使用的过程是使用断言语句assert( var < MAX_VALUE ),并以二进制搜索方式继续更改MAX_VALUE。但是,如果SPIN实际上只需要在一次运行中给出变量的最大可能值,那就更好了。我知道UPPAAL有一个sup运算符。在SPIN中有任何等价物吗?

1 个答案:

答案 0 :(得分:1)

{{}}}这样的Promela运算符具有max效果(涉及有限域,因此等同于sup)。

一种可能的方法是在探索状态空间时记录状态信息,例如在Promela规范中通过does not appear to existvar的值转储到外部文件{{1} }更改值:

var

embedded C code

一起
c_code{
    FILE *fp;
    int max_value;
}

为了找到最大值,应枚举整个状态空间,这取决于正在检查的属性类型,以及是否应用了部分订单减少。

通过更有效地访问文件,可以改进这种方法。