Module Type ZEuclid (Z:ZAxiomsSig) := NZDiv.NZDiv Z <+ EuclidSpec Z.Infix "/" := D.div : euclid.Infix "mod" := D.modulo : euclid.Module Import Private_NZDiv := Nop <+ NZDivProp A D B.Ltac pos_or_neg a :=
 let LT := fresh "LT" in
 let LE := fresh "LE" in
 destruct (le_gt_cases 0 a) as [LE|LT]; [|rewrite <- opp_pos_neg in LT].

Lemma mul_pred_div_gt: forall a b, b<0 -> a < b*(P (a/b)).