intros p w n; elim n; simpl in |- *; auto.
intros H' H'0; inversion_clear H'0.
generalize H' H; case q; case p; simpl in |- *; intros; try discriminate.
absurd (prime 0); auto.
generalize H0; case n0; simpl in |- *; auto.
intros n2 H'1; absurd (1 = S (S (n2 + n1 * S (S n2)))); auto.
intros n0 H' H'0 H'1.
case (divides_dec p (power w n0)); intros H; auto.
apply L_Euclides1 with (a := power w n0); auto.
rewrite mult_comm; auto.
Qed.
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.

Lemma cong_mult_O : forall a b : nat, congruent a 0 -> congruent (a * b) 0.