A primitive integer polynomial is nonzero.
The primitive field reassembles over Rat[x] as a rational scalar multiple
of the product of the square-free part and repeated part.
A nonzero square-free part from the primitive square-free decomposition is
square-free over Rat[x].
For nonzero input, the product of the square-free part and repeated part is primitive.
A nonzero degree-zero square-free part from the primitive square-free
decomposition is 1.
Companion to primitiveSquareFreeDecomposition_squareFreeCore_eq_one_of_degree_zero:
when the recorded square-free part has degree zero (and is nonzero), the recorded
repeatedPart collapses to 1. The derivative-zero branch settles the goal by the
literal repeatedPart := 1 field, while the derivative-nonzero branch is ruled out
via the gcd-derivative degree arithmetic (derivative.size ≤ ratPrimitive.size - 1
combined with the quotient being a rational unit).
The square-free part produced by primitive square-free decomposition has nonnegative leading coefficient.
The repeated part produced by primitive square-free decomposition has nonnegative leading coefficient.
For nonzero input, the product of the square-free part and repeated part has positive leading coefficient.
For nonzero input, the product of the square-free part and repeated part reassembles the primitive part up to sign.
The squareFreeCore projection is the decomposition's square-free part.
A definitional correspondence for consumers that cannot unfold the unexposed def.
The square-free part of a nonzero polynomial is nonzero: in the signed reassembly it is a factor of the (nonzero) primitive part.
The square-free core of a nonzero polynomial is primitive.
The square-free core of a nonzero polynomial has positive leading coefficient.
The square-free core of a nonzero polynomial is square-free over Rat[x]:
combine the executable core square-freeness with core nonzeroness.
The rational cast of the repeated part divides the derivative of the
rational cast of the primitive part. The repeated part is a rational associate
of gcd(primitive, primitive'), which divides primitive'; this is the
divisibility the square-free-part root transfer consumes.
A Bezout congruence witness proves that two integer polynomials are coprime
modulo p.
Gauss descent: if a primitive integer polynomial r divides f over the
rationals (ℚ[x]), then it divides f over the integers (ℤ[x]). The rational
cofactor is cleared to a primitive integer polynomial via
ratPolyPrimitivePart, and rational_associate_primitive_unit forces the
leftover rational scalar to be ±1, so the integer product recovers f's
primitive part exactly.
On a nonzero input whose primitive part is square-free over ℚ, the
repeated part of the primitive square-free decomposition is 1.
On a nonzero input whose primitive part is square-free over ℚ, the
square-free part of the primitive square-free decomposition is exactly the
sign-normalized primitive part. Together with
primitiveSquareFreeDecomposition_repeatedPart_eq_one_of_squareFreeRat, this is
the trivial decomposition that the modular square-free fast path returns.