有界模型检查的证明引导下近似拓宽技术
1. UnderWidenSI算法执行流程
UnderWidenSI算法在程序验证中有着重要的应用,下面是该算法在特定程序上的执行步骤:
| 步骤 | 操作 | 开放调用点 |
| — | — | — |
| 0 | 断言pVC(main) | [main, (L1,foo)]
[main, (L2,bar)] |
| 1 | 下近似检查:UNSAT
断言pVC(bar) | [main, (L1,foo)]
[main, (L2,bar), (L12, bar1)]
[main, (L2,bar), (L13, bar2)] |
| 2 | 下近似检查:UNSAT
断言pVC(foo)
断言pVC(bar1)
断言pVC(bar2) | [main, (L1,foo), (L6, foo1)]
[main, (L1,foo), (L7, foo2)] |
| 3 | 下近似检查:UNSAT
断言pVC(foo1)
断言pVC(foo2) | 无 |
| 4 | 下近似检查:UNSAT
返回Safe | 无 |
在步骤3中,foo1和foo2的调用点被开放,阻塞这些调用点并进行下近似检查返回UNSAT,且uc包含foo1和foo2的调用点,这些调用点随后被内联。在步骤4中,下近似查询返回UNSAT,且uc不包含阻塞的调用点,这表明uc仅包含内联的调用点,即从步骤0开始,仅内联uc中的调用点,其余调用点进行上近似处理,仍会得到UNSAT,因此uc是程序安全性的证明,判定main的pVC是
超级会员免费看
订阅专栏 解锁全文
2236

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



