Section ZpolyScale.
Definition zcontents p :=
sgz (lead_coef p) * \big[gcdn/0%N]_(i < size p) `|(p`_i)%R|%N.

(* Specifications: *)
Lemma sgz_contents p : sgz (zcontents p) = sgz (lead_coef p).
Lemma zcontents_eq0 p : (zcontents p == 0) = (p == 0).
Lemma zcontents_monic p : p \is monic -> zcontents p = 1.
Lemma dvdz_contents a p : (a %| zcontents p)%Z = (p \is a polyOver (dvdz a)).
Lemma map_poly_divzK {a} p :
p \is a polyOver (dvdz a) -> a *: map_poly (divz^~ a) p = p.
Lemma polyOver_dvdzP a p :
reflect (exists q, p = a *: q) (p \is a polyOver (dvdz a)).