The executable Sturm chain is a Sturm chain. For a positive-degree,
rationally squarefree p, the real cast of Hex.ZPoly.sturmChain p satisfies
all the Sturm.IsSturmChain sign axioms for toPolyℝ (primitivePart p).
Stated at the primitive part: the executable chain's head is primitivePart p
(the content is stripped), so an IsSturmChain (toPolyℝ p) … conclusion would
have the wrong head; p and its primitive part have the same real roots
(roots_toPolyℝ_eq_primitivePart), so the counting consequences are
unaffected.