# mathlibdocumentation

field_theory.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_is_splitting_field and normal.exists_is_splitting_field).

## Main Definitions #

• normal F K where K is a field extension of F.
@[class]
structure normal (F : Type u_1) (K : Type u_2) [field F] [field K] [ K] :
Prop
• is_algebraic' :
• splits' : ∀ (x : K), (minpoly F x)

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 of this typeclass
theorem normal.is_algebraic {F : Type u_1} {K : Type u_2} [field F] [field K] [ K] (h : K) (x : K) :
x
theorem normal.is_integral {F : Type u_1} {K : Type u_2} [field F] [field K] [ K] (h : K) (x : K) :
x
theorem normal.splits {F : Type u_1} {K : Type u_2} [field F] [field K] [ K] (h : K) (x : K) :
(minpoly F x)
theorem normal_iff {F : Type u_1} {K : Type u_2} [field F] [field K] [ K] :
K ∀ (x : K), x (minpoly F x)
theorem normal.out {F : Type u_1} {K : Type u_2} [field F] [field K] [ K] :
K∀ (x : K), x (minpoly F x)
@[protected, instance]
def normal_self (F : Type u_1) [field F] :
F
theorem normal.exists_is_splitting_field (F : Type u_1) (K : Type u_2) [field F] [field K] [ K] [h : K] [ K] :
∃ (p : ,
theorem normal.tower_top_of_normal (F : Type u_1) (K : Type u_2) [field F] [field K] [ K] (E : Type u_3) [field E] [ E] [ E] [ E] [h : E] :
E
theorem alg_hom.normal_bijective (F : Type u_1) (K : Type u_2) [field F] [field K] [ K] (E : Type u_3) [field E] [ E] [ E] [ E] [h : E] (ϕ : E →ₐ[F] K) :
theorem normal.of_alg_equiv {F : Type u_1} [field F] {E : Type u_3} [field E] [ E] {E' : Type u_4} [field E'] [ E'] [h : E] (f : E ≃ₐ[F] E') :
E'
theorem alg_equiv.transfer_normal {F : Type u_1} [field F] {E : Type u_3} [field E] [ E] {E' : Type u_4} [field E'] [ E'] (f : E ≃ₐ[F] E') :
E E'
theorem normal.of_is_splitting_field {F : Type u_1} [field F] {E : Type u_3} [field E] [ E] (p : polynomial F) [hFEp : p] :
E
@[protected, instance]
def polynomial.splitting_field.normal {F : Type u_1} [field F] (p : polynomial F) :
@[protected, instance]
def intermediate_field.normal_supr (F : Type u_1) (K : Type u_2) [field F] [field K] [ K] {ι : Type u_3} (t : ι → ) [h : ∀ (i : ι), (t i)] :
(⨆ (i : ι), t i)

A compositum of normal extensions is normal

@[simp]
theorem intermediate_field.restrict_scalars_normal {F : Type u_1} {K : Type u_2} [field F] [field K] [ K] {L : Type u_3} [field L] [ L] [ L] [ L] {E : L} :
def alg_hom.restrict_normal_aux {F : Type u_1} [field F] {K₁ : Type u_3} {K₂ : Type u_4} [field K₁] [field K₂] [ K₁] [ K₂] (ϕ : K₁ →ₐ[F] K₂) (E : Type u_6) [field E] [ E] [ K₁] [ K₂] [ K₁] [ K₂] [h : E] :
K₁).range) →ₐ[F] K₂).range)

Restrict algebra homomorphism to image of normal subfield

Equations
noncomputable def alg_hom.restrict_normal {F : Type u_1} [field F] {K₁ : Type u_3} {K₂ : Type u_4} [field K₁] [field K₂] [ K₁] [ K₂] (ϕ : K₁ →ₐ[F] K₂) (E : Type u_6) [field E] [ E] [ K₁] [ K₂] [ K₁] [ K₂] [ E] :

Restrict algebra homomorphism to normal subfield

Equations
noncomputable def alg_hom.restrict_normal' {F : Type u_1} [field F] {K₁ : Type u_3} {K₂ : Type u_4} [field K₁] [field K₂] [ K₁] [ K₂] (ϕ : K₁ →ₐ[F] K₂) (E : Type u_6) [field E] [ E] [ K₁] [ K₂] [ K₁] [ K₂] [ E] :

Restrict algebra homomorphism to normal subfield (alg_equiv version)

Equations
@[simp]
theorem alg_hom.restrict_normal_commutes {F : Type u_1} [field F] {K₁ : Type u_3} {K₂ : Type u_4} [field K₁] [field K₂] [ K₁] [ K₂] (ϕ : K₁ →ₐ[F] K₂) (E : Type u_6) [field E] [ E] [ K₁] [ K₂] [ K₁] [ K₂] [ E] (x : E) :
K₂) ((ϕ.restrict_normal E) x) = ϕ ( K₁) x)
theorem alg_hom.restrict_normal_comp {F : Type u_1} [field F] {K₁ : Type u_3} {K₂ : Type u_4} {K₃ : Type u_5} [field K₁] [field K₂] [field K₃] [ K₁] [ K₂] [ K₃] (ϕ : K₁ →ₐ[F] K₂) (ψ : K₂ →ₐ[F] K₃) (E : Type u_6) [field E] [ E] [ K₁] [ K₂] [ K₃] [ K₁] [ K₂] [ K₃] [ E] :
noncomputable def alg_equiv.restrict_normal {F : Type u_1} [field F] {K₁ : Type u_3} {K₂ : Type u_4} [field K₁] [field K₂] [ K₁] [ K₂] (χ : K₁ ≃ₐ[F] K₂) (E : Type u_6) [field E] [ E] [ K₁] [ K₂] [ K₁] [ K₂] [h : E] :

Restrict algebra isomorphism to a normal subfield

Equations
@[simp]
theorem alg_equiv.restrict_normal_commutes {F : Type u_1} [field F] {K₁ : Type u_3} {K₂ : Type u_4} [field K₁] [field K₂] [ K₁] [ K₂] (χ : K₁ ≃ₐ[F] K₂) (E : Type u_6) [field E] [ E] [ K₁] [ K₂] [ K₁] [ K₂] [ E] (x : E) :
K₂) ((χ.restrict_normal E) x) = χ ( K₁) x)
theorem alg_equiv.restrict_normal_trans {F : Type u_1} [field F] {K₁ : Type u_3} {K₂ : Type u_4} {K₃ : Type u_5} [field K₁] [field K₂] [field K₃] [ K₁] [ K₂] [ K₃] (χ : K₁ ≃ₐ[F] K₂) (ω : K₂ ≃ₐ[F] K₃) (E : Type u_6) [field E] [ E] [ K₁] [ K₂] [ K₃] [ K₁] [ K₂] [ K₃] [ E] :
noncomputable def alg_equiv.restrict_normal_hom {F : Type u_1} [field F] {K₁ : Type u_3} [field K₁] [ K₁] (E : Type u_6) [field E] [ E] [ K₁] [ K₁] [ E] :
(K₁ ≃ₐ[F] K₁) →* E ≃ₐ[F] E

Restriction to an normal subfield as a group homomorphism

Equations
@[simp]
theorem normal.alg_hom_equiv_aut_apply (F : Type u_1) [field F] (K₁ : Type u_3) [field K₁] [ K₁] (E : Type u_6) [field E] [ E] [ K₁] [ K₁] [ E] (σ : E →ₐ[F] K₁) :
E) σ =
@[simp]
theorem normal.alg_hom_equiv_aut_symm_apply (F : Type u_1) [field F] (K₁ : Type u_3) [field K₁] [ K₁] (E : Type u_6) [field E] [ E] [ K₁] [ K₁] [ E] (σ : E ≃ₐ[F] E) :
K₁ E).symm) σ = K₁).comp σ.to_alg_hom
noncomputable def normal.alg_hom_equiv_aut (F : Type u_1) [field F] (K₁ : Type u_3) [field K₁] [ K₁] (E : Type u_6) [field E] [ E] [ K₁] [ K₁] [ E] :
(E →ₐ[F] K₁) E ≃ₐ[F] E

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

Equations
noncomputable def alg_hom.lift_normal {F : Type u_1} [field F] {K₁ : Type u_3} {K₂ : Type u_4} [field K₁] [field K₂] [ K₁] [ K₂] (ϕ : K₁ →ₐ[F] K₂) (E : Type u_6) [field E] [ E] [algebra K₁ E] [algebra K₂ E] [ K₁ E] [ K₂ E] [h : E] :

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

Equations
@[simp]
theorem alg_hom.lift_normal_commutes {F : Type u_1} [field F] {K₁ : Type u_3} {K₂ : Type u_4} [field K₁] [field K₂] [ K₁] [ K₂] (ϕ : K₁ →ₐ[F] K₂) (E : Type u_6) [field E] [ E] [algebra K₁ E] [algebra K₂ E] [ K₁ E] [ K₂ E] [ E] (x : K₁) :
(ϕ.lift_normal E) ((algebra_map K₁ E) x) = (algebra_map K₂ E) (ϕ x)
@[simp]
theorem alg_hom.restrict_lift_normal {F : Type u_1} [field F] {K₁ : Type u_3} [field K₁] [ K₁] (E : Type u_6) [field E] [ E] [algebra K₁ E] [ K₁ E] (ϕ : K₁ →ₐ[F] K₁) [ K₁] [ E] :
noncomputable def alg_equiv.lift_normal {F : Type u_1} [field F] {K₁ : Type u_3} {K₂ : Type u_4} [field K₁] [field K₂] [ K₁] [ K₂] (χ : K₁ ≃ₐ[F] K₂) (E : Type u_6) [field E] [ E] [algebra K₁ E] [algebra K₂ E] [ K₁ E] [ K₂ E] [ E] :

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

Equations
@[simp]
theorem alg_equiv.lift_normal_commutes {F : Type u_1} [field F] {K₁ : Type u_3} {K₂ : Type u_4} [field K₁] [field K₂] [ K₁] [ K₂] (χ : K₁ ≃ₐ[F] K₂) (E : Type u_6) [field E] [ E] [algebra K₁ E] [algebra K₂ E] [ K₁ E] [ K₂ E] [ E] (x : K₁) :
(χ.lift_normal E) ((algebra_map K₁ E) x) = (algebra_map K₂ E) (χ x)
@[simp]
theorem alg_equiv.restrict_lift_normal {F : Type u_1} [field F] {K₁ : Type u_3} [field K₁] [ K₁] (E : Type u_6) [field E] [ E] [algebra K₁ E] [ K₁ E] (χ : K₁ ≃ₐ[F] K₁) [ K₁] [ E] :
theorem alg_equiv.restrict_normal_hom_surjective {F : Type u_1} [field F] {K₁ : Type u_3} [field K₁] [ K₁] (E : Type u_6) [field E] [ E] [algebra K₁ E] [ K₁ E] [ K₁] [ E] :
theorem is_solvable_of_is_scalar_tower (F : Type u_1) [field F] (K₁ : Type u_3) [field K₁] [ K₁] (E : Type u_6) [field E] [ E] [algebra K₁ E] [ K₁ E] [ K₁] [h1 : is_solvable (K₁ ≃ₐ[F] K₁)] [h2 : is_solvable (E ≃ₐ[K₁] E)] :
def normal_closure (F : Type u_1) (K : Type u_2) [field F] [field K] [ K] (L : Type u_6) [field L] [ L] [ L] [ L] :

The normal closure of K in L.

Equations
Instances for ↥normal_closure
theorem normal_closure.restrict_scalars_eq_supr_adjoin (F : Type u_1) (K : Type u_2) [field F] [field K] [ K] (L : Type u_6) [field L] [ L] [ L] [ L] [h : L] :
= ⨆ (x : K), ((minpoly F x).root_set L)
@[protected, instance]
def normal_closure.normal (F : Type u_1) (K : Type u_2) [field F] [field K] [ K] (L : Type u_6) [field L] [ L] [ L] [ L] [h : L] :
K L)
@[protected, instance]
def normal_closure.is_finite_dimensional (F : Type u_1) (K : Type u_2) [field F] [field K] [ K] (L : Type u_6) [field L] [ L] [ L] [ L] [ K] :
K L)