(*****************************************************************************)

(****************)
Definition is_ring :=
  commutativity S Add /\
  is_group S A Add O Opp /\
  intern S A Mult /\ associativity S Mult /\ distributivity S Add Mult.

(* Specifications: *)
Lemma mult_O : is_ring -> forall x : S, A x -> Mult x O = O /\ Mult O x = O.
Lemma mult_opp_r : is_ring -> forall x y : S, A x -> A y -> Mult x (Opp y) = Opp (Mult x y).
Lemma mult_opp_l : is_ring -> forall x y : S, A x -> A y -> Mult (Opp x) y = Opp (Mult x y).
Lemma mult_opp_opp : is_ring -> forall x y : S, A x -> A y -> Mult (Opp x) (Opp y) = Mult x y.