Zulip Chat Archive

Stream: general

Topic: induction h vs rw h for `h : i = i'`

Eric Wieser (Oct 28 2020 at 10:38):

I was surprised to see tidy? generate induction h when h is an equality. I'm a little puzzled by the meaning of this, especially since rw h fails. The goal state was

h: i = i'
 (eq.rec si, _ _) = (eq.rec si h)

and after induction h becomes

 (eq.rec si, _ _) = (eq.rec si _)

Can someone explain to me the intuition here?

Chris Hughes (Oct 28 2020 at 10:59):

I don't know exactly what's going on here, but the reason rw doesn't work is probably because there is a term in the goal whose type contains i, which means that it is harder to generate the motive (the argument called C in the type of eq.rec) when making the proof term. induction on equality is basically just substitution, but the induction tactic has better support for computing the motive than rw, and makes the substitution everywhere. I think somehow it's easier to compute the motive when you rewrite at all your hypotheses, and also easier when one side of the equality is just a local constant.

Eric Wieser (Oct 28 2020 at 11:04):

Thanks, your wording made me realize that induction h is doing the same thing as subst h (which unlike rw h, also works)

Eric Wieser (Oct 28 2020 at 11:05):

For more context of what's going on, I'm trying to prove the trivial-but-somehow-not-refl statement in https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Difficulty.20with.20dependent.20rewrites/near/214686669

Last updated: Dec 20 2023 at 11:08 UTC