(** ** Leibniz equality **)

Definition eq (X : Typ1) (x y : X) : Prop := forall P : X -> Prop, P x -> P y.

(* Specifications: *)
Lemma eq_refl : forall (X : Typ1) (x : X), eq X x x.
Lemma eq_sym : forall (X : Typ1) (x y : X), eq X x y -> eq X y x.
Lemma eq_trans : forall (X : Typ1) (x y z : X), eq X x y -> eq X y z -> eq X x z.