  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.
