PySMT is a python API for interfacing with a variety of SMT solvers.
pySMT makes working with Satisfiability Modulo Theory simple:
Define formulae in a simple, intuitive, and solver independent way
Solve your formulae using one of the native solvers, or by wrapping any SMT-Lib compliant solver,
Dump your problems in the SMT-Lib format,
and more...
pySMT provides methods to define a formula in Linear Real Arithmetic (LRA), Real Difference Logic (RDL), Equalities and Uninterpreted Functions (EUF), Bit-Vectors (BV), Arrays (A), Strings (S) and their combinations. The following solvers are supported through native APIs:
- MathSAT (http://mathsat.fbk.eu/)
- Z3 (https://github.com/Z3Prover/z3/)
- CVC4 (http://cvc4.cs.nyu.edu/web/)
- Yices 2 (http://yices.csl.sri.com/)
- CUDD (http://vlsi.colorado.edu/~fabio/CUDD/)
- PicoSAT (http://fmv.jku.at/picosat/)
- Boolector (http://fmv.jku.at/boolector/)
Additionally, you can use any SMT-LIB 2 compliant solver.
PySMT assumes that the python bindings for the SMT Solver are installed and accessible from your PYTHONPATH
.
pySMT works on both Python 3.5 and Python 2.7.