Efficient E-Matching for SMT Solvers

Satisfiability Modulo Theories (SMT) solvers have proven highly scalable, efficient and suitable for integrating theory reasoning. However, for numerous applications from program analysis and verification, the ground fragment is insufficient, as proof obligations often include quantifiers. A well known approach for quantifier reasoning uses a matching algorithm that works against an E-graph to instantiate quantified variables. This paper introduces algorithms that identify matches on E-graphs incrementally and efficiently. In particular, we introduce an index that works on E-graphs, called E-matching code treesthat combine features of substitution and code trees, used in saturation based theorem provers. E-matching code trees allow performing matching against several patterns simultaneously. The code trees are combined with an additional index, called the inverted path index, which filters E-graph terms that may potentially match patterns when the E-graph is updated. Experimental results show substantial performance improvements over existing state-of-the-art SMT solvers.

[1]  Burton H. Bloom,et al.  Space/time trade-offs in hash coding with allowable errors , 1970, CACM.

[2]  James R. Slagle Automatic Theorem Proving with Built-in Theories Including Equality, Partial Ordering, and Sets , 1972, JACM.

[3]  Dexter Kozen,et al.  Complexity of finitely presented algebras , 1977, STOC '77.

[4]  Charles Gregory Nelson,et al.  Techniques for program verification , 1979 .

[5]  G. S. Tseitin On the Complexity of Derivation in Propositional Calculus , 1983 .

[6]  Larry Wos,et al.  What Is Automated Reasoning? , 1987, J. Autom. Reason..

[7]  Hassan Aït-Kaci,et al.  Warren's Abstract Machine: A Tutorial Reconstruction , 1991 .

[8]  Peter Graf,et al.  Advanced Indexing Operations on Substitution Trees , 1996, CADE.

[9]  M. A. McRobbie,et al.  Automated Deduction — Cade-13 , 1996, Lecture Notes in Computer Science.

[10]  Steve Roach,et al.  Using Decision Procedures to Accelerate Domain-Specific Deductive Synthesis Systems , 1998, LOPSTR.

[11]  Peter F. Patel-Schneider,et al.  DLP System Description , 1998, Description Logics.

[12]  Harald Ganzinger,et al.  Context Trees , 2001, IJCAR.

[13]  Frank Wolter,et al.  Monodic fragments of first-order temporal logics: 2000-2001 A.D , 2001, LPAR.

[14]  Andrei Voronkov,et al.  Vampire 1.1 (System Description) , 2001, IJCAR.

[15]  J. Saxe,et al.  Extended static checking for Java , 2002, PLDI '02.

[16]  K. Rustan M. Leino,et al.  The Spec# Programming System: An Overview , 2004, CASSIS.

[17]  Stephen Gilmore,et al.  Mobile Resource Guarantees for Smart Devices , 2004, CASSIS.

[18]  Sergey Berezin,et al.  CVC Lite: A New Implementation of the Cooperating Validity Checker Category B , 2004, CAV.

[19]  J. Saxe,et al.  An Explicating Theorem Prover for Quantified Formulas , 2004 .

[20]  Mark E. Stickel,et al.  Automated deduction by theory resolution , 1985, Journal of Automated Reasoning.

[21]  Andrei Voronkov,et al.  The anatomy of vampire , 1995, Journal of Automated Reasoning.

[22]  Cesare Tinelli,et al.  DPLL( T): Fast Decision Procedures , 2004, CAV.

[23]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[24]  K. Rustan M. Leino,et al.  BoogiePL: A typed procedural language for checking object-oriented programs , 2005 .

[25]  Shuvendu K. Lahiri,et al.  Zap: Automated Theorem Proving for Software Analysis , 2005, LPAR.

[26]  K. Rustan M. Leino,et al.  A Two-Tier Technique for Supporting Quantifiers in a Lazily Proof-Explicating Theorem Prover , 2005, TACAS.

[27]  David Detlefs,et al.  Simplify: a theorem prover for program checking , 2005, JACM.

[28]  Maria Paola Bonacina,et al.  On a Rewriting Approach to Satisfiability Procedures: Extension, Combination of Theories and an Experimental Appraisal , 2005, FroCoS.

[29]  Bruno Dutertre,et al.  A Fast Linear-Arithmetic Solver for DPLL(T) , 2006, CAV.