sosy-lab / java-smt

JavaSMT - Unified Java API for SMT solvers.
Apache License 2.0
183 stars 46 forks source link

Add new SMT solver: Bitwuzla #220

Open kfriedberger opened 3 years ago

kfriedberger commented 3 years ago

The team of Boolector developed a new SMT solver Bitwuzla that seems to be quite fast for bitvector logic (see results of SMT-COMP 2020). Bitwuzla seems to be the successor of Boolector (which has some reported limitations in its API) and might be maintained for longer.

Currently, Bitwuzla is not yet publicly available, and API documentation is missing. Implementing suppport for this new solver into JavaSMT might be a nice student project.

TODO:

baierd commented 2 years ago

Bitwuzla currently has no API to traverse formulas or parse formulas without solving them right away. Also it does not mention any form of reentrant mode/compiliation process currently.

Since those are rather important for us, i've asked the devs for all of this in the discussion board of their GutHub presence:

baierd commented 2 years ago

The Devs answered and term traversal is possible, the API was just not publicly stated in the API website, but its useable and fits our purposes. Also, Bitwuzla is already reentrant.

They are very interested in adding term parsing and i provided an example.

baierd commented 2 years ago

The license under which Bitwuzla is published is the MIT license.