d-DNNF Modulo Theories: A General Framework for Polytime SMT Queries
This work addresses the challenge of efficient querying in SMT for researchers and practitioners in automated reasoning, though it appears incremental as it builds on existing d-DNNF compilation methods.
The paper tackles the problem of extending knowledge compilation techniques to Satisfiability Modulo Theories (SMT) by introducing a general framework that compiles SMT formulas into d-DNNF forms with pre-computed theory lemmas, enabling polytime queries. The result is a novel method that works for any theory and has been implemented with preliminary empirical support for effectiveness.
In Knowledge Compilation (KC) a propositional knowledge base is compiled off-line into some target form, typically into deterministic decomposable negation normal form (d-DNNF) or one of its subcases, which is then used on-line to answer a large number of queries in polytime, such as clausal entailment, model counting, and others. The general idea is to push as much of the computational effort into the off-line compilation phase, which is amortized over all on-line polytime queries. In this paper, we present for the first time a novel and general technique to leverage d-DNNF compilation and querying to SMT level. Intuitively, before d-DNNF compilation, the input SMT formula is combined with a list of pre-computed ad-hoc theory lemmas, so that the queries at SMT level reduce to those at propositional level. This approach has several features: (i) it works for every theory, or theory combination thereof; (ii) it works for all forms of d-DNNF; (iii) it is easy to implement on top of any d-DNNF compiler and any theory-lemma enumerator, which are used as black boxes; (iv) most importantly, these compiled SMT d-DNNFs can be queried in polytime by means of a standard propositional d-DNNF reasoner. We have implemented a tool on top of state-of-the-art d-DNNF packages and of the MathSAT SMT solver. Some preliminary empirical evaluation supports the effectiveness of the approach.