垫片

基于SMT的递归程序模型检查。针对递归程序的安全性验证,提出了一种基于SMT的符号模型检查算法。该算法是模块化的,并对程序进行了单独的分析。不同于基于SMT和其他基于程序的总结。欠近似用于分析不带内联的过程调用。过近似被用来阻止不可行的反例并检测到证明的收敛性。给出了一个可判定的定理,并证明了算法的可判定性。然而,效率取决于甲骨文的量词消除(QE)。对于布尔程序,该算法是一个多项式决策过程,匹配基于BDD的最佳算法的最坏情况边界。对于线性算法(整数和有理数),我们通过延迟应用QE给出了算法的一个有效实例。我们使用现有的插值技术来过度近似QE,并将基于模型的投影引入到欠近似QE中。对SV-COMP基准测试的实证评估表明,我们的算法在现有的基础上有了显著的改进。