在我的模型检查代码中,我只想找到某个变量的最大值。我现在使用的过程是使用断言语句assert( var < MAX_VALUE )
,并以二进制搜索方式继续更改MAX_VALUE。但是,如果SPIN实际上只需要在一次运行中给出变量的最大可能值,那就更好了。我知道UPPAAL有一个sup
运算符。在SPIN中有任何等价物吗?
答案 0 :(得分:1)
{{}}}这样的Promela
运算符具有max
效果(涉及有限域,因此等同于sup
)。
一种可能的方法是在探索状态空间时记录状态信息,例如在Promela规范中通过does not appear to exist将var
的值转储到外部文件{{1} }更改值:
var
一起
c_code{
FILE *fp;
int max_value;
}
为了找到最大值,应枚举整个状态空间,这取决于正在检查的属性类型,以及是否应用了部分订单减少。
通过更有效地访问文件,可以改进这种方法。