(** Injectivity of equality on dependent pairs with second component
      in [Type] *)

  Notation inj_pairT2 := inj_pair2.

(* Specifications: *)
Lemma inj_pair2_eq_dec : forall A:Type, (forall x y:A, {x=y}+{x<>y}) -> ( forall (P:A -> Type) (p:A) (x y:P p), existT P p x = existT P p y -> x = y ).
Lemma UIP_refl_unit (x : tt = tt) : x = eq_refl tt.
Lemma UIP_refl_bool (b:bool) (x : b = b) : x = eq_refl.
Lemma UIP_refl_nat (n:nat) (x : n = n) : x = eq_refl.
Lemma UIP_None_l {A} (x : option A) (p1 p2 : None = x) : p1 = p2.
Lemma UIP_None_r {A} (x : option A) (p1 p2 : x = None) : p1 = p2.
Lemma UIP_None_None {A} (p1 p2 : None = None :> option A) : p1 = p2.
Lemma UIP_nil_l {A} (x : list A) (p1 p2 : nil = x) : p1 = p2.
Lemma UIP_nil_r {A} (x : list A) (p1 p2 : x = nil) : p1 = p2.
Lemma UIP_nil_nil {A} (p1 p2 : nil = nil :> list A) : p1 = p2.