×

通过策略迭代在简洁表示的控制流图中生成不变量。 (英语) Zbl 1248.68142号

摘要:我们考虑计算程序的数值不变量的问题,例如数值程序变量值的界。更具体地说,我们研究了使用模板线性约束域通过抽象解释执行静态分析的问题。这样的不变量可以通过Kleene迭代获得,为了保证终止性,Klene迭代通过加宽算子加速。然而,在许多情况下,应用这种形式的外推会导致不变量弱于可以在使用的抽象域中表示的最强归纳不变量。传统抽象解释技术不精确的另一个众所周知的原因是,它们在控制流图的合并节点上使用了连接操作符。上述缺陷可能会妨碍这些方法证明安全性能。
我们在本文中开发的技术解决了这两个问题:与通过加宽算子加速的Kleene迭代相反,它保证产生最强的归纳不变量,该不变量可以在使用的模板线性约束域中表达。它还通过区分无循环代码段的所有路径来避免连接操作符。从形式上讲,我们的技术计算转换关系的给定模板线性约束域内的最小不动点,转换关系简洁地表示为存在量化的线性实数算术公式。
与之前发表的依赖于量词消去的技术相比,我们的算法被证明具有最优复杂性:我们证明了与我们的不动点问题相关的决策问题处于多项式时间层次的第二级。

MSC公司:

68号30 软件工程的数学方面(规范、验证、度量、需求等)
PDF格式BibTeX公司 XML格式引用