Module Type DivideNotation (A:NZOrdAxiomsSig')(B:Gcd A)(C:NZGcdSpec A B).
Notation "( n | m )" := (divide n m) (at level 0).
End DivideNotation.
Module Type NZGcd (A : NZOrdAxiomsSig) := Gcd A <+ NZGcdSpec A.
Module Type NZGcd' (A : NZOrdAxiomsSig) :=
Gcd A <+ NZGcdSpec A <+ DivideNotation A.
(** Derived properties of gcd *)
Module NZGcdProp
(Import A : NZOrdAxiomsSig')
(Import B : NZGcd' A)
(Import C : NZMulOrderProp A).
(** Results concerning divisibility*)
#[global]
Instance divide_wd : Proper (eq==>eq==>iff) divide.

Lemma divide_trans : forall n m p, (n | m) -> (m | p) -> (n | p).
#[global]
Instance divide_reflexive : Reflexive divide | 5 := divide_refl.