Array abstractions from proofs

  • Authors:
  • Ranjit Jhala;Kenneth L. McMillan

  • Affiliations:
  • UC San Diego;Cadence Berkeley Laboratories

  • Venue:
  • CAV'07 Proceedings of the 19th international conference on Computer aided verification
  • Year:
  • 2007

Quantified Score

Hi-index 0.00

Visualization

Abstract

We present a technique for using infeasible program paths to automatically infer Range Predicates that describe properties of unbounded array segments. First, we build proofs showing the infeasibility of the paths, using axioms that precisely encode the high-level (but informal) rules with which programmers reason about arrays. Next, we mine the proofs for Craig Interpolants which correspond to predicates that refute the particular counterexample path. By embedding the predicate inference technique within a Counterexample-Guided Abstraction-Refinement (CEGAR) loop, we obtain a method for verifying data-sensitive safety properties whose precision is tailored in a program- and property-sensitive manner. Though the axioms used are simple, we show that the method suffices to prove a variety of array-manipulating programs that were previously beyond automatic model checkers.