# Theory of monic polynomials #

We define integralNormalization, which relate arbitrary polynomials to monic ones.

noncomputable def Polynomial.integralNormalization {R : Type u} [] (f : ) :

If f : R[X] is a nonzero polynomial with root z, integralNormalization f is a monic polynomial with root leadingCoeff f * z.

Moreover, integralNormalization 0 = 0.

Equations
• f.integralNormalization = if.support, (if f.degree = i then 1 else f.coeff i * f.leadingCoeff ^ (f.natDegree - 1 - i))
Instances For
theorem Polynomial.integralNormalization_coeff {R : Type u} [] {f : } {i : } :
f.integralNormalization.coeff i = if f.degree = i then 1 else f.coeff i * f.leadingCoeff ^ (f.natDegree - 1 - i)
theorem Polynomial.integralNormalization_support {R : Type u} [] {f : } :
f.integralNormalization.support f.support
theorem Polynomial.integralNormalization_coeff_degree {R : Type u} [] {f : } {i : } (hi : f.degree = i) :
f.integralNormalization.coeff i = 1
theorem Polynomial.integralNormalization_coeff_natDegree {R : Type u} [] {f : } (hf : f 0) :
f.integralNormalization.coeff f.natDegree = 1
theorem Polynomial.integralNormalization_coeff_ne_degree {R : Type u} [] {f : } {i : } (hi : f.degree i) :
f.integralNormalization.coeff i = f.coeff i * f.leadingCoeff ^ (f.natDegree - 1 - i)
theorem Polynomial.integralNormalization_coeff_ne_natDegree {R : Type u} [] {f : } {i : } (hi : i f.natDegree) :
f.integralNormalization.coeff i = f.coeff i * f.leadingCoeff ^ (f.natDegree - 1 - i)
theorem Polynomial.monic_integralNormalization {R : Type u} [] {f : } (hf : f 0) :
f.integralNormalization.Monic
@[simp]
theorem Polynomial.support_integralNormalization {R : Type u} [Ring R] [] {f : } :
f.integralNormalization.support = f.support
theorem Polynomial.integralNormalization_eval₂_eq_zero {R : Type u} {S : Type v} [] [] [] {p : } (f : R →+* S) {z : S} (hz : = 0) (inj : ∀ (x : R), f x = 0x = 0) :
Polynomial.eval₂ f (z * f p.leadingCoeff) p.integralNormalization = 0
theorem Polynomial.integralNormalization_aeval_eq_zero {R : Type u} {S : Type v} [] [] [] [Algebra R S] {f : } {z : S} (hz : () f = 0) (inj : ∀ (x : R), () x = 0x = 0) :
(Polynomial.aeval (z * () f.leadingCoeff)) f.integralNormalization = 0