Section Commutative_rings.
Variable R1 : CRING.
exact (cring_com_prf R1).
Qed.
Hint Immediate CRING_com: algebra.
intros a b c d; try assumption.
apply Trans with (ring_mult a (ring_mult b (ring_mult c d)));
auto with algebra.
apply Trans with (ring_mult a (ring_mult (ring_mult b c) d));
auto with algebra.
apply Trans with (ring_mult a (ring_mult (ring_mult c b) d));
auto with algebra.
apply Trans with (ring_mult a (ring_mult c (ring_mult b d)));
auto with algebra.
Qed.
Hint Resolve CRING_mult4: algebra.
intros x y z; try assumption.
apply Trans with (ring_mult (ring_mult x y) z); auto with algebra.
apply Trans with (ring_mult (ring_mult y x) z); auto with algebra.
Qed.
Hint Resolve CRING_mult3: algebra.

Lemma CRING_mult3bis :
forall x y z : R1,
Equal (ring_mult (ring_mult x y) z) (ring_mult (ring_mult x z) y).