apply div_unic_r with (a := x * y) (b := y) (q1 := q) (q2 := x);
auto with arith.
apply is_div_def; inversion_clear H'; auto with arith.
apply le_lt_trans with (m := r); auto with arith.
Qed.

(* Specifications: *)
Lemma mult_div_q : forall x y q r : nat, is_div (x * y) y q r -> q = x.
Lemma diveucl_divex :
forall a b : nat,
diveucl a b -> exists q : _, (exists r : _, is_div a b q r).
Lemma div_ex :
forall a b : nat, b <> 0 -> exists q : _, (exists r : _, is_div a b q r).
Lemma eq_mult : forall a b c : nat, c <> 0 -> c * a = c * b -> a = b.
Lemma le_plus_le : forall a b c d : nat, a <= b -> a + c = b + d -> d <= c.
Lemma plus_minus_assoc : forall a b c : nat, b <= a -> a - b + c = a + c - b.