Section QuotientDef.
Variable T : Type.
Record quot_mixin_of qT := QuotClass {
quot_repr : qT -> T;
quot_pi : T -> qT;
_ : cancel quot_repr quot_pi
}.
Notation quot_class_of := quot_mixin_of.
Record quotType := QuotTypePack {
quot_sort :> Type;
quot_class : quot_class_of quot_sort
}.
Variable qT : quotType.
Definition pi_phant of phant qT := quot_pi (quot_class qT).
Local Notation "\pi" := (pi_phant (Phant qT)).
Definition repr_of := quot_repr (quot_class qT).
Definition enc_mod_rel_equiv_rel := EquivRelPack enc_mod_rel_is_equiv.
Definition encModEquivP (x : D) : r (ED (DE x)) x.
Canonical encoded_equiv_equiv_rel := EquivRelPack encoded_equiv_is_equiv.
Definition pi := locked (fun x => EquivQuotient (canon_id x)).
Local Notation encDE := (encModRelE encD).
Local Notation encDP := (encModEquivP encD).
Canonical encD_equiv_rel := EquivRelPack (enc_mod_rel_is_equiv encD).

Lemma pi_DC (x y : D) :
reflect (pi (DC x) = pi (DC y)) (eD x y).