Skip to content

Commit ca686c7

Browse files
committed
update Readme and format tables.
1 parent 5de5afa commit ca686c7

File tree

1 file changed

+23
-21
lines changed

1 file changed

+23
-21
lines changed

README.md

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -60,19 +60,19 @@ Only a few SMT solvers provide support for theories like Arrays, Floating Point,
6060

6161
JavaSMT supports several SMT solvers (see [Getting Started](doc/Getting-started.md) for installation):
6262

63-
| SMT Solver | Linux x64 | Linux arm64 | Windows x64 | Windows arm64 | MacOS x64 | MacOS arm64 | Description |
64-
| --- |:---------------------:|:-------------------:|:---:|:---:|:------------------------------------------------------:|:---:|:--- |
65-
| [Bitwuzla](https://bitwuzla.github.io/) | :heavy_check_mark:² | :heavy_check_mark:² | :heavy_check_mark: | | | | a fast solver for bitvector logic |
66-
| [Boolector](https://boolector.github.io/) | :heavy_check_mark: | | | | | | a fast solver for bitvector logic, misses formula introspection, deprecated |
67-
| [CVC4](https://cvc4.github.io/) | :heavy_check_mark: | | | | | | |
68-
| [CVC5](https://cvc5.github.io/) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: | |
69-
| [MathSAT5](http://mathsat.fbk.eu/) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | [maybe](https://github.com/sosy-lab/java-smt/pull/430)³ | | |
70-
| [OpenSMT](https://verify.inf.usi.ch/opensmt) | :heavy_check_mark:² | :heavy_check_mark:² | | | | | |
71-
| [OptiMathSAT](http://optimathsat.disi.unitn.it/) | :heavy_check_mark: | | | | | | based on MathSAT5, with support for optimization queries |
72-
| [Princess](http://www.philipp.ruemmer.org/princess.shtml) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Java-based SMT solver |
73-
| [SMTInterpol](https://ultimate.informatik.uni-freiburg.de/smtinterpol/) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Java-based SMT solver |
74-
| [Yices2](https://yices.csl.sri.com/) | :heavy_check_mark: | | [maybe](https://github.com/sosy-lab/java-smt/pull/215) | | [maybe](https://github.com/sosy-lab/java-smt/pull/400)³ | | |
75-
| [Z3](https://github.com/Z3Prover/z3) | :heavy_check_mark:² | :heavy_check_mark:² | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | mature and well-known solver |
63+
| SMT Solver | Linux x64 | Linux arm64 | Windows x64 | Windows arm64 | MacOS x64 | MacOS arm64 | Description |
64+
| --- |:---:|:---:|:---:|:---:|:---:|:---:|:--- |
65+
| [Bitwuzla](https://bitwuzla.github.io/) | :heavy_check_mark:² | :heavy_check_mark:² | :heavy_check_mark: | | | | a fast solver for bitvector logic |
66+
| [Boolector](https://boolector.github.io/) | :heavy_check_mark: | | | | | | a fast solver for bitvector logic, misses formula introspection, deprecated |
67+
| [CVC4](https://cvc4.github.io/) | :heavy_check_mark: | | | | | | |
68+
| [CVC5](https://cvc5.github.io/) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: | |
69+
| [MathSAT5](http://mathsat.fbk.eu/) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | [maybe](https://github.com/sosy-lab/java-smt/pull/430) | | |
70+
| [OpenSMT](https://verify.inf.usi.ch/opensmt) | :heavy_check_mark:² | :heavy_check_mark:² | | | | | |
71+
| [OptiMathSAT](http://optimathsat.disi.unitn.it/) | :heavy_check_mark: | | | | | | based on MathSAT5, with support for optimization queries |
72+
| [Princess](http://www.philipp.ruemmer.org/princess.shtml) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Java-based SMT solver |
73+
| [SMTInterpol](https://ultimate.informatik.uni-freiburg.de/smtinterpol/) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Java-based SMT solver |
74+
| [Yices2](https://yices.csl.sri.com/) | :heavy_check_mark: | | [maybe](https://github.com/sosy-lab/java-smt/pull/215) | | [maybe](https://github.com/sosy-lab/java-smt/pull/400) | | |
75+
| [Z3](https://github.com/Z3Prover/z3) | :heavy_check_mark:³ | :heavy_check_mark:³ | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | mature and well-known solver |
7676

7777
We support a reasonable list of operating systems and versions.
7878
- Our main target is Linux (mainly Ubuntu or comparable Linux distributions).
@@ -88,7 +88,9 @@ available with Ubuntu 18.04 or later.
8888

8989
² Solver requires at least `GLIBC_2.29`/`GLIBCXX_3.4.26` or `GLIBC_2.34`/`GLIBCXX_3.4.29`,
9090
available with Ubuntu 22.04 or later.
91-
³ We do not provide a signed solver library for macOS. The user needs to compile and sign it.
91+
³ Solver requires at least `GLIBC_2.38`/`GLIBCXX_3.4.31`,
92+
available with Ubuntu 24.04 or later.
93+
⁴ We do not provide a signed solver library for macOS. The user needs to compile and sign it.
9294

9395
#### Solver Features
9496

@@ -109,7 +111,7 @@ If something specific is missing, please [look for or file an issue](https://git
109111

110112
#### Multithreading Support
111113

112-
| SMT Solver | Concurrent context usage | Concurrent prover usage |
114+
| SMT Solver | Concurrent context usage | Concurrent prover usage |
113115
| --- |:---:|:---:|
114116
| [Bitwuzla](https://bitwuzla.github.io/) | :heavy_check_mark: | |
115117
| [Boolector](https://boolector.github.io/) | :heavy_check_mark: | |
@@ -126,13 +128,13 @@ If something specific is missing, please [look for or file an issue](https://git
126128
Interruption using a [ShutdownNotifier][] may be used to interrupt a solver from any thread.
127129
Formulas are translatable in between contexts/provers/threads using _FormulaManager.translateFrom()_.
128130

129-
Multiple contexts, but all operations on each context only from a single thread.
130-
Multiple provers on one or more contexts, with each prover using its own thread.
131+
Multiple contexts, but all operations on each context only from a single thread.
132+
Multiple provers on one or more contexts, with each prover using its own thread.
131133

132134
#### Garbage Collection in Native Solvers
133135

134136
JavaSMT exposes an API for performing garbage collection on solvers implemented in a native language.
135-
As a native solver has no way of knowing whether the created formula object is still referenced
137+
As a native solver has no way of knowing whether the created formula object is still referenced
136138
by the client application, this API is necessary to avoid leaking memory.
137139
Note that several solvers already support _hash consing_ and thus,
138140
there is never more than one copy of an identical formula object in memory.
@@ -141,9 +143,9 @@ in the application, it is not necessary to perform any garbage collection at all
141143
Additionally, the memory for formulas created on user-side (i.e., via JavaSMT) is negligible
142144
compared to solver-internal memory-consumption when solving a hard SMT query.
143145

144-
- **Z3**: The parameter `solver.z3.usePhantomReferences` may be used to control
145-
whether JavaSMT will attempt to decrease references on Z3 formula
146-
objects once they are no longer referenced.
146+
- **Z3**: The parameter `solver.z3.usePhantomReferences` may be used to control
147+
whether JavaSMT will attempt to decrease references on Z3 formula objects
148+
once they are no longer referenced.
147149
- **MathSAT5**: Currently we do not support performing garbage collection for MathSAT5.
148150
- **CVC4, CVC5, Bitwuzla, OpenSMT**: Solvers using SWIG bindings do perform garbage collection.
149151
- **Other native SMT solvers**: we do not perform garbage collection.

0 commit comments

Comments
 (0)