Skip to main content Accessibility help

Constraint solving for finite model finding in SMT solvers*


Satisfiability modulo theories (SMT) solvers have been used successfully as reasoning engines for automated verification and other applications based on automated reasoning. Current techniques for dealing with quantified formulas in SMT are generally incomplete, forcing SMT solvers to report “unknown” when they fail to prove the unsatisfiability of a formula with quantifiers. This inability to return counter models limits their usefulness in applications that produce queries involving quantified formulas. In this paper, we reduce these limitations by integrating finite model finding techniques based on constraint solving into the architecture used by modern SMT solvers. This approach is made possible by a novel solver for cardinality constraints, as well as techniques for on-demand instantiation of quantified formulas. Experiments show that our approach is competitive with the state of the art in SMT, and orthogonal to approaches in automated theorem proving.

Hide All

The work of the first two authors was partially funded by a grant from Intel Corporation.

Hide All
Baader, F. and Nipkow, T. 1998. Term Rewriting and All That. Cambridge University Press.
Barrett, C., Conway, C., Deters, M., Hadarean, L., Jovanovic, D., King, T., Reynolds, A. and Tinelli, C. 2011. CVC4. In Proc. of CAV'11, Lecture Notes in Computer Science, vol. 6806. Springer, 171–177.
Barrett, C., Nieuwenhuis, R., Oliveras, A. and Tinelli, C. 2006. Splitting on demand in SAT modulo theories. In Proc. of LPAR'06, Lecture Notes in Computer Science, vol. 4246. Springer, 512–526.
Barrett, C. and Tinelli, C. 2007. CVC3. In Proc. of the 19th International Conference on Computer Aided Verification (CAV '07), Damm, W. and Hermanns, H., Eds. Lecture Notes in Computer Science, vol. 4590. Springer-Verlag, Berlin, Germany, 298–302.
Baumgartner, P., Bax, J. and Waldmann, U. 2014. Finite quantification in hierarchic theorem proving. In Proc. of Automated Reasoning - 7th International Joint Conference, IJCAR 2014, Held as Part of the Vienna Summer of Logic, VSL 2014, Vienna, Austria, pp. 152–167.
Baumgartner, P., Fuchs, A., de Nivelle, H. and Tinelli, C. 2009. Computing finite models by reduction to function-free clause logic. Journal of Applied Logic 7 (1), 5874.
Blanchette, J. C., Böhme, S. and Paulson, L. C. 2011. Extending Sledgehammer with SMT solvers. In Automated Deduction, vol. 6803, Børner, N. and Sofronie-Stokkermans, V., Eds. Lecture Notes in Computer Science, Springer, 116130.
Blanchette, J. C. and Nipkow, T. 2010. Nitpick: A counterexample generator for higher-order logic based on a relational model finder. In ITP 2010, Kaufmann, M. and Paulson, L. C., Eds. Lecture Notes in Computer Science, vol. 6172. Springer, 131146.
Bruttomesso, R., Cimatti, A., Franzén, A., Griggio, A. and Sebastiani, R. 2009. Delayed theory combination versus Nelson-Oppen for satisfiability modulo theories: A comparative analysis. AMAI 55 (1–2), 6399.
Claessen, K. and Sörensson, N. 2003. New techniques that improve MACE-style finite model building. In CADE-19 Workshop: Model Computation – Principles, Algorithms, Applications, 11–27.
de Moura, L. and Bjørner, N. 2007. Efficient E-matching for SMT solvers. In Proc. of Automated Deduction - CADE-21, 21st International Conference on Automated Deduction, Lecture Notes in Computer Science, vol. 4603. Springer, Bremen, Germany, 183–198.
De Moura, L. and Bjørner, N. 2008. Z3: An efficient SMT solver. In Proc. of the Theory and Practice of Software, 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems, TACAS'08/ETAPS'08, Springer-Verlag, Berlin, Heidelberg, 337–340.
Déharbe, D., Fontaine, P., Merz, S. and Paleo, B. W. 2011. Exploiting symmetry in SMT problems. In Proc. of CADE-23, Lecture Notes in Computer Science, vol. 6803. Springer, 222–236.
Detlefs, D., Nelson, G. and Saxe, J. B. 2003. Simplify: A theorem prover for program checking. Journal of ACM 52 (3), 365473.
Dutertre, B. and De Moura, L. 2006. The Yices SMT solver. Version 2.2. Tool paper at
Garey, M. R., Johnson, D. S. and Stockmeyer, L. 1974. Some simplified np-complete problems. In Proc. of the 6th Annual ACM Symposium on Theory of Computing, STOC '74, ACM, New York, NY, USA, 47–63.
Ge, Y., Barrett, C. and Tinelli, C. 2009. Solving quantified verification conditions using satisfiability modulo theories. Annals of Mathematics and Artificial Intelligence 55 (1–2), 101122.
Ge, Y. and de Moura, L. 2009. Complete instantiation for quantified formulas in satisfiability modulo theories. In Proc. of CAV'09, Lecture Notes in Computer Science, vol. 5643. Springer, 306–320.
Goel, A., Krstić, S., Leslie, R. and Tuttle, M. 2012. SMT-based system verification with DVF. In Proc. of SMT'12.
Ihlemann, C., Jacobs, S. and Sofronie-Stokkermans, V. 2008. On local reasoning in verification. In TACAS 2008, Ramakrishnan, C. R. and Rehof, J., Eds. Springer, Berlin Heidelberg, 265281.
Jovanovic, D. and Barrett, C. 2013. Being careful about theory combination. Formal Methods in System Design 42 (1), 6790.
Korovin, K. 2008. iProver – an instantiation-based theorem prover for first-order logic. In Proc. of IJCAR'08, Lecture Notes in Computer Science, vol. 5195. Springer, 292–298.
Kovács, L. and Voronkov, A. 2013. First-order theorem proving and vampire. In Proc. of Computer Aided Verification - 25th International Conference, CAV 2013, Saint Petersburg, Russia, 1–35.
Krstić, S. and Goel, A. 2007. Architecting solvers for SAT modulo theories: Nelson-Oppen with DPLL. In Proc. of FroCoS'07, Lecture Notes in Computer Science, vol. 4720. Springer, 1–27.
McCune, W. 1994. A Davis–Putnam Program and its Application to Finite First-Order Model Search: Quasigroup Existence Problems. Technical Report, Argonne National Laboratory.
Nieuwenhuis, R., Oliveras, A. and Tinelli, C. 2006. Solving SAT and SAT modulo theories: From an abstract Davis-Putnam-Logemann-Loveland procedure to DPLL(T). Journal of the ACM 53 (6), 937977.
Paulson, L. C. and Wenzel, M. 2002. Isabelle/HOL: A Proof Assistant for Higher-Order Logic, vol. 2283. Springer.
Reger, G., Suda, M. and Voronkov, A. 2016. Finding finite models in multi-sorted first-order logic. In Proc. of Theory and Applications of Satisfiability Testing - SAT 2016 - 19th International Conference, Bordeaux, France, 323–341.
Reynolds, A. J. 2013. Finite Model Finding in Satisfiability Modulo Theories. PhD Thesis, The University of Iowa.
Reynolds, A., Tinelli, C., Goel, A. and Krstić, S. 2013. Finite model finding in SMT. In Computer Aided Verification, vol. 8044, Sharygina, N. and Veith, H., Eds. Lecture Notes in Computer Science, Springer, Berlin Heidelberg, 640655.
Reynolds, A., Tinelli, C., Goel, A., Krstić, S., Deters, M. and Barrett, C. 2013. Quantifier instantiation techniques for finite model finding in SMT. In Automated Deduction - CADE-24, Bonacina, M. P. Ed. Lecture Notes in Computer Science, vol. 7898. Springer, Berlin Heidelberg, 377391.
Reynolds, A., Tinelli, C. and de Moura, L. M. 2014. Finding conflicting instances of quantified formulas in SMT. In FMCAD, IEEE, 195202.
Schulz, S. 2002. E–a brainiac theorem prover. Ai Communications 15 (2, 3), 111126.
Sutcliffe, G. 2009. The TPTP problem library and associated infrastructure: The FOF and CNF parts, v3.5.0. Journal of Automated Reasoning 43 (4), 337362.
Tinelli, C. and Harandi, M. T. 1996. A new correctness proof of the Nelson–Oppen combination procedure. In Proc. of FroCoS'96, Applied Logic, Kluwer, Academic Publishers, 103–120.
Torlak, E. and Jackson, D. 2007. Kodkod: A relational model finder. In Proc. of TACAS'07, Lecture Notes in Computer Science, vol. 4424. Springer, 632–647.
Tuttle, M. R. and Goel, A. 2012. Protocol proof checking simplified with SMT. In Proc. of NCA'12, IEEE Computer Society, 195–202.
Zhang, J. and Zhang, H. 1995. SEM: A system for enumerating models. In Proc. of IJCAI'95, 298–303.
Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Theory and Practice of Logic Programming
  • ISSN: 1471-0684
  • EISSN: 1475-3081
  • URL: /core/journals/theory-and-practice-of-logic-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *



Full text views

Total number of HTML views: 0
Total number of PDF views: 0 *
Loading metrics...

Abstract views

Total abstract views: 0 *
Loading metrics...

* Views captured on Cambridge Core between <date>. This data will be updated every 24 hours.

Usage data cannot currently be displayed