A Two-Tier Technique for Supporting Quantifiers in a Lazily Proof-Explicating Theorem Prover - Leino, Rustan; Musuvathi, Madan; Ou, Xinmin (in TACAS 2005: Eleventh Conference on Tools and Algorithms for the Construction and Analysis of Software, 2005)
Lazy proof explication is a theorem-proving architecture that allows a combination of Nelson-Oppen-style decision procedures to leverage a SAT solver’s ability to perform propositional reasoning efficiently. The SAT solver finds ways to satisfy a given formula propositionally, while the various decision procedures perform theory reasoning to block propositionally satisfied instances that are not consistent with the theories. Supporting quantifiers in this architecture poses a challenge as quantifier instantiations can dynamically introduce boolean structure in the formula, requiring tighter interleaving between propositional and theory reasoning. This paper proposes handling quantifiers by using two SAT solvers, thereby separating the propositional reasoning of the input formula from that of the instantiated formulas. This technique can then reduce the propositional search space, with an eye toward improving performance. The technique can use off-the-shelf SAT solvers and requires only that the theories are checkpointable.