Satisfiability Modulo Theories - SMT Solvers

SMT Solvers

The table below summarizes some of the features of the many available SMT solvers. The column "SMT-LIB" indicates compatibility with the SMT-LIB language; many systems marked 'yes' may support only older versions of SMT-LIB, or offer only partial support for the language. The column "CVC" indicates support for the CVC language. The column "DIMACS" indicates support for the DIMACS format.

Projects differ not only in features and performance, but also in the viability of the surrounding community, its ongoing interest in a project, and its ability to contribute documentation, fixes, tests and enhancements. Based on these measures, it appears that the most vibrant, well-organized projects are OpenSMT, STP and CVC4.

Platform Features Notes
Name OS License SMT-LIB CVC DIMACS Built-in theories API SMT-COMP
ABsolver Linux CPL v1.2 No Yes linear arithmetic, non-linear arithmetic C++ no DPLL-based
Alt-Ergo Linux, Mac OS, Windows CeCILL-C partial v1.2 and v2.0 No No empty theory, linear integer and rational arithmetic, non-linear arithmetic, polymorphic arrays, enumerated datatypes, AC symbols, bitvectors, record datatypes, quantifiers OCaml 2008 Polymorphic first-order input language à la ML, SAT-solver based, combines Shostak-like and Nelson-Oppen like approaches for reasoning modulo theories
Barcelogic Linux Proprietary v1.2 empty theory, difference logic C++ 2009 DPLL-based, congruence closure
Beaver Linux, Windows BSD v1.2 No No bitvectors OCaml 2009 SAT-solver based
Boolector Linux GPLv3 v1.2 No No bitvectors, arrays C 2009 SAT-solver based
CVC3 Linux BSD v1.2 Yes empty theory, linear arithmetic, arrays, tuples, types, records, bitvectors, quantifiers C/C++ 2010 proof output to HOL
CVC4 Linux, Mac OS BSD Yes Yes rational and integer linear arithmetic, arrays, tuples, records, inductive data types, bit vectors, and equality over uninterpreted function symbols 2010 version 1.0 released Dec. 2012
Decision Procedure Toolkit (DPT) Linux Apache No OCaml no DPLL-based
iSAT Linux Proprietary No non-linear arithmetic no DPLL-based
MathSAT Linux Proprietary Yes Yes empty theory, linear arithmetic, bitvectors, arrays C/C++, Python, Java 2010 DPLL-based
MiniSmt Linux LGPL partial v2.0 non-linear arithmetic 2010 Yices-based
OpenSMT Linux, Mac OS, Windows GPLv3 partial v2.0 Yes empty theory, differences, linear arithmetic, bitvectors C++ 2011 lazy SMT Solver
SatEEn ? Proprietary v1.2 linear arithmetic, difference logic none 2009
SMT-RAT Linux, Mac OS GPLv3 v2.0 No No linear arithmetic, nonlinear arithmetic C++ no Toolbox offering theory solver modules for the development of SMT solvers for nonlinear real arithmetic (NRA). Example embedding in OpenSMT available.
SONOLAR Linux, Windows Proprietary partial v2.0 bitvectors C 2010 SAT-solver based
Spear Linux, Mac OS, Windows Proprietary v1.2 bitvectors 2008
STP Linux, OpenBSD, Windows, Mac OS MIT partial v2.0 Yes No bitvectors, arrays C, C++, Python, OCaml, Java 2011 SAT-solver based
SWORD Linux Proprietary v1.2 bitvectors 2009
UCLID Linux BSD No No No empty theory, linear arithmetic, bitvectors, and constrained lambda (arrays, memories, cache, etc.) no SAT-solver based, written in Moscow ML. Input language is SMV model checker. Well-documented!
veriT Linux BSD partial v2.0 empty theory, difference logic C/C++ 2010 SAT-solver based
Yices Linux, Mac OS, Windows Proprietary v1.2 2009
Z3 Linux, Mac OS, Windows, FreeBSD MSR-LA v2.0 Yes empty theory, linear arithmetic, nonlinear arithmetic, bitvectors, arrays, datatypes, quantifiers C/C++, .NET, OCaml, Python, Java 2011 Source code is available online

Read more about this topic:  Satisfiability Modulo Theories