End  SEMI_RING.
Infix "-" := rsub.
Notation "- x" := (ropp x).
Variable Reqe : ring_eq_ext radd rmul ropp req.
Add Morphism radd with signature (req ==> req ==> req) as radd_ext2.

(* Specifications: *)
Lemma Ropp_mul_l x y : -(x * y) == -x * y.
Lemma Ropp_add x y : -(x + y) == -x + -y.
Lemma Ropp_opp x : - -x == x.
Lemma  Rth_ARth : almost_ring_theory 0 1 radd rmul rsub ropp req.
Proof
(mk_art 0 1 radd rmul rsub ropp req (Radd_0_l Rth) (Radd_comm Rth) (Radd_assoc Rth)
(Rmul_1_l Rth) Rmul_0_l (Rmul_comm Rth) (Rmul_assoc Rth) (Rdistr_l Rth)
Ropp_mul_l Ropp_add (Rsub_def Rth)).