Ltac mrewrite :=
   repeat first
     [ rewrite ring_add_0_l
     | rewrite <- (ring_add_comm 0)
     | rewrite ring_mul_1_l
     | rewrite ring_mul_0_l
     | rewrite ring_distr_l
     | reflexivity
     ].

(* Specifications: *)
Lemma ring_add_0_r : forall x, (x + 0) == x.
Lemma ring_add_assoc1 : forall x y z, (x + y) + z == (y + z) + x.
Lemma ring_add_assoc2 : forall x y z, (y + x) + z == (y + z) + x.
Lemma ring_opp_zero : -0 == 0.