Notation eC := (encoded_equiv encD).Definition canon x := choose (eC x) (x).Record equivQuotient := EquivQuotient {
  erepr : C;
  _ : (frel canon) erepr erepr
}.Record equivQuotient := EquivQuotient {
  erepr : C;
  _ : (frel canon) erepr erepr
}.Record equivQuotient := EquivQuotient {
  erepr : C;
  _ : (frel canon) erepr erepr
}.

(* Specifications: *)
Lemma canon_id : forall x, (invariant canon canon) x.