-
Notifications
You must be signed in to change notification settings - Fork 444
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
bug: bv_decide
regression; proof that worked before now times out, and LRAT file sizes are much larger
#5664
Comments
bv_decide
regression bv_decide
regression; proof that worked before now times out, and LRAT file sizes are much larger
The hard sub problem here is:
This regression is because of the introduction of the |
I tried running this with Bitwuzla and it takes a total of 48 seconds on this problem, it appears if you have normalization up to commutativity enabled this is just really hard unless you happen to hit the form in which you have already found the problem :( So the best solution here is most likely to just accept that we have to disable ac_nf here. |
It's a shame we'll have to get rid of the ac_nf pass, but thanks for investigating! |
This is needed to work around leanprover/lean4#5664 TL;DR: the normalization pass actively made it harder for the SAT solver to prove our goals, causing much larger LRAT files and even timeouts for some pathological goals
This is needed to work around leanprover/lean4#5664 TL;DR: the normalization pass actively made it harder for the SAT solver to prove our goals, causing much larger LRAT files and even timeouts for some pathological goals
This takes a few standalone bitvector problems, about inequalties, from LNSym, and adds them as a benchmark to prevent further regressions with bv_decide. These problems are particularly interesting, because they've previously had a bad interaction with bv_decides normalization pass, see #5664. --------- Co-authored-by: Henrik Böving <[email protected]>
Prerequisites
Please put an X between the brackets as you perform the following steps:
https://github.com/leanprover/lean4/issues
Avoid dependencies to Mathlib or Batteries.
https://live.lean-lang.org/#project=lean-nightly
(You can also use the settings there to switch to “Lean nightly”)
Description
Consider the following MWE:
On
nightly-2024-09-10
this proof worked. Onnightly-2024-10-08
it times out instead, even if we double the time limit to 120 seconds.Context
Example extracted from LNSym, specifically, from Arm/Memory/SeparateProofs.lean.
Steps to Reproduce
Expected behavior: I expect the proof to go through
Actual behavior: It times out
Versions
nightly-2024-10-08 is the version with the bad behaviour.
Additional Information
If we use
bv_decide?
to generate an LRAT in the working version, we get a roughly 12MB file.Using
bv_check
with that LRAT in the new version gives a type mismatch, but more surprisingly, if we then usebv_decide?
in the new Lean version, it manages to spit out 300+ MB of LRAT before it gets killed (with the 120 second timeout).We see a similar thing happen in other examples from that same PR, which do manage to go through in the new toolchain, but where the LRAT had to be regenerated and the new file is 10x larger than the old LRAT (in particular, now exceeding GitHub's limit for filesize).
Impact
Add 👍 to issues you consider important. If others are impacted by this issue, please ask them to add 👍 to it.
The text was updated successfully, but these errors were encountered: