packages feed

smtlib2-1.0: README.org

This library provides a pure haskell interface to many SMT solvers by
implementing the [[http://www.smtlib.org/][SMTLib2 language]]. SMT solving is done by spawning a
SMT solver process and communicating with it.

* Features
  
  - Communication via the SMTLIB2-format with solvers who support it
    (Currently Z3, MathSAT and CVC4).
  - Native bindings for solvers without a (proper) SMTLIB2 interface
    (Currently stp, boolector and yices).
  - Supports haskell data types (automatic instance generation
    available via template-haskell).

* Installation
  To install this package, you need [[http://www.haskell.org/haskellwiki/Cabal-Install][cabal-install]].
  The first package to install must be "smtlib2":

  #+BEGIN_SRC sh
  cabal install
  #+END_SRC

  After this, you can install the extra packages in whatever order you
  wish.

  | Package           | Location           |
  |-------------------+--------------------|
  | smtlib2-th        | extras/th          |
  | smtlib2-stp       | backends/stp       |
  | smtlib2-boolector | backends/boolector |
  | smtlib2-yices     | backends/yices     |

* Supported solvers
  For the moment, only [[http://research.microsoft.com/en-us/um/redmond/projects/z3/][Z3]] supports every feature implemented in this
  interface. [[http://mathsat4.disi.unitn.it/][MathSAT]] implements most features, except for data types.

| Solver    | Version | SMTLib2 format | Bitvectors | Integer | Enumerations | Datatypes |
|-----------+---------+----------------+------------+---------+--------------+-----------|
| Z3        |     4.3 | yes            | yes        | yes     | yes          | yes       |
| MathSAT   |  5.2.10 | yes            | yes        | yes     | no           | no        |
| STP       |         | incomplete     | yes        | no      | no           | no        |
| Yices     |   2.1.0 | no             | yes        | yes     | yes          | no        |
| Boolector |   1.6.0 | incomplete     | yes        | no      | no           | no        |
| CVC4      |     1.4 | yes            | yes        | yes     | no           | yes       |