Structure class_of V := Class {
  base : GRing.Lmodule.class_of R V;
  mixin : mixin_of (GRing.Lmodule.Pack _ base)
}.Structure class_of V := Class {
  base : GRing.Lmodule.class_of R V;
  mixin : mixin_of (GRing.Lmodule.Pack _ base)
}.Structure class_of V := Class {
  base : GRing.Lmodule.class_of R V;
  mixin : mixin_of (GRing.Lmodule.Pack _ base)
}.Structure class_of V := Class {
  base : GRing.Lmodule.class_of R V;
  mixin : mixin_of (GRing.Lmodule.Pack _ base)
}.Structure type (phR : phant R) := Pack {sort; _ : class_of sort}.Structure type (phR : phant R) := Pack {sort; _ : class_of sort}.Structure type (phR : phant R) := Pack {sort; _ : class_of sort}.Definition clone c of phant_id class c := @Pack phR T c.Notation xclass := (class : class_of xT).Definition eqType := @Equality.Pack cT xclass.Definition choiceType := @Choice.Pack cT xclass.Definition zmodType := @GRing.Zmodule.Pack cT xclass.Definition lmodType := @GRing.Lmodule.Pack R phR cT xclass.Notation axiom n V := (axiom_def n (Phant V)).Notation vectType R := (@type _ (Phant R)).Notation VectType R V mV :=
   (@pack _ (Phant R) V _ mV _ _ id _ id).Notation VectMixin := Mixin.Notation "[ 'vectType' R 'of' T ]" := (@clone _ (Phant R) T _ _ idfun)
  (at level 0, format "[ 'vectType'  R  'of'  T ]") : form_scope.Notation "''End' ( vT )" := (hom vT vT) : type_scope.Fact v2r_subproof : axiom vT vT.Definition v2r := s2val v2r_subproof.Fact r2v_subproof : {r2v | cancel r2v v2r}.Definition r2v := sval r2v_subproof.

(* Specifications: *)
Lemma r2vK : cancel r2v v2r.
Lemma r2v_inj : injective r2v.
Lemma v2rK : cancel v2r r2v.
Lemma v2r_inj : injective v2r.