Skip to content
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

RFC: do not unfold semireducible definitions by default #146

Open
fpvandoorn opened this issue Jul 9, 2024 · 1 comment
Open

RFC: do not unfold semireducible definitions by default #146

fpvandoorn opened this issue Jul 9, 2024 · 1 comment

Comments

@fpvandoorn
Copy link
Member

I think aesop (and all other automation) should apply lemmas up to instances transparency by default. Otherwise, I don't think it is possible to make performant automation.
It is unreasonable to expect automation to be quick if it can unfold almost any definitions, and experimentally, sometimes apply ... takes seconds to fail (even if the lemma "obviously" doesn't apply). Sure, in those cases we could do better in Mathlib, marking more things irreducible, but we cannot only fix in on Mathlib's side.

My experience is that aesop is often very slow, and there have been multiple PRs to Mathlib moving away from aesop because of performance reasons: 1 2 3 4.

This will lead to a regression in capabilities of aesop and we will need to mark more things as unfoldable by aesop. Maybe specialized tactics like aesop_cat can work up to semireducible transparency.

I think I already talked to @JLimperg about this in person, but I'm surprised that I never wrote up the suggestion on Zulip/Github.

@JLimperg
Copy link
Collaborator

JLimperg commented Jul 9, 2024

Thanks for bringing this up! Link to Zulip discussion for reference: https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/should.20aesop.20unfold.20semireducible.20definitions.3F

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants