Conversation
Otherwise Yices may put SMTLIB quotes around the name
When compiled with --thread-safety Yices should be reentrant
The issue has been fixed in the new version and "(" characters in variable names now get quoted
|
@kfriedberger |
|
@daniel-raffler |
kfriedberger
left a comment
There was a problem hiding this comment.
Overall looks good. I will make a deeper test the next days.
| */ | ||
| DEFINE_FUNC(int, 1has_1mcsat) WITHOUT_ARGS | ||
| CALL0(int, has_mcsat) | ||
| INT_RETURN |
There was a problem hiding this comment.
We could maybe add BOOL_RETURN for such methods.
Thanks! I've been able to build the binaries in the 18.04 image Should I build with --thread-safety or --enable-mcsat? Unfortunately these options can't be combined and I'm not quite sure which one is more important to us |
# Conflicts: # lib/ivy.xml # src/org/sosy_lab/java_smt/solvers/yices2/Yices2FormulaCreator.java # src/org/sosy_lab/java_smt/solvers/yices2/Yices2Model.java # src/org/sosy_lab/java_smt/test/SolverConcurrencyTest.java # src/org/sosy_lab/java_smt/test/VariableNamesTest.java
Just FYI, support for unsat cores in MCSAT has been merged into master (both through SMTLib2 input and through API calls): SRI-CSL/yices2#578. It will be part of the upcoming Yices release 2.8. |
|
Thank you for that info! Both features are actually requested by users that i talk to a lot currently! |
# Conflicts: # src/org/sosy_lab/java_smt/test/ProverEnvironmentTest.java # src/org/sosy_lab/java_smt/test/SolverConcurrencyTest.java # src/org/sosy_lab/java_smt/test/SolverFormulaWithAssumptionsTest.java
|
I've added binaries for Windows. They seem to be working in Wine, but we may need some more testing Yices has github actions (link) to build the solver on MacOS. We could probably start from there if we also want to support that platform |
|
@kfriedberger Just a heads up: If you want to build the binaries, we need the issue-613-mcsat-curried-function-model branch You can download yices like this: Then go to After that, just follow the build instructions |
|
Is there a plan to integrate https://github.com/daniel-raffler/yices2_java_bindings.git into its original? Just asking, not urgent. |
Yes, I've open a PR last week: SRI-CSL/yices2_java_bindings#8 |
I would love Yices2 support on MacOS (ARM). It usually outperforms Z3 (and others) by quite a lot on our QF_BV encoding in Dartagnan (sometimes by a whole order of magnitude). It seems to do some serious black magic there :) |
|
Hello Thomas, I've been able to build the MacOS (Arm) binaries with a github runner. We still have to figure out to sign and ship the binaries, but I can at least include the build script. It's not too complicated to run and the binaries can then just be copied over
Is this with the default solver, or would we need one of these delegates? So far we only have the internal solver, but we might still add one of the delegates |
Sounds great.
The default internal solver. Funnily enough, that one outpeforms Kissat and Cadical on our benchmarks. |
|
Thanks for the input, everyone. A couple of thoughts on the direction of the latest discussion here: First, I think it's important that we keep JavaSMT vendor-independent when it comes to our build process. We should avoid being tied too closely to GitHub Actions for publishing; the goal is to ensure any user can still build the library reliably on their own local machine. Apple is kind of special here, maybe we find a way with tools like Regarding the macOS-specific points, there are multiple solvers waiting for macOS:
Should we move that conversation over to a separate issue? It feels like it deserves its own space for discussion and debugging without cluttering the Yices update. |
|
@daniel-raffler : |


Hello,
this PR updates Yices to version 2.7.0 and closes #402. Other than that the new version mainly includes improvements to the MCSat solver, which we're not using at the moment. Here is a full changelog.
Yices2 has some additional features that we may want to include:
unsat core(yet?)unsat core, but no interpolation or non-linear arithmetic--thread-safetyoption that allows multiple solver instances to run in parallelQF_BVlogicIn this PR I stuck with Dpll as solver and just enabled the
--thread-safetyoption. We could still add MCSat support and maybe even the external SAT solvers. Yices then picks the solver based on the logic, which would give us the best feature set. The big downside is that MCSat is not compatible with--thread-safety, which means that multiple parallel solver instances are not possibleUpdate
The thread-safety issues in MCSAT have been fixed, and unsat core is now also supported in MCSAT. We therefore switched to MCSAT as the default solver
solver.yices2.solverType=dpllthas been added to use dpllt insteadWe also switched the entire backend to the official Java bindings for Yices. In addition, a new build script has been added, and Windows binaries are now available
This PR is currently waiting on SRI-CSL/yices2#614, but should be ready to merge otherwise
Linked issues: