I am looking for a way to get an hypotesis by it's name in order to match it. Like this :
Ltac mytactic h_name :=
let h := hyp_from_name h_name in
match h with
| _ /\ _ => do_something
| _ => print_error_message
end
.
Which would be used like this :
H0 : A /\ B
==================
A
Coq < mytactic H0.
Thanks.
I'm not sure I completely understand your question, but I'll try. You can use the type of <term>
construction like so:
Ltac mytactic H :=
match type of H with
| _ /\ _ =>
let H1 := fresh in
let H2 := fresh in
destruct H as [H1 H2]; try (inversion H1; inversion H2; subst)
| _ => fail "Algo salió mal, mi amigo"
end.
Example por_ejemplo x : x >= 0 /\ x <= 0 -> x = 0.
Proof.
intros H.
now mytactic H.
Qed.