-
Notifications
You must be signed in to change notification settings - Fork 43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adding JavaSMT support #258
Conversation
subprojects/common/core/src/main/java/hu/bme/mit/theta/core/type/fptype/FpType.java
Outdated
Show resolved
Hide resolved
...jects/solver/solver-javasmt/src/main/java/hu/bme/mit/theta/solver/javasmt/JavaSMTSolver.java
Outdated
Show resolved
Hide resolved
...olver/solver-javasmt/src/main/java/hu/bme/mit/theta/solver/javasmt/JavaSMTSolverFactory.java
Show resolved
Hide resolved
...ver/solver-javasmt/src/main/java/hu/bme/mit/theta/solver/javasmt/JavaSMTExprTransformer.java
Outdated
Show resolved
Hide resolved
...ver/solver-javasmt/src/main/java/hu/bme/mit/theta/solver/javasmt/JavaSMTExprTransformer.java
Outdated
Show resolved
Hide resolved
...ver/solver-javasmt/src/main/java/hu/bme/mit/theta/solver/javasmt/JavaSMTExprTransformer.java
Outdated
Show resolved
Hide resolved
...ver/solver-javasmt/src/main/java/hu/bme/mit/theta/solver/javasmt/JavaSMTTermTransformer.java
Outdated
Show resolved
Hide resolved
...olver/solver-z3-legacy/src/main/java/hu/bme/mit/theta/solver/z3legacy/Z3ExprTransformer.java
Show resolved
Hide resolved
subprojects/solver/solver-z3/src/main/java/hu/bme/mit/theta/solver/z3/Z3ExprTransformer.java
Show resolved
Hide resolved
subprojects/solver/solver-z3/src/test/java/hu/bme/mit/theta/solver/z3/Z3UserPropagatorTest.java
Outdated
Show resolved
Hide resolved
Co-authored-by: ThetaBotMaintainer[bot] <139346997+ThetaBotMaintainer[bot]@users.noreply.github.com>
I addressed all TODOs I left for myself, so I consider this PR ready. @as3810t, when you have the time, please take a look! |
Quality Gate passedIssues Measures |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ithink it is a great addition to the existing solvers.
Questions:
- Right now, CVC5 and JavaSMT dependencies are included directly as a
jar
into the project. Can we use Gradle's dependency management instead?
Suggestions:
- It would be great to add description on how to use the new solvers. I get that the names start with
JavaSMT:...
, but it would be useful to document the different strings in the README that can follow the colon.
Benchexec test report for a selection of SV-Benchmarks (correct / incorrect / all): ✅ ConcurrencySafety-Main (3 / 0 / 5)
✅ ConcurrencySafety-MemSafety (4 / 0 / 5)
✅ ConcurrencySafety-NoOverflows (4 / 0 / 5)
✅ NoDataRace-Main (4 / 0 / 5)
❓ ReachSafety-Arrays (0 / 0 / 5)
✅ ReachSafety-BitVectors (2 / 0 / 5)
❓ ReachSafety-Combinations (0 / 0 / 5)
✅ ReachSafety-ControlFlow (1 / 0 / 5)
❓ ReachSafety-ECA (0 / 0 / 5)
✅ ReachSafety-Floats (3 / 0 / 5)
❓ ReachSafety-Hardware (0 / 0 / 5)
✅ ReachSafety-Heap (1 / 0 / 5)
❓ ReachSafety-Loops (0 / 0 / 5)
❓ ReachSafety-Recursive (0 / 0 / 5)
❓ ReachSafety-Sequentialized (0 / 0 / 5)
✅ ReachSafety-XCSP (1 / 0 / 5)
|
This PR adds support for the JavaSMT framework, thus enabling a long list of solvers to be natively used by Theta.
Furthermore, there are some patches to the CI checks as to not fail due to memory limits, and cvc5 libraries are also included in the lib folder from now on. Unfortunately, no cvc5 support is present in JavaSMT for Windows/Mac for now.
There were also of course some bugs I uncovered, especially regarding floating point operations. I tried my best in fixing them.
I also created further testFixtures for expressions, and I include them in non-JavaSMT unit tests as well.