Module Type ZLcmProp
(Import A : ZAxiomsSig')
(Import B : ZMulOrderProp A)
(Import C : ZSgnAbsProp A B)
(Import D : ZDivProp A B C)
(Import E : ZQuotProp A B C)
(Import F : ZGcdProp A B C).
(** The two notions of division are equal on non-negative numbers *)
(** We can use the sign rule to have an relation between divisions. *)
(** Modulo and remainder are null at the same place, and this correspond to the divisibility relation. *)
(** When division is exact, div and quot agree *)
(** Gcd of divided elements, for exact divisions *)
(** The following equality is crucial for Euclid algorithm *)

Lemma gcd_rem : forall a b, b~=0 -> gcd (a rem b) b == gcd b a.