Skip to the content.
SwInE

SwInE (SMT with Integer Exponentiation) is an SMT solver with support for integer exponentation. To handle integer exponentation, it uses counterexample-guided abstraction refinement. More precisely, it abstracts integer exponentiation with an uninterpreted function, inspects the models that are found by an underlying SMT solver with support for non-linear integer arithmetic and uninterpreted functions, and computes lemmas to eliminate those models if they violate the semantics of exponentiation.

There are two implementations of SwInE:

News

Downloading SwInE

Input Format

SwInE 2

SwInE 2 supports the SMT-LIB logic QF_EIA, which includes a binary function symbol ** for exponentiation. Here you can find an example. Please use (set-logic ALL) to enable support for integer exponentiation.

The semantics of ** is s ** t = st if st is an integer, and s ** t = 0, otherwise.

SwInE 1

SwInE 1 supports an extension of the SMT-LIB logic QF_NIA with an additional binary function symbol exp, whose arguments have to be of sort Int. Here you can find an example. Please use (set-logic ALL) to enable support for integer exponentiation.

The semantics of exp is exp(s,t) = s|t|.

Using SwInE

Both implementations of SwInE support the flag --help, which provides detailed information on using SwInE.

Build

For SwInE 2, see here.

For SwInE 1, proceed as follows:

  1. think about using one of our releases instead
  2. install Docker
  3. go to the subdirectory scripts
  4. execute ./build-container.sh to initialize the Docker container that is used for building SwInE
  5. execute ./build.sh to build a statically linked binary (build/swine)
  6. if you want to contribute to SwInE, execute ./qtcreator.sh to start a pre-configured IDE, which runs in a Docker container as well
  7. if you experience any problems, contact florian.frohn [at] cs.rwth-aachen.de