Py-pysmt

Jul 20, 2023

Solver-agnostic library for SMT formulae manipulation and solving

pySMT is a library for SMT formulae manipulation and solving, which makes working with Satisfiability Modulo Theory simple.

Among others, the user can

  • Define formulae in a solver independent way in a simple and inutitive way,
  • Write ad-hoc simplifiers and operators,
  • Dump your problems in the SMT-Lib format,
  • Solve them using one of the native solvers, or by wrapping any SMT-Lib complaint solver.

pySMT provides methods to define a formula in Linear Real Arithmetic LRA, Real Difference Logic RDL, their combination LIRA, Equalities and Uninterpreted Functions EUF, Bit-Vectors BV, and Arrays A. The following solvers are supported through native APIs MathSAT, Z3, CVC4, Yices, CUDD, PicoSAT, and 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.



Checkout these related ports:
  • Zn_poly - C library for polynomial arithmetic
  • Zimpl - Language to translate the LP models into .lp or .mps
  • Zegrapher - Software for plotting mathematical objects
  • Zarray - Dynamically typed N-D expression system based on xtensor
  • Z3 - Z3 Theorem Prover
  • Yices - SMT solver
  • Yacas - Yet Another Computer Algebra System
  • Xtensor - Multi-dimensional arrays with broadcasting and lazy computing
  • Xtensor-python - Python bindings for xtensor
  • Xtensor-io - Xtensor plugin to read/write images, audio files, numpy npz and HDF5
  • Xtensor-blas - BLAS extension to xtensor
  • Xspread - Spreadsheet program for X and terminals
  • Xppaut - Graphical tool for solving differential equations, etc
  • Xplot - X11 plotting package
  • Xlife++ - XLiFE++ eXtended Library of Finite Elements in C++