A practical and complete approach to predicate refinement

  • Authors:
  • Ranjit Jhala;K. L. McMillan

  • Affiliations:
  • University of California, San Diego;Cadence Berkeley Labs

  • Venue:
  • TACAS'06 Proceedings of the 12th international conference on Tools and Algorithms for the Construction and Analysis of Systems
  • Year:
  • 2006

Quantified Score

Hi-index 0.00

Visualization

Abstract

Predicate abstraction is a method of synthesizing the strongest inductive invariant of a system expressible as a Boolean combination of a given set of atomic predicates. A predicate selection method can be said to be complete for a given theory if it is guaranteed to eventually find atomic predicates sufficient to prove a given property, when such exist. Current heuristics are incomplete, and often diverge on simple examples. We present a practical method of predicate selection that is complete in the above sense. The method is based on interpolation and uses a “split prover”, somewhat in the style of structure-based provers used in artificial intelligence. We show that it allows the verification of a variety of simple programs that cannot be verified by existing software model checkers.