Parallel processing 是否可以检查SPIN/PROMELA中变量的最大值
在我的模型检查代码中,我只对找到某个变量的最大值感兴趣。我现在使用的过程是使用assert语句Parallel processing 是否可以检查SPIN/PROMELA中变量的最大值,parallel-processing,multicore,spin,promela,model-checking,Parallel Processing,Multicore,Spin,Promela,Model Checking,在我的模型检查代码中,我只对找到某个变量的最大值感兴趣。我现在使用的过程是使用assert语句assert(var
assert(var
,并以二进制搜索方式不断更改MAX\u值。然而,如果SPIN真的能在一次运行中给出变量的最大可能值,那就更好了。我知道UPPAAL有一个sup
操作符。自旋中有等价物吗?有这样一个Promela
操作符,它具有max
效应(涉及有限域,因此等价于sup
)
一种可能的方法是在探索状态空间时记录状态信息,例如,通过Promela规范内的记录,每当var
更改值时,将var
的值转储到外部文件:
c_code{
FILE *fp;
int max_value;
}
连同:
为了找到最大值,应该枚举整个状态空间,这取决于检查的是什么类型的属性,以及是否应用了偏序约简
这种方法可以通过更有效地访问该文件来改进。感谢您指出这一点,我用
c_code
修改了inline
,以便在模型检查期间全局跟踪状态。我猜这与assert(var
或同等安全的上限估计相结合,现在,我们应该开始行动了。:)+1.
int var;
inline set_var(value){
var = value;
c_code{
fp = fopen("max_value.txt", "r");
fscanf(fp, "%d", & max_value);
fclose(fp);
if (now.var > max_value){
fp = fopen("max_value.txt", "w");
fprintf(fp, max_value);
fclose(fp);
}
}