Require Eqdep_dec.
(* Check the behaviour of Injection *)
(* Check that Injection tries Intro until *)
Unset Structural Injection.
injection 1.
apply n_Sn.
Qed.
injection H.
intros.
apply (n_Sn x H0).
Qed.
intros x y H.
injection H.
exact (fun H => H).
Qed.

(* Check that a tuple is built (actually the same as the initial one) *)
Lemma l4 :
forall p1 p2 : {0 = 0} + {0 = 0},
existT (fun n : nat => {n = n} + {n = n}) 0 p1 =
existT (fun n : nat => {n = n} + {n = n}) 0 p2 ->
existT (fun n : nat => {n = n} + {n = n}) 0 p1 =
existT (fun n : nat => {n = n} + {n = n}) 0 p2.