intros y a b x lt_0_y lt_0_a lt_0_b le_0_x. apply Zle_trans with (x / a * a / y). apply approx_0_one;
assumption. apply approx_0_two with (b := b); assumption. Qed.

Lemma mod_over_div : forall a b c m : Z, 0 < b -> 0 < m -> (a * b + c) / b * b mod m = (a mod m * b + c) / b * b mod m.
intros a b c m Hb Hm. rewrite Zplus_comm. rewrite Z_div_plus. rewrite Zplus_comm with (m := c). rewrite Z_div_plus.