File: Mathlib/FieldTheory/Minpoly/Field.lean

full_name: minpoly.degree_le_of_ne_zero
code: /-- If an element `x` is a root of a nonzero polynomial `p`, then the degree of `p` is at least the
degree of the minimal polynomial of `x`. See also `minpoly.IsIntegrallyClosed.degree_le_of_ne_zero`
which relaxes the assumptions on `A` in exchange for stronger assumptions on `B`. -/
theorem degree_le_of_ne_zero {p : A[X]} (pnz : p ≠ 0) (hp : Polynomial.aeval x p = 0) :
    degree (minpoly A x) ≤ degree p 
goal: (minpoly A x).degree ≤ p.degree

full_name: minpoly.ne_zero_of_finite
code: theorem ne_zero_of_finite (e : B) [FiniteDimensional A B] : minpoly A e ≠ 0 
goal: minpoly A e ≠ 0

full_name: minpoly.unique
code: /-- The minimal polynomial of an element `x` is uniquely characterized by its defining property:
if there is another monic polynomial of minimal degree that has `x` as a root, then this polynomial
is equal to the minimal polynomial of `x`. See also `minpoly.IsIntegrallyClosed.Minpoly.unique`
which relaxes the assumptions on `A` in exchange for stronger assumptions on `B`. -/
theorem unique {p : A[X]} (pmonic : p.Monic) (hp : Polynomial.aeval x p = 0)
    (pmin : ∀ q : A[X], q.Monic → Polynomial.aeval x q = 0 → degree p ≤ degree q) :
    p = minpoly A x 
goal: p = minpoly A x

full_name: minpoly.dvd
code: /-- If an element `x` is a root of a polynomial `p`, then the minimal polynomial of `x` divides `p`.
See also `minpoly.isIntegrallyClosed_dvd` which relaxes the assumptions on `A` in exchange for
stronger assumptions on `B`. -/
theorem dvd {p : A[X]} (hp : Polynomial.aeval x p = 0) : minpoly A x ∣ p 
goal: minpoly A x ∣ p

full_name: minpoly.dvd_iff
code: lemma dvd_iff {p : A[X]} : minpoly A x ∣ p ↔ Polynomial.aeval x p = 0 
goal: minpoly A x ∣ p ↔ (Polynomial.aeval x) p = 0

full_name: minpoly.isRadical
code: theorem isRadical [IsReduced B] : IsRadical (minpoly A x) 
goal: IsRadical (minpoly A x)

full_name: minpoly.dvd_map_of_isScalarTower
code: theorem dvd_map_of_isScalarTower (A K : Type*) {R : Type*} [CommRing A] [Field K] [CommRing R]
    [Algebra A K] [Algebra A R] [Algebra K R] [IsScalarTower A K R] (x : R) :
    minpoly K x ∣ (minpoly A x).map (algebraMap A K) 
goal: minpoly K x ∣ Polynomial.map (algebraMap A K) (minpoly A x)

full_name: minpoly.dvd_map_of_isScalarTower'
code: theorem dvd_map_of_isScalarTower' (R : Type*) {S : Type*} (K L : Type*) [CommRing R]
    [CommRing S] [Field K] [CommRing L] [Algebra R S] [Algebra R K] [Algebra S L] [Algebra K L]
    [Algebra R L] [IsScalarTower R K L] [IsScalarTower R S L] (s : S) :
    minpoly K (algebraMap S L s) ∣ map (algebraMap R K) (minpoly R s) 
goal: minpoly K ((algebraMap S L) s) ∣ Polynomial.map (algebraMap R K) (minpoly R s)

full_name: minpoly.aeval_of_isScalarTower
code: /-- If `y` is a conjugate of `x` over a field `K`, then it is a conjugate over a subring `R`. -/
theorem aeval_of_isScalarTower (R : Type*) {K T U : Type*} [CommRing R] [Field K] [CommRing T]
    [Algebra R K] [Algebra K T] [Algebra R T] [IsScalarTower R K T] [CommSemiring U] [Algebra K U]
    [Algebra R U] [IsScalarTower R K U] (x : T) (y : U)
    (hy : Polynomial.aeval y (minpoly K x) = 0) : Polynomial.aeval y (minpoly R x) = 0 
goal: (Polynomial.aeval y) (minpoly R x) = 0

full_name: minpoly.ker_aeval_eq_span_minpoly
code: /-- See also `minpoly.ker_eval` which relaxes the assumptions on `A` in exchange for
stronger assumptions on `B`. -/
@[simp]
lemma ker_aeval_eq_span_minpoly :
    RingHom.ker (Polynomial.aeval x) = A[X] ∙ minpoly A x 
goal: RingHom.ker (Polynomial.aeval x) = Submodule.span A[X] {minpoly A x}

full_name: minpoly.eq_of_irreducible_of_monic
code: theorem eq_of_irreducible_of_monic [Nontrivial B] {p : A[X]} (hp1 : Irreducible p)
    (hp2 : Polynomial.aeval x p = 0) (hp3 : p.Monic) : p = minpoly A x 
goal: p = minpoly A x

full_name: minpoly.eq_of_irreducible
code: theorem eq_of_irreducible [Nontrivial B] {p : A[X]} (hp1 : Irreducible p)
    (hp2 : Polynomial.aeval x p = 0) : p * C p.leadingCoeff⁻¹ = minpoly A x 
goal: p * Polynomial.C p.leadingCoeff⁻¹ = minpoly A x

full_name: minpoly.add_algebraMap
code: theorem add_algebraMap {B : Type*} [CommRing B] [Algebra A B] {x : B} (hx : IsIntegral A x)
    (a : A) : minpoly A (x + algebraMap A B a) = (minpoly A x).comp (X - C a) 
