Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
9ed415f
Yices: Add yices_has_mcsat to the bindings
daniel-raffler Sep 11, 2025
03e6493
Yices: Use absolute paths in the build script
daniel-raffler Sep 11, 2025
eedb5a7
Yices: Use the right "version" property when building yices
daniel-raffler Sep 11, 2025
366369e
Yices: Update dependencies for yices
daniel-raffler Sep 11, 2025
4a54884
Yices: API updates
daniel-raffler Sep 11, 2025
b685751
Yices: Use yices_get_term_name to get the name of a function
daniel-raffler Sep 11, 2025
c56fc2a
Yices: Enable tests that require parallel solver instances
daniel-raffler Sep 11, 2025
376e4bc
Yices: Enable VariableNamesTest.testBoolVariableDump()
daniel-raffler Sep 11, 2025
2a6c457
Yices: Disable tests that are too slow
daniel-raffler Sep 11, 2025
61445a9
YIces: Fix handling of solver errors
daniel-raffler Sep 11, 2025
9ffbea4
Merge remote-tracking branch 'origin/master' into yices-2.7.0
daniel-raffler Feb 2, 2026
732b0f1
Add missing import
daniel-raffler Feb 2, 2026
c26f145
Yices2: Use install paths in the compilation script
daniel-raffler Feb 2, 2026
0ee9815
Yices2: Update build instructions
daniel-raffler Feb 2, 2026
15d36f3
Merge branch 'master' into yices-2.7.0
daniel-raffler Mar 2, 2026
1385e77
Yices: Remove 32bit build option
daniel-raffler Mar 2, 2026
11267ec
Yices: Update build script for MCSAT
daniel-raffler Mar 2, 2026
dfaedbc
Yices: Update build instructions
daniel-raffler Mar 2, 2026
8a35eb6
Yices: Update tests
daniel-raffler Mar 2, 2026
f081239
Yices: Use MCSAT in JavaSMT
daniel-raffler Mar 3, 2026
54cad9f
Yices: Add interpolation to JNI bindings
daniel-raffler Mar 3, 2026
5ea582c
Fix editing mistake
daniel-raffler Mar 3, 2026
4c00ba0
Yices: Recompile with both thread safety and MCSAT support
daniel-raffler Mar 3, 2026
0a7422d
CI
daniel-raffler Mar 3, 2026
79f9999
Yices: Disable array tests
daniel-raffler Mar 3, 2026
2d9bcb8
Yices: Rename Yices2TheoremProver to Yices2AbstractProver
daniel-raffler Mar 3, 2026
0b32987
Yices: Split off new Yices2Prover class
daniel-raffler Mar 3, 2026
259ed36
Yices: Add interpolation
daniel-raffler Mar 4, 2026
3925f17
Yices: Print error message if interpolation fails
daniel-raffler Mar 4, 2026
d6d1fe9
Yices: Remove build files when `ant clean` is run
daniel-raffler Mar 4, 2026
9ad3504
Yices: Change version name to 2.7.0
daniel-raffler Mar 4, 2026
470c909
Yices: Simplify interpolation code
daniel-raffler Mar 4, 2026
cc6eb5b
Yices: Add a native test to check the solver version
daniel-raffler Mar 4, 2026
594afde
Yices: Skip pushing assertions when planning to calculate an unsat core
daniel-raffler Mar 4, 2026
57505e1
Yices: Re-enable unsat core tests
daniel-raffler Mar 4, 2026
75f8b02
Yices: Use dpllt for unsat core
daniel-raffler Mar 4, 2026
b289de6
Yices: Switch back to MCSAT for all provers
daniel-raffler Mar 5, 2026
93f1542
Yices: Short circuit formula translation if the other context is also…
daniel-raffler Mar 5, 2026
6633cb1
Yices: Fix assumption tracking
daniel-raffler Mar 6, 2026
c68d1e6
Yices: Switch to using the official Java bindings
daniel-raffler Mar 7, 2026
951ddb3
Yices: Update tests for Yices 2.8
daniel-raffler Mar 8, 2026
e0b7c00
Yices: Add support for sums and products in the visitor
daniel-raffler Mar 8, 2026
e89734e
Yices: Fix bv sums
daniel-raffler Mar 8, 2026
c80f0fd
Yices: Print error message when function is called with wrong number …
daniel-raffler Mar 8, 2026
f457738
Yices: Suppress `unchecked` warnings
daniel-raffler Mar 8, 2026
a989722
Yices: Use larger print window to make sure formulas are not cut off
daniel-raffler Mar 9, 2026
84ed2ab
Use a simpler example in `simpleInterpolation` and `emptyInterpolatio…
daniel-raffler Mar 9, 2026
5f42bad
Merge branch 'refs/heads/master' into yices-2.7.0
daniel-raffler Mar 9, 2026
54bd265
Yices: Fix handling of UFs with no arguments
daniel-raffler Mar 9, 2026
8d8ca8e
Yices: Add an option for picking the solver (DPLLT or MCSat)
daniel-raffler Mar 9, 2026
1270cdb
Yices: Add a hack to handle bv terms in the visitors
daniel-raffler Mar 9, 2026
3d12d46
Yices: Actually apply solver options
daniel-raffler Mar 9, 2026
3d80609
Yices: Update build instructions
daniel-raffler Mar 10, 2026
bbf18f3
Yices: Add a build script
daniel-raffler Mar 11, 2026
6a9b40c
Yices: Add yices patch
daniel-raffler Mar 11, 2026
bb4b9d2
Yices: Remove dead code
daniel-raffler Mar 12, 2026
dd62a9a
Yices: Turn missing native tests back on
daniel-raffler Mar 12, 2026
fc78997
Yices: Update tests
daniel-raffler Mar 13, 2026
c984dee
Yices: Update more model tests
daniel-raffler Mar 13, 2026
91c9f42
Yices: Check shutdown notifier before interpolating, and print a bett…
daniel-raffler Mar 13, 2026
e0aa8fb
Yices: Turn a model test back on
daniel-raffler Mar 13, 2026
68ed6fe
Yices: Update build docs
daniel-raffler Mar 13, 2026
891c1ba
Format
daniel-raffler Mar 13, 2026
e5055ef
Merge branch 'refs/heads/master' into yices-2.7.0
daniel-raffler Mar 13, 2026
0c34471
Clean up
daniel-raffler Mar 13, 2026
a22273f
Yices: Add comments about failing interpolation tests
daniel-raffler Mar 14, 2026
d328684
Yices: Add support for arrays with multiple indices
daniel-raffler Mar 14, 2026
bf748bc
Yices: Set `hasPersistentModel` to true
daniel-raffler Mar 14, 2026
c6b1d55
Yices: Make new classes package private
daniel-raffler Mar 14, 2026
56d653d
Yices: Use assumption solving wrapper
daniel-raffler Mar 14, 2026
937e034
Yices: Fix issue in getModel when GENERATE_UNSAT_CORE has been set
daniel-raffler Mar 14, 2026
147ce7c
Yices: Inline a method
daniel-raffler Mar 14, 2026
70a1502
Yices: Add missing newline
daniel-raffler Mar 14, 2026
c1b2204
Yices: Turn the final interpolation test back on
daniel-raffler Mar 14, 2026
46f8cae
Yices: Use property to skip loading the Yices library
daniel-raffler Mar 14, 2026
fd3f4bd
Yices: Add ant targets to clean the build
daniel-raffler Mar 15, 2026
3635aa5
Yices: Use generic methods to handle sum and product terms
daniel-raffler Mar 15, 2026
764ee9e
Yices: Add Windows binaries
daniel-raffler Mar 17, 2026
d34d8d8
Yices: Only use 8 threads for the mingw build to avoid OOM crashes
daniel-raffler Mar 17, 2026
a9c9dfc
Yices: Update feature table
daniel-raffler Mar 17, 2026
9907e24
Yices: Disable autoloader in native tests
daniel-raffler Mar 18, 2026
40beee3
Yices: Enable Windows tests
daniel-raffler Mar 18, 2026
67ad89c
Yices: Enable division by zero tests
daniel-raffler Mar 18, 2026
4340a3e
CI
daniel-raffler Mar 18, 2026
d61d6fa
Yices: Fix an error message
daniel-raffler Mar 18, 2026
47c6b82
Yices: Add support for modulo in the visitor
daniel-raffler Mar 18, 2026
c87aa50
Yices: Fix products in the visitor
daniel-raffler Mar 18, 2026
f0a2038
Yices: Fix products/sums with more than 2 terms
daniel-raffler Mar 18, 2026
1895636
Yices: Rewrite "bit" and "bool-to-bv" terms in the visitor
daniel-raffler Mar 18, 2026
511800d
Yices: Don't rewrite and/or terms with more than 2 arguments
daniel-raffler Mar 18, 2026
946beae
Yices: Update maven script
daniel-raffler Mar 19, 2026
452ff93
Merge remote-tracking branch 'origin/master' into yices-2.7.0
kfriedberger Mar 22, 2026
5b05761
Yices2: fix unit test for Boolector and CVC4 (Linux only).
kfriedberger Mar 23, 2026
0413428
Yices2: update build-scripts and documentation
kfriedberger Mar 23, 2026
44b2ed3
Yices2: update JavaSMT bindings for Yices2 to v6.0.0-141-g04134287c
kfriedberger Mar 23, 2026
b0254e3
Yices2: apply Refaster findings.
kfriedberger Mar 23, 2026
09af75a
Yices2: ignore certain architectures or older systems in tests.
kfriedberger Mar 23, 2026
661c824
Yices2: fix AppVeyor CI config.
kfriedberger Mar 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ build_script:
Copy-Item -Path "lib\java\runtime-mathsat\x64\*.dll" -Destination "lib\native\x86_64-windows\" -Force
Copy-Item -Path "lib\java\runtime-bitwuzla\x64\*.dll" -Destination "lib\native\x86_64-windows\" -Force
Copy-Item -Path "lib\java\runtime-cvc5\x64\*.dll" -Destination "lib\native\x86_64-windows\" -Force
Copy-Item -Path "lib\java\runtime-yices2\x64\*.dll" -Destination "lib\native\x86_64-windows\" -Force

test_script:
- ant unit-tests
Expand Down
9 changes: 9 additions & 0 deletions .idea/JavaSMT.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

54 changes: 27 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,20 +61,20 @@ Only a few SMT solvers provide support for theories like Arrays, Floating Point,

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

| SMT Solver | Linux x64 | Linux arm64 | Windows x64 | Windows arm64 | MacOS x64 | MacOS arm64 | Description |
| --- |:---:|:---:|:---:|:---:|:---:|:---:|:--- |
| [Bitwuzla](https://bitwuzla.github.io/) | :heavy_check_mark:² | :heavy_check_mark:² | :heavy_check_mark: | | | | a fast solver for bitvector logic |
| [Boolector](https://boolector.github.io/) | :heavy_check_mark: | | | | | | a fast solver for bitvector logic, misses formula introspection, deprecated |
| [CVC4](https://cvc4.github.io/) | :heavy_check_mark: | | | | | | |
| [CVC5](https://cvc5.github.io/) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |
| [MathSAT5](http://mathsat.fbk.eu/) | :heavy_check_mark:³ | :heavy_check_mark:³ | :heavy_check_mark: | | [maybe](https://github.com/sosy-lab/java-smt/pull/430)⁴ | | |
| [OpenSMT](https://verify.inf.usi.ch/opensmt) | :heavy_check_mark:² | :heavy_check_mark:² | | | | | |
| [OptiMathSAT](http://optimathsat.disi.unitn.it/) | :heavy_check_mark: | | | | | | based on MathSAT5, with support for optimization queries |
| [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 |
| [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 |
| [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)⁴ | | |
| [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 |
| [Z3_WITH_INTERPOLATION](https://github.com/Z3Prover/z3) | :heavy_check_mark: | :heavy_check_mark: | | | | | an older version of Z3 that still provides interpolation support |
| SMT Solver | Linux x64 | Linux arm64 | Windows x64 | Windows arm64 | MacOS x64 | MacOS arm64 | Description |
|-------------------------------------------------------------------------|:-------------------:|:-------------------:|:------------------:|:------------------:|:-------------------------------------------------------:|:------------------:|:----------------------------------------------------------------------------|
| [Bitwuzla](https://bitwuzla.github.io/) | :heavy_check_mark:² | :heavy_check_mark:² | :heavy_check_mark: | | | | a fast solver for bitvector logic |
| [Boolector](https://boolector.github.io/) | :heavy_check_mark: | | | | | | a fast solver for bitvector logic, misses formula introspection, deprecated |
| [CVC4](https://cvc4.github.io/) | :heavy_check_mark: | | | | | | |
| [CVC5](https://cvc5.github.io/) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | |
| [MathSAT5](http://mathsat.fbk.eu/) | :heavy_check_mark:³ | :heavy_check_mark:³ | :heavy_check_mark: | | [maybe](https://github.com/sosy-lab/java-smt/pull/430)⁴ | | |
| [OpenSMT](https://verify.inf.usi.ch/opensmt) | :heavy_check_mark:² | :heavy_check_mark:² | | | | | |
| [OptiMathSAT](http://optimathsat.disi.unitn.it/) | :heavy_check_mark: | | | | | | based on MathSAT5, with support for optimization queries |
| [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 |
| [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 |
| [Yices2](https://yices.csl.sri.com/) | :heavy_check_mark: | | :heavy_check_mark: | | [maybe](https://github.com/sosy-lab/java-smt/pull/400)⁴ | | |
| [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 |
| [Z3_WITH_INTERPOLATION](https://github.com/Z3Prover/z3) | :heavy_check_mark: | :heavy_check_mark: | | | | | an older version of Z3 that still provides interpolation support |

We support a reasonable list of operating systems and versions.
- Our main target is Linux (mainly Ubuntu or comparable Linux distributions).
Expand Down Expand Up @@ -114,19 +114,19 @@ If something specific is missing, please [look for or file an issue](https://git

#### Multithreading Support

| SMT Solver | Concurrent context usage⁵ | Concurrent prover usage⁶ |
| --- |:---:|:---:|
| [Bitwuzla](https://bitwuzla.github.io/) | :heavy_check_mark: | |
| [Boolector](https://boolector.github.io/) | :heavy_check_mark: | |
| [CVC4](https://cvc4.github.io/) | :heavy_check_mark: | :heavy_check_mark: |
| [CVC5](https://cvc4.github.io/) | :question: | |
| [MathSAT5](http://mathsat.fbk.eu/) | :heavy_check_mark: | |
| [OpenSMT](https://verify.inf.usi.ch/opensmt) | :question: | |
| [OptiMathSAT](http://optimathsat.disi.unitn.it/) | :heavy_check_mark: | |
| [Princess](http://www.philipp.ruemmer.org/princess.shtml) | :heavy_check_mark: | |
| [SMTInterpol](https://ultimate.informatik.uni-freiburg.de/smtinterpol/) | :heavy_check_mark: | |
| [Yices2](https://yices.csl.sri.com/) | | |
| [Z3](https://github.com/Z3Prover/z3) | :heavy_check_mark: | |
| SMT Solver | Concurrent context usage⁵ | Concurrent prover usage⁶ |
|-------------------------------------------------------------------------|:-------------------------:|:------------------------:|
| [Bitwuzla](https://bitwuzla.github.io/) | :heavy_check_mark: | |
| [Boolector](https://boolector.github.io/) | :heavy_check_mark: | |
| [CVC4](https://cvc4.github.io/) | :heavy_check_mark: | :heavy_check_mark: |
| [CVC5](https://cvc4.github.io/) | :heavy_check_mark: | |
| [MathSAT5](http://mathsat.fbk.eu/) | :heavy_check_mark: | |
| [OpenSMT](https://verify.inf.usi.ch/opensmt) | :heavy_check_mark: | |
| [OptiMathSAT](http://optimathsat.disi.unitn.it/) | :heavy_check_mark: | |
| [Princess](http://www.philipp.ruemmer.org/princess.shtml) | :heavy_check_mark: | |
| [SMTInterpol](https://ultimate.informatik.uni-freiburg.de/smtinterpol/) | :heavy_check_mark: | |
| [Yices2](https://yices.csl.sri.com/) | :heavy_check_mark: | |
| [Z3](https://github.com/Z3Prover/z3) | :heavy_check_mark: | |

Interruption using a [ShutdownNotifier][] may be used to interrupt a solver from any thread.
Formulas are translatable in between contexts/provers/threads using _FormulaManager.translateFrom()_.
Expand Down
7 changes: 5 additions & 2 deletions build/build-maven-publish.xml
Original file line number Diff line number Diff line change
Expand Up @@ -266,10 +266,13 @@ SPDX-License-Identifier: Apache-2.0
<!-- get revision from dependencies -->
<ivy:artifactproperty name="[artifact].revision" value="[revision]"/>
<property name="stage.solver" value="yices2"/>
<property name="stage.revision" value="${libyices2j.revision}"/>
<property name="stage.revision" value="${yices.revision}"/>
<property name="libDir.x64" value="lib/java/runtime-yices2/x64"/>
<!-- prepare the pom-file -->
<generate-solver-pom-file/>
<!-- then publish the file -->
<stage-solver-file filename="libyices2j" classifier="libyices2j" fileending="so"/>
<stage-solver-file filename="yices" fileending="jar"/>
<stage-solver-file filename="libyices2java" classifier="libyices2java-x64" filedirectory="${libDir.x64}" fileending="so"/>
<stage-solver-file filename="yices2java" classifier="yices2java-x64" filedirectory="${libDir.x64}" fileending="dll"/>
</target>
</project>
Loading
Loading