Sometimes due to a combination of the remember
and induction
tactics, I end up with hypothesis that look like a bit like this:
Heqa: a = Foo b
IH1: a = Foo b -> bla_bla_bla
IH2: a = Foo b -> ble_ble_ble
Is there a quick way to get those useless a = Foo b
preconditions in IH1
and IH2
out of the way? The only way to do that that I can think of is very verbose and repetitive:
assert (IH1': a = Foo b). { apply Heqa. }
apply IH1 in IH1'. clear IH1. rename IH1' into IH1.
assert (IH2': a = Foo b). { apply Heqa. }
apply IH2 in IH2'. clear IH2. rename IH2' into IH2.
You can use the
specialize
tactic:will get you
which seems is what you want.
specialize
applies some arguments to a hypothesis and rewrites it.By the way, using a somewhat similar tactic
pose proof
we can keep the original hypothesis intact. More details can be found here.