我正在分析具有以下结构的控制程序:
unsigned int cnt=0;
unsigned int inc=3;
...
void main(){
int i;
int lim;
for(i=0;i<100000;i++)
{
f1();
....
lim = f2();
if(cnt < lim)
cnt += inc;
....
}
}
我的目标是分析足够的循环迭代以表明 cnt 变量不会溢出。单独增加 slevel 无济于事,因为状态空间会变得太高。我看到可以针对各个功能调整 slevel。这对于例如单个 if/else 构造是否也是可能的?对于这样的循环结构,增加整个函数的 slevel 可能已经太多了。有没有办法在不编写复杂的循环不变量和断言的情况下证明不存在溢出?
BR,哈拉尔