java-smt icon indicating copy to clipboard operation
java-smt copied to clipboard

Update Yices to version 2.7.0

Open daniel-raffler opened this issue 3 months ago • 3 comments

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:

  • Nonlinear arithmetic is supported with the MCSat solver
  • MCSat also support interpolation (link), but not unsat core (yet?)
  • Dpll (which we currently use) has unsat core, but no interpolation or non-linear arithmetic
  • Only Dpll can be compiled with the --thread-safety option that allows multiple solver instances to run in parallel
  • Arrays have been added separately, see here for the other pull request
  • Yices can use Cadical/Kissat/CryptoMiniSat as backend for SAT solving. This could be significantly faster, but is currently limited to QF_BV logic

In this PR I stuck with Dpll as solver and just enabled the --thread-safety option. 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 possible

daniel-raffler avatar Sep 11 '25 17:09 daniel-raffler

@kfriedberger I can try uploading the binaries this time. What architecture should I compile for? Yices2 seems to use --march=znver3 when I compile it on my laptop. Is that OK, or should I try to pick something else?

daniel-raffler avatar Sep 11 '25 17:09 daniel-raffler

@daniel-raffler We did use the Ubuntu docker image (18.04 if possible without further overhead, else the 22.04) for building binary solvers. The steps for publication are documented in https://github.com/sosy-lab/java-smt/blob/master/doc/Developers-How-to-Release-into-Ivy.md#publishing-yices2 ... wait ... that seems quite outdated for Yices2. I will have a deeper look the next days.

kfriedberger avatar Sep 12 '25 17:09 kfriedberger

@daniel-raffler We did use the Ubuntu docker image (18.04 if possible without further overhead, else the 22.04) for building binary solvers. The steps for publication are documented in https://github.com/sosy-lab/java-smt/blob/master/doc/Developers-How-to-Release-into-Ivy.md#publishing-yices2 ... wait ... that seems quite outdated for Yices2. I will have a deeper look the next days.

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

daniel-raffler avatar Sep 13 '25 12:09 daniel-raffler