(* we show that equivf is an equivalence *)
Canonical equivf_equiv := EquivRel equivf equivf_refl equivf_sym equivf_trans.Definition type := {eq_quot equivf}.Definition type_of of phant R := type.Definition tofrac := lift_embed {fraction R} (fun x : R => Ratio x 1).Canonical tofrac_pi_morph := PiEmbed tofrac.Implicit Types a b c : type.Definition add := lift_op2 {fraction R} addf.Canonical pi_add_morph := PiMorph2 pi_add.Definition opp := lift_op1 {fraction R} oppf.Canonical pi_opp_morph := PiMorph1 pi_opp.Definition mul := lift_op2 {fraction R} mulf.Canonical pi_mul_morph := PiMorph2 pi_mul.Definition inv := lift_op1 {fraction R} invf.Canonical pi_inv_morph := PiMorph1 pi_inv.

(* Specifications: *)
Lemma addA : associative add.
Lemma addC : commutative add.
Lemma add0_l : left_id 0%:F add.
Lemma addN_l : left_inverse 0%:F opp add.