English

Automatic Abstraction in SMT-Based Unbounded Software Model Checking

Logic in Computer Science 2013-06-11 v1 Programming Languages

Abstract

Software model checkers based on under-approximations and SMT solvers are very successful at verifying safety (i.e. reachability) properties. They combine two key ideas -- (a) "concreteness": a counterexample in an under-approximation is a counterexample in the original program as well, and (b) "generalization": a proof of safety of an under-approximation, produced by an SMT solver, are generalizable to proofs of safety of the original program. In this paper, we present a combination of "automatic abstraction" with the under-approximation-driven framework. We explore two iterative approaches for obtaining and refining abstractions -- "proof based" and "counterexample based" -- and show how they can be combined into a unified algorithm. To the best of our knowledge, this is the first application of Proof-Based Abstraction, primarily used to verify hardware, to Software Verification. We have implemented a prototype of the framework using Z3, and evaluate it on many benchmarks from the Software Verification Competition. We show experimentally that our combination is quite effective on hard instances.

Keywords

Cite

@article{arxiv.1306.1945,
  title  = {Automatic Abstraction in SMT-Based Unbounded Software Model Checking},
  author = {Anvesh Komuravelli and Arie Gurfinkel and Sagar Chaki and Edmund M. Clarke},
  journal= {arXiv preprint arXiv:1306.1945},
  year   = {2013}
}

Comments

Extended version of a paper in the proceedings of CAV 2013

R2 v1 2026-06-22T00:30:28.169Z