#[global]
Instance divide_transitive : Transitive divide | 5 := divide_trans.
(** Due to sign, no general antisymmetry result *)

(* Specifications: *)
Lemma divide_antisym_nonneg : forall n m,
0<=n -> 0<=m -> (n | m) -> (m | n) -> n == m.
Lemma mul_divide_mono_l : forall n m p, (n | m) -> (p * n | p * m).
Lemma mul_divide_mono_r : forall n m p, (n | m) -> (n * p | m * p).
Lemma mul_divide_cancel_l : forall n m p, p ~= 0 ->
((p * n | p * m) <-> (n | m)).
Lemma mul_divide_cancel_r : forall n m p, p ~= 0 ->
((n * p | m * p) <-> (n | m)).
Lemma divide_add_r : forall n m p, (n | m) -> (n | p) -> (n | m + p).
Lemma divide_mul_l : forall n m p, (n | m) -> (n | m * p).
Lemma divide_mul_r : forall n m p, (n | p) -> (n | m * p).
Lemma divide_factor_l : forall n m, (n | n * m).
Lemma divide_factor_r : forall n m, (n | m * n).
Lemma divide_pos_le : forall n m, 0 < m -> (n | m) -> n <= m.
(** Basic properties of gcd *)
Lemma gcd_unique : forall n m p,
0<=p -> (p|n) -> (p|m) ->
(forall q, (q|n) -> (q|m) -> (q|p)) ->
gcd n m == p.