Section ZpolyScale.
Definition zcontents p :=
sgz (lead_coef p) * \big[gcdn/0%N]_(i < size p) `|(p`_i)%R|%N.
Definition zprimitive p := map_poly (divz^~ (zcontents p)) p.
Local Notation pZtoQ := (map_poly (intr : int -> rat)).

Lemma dvdpP_rat_int p q :
p %| pZtoQ q ->
{p1 : {poly int} & {a | a != 0 & p = a *: pZtoQ p1} & {r | q = p1 * r}}.