This is a follow up on the discussion with subject "Is there something like especialize?" in coqclub on April 30th 2018.
The idea is to have a variant of specialize which allows using holes and evars in the same way as eapply. If one has a hypothesis H: P->Q the effect of
especialize (H SomeLemma)
should be similar to
assert (P) as HP by eapply SomeLemma. specialize (H HP).
with obvious extensions to hypothesis with several preconditions / parameters.
@Matafou suggested on coqclub to have a syntax which is extended compared to the syntax of eapply in that it allows to specify precoditions of the hypothesis by number in a with clause:
especialize H with (x:=t) (y:=u) (2:=?).
would mean: instantiate x by t, y by u, make an evar for the 2nd hypothesis (knowing that x:=t and y:=u) and use it, but let 1st hyp where it is (and all other non unifiable args of H).
This is a follow up on the discussion with subject "Is there something like especialize?" in coqclub on April 30th 2018.
The idea is to have a variant of specialize which allows using holes and evars in the same way as eapply. If one has a hypothesis H: P->Q the effect of
especialize (H SomeLemma)
should be similar to
assert (P) as HP by eapply SomeLemma. specialize (H HP).
with obvious extensions to hypothesis with several preconditions / parameters.
@Matafou suggested on coqclub to have a syntax which is extended compared to the syntax of eapply in that it allows to specify precoditions of the hypothesis by number in a with clause:
especialize H with (x:=t) (y:=u) (2:=?).
would mean: instantiate x by t, y by u, make an evar for the 2nd hypothesis (knowing that x:=t and y:=u) and use it, but let 1st hyp where it is (and all other non unifiable args of H).