# Documentation

Mathlib.FieldTheory.Normal

# Normal field extensions #

In this file we define normal field extensions and prove that for a finite extension, being normal is the same as being a splitting field (Normal.of_isSplittingField and Normal.exists_isSplittingField).

## Main Definitions #

• Normal F K where K is a field extension of F.
class Normal (F : Type u_1) (K : Type u_2) [] [] [Algebra F K] :

Typeclass for normal field extension: K is a normal extension of F iff the minimal polynomial of every element x in K splits in K, i.e. every conjugate of x is in K.

Instances
theorem Normal.isAlgebraic {F : Type u_1} {K : Type u_2} [] [] [Algebra F K] :
Normal F K∀ (x : K),
theorem Normal.isIntegral {F : Type u_1} {K : Type u_2} [] [] [Algebra F K] (h : Normal F K) (x : K) :
theorem Normal.splits {F : Type u_1} {K : Type u_2} [] [] [Algebra F K] :
Normal F K∀ (x : K), Polynomial.Splits () (minpoly F x)
theorem normal_iff {F : Type u_1} {K : Type u_2} [] [] [Algebra F K] :
Normal F K ∀ (x : K), Polynomial.Splits () (minpoly F x)
theorem Normal.out {F : Type u_1} {K : Type u_2} [] [] [Algebra F K] :
Normal F K∀ (x : K), Polynomial.Splits () (minpoly F x)
instance normal_self (F : Type u_1) [] :
Normal F F
theorem Normal.exists_isSplittingField (F : Type u_1) (K : Type u_2) [] [] [Algebra F K] [h : Normal F K] [] :
p,
theorem Normal.tower_top_of_normal (F : Type u_1) (K : Type u_2) [] [] [Algebra F K] (E : Type u_3) [] [Algebra F E] [Algebra K E] [] [h : Normal F E] :
Normal K E
theorem AlgHom.normal_bijective (F : Type u_1) (K : Type u_2) [] [] [Algebra F K] (E : Type u_3) [] [Algebra F E] [Algebra K E] [] [h : Normal F E] (ϕ : E →ₐ[F] K) :
theorem Normal.of_algEquiv {F : Type u_1} {E : Type u_3} {E' : Type u_4} [] [] [Algebra F E] [Field E'] [Algebra F E'] [h : Normal F E] (f : E ≃ₐ[F] E') :
Normal F E'
theorem AlgEquiv.transfer_normal {F : Type u_1} {E : Type u_3} {E' : Type u_4} [] [] [Algebra F E] [Field E'] [Algebra F E'] (f : E ≃ₐ[F] E') :
Normal F E Normal F E'
theorem Normal.of_isSplittingField {F : Type u_1} {E : Type u_3} [] [] [Algebra F E] (p : ) [hFEp : ] :
Normal F E
instance IntermediateField.normal_iSup (F : Type u_1) (K : Type u_2) [] [] [Algebra F K] {ι : Type u_3} (t : ι) [h : ∀ (i : ι), Normal F { x // x t i }] :
Normal F { x // x ⨆ (i : ι), t i }

A compositum of normal extensions is normal

instance IntermediateField.normal_sup (F : Type u_1) (K : Type u_2) [] [] [Algebra F K] (E : ) (E' : ) [Normal F { x // x E }] [Normal F { x // x E' }] :
Normal F { x // x E E' }
@[simp]
theorem IntermediateField.restrictScalars_normal {F : Type u_1} {K : Type u_2} {L : Type u_3} [] [] [] [Algebra F L] [Algebra K L] [Algebra F K] [] {E : } :
Normal F { x // } Normal F { x // x E }
def AlgHom.restrictNormalAux {F : Type u_1} {K₁ : Type u_3} {K₂ : Type u_4} [] [Field K₁] [Field K₂] [Algebra F K₁] [Algebra F K₂] (ϕ : K₁ →ₐ[F] K₂) (E : Type u_6) [] [Algebra F E] [Algebra E K₁] [Algebra E K₂] [IsScalarTower F E K₁] [IsScalarTower F E K₂] [h : Normal F E] :
{ x // x AlgHom.range () } →ₐ[F] { x // x AlgHom.range () }

Restrict algebra homomorphism to image of normal subfield

Instances For
def AlgHom.restrictNormal {F : Type u_1} {K₁ : Type u_3} {K₂ : Type u_4} [] [Field K₁] [Field K₂] [Algebra F K₁] [Algebra F K₂] (ϕ : K₁ →ₐ[F] K₂) (E : Type u_6) [] [Algebra F E] [Algebra E K₁] [Algebra E K₂] [IsScalarTower F E K₁] [IsScalarTower F E K₂] [Normal F E] :

Restrict algebra homomorphism to normal subfield

Instances For
def AlgHom.restrictNormal' {F : Type u_1} {K₁ : Type u_3} {K₂ : Type u_4} [] [Field K₁] [Field K₂] [Algebra F K₁] [Algebra F K₂] (ϕ : K₁ →ₐ[F] K₂) (E : Type u_6) [] [Algebra F E] [Algebra E K₁] [Algebra E K₂] [IsScalarTower F E K₁] [IsScalarTower F E K₂] [Normal F E] :

Restrict algebra homomorphism to normal subfield (AlgEquiv version)

Instances For
@[simp]
theorem AlgHom.restrictNormal_commutes {F : Type u_1} {K₁ : Type u_3} {K₂ : Type u_4} [] [Field K₁] [Field K₂] [Algebra F K₁] [Algebra F K₂] (ϕ : K₁ →ₐ[F] K₂) (E : Type u_6) [] [Algebra F E] [Algebra E K₁] [Algebra E K₂] [IsScalarTower F E K₁] [IsScalarTower F E K₂] [Normal F E] (x : E) :
↑(algebraMap E K₂) (↑() x) = ϕ (↑(algebraMap E K₁) x)
theorem AlgHom.restrictNormal_comp {F : Type u_1} {K₁ : Type u_3} {K₂ : Type u_4} {K₃ : Type u_5} [] [Field K₁] [Field K₂] [Field K₃] [Algebra F K₁] [Algebra F K₂] [Algebra F K₃] (ϕ : K₁ →ₐ[F] K₂) (ψ : K₂ →ₐ[F] K₃) (E : Type u_6) [] [Algebra F E] [Algebra E K₁] [Algebra E K₂] [Algebra E K₃] [IsScalarTower F E K₁] [IsScalarTower F E K₂] [IsScalarTower F E K₃] [Normal F E] :
=
theorem AlgHom.fieldRange_of_normal {F : Type u_1} {K : Type u_2} [] [] [Algebra F K] {E : } [Normal F { x // x E }] (f : { x // x E } →ₐ[F] K) :
def AlgEquiv.restrictNormal {F : Type u_1} {K₁ : Type u_3} {K₂ : Type u_4} [] [Field K₁] [Field K₂] [Algebra F K₁] [Algebra F K₂] (χ : K₁ ≃ₐ[F] K₂) (E : Type u_6) [] [Algebra F E] [Algebra E K₁] [Algebra E K₂] [IsScalarTower F E K₁] [IsScalarTower F E K₂] [Normal F E] :

Restrict algebra isomorphism to a normal subfield

Instances For
@[simp]
theorem AlgEquiv.restrictNormal_commutes {F : Type u_1} {K₁ : Type u_3} {K₂ : Type u_4} [] [Field K₁] [Field K₂] [Algebra F K₁] [Algebra F K₂] (χ : K₁ ≃ₐ[F] K₂) (E : Type u_6) [] [Algebra F E] [Algebra E K₁] [Algebra E K₂] [IsScalarTower F E K₁] [IsScalarTower F E K₂] [Normal F E] (x : E) :
↑(algebraMap E K₂) (↑() x) = χ (↑(algebraMap E K₁) x)
theorem AlgEquiv.restrictNormal_trans {F : Type u_1} {K₁ : Type u_3} {K₂ : Type u_4} {K₃ : Type u_5} [] [Field K₁] [Field K₂] [Field K₃] [Algebra F K₁] [Algebra F K₂] [Algebra F K₃] (χ : K₁ ≃ₐ[F] K₂) (ω : K₂ ≃ₐ[F] K₃) (E : Type u_6) [] [Algebra F E] [Algebra E K₁] [Algebra E K₂] [Algebra E K₃] [IsScalarTower F E K₁] [IsScalarTower F E K₂] [IsScalarTower F E K₃] [Normal F E] :
def AlgEquiv.restrictNormalHom {F : Type u_1} {K₁ : Type u_3} [] [Field K₁] [Algebra F K₁] (E : Type u_6) [] [Algebra F E] [Algebra E K₁] [IsScalarTower F E K₁] [Normal F E] :
(K₁ ≃ₐ[F] K₁) →* E ≃ₐ[F] E

Restriction to a normal subfield as a group homomorphism

Instances For
@[simp]
theorem Normal.algHomEquivAut_apply (F : Type u_1) (K₁ : Type u_3) [] [Field K₁] [Algebra F K₁] (E : Type u_6) [] [Algebra F E] [Algebra E K₁] [IsScalarTower F E K₁] [Normal F E] (σ : E →ₐ[F] K₁) :
↑() σ =
@[simp]
theorem Normal.algHomEquivAut_symm_apply (F : Type u_1) (K₁ : Type u_3) [] [Field K₁] [Algebra F K₁] (E : Type u_6) [] [Algebra F E] [Algebra E K₁] [IsScalarTower F E K₁] [Normal F E] (σ : E ≃ₐ[F] E) :
().symm σ = AlgHom.comp () σ
def Normal.algHomEquivAut (F : Type u_1) (K₁ : Type u_3) [] [Field K₁] [Algebra F K₁] (E : Type u_6) [] [Algebra F E] [Algebra E K₁] [IsScalarTower F E K₁] [Normal F E] :
(E →ₐ[F] K₁) E ≃ₐ[F] E

If K₁/E/F is a tower of fields with E/F normal then AlgHom.restrictNormal' is an equivalence.

Instances For
noncomputable def AlgHom.liftNormal {F : Type u_1} [] {K₁ : Type u_3} {K₂ : Type u_4} [] [Field K₁] [Field K₂] [Algebra F K₁] [Algebra F K₂] (ϕ : K₁ →ₐ[F] K₂) (E : Type u_6) [] [Algebra F E] [Algebra K₁ E] [Algebra K₂ E] [IsScalarTower F K₁ E] [IsScalarTower F K₂ E] [h : Normal F E] :

If E/Kᵢ/F are towers of fields with E/F normal then we can lift an algebra homomorphism ϕ : K₁ →ₐ[F] K₂ to ϕ.liftNormal E : E →ₐ[F] E.

Instances For
@[simp]
theorem AlgHom.liftNormal_commutes {F : Type u_1} {K₁ : Type u_3} {K₂ : Type u_4} [] [Field K₁] [Field K₂] [Algebra F K₁] [Algebra F K₂] (ϕ : K₁ →ₐ[F] K₂) (E : Type u_6) [] [Algebra F E] [Algebra K₁ E] [Algebra K₂ E] [IsScalarTower F K₁ E] [IsScalarTower F K₂ E] [Normal F E] (x : K₁) :
↑() (↑(algebraMap K₁ E) x) = ↑(algebraMap K₂ E) (ϕ x)
@[simp]
theorem AlgHom.restrict_liftNormal {F : Type u_1} {K₁ : Type u_3} [] [Field K₁] [Algebra F K₁] (E : Type u_6) [] [Algebra F E] [Algebra K₁ E] [IsScalarTower F K₁ E] (ϕ : K₁ →ₐ[F] K₁) [Normal F K₁] [Normal F E] :
= ϕ
noncomputable def AlgEquiv.liftNormal {F : Type u_1} {K₁ : Type u_3} {K₂ : Type u_4} [] [Field K₁] [Field K₂] [Algebra F K₁] [Algebra F K₂] (χ : K₁ ≃ₐ[F] K₂) (E : Type u_6) [] [Algebra F E] [Algebra K₁ E] [Algebra K₂ E] [IsScalarTower F K₁ E] [IsScalarTower F K₂ E] [Normal F E] :

If E/Kᵢ/F are towers of fields with E/F normal then we can lift an algebra isomorphism ϕ : K₁ ≃ₐ[F] K₂ to ϕ.liftNormal E : E ≃ₐ[F] E.

Instances For
@[simp]
theorem AlgEquiv.liftNormal_commutes {F : Type u_1} {K₁ : Type u_3} {K₂ : Type u_4} [] [Field K₁] [Field K₂] [Algebra F K₁] [Algebra F K₂] (χ : K₁ ≃ₐ[F] K₂) (E : Type u_6) [] [Algebra F E] [Algebra K₁ E] [Algebra K₂ E] [IsScalarTower F K₁ E] [IsScalarTower F K₂ E] [Normal F E] (x : K₁) :
↑() (↑(algebraMap K₁ E) x) = ↑(algebraMap K₂ E) (χ x)
@[simp]
theorem AlgEquiv.restrict_liftNormal {F : Type u_1} {K₁ : Type u_3} [] [Field K₁] [Algebra F K₁] (E : Type u_6) [] [Algebra F E] [Algebra K₁ E] [IsScalarTower F K₁ E] (χ : K₁ ≃ₐ[F] K₁) [Normal F K₁] [Normal F E] :
= χ
theorem AlgEquiv.restrictNormalHom_surjective {F : Type u_1} {K₁ : Type u_3} [] [Field K₁] [Algebra F K₁] (E : Type u_6) [] [Algebra F E] [Algebra K₁ E] [IsScalarTower F K₁ E] [Normal F K₁] [Normal F E] :
theorem isSolvable_of_isScalarTower (F : Type u_1) (K₁ : Type u_3) [] [Field K₁] [Algebra F K₁] (E : Type u_6) [] [Algebra F E] [Algebra K₁ E] [IsScalarTower F K₁ E] [Normal F K₁] [h1 : IsSolvable (K₁ ≃ₐ[F] K₁)] [h2 : IsSolvable (E ≃ₐ[K₁] E)] :