Section CD.
Variable n : nat.
(**********************************************************************)
Inductive congruent : nat -> nat -> Prop :=
congruentDef :
forall a b u v : nat, a + u * n = b + v * n -> congruent a b.
intros a b c H; inversion_clear H.
apply congruentDef with (u := u * c) (v := v * c); auto.
repeat rewrite mult_comm with (m := c); repeat rewrite mult_assoc_reverse;
repeat rewrite (mult_comm c).
repeat rewrite <- mult_plus_distr_r.
rewrite H0; auto.
Qed.

Lemma cong_mult :
forall a b c d : nat,
congruent a b -> congruent c d -> congruent (a * c) (b * d).