1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
Module ExternRewrite.
Parameter a b c : unit.
Parameter P : unit -> Prop.
Axiom Eac : a = c.
Axiom (Pab : P a -> P b).
Ltac Xtac :=
match goal with
| [ H : (True -> P a) |- _ ] => rewrite Eac in H
end.
Create HintDb db.
#[local] Hint Resolve Pab : db.
#[local] Hint Extern 0 => Xtac : db.
Goal True -> (True -> P a) -> P b.
Proof.
auto with db nocore.
Qed.
End ExternRewrite.
Module ExternClear.
Parameter P Q R : Prop.
Axiom (HQR : Q -> R).
Axiom (HP : P).
Ltac Xtac := match goal with [H : _ |- _] => clear H end.
Create HintDb db.
#[local] Hint Resolve HQR : db.
#[local] Hint Resolve HP : db.
#[local] Hint Extern 0 => Xtac : db.
Goal (P -> Q) -> R.
Proof.
auto with db nocore.
Qed.
End ExternClear.
|