Definition relation (E : Type) := E -> E -> Prop.Definition app_rel (R : relation E) (x y : E) := R x y.Definition reflexive (R : relation E) : Prop := forall x : E, app_rel R x x.Definition symmetric (R : relation E) : Prop :=
  forall x y : E, app_rel R x y -> app_rel R y x.Definition transitive (R : relation E) : Prop :=
  forall x y z : E, app_rel R x y -> app_rel R y z -> app_rel R x z.Definition partial_equivalence (R : relation E) : Prop :=
  transitive R /\ symmetric R.Definition equivalence (R : relation E) : Prop :=
  reflexive R /\ partial_equivalence R.

(* Specifications: *)
Lemma equiv_refl : forall R : relation E, equivalence R -> reflexive R.
Lemma equiv_sym : forall R : relation E, equivalence R -> symmetric R.
Lemma equiv_trans : forall R : relation E, equivalence R -> transitive R.