-
Notifications
You must be signed in to change notification settings - Fork 709
Do not apply discriminated unfold hints on arbitrary goals. #14679
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
Do not apply discriminated unfold hints on arbitrary goals. #14679
Conversation
|
Here is a minimal example of a fringe case. |
|
Hey, I have detected that there were CI failures at commit 3d8c49d without any failure in the test-suite. |
|
CI shows that only HoTT, math-classes and (by transitivity) corn are broken. It seems quite a small change in the end thus, so maybe it's worth pursueing and writing overlays. @mattam82 what do you think? |
|
Let's close for the time being, I'll reopen after the deadzone known as summer. |
3d8c49d to
641dd02
Compare
|
Hey, I have detected that there were CI failures at commit 641dd02 without any failure in the test-suite. |
1 similar comment
|
Hey, I have detected that there were CI failures at commit 641dd02 without any failure in the test-suite. |
641dd02 to
6e2ce47
Compare
6e2ce47 to
2486663
Compare
2486663 to
64bc59f
Compare
64bc59f to
cc790db
Compare
|
All overlays were merged, so this is ready to go as-is and needs an assignee. |
|
Maybe we could have a test for this? |
|
Do you want a positive or a negative test? |
|
Why not both? |
|
ping |
The current behaviour was to indiscriminately try to apply on any goal unfold hints for transparent constants from discriminated databases, since they were not indexed by the head constant. In particular, this might have unfolded the constant even if it was at the head of the goal, contrarily to what the documentation claimed. I think it was written this way out of fear of the dnet pattern algorithm. In discriminated mode, transparent constants are considered to match everything, but maybe the author of the code was confused by the complexity of the dnet implementation. This patch changes the semantics of auto tactics in fringe cases, and should be mostly backwards compatible. Fixes rocq-prover#14874: Exponential blowup with Hint Unfold.
cc790db to
c120f97
Compare
|
@SkySkimmer test added. |
|
This test passes in master, shouldn't we test the changed behaviour? |
|
You're right, let me add another discriminating test. |
c120f97 to
7e8de11
Compare
|
@coqbot merge now |
The current behaviour was to indiscriminately try to apply on any goal unfold hints for transparent constants from discriminated databases, since they were not indexed by the head constant. In particular, this might have unfolded the constant even if it was at the head of the goal, contrarily to what the documentation claimed.
I think it was written this way out of fear of the dnet pattern algorithm. In discriminated mode, transparent constants are considered to match everything, but maybe the author of the code was confused by the complexity of the dnet implementation.
This patch changes the semantics of auto tactics in fringe cases, and should be mostly backwards compatible.
Fixes #14874: Exponential blowup with Hint Unfold.