Multi-platform binary creation for solvers of the versions most suitable for use with What4, as well as tools built on top of What4, such as Cryptol, Crux, and SAW.
Binary distributions can be found at the
releases page.
Currently, what4-solvers
offers the following solver versions:
- ABC - 99ab99bf
- Bitwuzla - 0.3.0
- Boolector - 3.2.2
- CVC4 - 1.8
- CVC5 - 1.1.1
- Yices - 2.6.2
- Z3 - 4.8.8 and 4.8.14
Built for the following operating systems:
- macOS Monterey 12 (x86-64)
- macOS Sonoma 14 (arm64)
- Ubuntu 20.04 (x86-64)
- Ubuntu 22.04 (x86-64)
- Windows Server 2019 (x86-64)
All of the binary distributions are built from CI.
We attempt to offer somewhat broad coverage of different Linux versions. To
that end, we build each solver on the two most recent Ubuntu LTS releases. This
ensures relatively complete coverage of different shared library dependencies
(e.g., different glibc
versions).
We use Z3 as the default SMT solver in many different projects' CI, including the CI for Cryptol and SAW. Unfortunately, certain Z3 versions have been known to non-deterministically fail or time out on certain SMT queries. See, for example, this Cryptol issue regarding Z3 4.8.10 and this SAW issue regarding Z3 4.8.14. As a consequence, it is very difficult to find a single Z3 version that works reliably across all of our tools' CI.
As a compromise, we offer multiple Z3 versions so that tools can pick one that is known to work well for their particular needs. If we successfully identify a later version of Z3 that is known to work reliably across all CI configurations, we may reconsider this choice.