intros r v H H'; red in |- *; intros H'0; case H'0; intros q E.
absurd (Zabs v < Zpower_nat r (digit r v))%Z; auto with zarith.
apply Zle_not_lt.
case (Z_eq_dec q 0); intros Z1.
case H'; rewrite E; rewrite Z1; ring.
pattern v at 2 in |- *; rewrite E.
rewrite Zabs_Zmult.
pattern (Zpower_nat r (digit r v)) at 1 in |- *;
replace (Zpower_nat r (digit r v)) with (Zpower_nat r (digit r v) * 1)%Z;
[ idtac | ring ].
rewrite (fun x y => Zabs_eq (Zpower_nat x y)); auto with zarith.
apply Zle_Zmult_comp_l; auto with zarith.
generalize Z1; case q; simpl in |- *; try (intros H1; case H1; auto; fail);
intros p;
(case p; unfold Zle in |- *; simpl in |- *; intros; red in |- *; intros;
discriminate).
Qed.

(* Specifications: *)
Theorem ZDividesLe :
forall n m : Z, n <> 0%Z -> Zdivides n m -> (Zabs m <= Zabs n)%Z.