Definition is_ideal (I : subgroup R) :=
  forall x : R, in_part x I -> forall a : R, in_part (ring_mult a x) I.Record ideal : Type := 
  {ideal_subgroup :> subgroup R; ideal_prf : is_ideal ideal_subgroup}.Record ideal : Type := 
  {ideal_subgroup :> subgroup R; ideal_prf : is_ideal ideal_subgroup}.Record ideal : Type := 
  {ideal_subgroup :> subgroup R; ideal_prf : is_ideal ideal_subgroup}.

(* Specifications: *)
Lemma ideal_prop : forall (I : ideal) (x : I) (a : R), in_part (ring_mult a (I x)) I.
Lemma ideal_prop2 : forall (I : ideal) (x a : R), in_part x I -> in_part (ring_mult a x) I.
Lemma ideal_prop3 : forall (I : ideal) (x y : R), in_part x I -> in_part y I -> in_part (sgroup_law R x y) I.
Lemma ideal_prop4 : forall (I : ideal) (x : R), in_part x I -> in_part (group_inverse R x) I.