goal: minpoly A (x + (algebraMap A B) a) = (minpoly A x).comp (Polynomial.X - Polynomial.C a)

full_name: minpoly.sub_algebraMap
code: theorem sub_algebraMap {B : Type*} [CommRing B] [Algebra A B] {x : B} (hx : IsIntegral A x)
    (a : A) : minpoly A (x - algebraMap A B a) = (minpoly A x).comp (X + C a) 
goal: minpoly A (x - (algebraMap A B) a) = (minpoly A x).comp (Polynomial.X + Polynomial.C a)

full_name: minpoly.Fintype.subtypeProd
code: /-- A technical finiteness result. -/
noncomputable def Fintype.subtypeProd {E : Type*} {X : Set E} (hX : X.Finite) {L : Type*}
    (F : E → Multiset L) : Fintype (∀ x : X, { l : L // l ∈ F x }) 
goal: Fintype ((x : ↑X) → { l // l ∈ F ↑x })

full_name: minpoly.rootsOfMinPolyPiType
code: /-- Function from Hom_K(E,L) to pi type Π (x : basis), roots of min poly of x -/
def rootsOfMinPolyPiType (φ : E →ₐ[F] K)
    (x : range (FiniteDimensional.finBasis F E : _ → E)) :
    { l : K // l ∈ (minpoly F x.1).aroots K } 
goal: { l // l ∈ (minpoly F ↑x).aroots K }

full_name: minpoly.aux_inj_roots_of_min_poly
code: theorem aux_inj_roots_of_min_poly : Injective (rootsOfMinPolyPiType F E K) 
goal: Function.Injective (minpoly.rootsOfMinPolyPiType F E K)

full_name: minpoly.AlgHom.fintype
code: /-- Given field extensions `E/F` and `K/F`, with `E/F` finite, there are finitely many `F`-algebra
  homomorphisms `E →ₐ[K] K`. -/
noncomputable instance AlgHom.fintype : Fintype (E →ₐ[F] K) 
goal: Fintype (E →ₐ[F] K)

full_name: minpoly.eq_X_sub_C
code: /-- If `B/K` is a nontrivial algebra over a field, and `x` is an element of `K`,
then the minimal polynomial of `algebraMap K B x` is `X - C x`. -/
theorem eq_X_sub_C (a : A) : minpoly A (algebraMap A B a) = X - C a 
goal: minpoly A ((algebraMap A B) a) = Polynomial.X - Polynomial.C a

full_name: minpoly.eq_X_sub_C'
code: theorem eq_X_sub_C' (a : A) : minpoly A a = X - C a 
goal: minpoly A a = Polynomial.X - Polynomial.C a

full_name: minpoly.zero
code: /-- The minimal polynomial of `0` is `X`. -/
@[simp]
theorem zero : minpoly A (0 : B) = X 
goal: minpoly A 0 = Polynomial.X

full_name: minpoly.one
code: /-- The minimal polynomial of `1` is `X - 1`. -/
@[simp]
theorem one : minpoly A (1 : B) = X - 1 
goal: minpoly A 1 = Polynomial.X - 1

full_name: minpoly.prime
code: /-- A minimal polynomial is prime. -/
theorem prime (hx : IsIntegral A x) : Prime (minpoly A x) 
goal: Prime (minpoly A x)

full_name: minpoly.root
code: /-- If `L/K` is a field extension and an element `y` of `K` is a root of the minimal polynomial
of an element `x ∈ L`, then `y` maps to `x` under the field embedding. -/
theorem root {x : B} (hx : IsIntegral A x) {y : A} (h : IsRoot (minpoly A x) y) :
    algebraMap A B y = x 
goal: (algebraMap A B) y = x

full_name: minpoly.coeff_zero_eq_zero
code: /-- The constant coefficient of the minimal polynomial of `x` is `0` if and only if `x = 0`. -/
@[simp]
theorem coeff_zero_eq_zero (hx : IsIntegral A x) : coeff (minpoly A x) 0 = 0 ↔ x = 0 
goal: (minpoly A x).coeff 0 = 0 ↔ x = 0

full_name: minpoly.coeff_zero_ne_zero
code: /-- The minimal polynomial of a nonzero element has nonzero constant coefficient. -/
theorem coeff_zero_ne_zero (hx : IsIntegral A x) (h : x ≠ 0) : coeff (minpoly A x) 0 ≠ 0 
goal: (minpoly A x).coeff 0 ≠ 0

full_name: minpoly_algEquiv_toLinearMap
code: /-- The minimal polynomial (over `K`) of `σ : Gal(L/K)` is `X ^ (orderOf σ) - 1`. -/
lemma minpoly_algEquiv_toLinearMap (σ : L ≃ₐ[K] L) (hσ : IsOfFinOrder σ) :
    minpoly K σ.toLinearMap = X ^ (orderOf σ) - C 1 
goal: minpoly K σ.toLinearMap = Polynomial.X ^ orderOf σ - Polynomial.C 1

full_name: minpoly_algHom_toLinearMap
code: /-- The minimal polynomial (over `K`) of `σ : Gal(L/K)` is `X ^ (orderOf σ) - 1`. -/
lemma minpoly_algHom_toLinearMap (σ : L →ₐ[K] L) (hσ : IsOfFinOrder σ) :
    minpoly K σ.toLinearMap = X ^ (orderOf σ) - C 1 
goal: minpoly K σ.toLinearMap = Polynomial.X ^ orderOf σ - Polynomial.C 1