File: Mathlib/FieldTheory/Minpoly/MinpolyDiv.lean

full_name: minpolyDiv
code: /-- `minpolyDiv R x : S[X]` for `x : S` is the polynomial `minpoly R x / (X - C x)`. -/
noncomputable def minpolyDiv : S[X] 
goal: S[X]

full_name: minpolyDiv_spec
code: lemma minpolyDiv_spec :
    minpolyDiv R x * (X - C x) = (minpoly R x).map (algebraMap R S) 
goal: minpolyDiv R x * (Polynomial.X - Polynomial.C x) = Polynomial.map (algebraMap R S) (minpoly R x)

full_name: coeff_minpolyDiv
code: lemma coeff_minpolyDiv (i) : coeff (minpolyDiv R x) i =
    algebraMap R S (coeff (minpoly R x) (i + 1)) + coeff (minpolyDiv R x) (i + 1) * x 
goal: (minpolyDiv R x).coeff i = (algebraMap R S) ((minpoly R x).coeff (i + 1)) + (minpolyDiv R x).coeff (i + 1) * x

full_name: minpolyDiv_ne_zero
code: lemma minpolyDiv_ne_zero [Nontrivial S] : minpolyDiv R x ≠ 0 
goal: minpolyDiv R x ≠ 0

full_name: minpolyDiv_eq_zero
code: lemma minpolyDiv_eq_zero (hx : ¬IsIntegral R x) : minpolyDiv R x = 0 
goal: minpolyDiv R x = 0

full_name: minpolyDiv_monic
code: lemma minpolyDiv_monic : Monic (minpolyDiv R x) 
goal: (minpolyDiv R x).Monic

full_name: eval_minpolyDiv_self
code: lemma eval_minpolyDiv_self : (minpolyDiv R x).eval x = aeval x (derivative <| minpoly R x) 
goal: Polynomial.eval x (minpolyDiv R x) = (Polynomial.aeval x) (Polynomial.derivative (minpoly R x))

full_name: minpolyDiv_eval_eq_zero_of_ne_of_aeval_eq_zero
code: lemma minpolyDiv_eval_eq_zero_of_ne_of_aeval_eq_zero [IsDomain S]
    {y} (hxy : y ≠ x) (hy : aeval y (minpoly R x) = 0) : (minpolyDiv R x).eval y = 0 
goal: Polynomial.eval y (minpolyDiv R x) = 0

full_name: eval₂_minpolyDiv_of_eval₂_eq_zero
code: lemma eval₂_minpolyDiv_of_eval₂_eq_zero {T} [CommRing T]
    [IsDomain T] [DecidableEq T] {x y}
    (σ : S →+* T) (hy : eval₂ (σ.comp (algebraMap R S)) y (minpoly R x) = 0) :
    eval₂ σ y (minpolyDiv R x) =
      if σ x = y then σ (aeval x (derivative <| minpoly R x)) else 0 
goal: Polynomial.eval₂ σ y (minpolyDiv R x) =
  if σ x = y then σ ((Polynomial.aeval x) (Polynomial.derivative (minpoly R x))) else 0

full_name: eval₂_minpolyDiv_self
code: lemma eval₂_minpolyDiv_self {T} [CommRing T] [Algebra R T] [IsDomain T] [DecidableEq T] (x : S)
    (σ₁ σ₂ : S →ₐ[R] T) :
    eval₂ σ₁ (σ₂ x) (minpolyDiv R x) =
      if σ₁ x = σ₂ x then σ₁ (aeval x (derivative <| minpoly R x)) else 0 
goal: Polynomial.eval₂ (↑σ₁) (σ₂ x) (minpolyDiv R x) =
  if σ₁ x = σ₂ x then σ₁ ((Polynomial.aeval x) (Polynomial.derivative (minpoly R x))) else 0

full_name: eval_minpolyDiv_of_aeval_eq_zero
code: lemma eval_minpolyDiv_of_aeval_eq_zero [IsDomain S] [DecidableEq S]
    {y} (hy : aeval y (minpoly R x) = 0) :
    (minpolyDiv R x).eval y = if x = y then aeval x (derivative <| minpoly R x) else 0 
goal: Polynomial.eval y (minpolyDiv R x) = if x = y then (Polynomial.aeval x) (Polynomial.derivative (minpoly R x)) else 0

full_name: natDegree_minpolyDiv_succ
code: lemma natDegree_minpolyDiv_succ [Nontrivial S] :
    natDegree (minpolyDiv R x) + 1 = natDegree (minpoly R x) 
goal: (minpolyDiv R x).natDegree + 1 = (minpoly R x).natDegree

full_name: natDegree_minpolyDiv
code: lemma natDegree_minpolyDiv :
    natDegree (minpolyDiv R x) = natDegree (minpoly R x) - 1 
goal: (minpolyDiv R x).natDegree = (minpoly R x).natDegree - 1

full_name: natDegree_minpolyDiv_lt
code: lemma natDegree_minpolyDiv_lt [Nontrivial S] :
    natDegree (minpolyDiv R x) < natDegree (minpoly R x) 
goal: (minpolyDiv R x).natDegree < (minpoly R x).natDegree

full_name: coeff_minpolyDiv_mem_adjoin
code: lemma coeff_minpolyDiv_mem_adjoin (x : S) (i) :
    coeff (minpolyDiv R x) i ∈ Algebra.adjoin R {x} 
goal: (minpolyDiv R x).coeff i ∈ Algebra.adjoin R {x}

full_name: minpolyDiv_eq_of_isIntegrallyClosed
code: lemma minpolyDiv_eq_of_isIntegrallyClosed [IsDomain R] [IsIntegrallyClosed R] [IsDomain S]
    [Algebra R K] [Algebra K S] [IsScalarTower R K S] [IsFractionRing R K] :
    minpolyDiv R x = minpolyDiv K x 
goal: minpolyDiv R x = minpolyDiv K x

full_name: coeff_minpolyDiv_sub_pow_mem_span
code: lemma coeff_minpolyDiv_sub_pow_mem_span {i} (hi : i ≤ natDegree (minpolyDiv R x)) :
    coeff (minpolyDiv R x) (natDegree (minpolyDiv R x) - i) - x ^ i ∈
      Submodule.span R ((x ^ ·) '' Set.Iio i) 
goal: (minpolyDiv R x).coeff ((minpolyDiv R x).natDegree - i) - x ^ i ∈ Submodule.span R ((fun x_1 => x ^ x_1) '' Set.Iio i)

full_name: span_coeff_minpolyDiv
code: lemma span_coeff_minpolyDiv :
    Submodule.span R (Set.range (coeff (minpolyDiv R x))) =
      Subalgebra.toSubmodule (Algebra.adjoin R {x}) 
goal: Submodule.span R (Set.range (minpolyDiv R x).coeff) = Subalgebra.toSubmodule (Algebra.adjoin R {x})

full_name: sum_smul_minpolyDiv_eq_X_pow
code: lemma sum_smul_minpolyDiv_eq_X_pow (E) [Field E] [Algebra K E] [IsAlgClosed E]
    [FiniteDimensional K L] [Algebra.IsSeparable K L]
    {x : L} (hxL : Algebra.adjoin K {x} = ⊤) {r : ℕ} (hr : r < finrank K L) :
    ∑ σ : L →ₐ[K] E, ((x ^ r / aeval x (derivative <| minpoly K x)) •
      minpolyDiv K x).map σ = (X ^ r : E[X]) 
goal: ∑ σ : L →ₐ[K] E,
    Polynomial.map (↑σ) ((x ^ r / (Polynomial.aeval x) (Polynomial.derivative (minpoly K x))) • minpolyDiv K x) =
  Polynomial.X ^ r