Zulip Chat Archive
Stream: mathlib4
Topic: rcases and `@[cases_eliminator]`
Yury G. Kudryashov (Jun 02 2024 at 20:56):
Recently, @Eric Wieser marked docs#WithBot.recBotCoe as @[cases_eliminator]
, so cases
and cases'
use it instead of the one coming from Option
. @Mario Carneiro , how hard would it be to make rcases
use it too?
Kyle Miller (Jun 02 2024 at 20:58):
rcases
uses a meta tactic for cases (Lean.MVarId.cases
) rather than the the system induction
/cases
uses. This latter system is not packaged up in any nice way yet. I had looked into getting the meta tactic to use cases_eliminator
, but (1) it seemed like a big project and (2) it would interfere with a lot of code that assumes that .cases
does the "proper" cases using the actual eliminator.
Kyle Miller (Jun 02 2024 at 20:59):
Right now, there is a hack in place for specifically Nat
so that rcases
puts things in terms of 0
and n + 1
.
Eric Wieser (Jun 02 2024 at 20:59):
I think the argument goes that rcases should behave like match
, for which custom eliminators aren't relevant?
Yury G. Kudryashov (Jun 02 2024 at 21:00):
So, if we want to use custom eliminators, then we have to use cases
, not rcases
, at least in the near future?
Kyle Miller (Jun 02 2024 at 21:00):
Yeah, there was FRO support for "beautiful Nat induction", and we managed to get @[cases_eliminator]
only because that was the easiest and cleanest way to implement it for Nat
.
Eric Wieser (Jun 02 2024 at 21:03):
For which type do you want to do this Yury?
Yury G. Kudryashov (Jun 02 2024 at 21:03):
WithTop
, WithBot
Yury G. Kudryashov (Jun 02 2024 at 21:07):
I'm just cleaning up remaining uses of none_eq_bot
/none_eq_top
/some_eq_coe
Eric Wieser (Jun 02 2024 at 21:11):
Are the rcases calls replaceable with cases'
?
Yury G. Kudryashov (Jun 02 2024 at 21:12):
So far, yes.
Last updated: May 02 2025 at 03:31 UTC