Definition axiom T (e : rel T) := forall x y, reflect (x = y) (e x y).Structure mixin_of T := Mixin {op : rel T; _ : axiom op}.Structure mixin_of T := Mixin {op : rel T; _ : axiom op}.Structure mixin_of T := Mixin {op : rel T; _ : axiom op}.Notation class_of := mixin_of (only parsing).Structure type := Pack {sort; _ : class_of sort}.Structure type := Pack {sort; _ : class_of sort}.Structure type := Pack {sort; _ : class_of sort}.Notation eqType := type.Notation EqMixin := Mixin.Notation EqType T m := (@Pack T m).Notation "[ 'eqMixin' 'of' T 'by' <: ]" := (SubEqMixin _ : Equality.class_of T)
  (at level 0, format "[ 'eqMixin'  'of'  T  'by'  <: ]") : form_scope.Definition eq_op T := Equality.op (Equality.class T).

(* Specifications: *)
Lemma eqE T x : eq_op x = Equality.op (Equality.class T) x.
Lemma eqP T : Equality.axiom (@eq_op T).