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 div_le_mono : forall a b c, 0<c -> a<=b -> a/c <= b/c.