-
Notifications
You must be signed in to change notification settings - Fork 34
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
Z3 4.8.14 #80
Z3 4.8.14 #80
Conversation
I had a quick glance at updating the unmanaged jars in Inox and some tests fail, but it should not be too hard to update them. |
Hmm, failing tests don't sound too good. Is 4.8.12 a stable Z3 version? Which version are we shipping in the z3 binary? |
It seems so; what's weird is that all tests (in the master branch) that communicate with Z3 through SMT-LIB use the 4.8.12 version and all pass. |
Which Inox tests are failing with this version? Maybe there's been a subtle API change in the native version which we have to take into account? Maybe you can try a different Z3 version otherwise? |
The Z3 Set Extraction test (in |
Ah, then it's fairly likely that we're running into bugs in Inox if it's only about model extraction. |
Z3 is returning a |
Adapting |
Upgrading to 4.8.14 resolves the problem with the set extraction, as Z3 no longer returns lambdas (seems to be related to the fix of Z3Prover/z3#5604). There are some integration tests that fail though (I did not run 4.8.12 on the integration tests, but they are likely to fail as well). |
def getAbsFuncDecl(): Z3FuncDecl = { | ||
val ast = parseSMTLIB2String(""" |
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.
For what it's worth, given the mkAbs
helper you added below it should be possible to make this marginally less hacky by avoiding the parsing. I had to do something similar to get a handle to the built-in if-then-else function here: https://github.com/epfl-lara/inox/blob/2f402f9bf9541cc061558e525fdd53efa5f86a87/src/main/scala/inox/solvers/z3/Z3Native.scala#L478
With some small changes, all Inox tests pass. Stainless does not need any adaptations (except for its dependencies of course), and one Bolts benchmark, |
That sounds reasonable. Can you please open a PR with the Inox changes too? |
Sure! Here it is: epfl-lara/inox#175 |
To get
getAbsFuncDecl
working, we savagely apply a patch on the Z3 sources to exportmkAbs
.The other changes are mostly whitespace trimming (done by the editor...) and putting
()
to methods expecting them to address the warnings when cross-compiling to Scala 2.13