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

Parallel processing 是否可以检查SPIN/PROMELA中变量的最大值,parallel-processing,multicore,spin,promela,model-checking,Parallel Processing,Multicore,Spin,Promela,Model Checking,在我的模型检查代码中,我只对找到某个变量的最大值感兴趣。我现在使用的过程是使用assert语句assert(var

在我的模型检查代码中,我只对找到某个变量的最大值感兴趣。我现在使用的过程是使用assert语句
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);
        }

}