Automated deduction by theory resolution
Journal of Automated Reasoning
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Journal of Automated Reasoning
Ordered Semantic Hyper-Linking
Journal of Automated Reasoning
Partial Instantiation Methods for Inference in First-Order Logic
Journal of Automated Reasoning
A Generalization of Shostak's Method for Combining Decision Procedures
FroCoS '02 Proceedings of the 4th International Workshop on Frontiers of Combining Systems
IWWERT '90 Proceedings of the First International Workshop on Word Equations and Related Topics
CADE-18 Proceedings of the 18th International Conference on Automated Deduction
Simplify: a theorem prover for program checking
Journal of the ACM (JACM)
The IJCAR-2004 automated theorem proving competition
AI Communications
The design and implementation of VAMPIRE
AI Communications - CASC
The model evolution calculus as a first-order DPLL method
Artificial Intelligence
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Representation dependence testing using program inversion
Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
Satisfiability solving and model generation for quantified first-order logic formulas
FoVeOOS'10 Proceedings of the 2010 international conference on Formal verification of object-oriented software
Relational reasoning via SMT solving
FM'11 Proceedings of the 17th international conference on Formal methods
An Instantiation Scheme for Satisfiability Modulo Theories
Journal of Automated Reasoning
Instantiation Schemes for Nested Theories
ACM Transactions on Computational Logic (TOCL)
CAV'13 Proceedings of the 25th international conference on Computer Aided Verification
Hi-index | 0.00 |
First-order logic provides a convenient formalism for describing a wide variety of verification conditions. Two main approaches to checking such conditions are pure first-order automated theorem proving (ATP) and automated theorem proving based on satisfiability modulo theories (SMT). Traditional ATP systems are designed to handle quantifiers easily, but often have difficulty reasoning with respect to theories. SMT systems, on the other hand, have built-in support for many useful theories, but have a much more difficult time with quantifiers. One clue on how to get the best of both worlds can be found in the legacy system Simplify which combines built-in theory reasoning with quantifier instantiation heuristics. Inspired by Simplify and motivated by a desire to provide a competitive alternative to ATP systems, this paper describes a methodology for reasoning about quantifiers in SMT systems. We present the methodology in the context of the Abstract DPLL Modulo Theories framework. Besides adapting many of Simplify's techniques, we also introduce a number of new heuristics. Most important is the notion of instantiation level which provides an effective mechanism for prioritizing and managing the large search space inherent in quantifier instantiation techniques. These techniques have been implemented in the SMT system CVC3. Experimental results show that our methodology enables CVC3 to solve a significant number of quantified benchmarks that were not solvable with previous approaches.