by move/ltnW->.
rewrite leq_eqVlt; case/orP; first by move/eqP->.
by move/modp_small; rewrite rpq => h; move: nq0; rewrite h eqxx.
Qed.

(* Specifications: *)
Lemma eq_dvdp c quo q p : c != 0 -> c *: p = quo * q -> q %| p.
Lemma dvdpp d : d %| d.
Lemma dvdp_mull m d n : d %| n -> d %| m * n.
Lemma dvdp_mulr n d m : d %| m -> d %| m * n.
Lemma dvdp_addr m d n : d %| m -> (d %| m + n) = (d %| n).
Lemma dvdp_addl n d m : d %| n -> (d %| m + n) = (d %| m).
Lemma dvdp_trans : transitive (@dvdp R).
Lemma dvdp_mulIl p q : p %| p * q.
Lemma dvdp_mul2l r p q: r != 0 -> (r * p %| r * q) = (p %| q).
Lemma dvdp_Pexp2l  d k l : 1 < size d -> (d ^+ k %| d ^+ l) = (k <= l).
Lemma dvdp_exp2r p q k : p %| q -> p ^+ k %| q ^+ k.
Lemma dvdp_exp_sub p q k l: p != 0 ->
(p ^+ k %| q * p ^+ l) = (p ^+ (k - l) %| q).
Lemma dvdp_XsubCl p x : ('X - x%:P) %| p = root p x.
Lemma root_bigmul : forall x (ps : seq {poly R}),
~~root (\big[*%R/1]_(p <- ps) p) x = all (fun p => ~~ root p x) ps.
Lemma eqpP m n :
reflect (exists2 c12, (c12.1 != 0) && (c12.2 != 0) & c12.1 *: m = c12.2 *: n)
(m %= n).
Lemma eqp_eq p q: p %= q -> (lead_coef q) *: p = (lead_coef p) *: q.
Lemma eqpxx : reflexive (@eqp R).
Lemma eqp_ltrans : left_transitive (@eqp R).
Lemma eqp_rtrans : right_transitive (@eqp R).
Lemma eqp01 : 0 %= (1 : {poly R}) = false.
Lemma eqp_scale p c : c != 0 -> c *: p %= p.
Lemma eqp_size p q : p %= q -> size p = size q.
Lemma size_poly_eq1 p : (size p == 1%N) = (p %= 1).
Lemma polyXsubC_eqp1 (x : R) : ('X - x%:P %= 1) = false.
Lemma eqp_dvdr q p d: p %= q -> d %| p = (d %| q).
Lemma eqp_dvdl d2 d1 p : d1 %= d2 -> d1 %| p = (d2 %| p).
suff Hmn m n: m %= n -> (m %| p) -> (n %| p).