-
Notifications
You must be signed in to change notification settings - Fork 642
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
Lia bugfix 11191 #11362
Lia bugfix 11191 #11362
Conversation
- Add an instance to ZifyInst to instruct zify that 0 < x -> 0 < y -> 0 < Z.pow x y - More aggressive interval analysis to bound non-linear monomials.
@ppedrot @maximedenes this is a regression in 8.10. |
Ping @coq/micromega-maintainers. If you react in time this may make it into 8.11.0. |
Looks good, but let's launch a bench, just to be sure. |
Some small slowdown on coq performance tests, it seems. |
@maximedenes this dev is always on the verge of noise, I think. I wouldn't take that as a positive proof of a slowdown. |
(It's not even using lia, actually, for now it only contains a test for the |
Are you saying that our dedicated performance test has less reliable timings than other developments ? :o |
AFAIU, this development is there to check for drastic performance changes, e.g. going from linear to quadratic. It amplifies minute timing diffs, so it's by design quite noisy. Furthermore, as I said, for now this is testing exactly one performance issue, namely the linearity of |
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.
It would be nice to add some documentation on the introduced code, but apart from that, LGTM.
Backporting this looks like it's breaking flocq. Should we still backport the fix? |
@ppedrot Is the flocq version frozen for 8.11 ? I can think of another fix. It would consist in removing the support for |
Given that support for |
How is that supposed to be removed? We need a 8.11-specific PR in any case... |
This PR solves regressions of lia reported by #11191 regarding Z.pow.
The regression is due to the fact that
zify
is now able to deal withPos.pow
and therefore some positivity constraints need to be added explicitly.When the exponent of Z.pow is a variable, this is solved by adding an instance ZifyInst stating that
forall a b, 0 < a -> 0 < b -> 0 < a ^ b.
When the exponent of Z.pow is a constant, this is actually a product of variables and this is solved by performing a more aggressive pre-processing step performing interval analysis of monomials.
Kind: bug fix
Fixes #11191