(******************************************************************************)
 
Inductive divides : nat -> nat -> Prop :=
    dividesDef : forall a b q : nat, b = q * a -> divides a b.(******************************************************************************)
 
Inductive divides : nat -> nat -> Prop :=
    dividesDef : forall a b q : nat, b = q * a -> divides a b.

(* Specifications: *)
Lemma div_ref : forall a : nat, divides a a.
Lemma div_divides : forall x y : nat, (exists q : _, is_div x y q 0) -> divides y x.
Lemma divides_div : forall x y : nat, 0 < y -> divides y x -> exists q : _, is_div x y q 0.
Lemma divides_dec' : forall x y : nat, {(exists q : _, is_div x y q 0)} + {~ (exists q : _, is_div x y q 0)}.
Lemma divides_dec : forall x y : nat, {divides x y} + {~ divides x y}.
Lemma all_divides_O : forall n : nat, divides n 0.
Lemma SO_divides_all : forall n : nat, divides 1 n.
Lemma divides_plus1 : forall a b c : nat, divides a b -> divides a c -> divides a (b + c).
Lemma divides_plus2 : forall a b c : nat, divides a b -> divides a (b + c) -> divides a c.
Theorem divides_le : forall a b : nat, b <> 0 -> divides a b -> a <= b.
Lemma divides_antisym : forall a b : nat, divides a b -> divides b a -> a = b.
Lemma not_lt_div : forall a b : nat, 0 < b -> b < a -> ~ divides a b.