Splitting fields #
This file introduces the notion of a splitting field of a polynomial and provides an embedding from
a splitting field to any field that splits the polynomial. A polynomial f : K[X] splits
over a field extension L of K if it is zero or all of its irreducible factors over L have
degree 1. A field extension of K of a polynomial f : K[X] is called a splitting field
if it is the smallest field extension of K such that f splits.
Main definitions #
Polynomial.IsSplittingField: A predicate on a field to be a splitting field of a polynomialf.
Main statements #
Polynomial.IsSplittingField.lift: An embedding of a splitting field of the polynomialfinto another field such thatfsplits.
class Polynomial.IsSplittingField (K : Type v) (L : Type w) [Field K] [Field L] [Algebra K L] (f : Polynomial K) :
Typeclass characterising splitting fields.
- splits' : (Polynomial.map (algebraMap K L) f).Splits
Instances
theorem Polynomial.IsSplittingField.splits {K : Type v} (L : Type w) [Field K] [Field L] [Algebra K L] (f : Polynomial K) [IsSplittingField K L f] :
(Polynomial.map (algebraMap K L) f).Splits
theorem Polynomial.IsSplittingField.adjoin_rootSet {K : Type v} (L : Type w) [Field K] [Field L] [Algebra K L] (f : Polynomial K) [IsSplittingField K L f] :
instance Polynomial.IsSplittingField.map {F : Type u} {K : Type v} (L : Type w) [Field K] [Field L] [Field F] [Algebra K L] [Algebra F K] [Algebra F L] [IsScalarTower F K L] (f : Polynomial F) [IsSplittingField F L f] :
IsSplittingField K L (Polynomial.map (algebraMap F K) f)
theorem Polynomial.IsSplittingField.splits_iff {K : Type v} (L : Type w) [Field K] [Field L] [Algebra K L] (f : Polynomial K) [IsSplittingField K L f] :
theorem Polynomial.IsSplittingField.IsScalarTower.splits {F : Type u} {K : Type v} (L : Type w) [Field K] [Field L] [Field F] [Algebra K L] [Algebra F K] [Algebra F L] [IsScalarTower F K L] (f : Polynomial F) [IsSplittingField K L ((mapAlg F K) f)] :
theorem Polynomial.IsSplittingField.mul {F : Type u} {K : Type v} (L : Type w) [Field K] [Field L] [Field F] [Algebra K L] [Algebra F K] [Algebra F L] [IsScalarTower F K L] (f g : Polynomial F) (hf : f ≠ 0) (hg : g ≠ 0) [IsSplittingField F K f] [IsSplittingField K L (Polynomial.map (algebraMap F K) g)] :
IsSplittingField F L (f * g)
noncomputable def Polynomial.IsSplittingField.lift {F : Type u} {K : Type v} (L : Type w) [Field K] [Field L] [Field F] [Algebra K L] [Algebra K F] (f : Polynomial K) [IsSplittingField K L f] (hf : (Polynomial.map (algebraMap K F) f).Splits) :
Splitting field of f embeds into any field that splits f.
Equations
- Polynomial.IsSplittingField.lift L f hf = if hf0 : f = 0 then (Algebra.ofId K F).comp ((↑(Algebra.botEquiv K L)).comp (⋯.mpr Algebra.toTop)) else (⋯.mpr (Classical.choice ⋯)).comp Algebra.toTop
Instances For
theorem Polynomial.IsSplittingField.finiteDimensional {K : Type v} (L : Type w) [Field K] [Field L] [Algebra K L] (f : Polynomial K) [IsSplittingField K L f] :
theorem Polynomial.IsSplittingField.IsScalarTower.isAlgebraic {F : Type u} {K : Type v} (L : Type w) [Field K] [Field L] [Field F] [Algebra K L] [Algebra F K] [Algebra F L] [Algebra.IsAlgebraic F K] [IsScalarTower F K L] (f : Polynomial K) [IsSplittingField K L f] :
theorem Polynomial.IsSplittingField.of_algEquiv {F : Type u} {K : Type v} (L : Type w) [Field K] [Field L] [Field F] [Algebra K L] [Algebra K F] (p : Polynomial K) (f : F ≃ₐ[K] L) [IsSplittingField K F p] :
IsSplittingField K L p
theorem Polynomial.IsSplittingField.adjoin_rootSet_eq_range {F : Type u} {K : Type v} (L : Type w) [Field K] [Field L] [Field F] [Algebra K L] [Algebra K F] (f : Polynomial K) [IsSplittingField K L f] (i : L →ₐ[K] F) :
theorem IntermediateField.splits_of_splits {K : Type v} {L : Type w} [Field K] [Field L] [Algebra K L] {p : Polynomial K} {F : IntermediateField K L} (h : (Polynomial.map (algebraMap K L) p).Splits) (hF : ∀ x ∈ p.rootSet L, x ∈ F) :
(Polynomial.map (algebraMap K ↥F) p).Splits
theorem IntermediateField.splits_iff_mem {K : Type v} {L : Type w} [Field K] [Field L] [Algebra K L] {p : Polynomial K} {F : IntermediateField K L} (h : (Polynomial.map (algebraMap K L) p).Splits) :
theorem IsIntegral.mem_intermediateField_of_minpoly_splits {K : Type v} {L : Type w} [Field K] [Field L] [Algebra K L] {x : L} (int : IsIntegral K x) {F : IntermediateField K L} (h : (Polynomial.map (algebraMap K ↥F) (minpoly K x)).Splits) :
theorem isSplittingField_iff_intermediateField {K : Type v} {L : Type w} [Field K] [Field L] [Algebra K L] {p : Polynomial K} :
Polynomial.IsSplittingField K L p ↔ (Polynomial.map (algebraMap K L) p).Splits ∧ IntermediateField.adjoin K (p.rootSet L) = ⊤
Characterize IsSplittingField with IntermediateField.adjoin instead of Algebra.adjoin.
theorem IntermediateField.isSplittingField_iff {K : Type v} {L : Type w} [Field K] [Field L] [Algebra K L] {p : Polynomial K} {F : IntermediateField K L} :
Polynomial.IsSplittingField K (↥F) p ↔ (Polynomial.map (algebraMap K ↥F) p).Splits ∧ F = adjoin K (p.rootSet L)
theorem IntermediateField.adjoin_rootSet_isSplittingField {K : Type v} {L : Type w} [Field K] [Field L] [Algebra K L] {p : Polynomial K} (hp : (Polynomial.map (algebraMap K L) p).Splits) :
Polynomial.IsSplittingField K (↥(adjoin K (p.rootSet L))) p