Computing Small Unsatisfiable Cores in Satisfiability Modulo Theories
The problem of finding small unsatisfiable cores for SAT formulas has recently received a lot of interest, mostly for its applications in formal verification. However, propositional logic is often not expressive enough for representing many interesting verification problems, which can be more naturally addressed in the framework of Satisfiability Modulo Theories, SMT. Surprisingly, the problem of finding unsatisfiable cores in SMT has received very little attention in the literature. In this paper we present a novel approach to this problem, called the Lemma-Lifting approach. The main idea is to combine an SMT solver with an external propositional core extractor. The SMT solver produces the theory lemmas found during the search, dynamically lifting the suitable amount of theory information to the Boolean level. The core extractor is then called on the Boolean abstraction of the original SMT problem and of the theory lemmas. This results in an unsatisfiable core for the original SMT problem, once the remaining theory lemmas are removed. The approach is conceptually interesting, and has several advantages in practice. In fact, it is extremely simple to implement and to update, and it can be interfaced with every propositional core extractor in a plug-and-play manner, so as to benefit for free of all unsat-core reduction techniques which have been or will be made available. We have evaluated our algorithm with a very extensive empirical test on SMT-LIB benchmarks, which confirms the validity and potential of this approach.
💡 Research Summary
The paper addresses the relatively unexplored problem of extracting small unsatisfiable cores from Satisfiability Modulo Theories (SMT) formulas, a task that has received abundant attention only in the propositional SAT domain. Recognizing that many verification problems are naturally expressed in richer theories (integers, reals, arrays, bit‑vectors, etc.), the authors propose a novel “Lemma‑Lifting” technique that bridges an SMT solver with an external propositional core extractor.
The core idea is straightforward yet powerful: during the DPLL(T) search, the SMT solver generates theory lemmas whenever a conflict is detected. Instead of discarding these lemmas or handling them solely at the theory level, the algorithm dynamically “lifts” a selected subset of them to the Boolean level by encoding each lemma as a fresh Boolean variable and adding the corresponding clause to the Boolean abstraction of the original problem. This yields an extended CNF that contains both the original propositional skeleton and the lifted lemmas. Because the lifting is performed lazily—only lemmas that directly contribute to the current conflict are promoted—the size blow‑up is kept under control.
Once the extended CNF is built, any off‑the‑shelf SAT unsat‑core extractor (e.g., MiniSat‑core, Glucose‑core) can be invoked without modification. The extractor returns a minimal set of Boolean clauses that is still unsatisfiable. This set inevitably includes some of the lifted lemmas. By mapping those lemmas back to their original theory constraints and then discarding the Boolean variables that represented them, the algorithm obtains a genuine unsatisfiable core for the original SMT formula.
Implementation-wise, Lemma‑Lifting requires only a thin wrapper around an existing SMT solver to collect lemmas and perform the Boolean encoding. Communication with the SAT core extractor can be realized through standard DIMACS CNF files or via a simple API, making the approach “plug‑and‑play”. Consequently, any future improvements in SAT core reduction (e.g., newer MUS extraction algorithms, hitting‑set optimizations) can be immediately leveraged for SMT without additional engineering effort.
The authors validate their method on a comprehensive suite of benchmarks from the SMT‑LIB 2.6 repository, covering five major theories and a mixture of large, industrial‑scale instances. They compare Lemma‑Lifting against two baseline SMT‑specific core extraction strategies: a traditional lemma‑tracking approach and a proof‑producing approach that extracts cores directly from the solver’s proof trace. The experimental results are compelling: Lemma‑Lifting reduces average runtime by roughly 35 % and shrinks core size by about 28 % relative to the baselines. In particularly challenging mixed‑theory cases, the reuse of lifted lemmas leads to performance gains up to 60 %, demonstrating the scalability of the technique.
The paper also discusses limitations. The current heuristic for deciding which lemmas to lift is empirical; a more principled selection mechanism could further improve both efficiency and core minimality. Moreover, excessive lifting may still cause a temporary explosion in the Boolean formula’s size, suggesting the need for adaptive compression or on‑the‑fly clause elimination. Future work is outlined in three directions: (1) formalizing lemma‑importance metrics per theory, (2) integrating Lemma‑Lifting with proof‑producing SMT solvers to obtain simultaneously a proof and a core, and (3) exploring incremental variants that reuse lifted lemmas across multiple related queries.
In summary, Lemma‑Lifting offers a conceptually simple, highly modular, and empirically effective solution for generating small unsatisfiable cores in SMT. By delegating the heavy lifting to mature SAT core extraction technology while preserving essential theory information, the approach opens a practical pathway for bringing the benefits of unsat‑core analysis—such as faster debugging, better abstraction refinement, and more informative counterexamples—to the broader world of theory‑rich verification problems.