Skip to main content
QUICK REVIEW

[论文解读] Software Model Checking via Large-Block Encoding

Dirk Beyer, Alessandro Cimatti|ArXiv.org|Apr 29, 2009
Formal Methods in Verification参考文献 11被引用 88
一句话总结

本文提出了一种符号模型检测技术——大块编码(LBE),用更大的、总结性的程序片段替代单个程序块的转换,从而大幅减少在抽象可达性树(ART)中探索的路径数量。通过利用SMT求解器进行基于布尔谓词抽象的符号后继计算,LBE实现了ART规模的指数级缩减,并在性能和可扩展性方面优于传统的单块编码(SBE)以及最先进的工具Blast。

ABSTRACT

The construction and analysis of an abstract reachability tree (ART) are the basis for a successful method for software verification. The ART represents unwindings of the control-flow graph of the program. Traditionally, a transition of the ART represents a single block of the program, and therefore, we call this approach single-block encoding (SBE). SBE may result in a huge number of program paths to be explored, which constitutes a fundamental source of inefficiency. We propose a generalization of the approach, in which transitions of the ART represent larger portions of the program; we call this approach large-block encoding (LBE). LBE may reduce the number of paths to be explored up to exponentially. Within this framework, we also investigate symbolic representations: for representing abstract states, in addition to conjunctions as used in SBE, we investigate the use of arbitrary Boolean formulas; for computing abstract-successor states, in addition to Cartesian predicate abstraction as used in SBE, we investigate the use of Boolean predicate abstraction. The new encoding leverages the efficiency of state-of-the-art SMT solvers, which can symbolically compute abstract large-block successors. Our experiments on benchmark C programs show that the large-block encoding outperforms the single-block encoding.

研究动机与目标

  • 为解决单块编码(SBE)导致的程序路径爆炸问题所引发的软件模型检测可扩展性瓶颈。
  • 通过将更大的程序片段汇总为单个转换,减少抽象可达性树(ART)节点的数量。
  • 通过用符号后继计算替代显式路径枚举,提升效率,该计算基于SMT求解器。
  • 评估在大块编码背景下,布尔抽象(精确但昂贵)与笛卡尔抽象(高效但精度较低)之间的权衡。
  • 证明符号化的大块分析在实践中可优于传统的基于路径的模型检测。

提出的方法

  • 大块编码(LBE)将程序操作序列汇总为ART中的单个转换,从而减少需探索的路径数量。
  • 抽象状态使用任意布尔谓词组合表示,而不仅限于合取形式,以捕捉大代码块之间的复杂关系。
  • 通过布尔谓词抽象执行符号后继计算,使SMT求解器能够对整个代码块计算后继状态。
  • 该方法利用SMT求解器对大程序片段进行高效的符号推理,避免显式枚举路径。
  • 该方法结合插值与谓词抽象技术,在必要时才细化抽象,支持增量验证。
  • 实现基于CPAchecker构建,使用标准C程序基准测试对比LBE与SBE及Blast。

实验结果

研究问题

  • RQ1将更大的程序片段汇总为单个转换是否能减少抽象可达性树(ART)的规模并提升可扩展性?
  • RQ2在SBE中,使用布尔谓词抽象对大块进行符号后继计算是否优于传统的笛卡尔抽象?
  • RQ3LBE在验证正确程序和存在错误的程序时,是否能显著优于SBE和最先进的工具Blast?
  • RQ4SMT求解器在多大程度上缓解了SBE中路径枚举的指数级膨胀问题?
  • RQ5在LBE与SBE之间,抽象精度与计算成本之间的权衡如何体现?

主要发现

  • 在深度嵌套的条件结构中,LBE将ART节点数量保持在常数级别,而SBE的节点数量呈指数级增长。
  • 在存在嵌套条件的情况下,SBE在24个基准测试中有14个超时,而LBE在合理时间内解决了全部24个。
  • 对于s3_srvr基准测试套件,LBE在总耗时188.67秒内解决了全部16个基准,而SBE仅解决了其中10个,总耗时5747.10秒。
  • LBE在所有基准测试中均优于Blast的最佳配置(使用-dfs -predH 7),解决了所有24个正确程序和16个存在错误的程序,而Blast在这些情况下失败或显著更慢。
  • 由于摘要机制,LBE实现了ART规模的指数级缩减,避免了SBE固有的路径爆炸问题。
  • 尽管布尔抽象的开销更高,但后继计算次数的显著减少使得LBE在整体效率上远超SBE。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

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