(* The tactic language *)
(* Submitted by Pierre Crégut *)
(* Checks substitution of x *)
Ltac f x := unfold x; idtac.
f plus.
reflexivity.
Qed.
(* Submitted by Pierre Crégut *)
(* Check syntactic correctness *)
Ltac F x := idtac; G x
with G y := idtac; F y.
(* Check that Match Context keeps a closure *)
Ltac U := let a := constr:(I) in
match goal with
|  |- _ => apply a
end.

Lemma lem2 : True.