Section divides.
Infix "div" := divides (at level 70, no associativity).
Fact divides_refl x : x div x.
Fact divides_trans x y z : x div y -> y div z -> x div z.
Fact divides_0 p : p div 0.
Fact divides_2_inv p : p div 2 -> p = 1 \/ p = 2.
Fact divides_mult p q k : p div q -> p div k*q.
Fact divides_mult_r p q k : p div q -> p div q*k.
Fact divides_mult_compat a b c d : a div b -> c div d -> a*c div b*d.
Fact divides_minus p q1 q2 : p div q1 -> p div q2 -> p div q1 - q2.
Fact divides_plus p q1 q2 : p div q1 -> p div q2 -> p div q1+q2.
Fact divides_plus_inv p q1 q2 : p div q1 -> p div q1+q2 -> p div q2.
Fact divides_le p q : q <> 0 -> p div q -> p <= q.
Fact divides_mult_inv k p q : k <> 0 -> k*p div k*q -> p div q.

Lemma divides_fact m p : 1 < p <= m -> p div fact m.