File: Mathlib/RingTheory/Polynomial/IntegralNormalization.lean

full_name: Polynomial.integralNormalization
code: /-- 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`.
-/
noncomputable def integralNormalization (f : R[X]) : R[X] 
goal: R[X]

full_name: Polynomial.integralNormalization_zero
code: @[simp]
theorem integralNormalization_zero : integralNormalization (0 : R[X]) = 0 
goal: Polynomial.integralNormalization 0 = 0

full_name: Polynomial.integralNormalization_coeff
code: theorem integralNormalization_coeff {f : R[X]} {i : ℕ} :
    (integralNormalization f).coeff i =
      if f.degree = i then 1 else coeff f i * f.leadingCoeff ^ (f.natDegree - 1 - i) 
goal: f.integralNormalization.coeff i = if f.degree = ↑i then 1 else f.coeff i * f.leadingCoeff ^ (f.natDegree - 1 - i)

full_name: Polynomial.integralNormalization_support
code: theorem integralNormalization_support {f : R[X]} :
    (integralNormalization f).support ⊆ f.support 
goal: f.integralNormalization.support ⊆ f.support

full_name: Polynomial.integralNormalization_coeff_degree
code: theorem integralNormalization_coeff_degree {f : R[X]} {i : ℕ} (hi : f.degree = i) :
    (integralNormalization f).coeff i = 1 
goal: f.integralNormalization.coeff i = 1

full_name: Polynomial.integralNormalization_coeff_natDegree
code: theorem integralNormalization_coeff_natDegree {f : R[X]} (hf : f ≠ 0) :
    (integralNormalization f).coeff (natDegree f) = 1 
goal: f.integralNormalization.coeff f.natDegree = 1

full_name: Polynomial.integralNormalization_coeff_ne_degree
code: theorem integralNormalization_coeff_ne_degree {f : R[X]} {i : ℕ} (hi : f.degree ≠ i) :
    coeff (integralNormalization f) i = coeff f i * f.leadingCoeff ^ (f.natDegree - 1 - i) 
goal: f.integralNormalization.coeff i = f.coeff i * f.leadingCoeff ^ (f.natDegree - 1 - i)

full_name: Polynomial.integralNormalization_coeff_ne_natDegree
code: theorem integralNormalization_coeff_ne_natDegree {f : R[X]} {i : ℕ} (hi : i ≠ natDegree f) :
    coeff (integralNormalization f) i = coeff f i * f.leadingCoeff ^ (f.natDegree - 1 - i) 
goal: f.integralNormalization.coeff i = f.coeff i * f.leadingCoeff ^ (f.natDegree - 1 - i)

full_name: Polynomial.monic_integralNormalization
code: theorem monic_integralNormalization {f : R[X]} (hf : f ≠ 0) : Monic (integralNormalization f) 
goal: f.integralNormalization.Monic

full_name: Polynomial.support_integralNormalization
code: @[simp]
theorem support_integralNormalization {f : R[X]} :
    (integralNormalization f).support = f.support 
goal: f.integralNormalization.support = f.support

full_name: Polynomial.integralNormalization_eval₂_eq_zero
code: theorem integralNormalization_eval₂_eq_zero {p : R[X]} (f : R →+* S) {z : S} (hz : eval₂ f z p = 0)
    (inj : ∀ x : R, f x = 0 → x = 0) :
    eval₂ f (z * f p.leadingCoeff) (integralNormalization p) = 0 
goal: Polynomial.eval₂ f (z * f p.leadingCoeff) p.integralNormalization = 0

full_name: Polynomial.integralNormalization_aeval_eq_zero
code: theorem integralNormalization_aeval_eq_zero [Algebra R S] {f : R[X]} {z : S} (hz : aeval z f = 0)
    (inj : ∀ x : R, algebraMap R S x = 0 → x = 0) :
    aeval (z * algebraMap R S f.leadingCoeff) (integralNormalization f) = 0 
goal: (Polynomial.aeval (z * (algebraMap R S) f.leadingCoeff)) f.integralNormalization = 0