YASM的浅层反例处理机制
1. 引言
在现代软件开发中,模型检查器如YASM扮演着至关重要的角色。YASM是一款基于反例引导抽象细化(CEGAR)框架的软件模型检查器,它不仅能够验证属性,还能反驳属性。本文将深入探讨YASM如何处理浅层反例,以改进其验证和反驳能力。
2. 浅层反例的概念
浅层反例是指那些在抽象层次较浅的情况下就能检测到的错误路径。具体来说,如果我们将抽象限制在某些谓词上,YASM可以显示从某一行开始错误(ERROR)是不可避免的。例如,假设我们仅将抽象限制在谓词 ( b_1 ) 和 ( b_2 ) 上,YASM可以显示从第4行开始ERROR是不可避免的。
然而,整体分析可能会因为虚假的反例而不确定。例如,存在一条通向错误(ERROR)的虚假路径。使用错误不可避免的事实,可以在达到特定行之前生成反例,并发现需要哪些额外的谓词来完成分析。
3. 示例分析
为了更好地理解浅层反例的作用,我们来看一个具体的例子。考虑以下代码段:
void example() {
int x = 0;
int y = 0;
int *p = &x;
if (y < 0 && x > 2) { // 第12行
*p = 5;
}
if (*p == 5) { // 第14行
ERROR();
}
}
如果我们仅将抽象限制在谓词 ( b_1 ) 和 ( b_2 ) 上,YASM可以显示从第
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



