Skip to main content
QUICK REVIEW

[论文解读] Abstraction and Acceleration in SMT-based Model-Checking for Array Programs

Francesco Alberti, Silvio Ghilardi|arXiv (Cornell University)|Apr 16, 2013
Formal Methods in Verification参考文献 38被引用 9
一句话总结

本文提出了一种新颖的加速度与单调抽象的集成方法,用于基于SMT的数组程序模型检测,通过计算一阶可定义的数组更新转移加速度,并利用实例化技术处理由此产生的嵌套量词,实现了无发散的可达性分析。该方法在复杂数组程序(尤其是具有嵌套循环的程序)上显著提升了验证收敛性,优于单独使用抽象或加速度的方法。

ABSTRACT

Abstraction (in its various forms) is a powerful established technique in model-checking; still, when unbounded data-structures are concerned, it cannot always cope with divergence phenomena in a satisfactory way. Acceleration is an approach which is widely used to avoid divergence, but it has been applied mostly to integer programs. This paper addresses the problem of accelerating transition relations for unbounded arrays with the ultimate goal of avoiding divergence during reachability analysis of abstract programs. For this, we first design a format to compute accelerations in this domain; then we show how to adapt the so-called 'monotonic abstraction' technique to efficiently handle complex formulas with nested quantifiers generated by the acceleration preprocessing. Notably, our technique can be easily plugged-in into abstraction/refinement loops, and strongly contributes to avoid divergence: experiments conducted with the MCMT model checker attest the effectiveness of our approach on programs with unbounded arrays, where acceleration and abstraction/refinement technologies fail if applied alone.

研究动机与目标

  • 为解决在存在无界数组和嵌套循环的情况下,数组程序可达性分析中的发散问题。
  • 开发一种计算数组更新转移的一阶可定义加速度的方法,即使在存在嵌套量词的情况下也能适用。
  • 将加速度与单调抽象相结合,以处理加速度产生的复杂公式,提升抽象/精化循环中的收敛性。
  • 展示结合加速度与抽象在实际验证中的有效性,特别是在单一技术无法成功验证的程序中。

提出的方法

  • 设计一种形式化方法,用于在带有自由函数符号的Presburger算术理论中计算数组更新转移的加速度。
  • 应用单调抽象技术以管理加速度引入的全称量词,从而在SMT求解中实现高效的实例化。
  • 对转移系统进行预处理,以加速关系替代循环,从而实现对任意迭代次数后可达状态的一步计算。
  • 将加速度模块集成到MCMT模型检查器中,扩展了向后可达性分析,同时支持加速度与抽象/精化。
  • 采用声明式实例化策略以处理加速公式中的嵌套量词,降低SMT求解器的复杂度。
  • 将加速转移系统与抽象/精化循环相结合,以增强安全验证中的收敛性。

实验结果

研究问题

  • RQ1在基于SMT的模型检测中,尽管无界数组引入了复杂性,加速度是否仍能有效应用于数组更新转移?
  • RQ2在SMT求解中,如何高效处理加速度产生的嵌套量词而不损失精度?
  • RQ3将加速度与单调抽象结合,能在多大程度上提升数组程序在抽象/精化循环中的收敛性?
  • RQ4所提出的方法是否能够验证先前加速度技术无法处理的嵌套循环和复杂数组属性(如allDiff)的程序?
  • RQ5加速度与抽象的集成是否在实际基准测试中带来了可测量的验证性能与可扩展性提升?

主要发现

  • 单独使用加速度可在39个安全数组程序中防止23个的发散,证明其在稳定可达性分析方面的有效性。
  • 单独使用抽象在13个加速度能成功收敛的程序上未能收敛,证实了两者具有互补性。
  • 组合配置(加速度 + 抽象/精化)在60秒时限内解决了全部55个基准测试,实现了完全收敛,而单一技术均无法成功。
  • 加速度的预处理开销极小,且不影响不安全程序的性能,使其在实际应用中具有可行性。
  • 该方法成功验证了涉及嵌套循环和量化不变式的复杂数组程序(如allDiff),而先前的加速度技术无法处理此类问题。
  • 实验结果证实,加速度与抽象的集成显著提升了基于SMT的模型检测在数组程序上的可扩展性与鲁棒性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。