Horner fold for the Taylor shift: translateAux s cs is
Σᵢ cs[i]·(X + s)^i. Structural recursion on the coefficient list keeps the
whole reduction closure exposed for the kernel checks in
checkIrredWitness.
Equations
- Hex.ZPoly.translateAux s [] = 0
- Hex.ZPoly.translateAux s (c :: cs) = Hex.ZPoly.translateAux s cs * (Hex.ZPoly.X + Hex.DensePoly.C s) + Hex.DensePoly.C c
Instances For
The Taylor shift f(X) ↦ f(X + s).
Equations
Instances For
Translation fixes the zero polynomial.
Translation fixes constant polynomials.
Translation fixes the constant one.
Translating X by s yields X + s.
The Taylor shift preserves the dense size (hence the degree).
Irreducibility transfers backwards through the Taylor shift: any
factorization of f shifts to a factorization of translate s f, whose unit
factor reflects back through the inverse shift.
Eisenstein's criterion for integer polynomials, Mathlib-free: a
primitive non-constant g is irreducible when some prime q divides every
coefficient below the leading one, does not divide the leading coefficient,
and its square does not divide the constant term.
Kernel-decidable Eisenstein-after-shift irreducibility: every hypothesis
is a Boolean check on the literal shifted polynomial translate shift f,
whose computation is itself part of the kernel check (the translate
reduction closure is exposed). Primitivity is checked on the shifted
polynomial, and the resulting irreducibility transfers back through
irreducible_of_translate_irreducible. Divisibility is checked through
% because the free layer carries no Decidable ((q : Int) ∣ x) instance.