[PARKED] Use uninterpreted functions for 2-phase solving approach#996
[PARKED] Use uninterpreted functions for 2-phase solving approach#996gustavo-grieco wants to merge 127 commits intomainfrom
Conversation
msooseth
left a comment
There was a problem hiding this comment.
Some thoughts and comments. I'm reluctant because:
- There are all these axioms and they'll take time to review
- I am not sure we need 3 phases
There are some thought-provoking parts here, though:
- The improvement to the concrete SMT translation (i.e. even forgetting about all this abstraction)
- The axioms may truly reflect that we have more information at hand than the SMT solver, and adding them may actually be sufficient, without the abstraction-refinement?
These 2 could actually be added as-is to the system, I think!
|
Can you also maybe fix the failures of the checks? I think it's failing only on warnings, so they should be easy to fix, and then we can see if the fuzz tests go through! |
|
Keep in mind that abstract arithmetics are not enabled by default, I don't know if we should enable it for all the test 🤔 |
6bf8f15 to
dc02430
Compare
2d4a122 to
48bc777
Compare
c432670 to
503d110
Compare
msooseth
left a comment
There was a problem hiding this comment.
Just two notes about what times out without this abstraction-refinement. The tests actually prove they time out
| ] | ||
| , testGroup "Abstract-Arith" | ||
| -- "make verify-hevm T=prove_div_negative_divisor" in https://github.com/gustavo-grieco/abdk-math-64.64-verification | ||
| [ testCase "prove_div_values-abdk" $ do |
| -- without abstract arith, we time out | ||
| liftIO $ assertBool "Must be unknown" (all isUnknown res) | ||
| -- "make verify-hevm T=prove_div_negative_divisor" in https://github.com/gustavo-grieco/abdk-math-64.64-verification | ||
| , testCase "prove_div_negative_divisor" $ do |
|
Let's park this for now. I wanna hear back from the Bitwuzla developers and I'm also a bit tired of trying to make this work :) We can come back to this another time. |
Description
A crude prototype for #995 The system now does 2-phase solving. It can now deal with these two ABDK verification problems:
Once abstraction-refinement is turned on. See this repo for details.
This change needs a flag to be set in the CLI for it to be enabled.
Checklist