Definition submodule_op : operation (ring_monoid R) Na.Definition submodule_module : module R.Record submodule : Type := 
  {submodule_subgroup : subgroup M;
   submodule_prop :
    forall (a : R) (x : M),
    in_part x submodule_subgroup ->
    in_part (module_mult a x) submodule_subgroup}.Record submodule : Type := 
  {submodule_subgroup : subgroup M;
   submodule_prop :
    forall (a : R) (x : M),
    in_part x submodule_subgroup ->
    in_part (module_mult a x) submodule_subgroup}.Record submodule : Type := 
  {submodule_subgroup : subgroup M;
   submodule_prop :
    forall (a : R) (x : M),
    in_part x submodule_subgroup ->
    in_part (module_mult a x) submodule_subgroup}.Definition module_of_submodule (N : submodule) :=
  submodule_module (submodule_prop (s:=N)).

Lemma submodule_in_prop : forall (a : R) (x : M), in_part x N -> in_part (module_mult a x) N.