# Documentation

Mathlib.FieldTheory.PolynomialGaloisGroup

# Galois Groups of Polynomials #

In this file, we introduce the Galois group of a polynomial p over a field F, defined as the automorphism group of its splitting field. We also provide some results about some extension E above p.SplittingField, and some specific results about the Galois groups of ℚ-polynomials with specific numbers of non-real roots.

## Main definitions #

• Polynomial.Gal p: the Galois group of a polynomial p.
• Polynomial.Gal.restrict p E: the restriction homomorphism (E ≃ₐ[F] E) → gal p.
• Polynomial.Gal.galAction p E: the action of gal p on the roots of p in E.

## Main results #

• Polynomial.Gal.restrict_smul: restrict p E is compatible with gal_action p E.
• Polynomial.Gal.galActionHom_injective: gal p acting on the roots of p in E is faithful.
• Polynomial.Gal.restrictProd_injective: gal (p * q) embeds as a subgroup of gal p × gal q.
• Polynomial.Gal.card_of_separable: For a separable polynomial, its Galois group has cardinality equal to the dimension of its splitting field over F.
• Polynomial.Gal.galActionHom_bijective_of_prime_degree: An irreducible polynomial of prime degree with two non-real roots has full Galois group.

## Other results #

• Polynomial.Gal.card_complex_roots_eq_card_real_add_card_not_gal_inv: The number of complex roots equals the number of real roots plus the number of roots not fixed by complex conjugation (i.e. with some imaginary component).
def Polynomial.Gal {F : Type u_1} [] (p : ) :
Type u_1

The Galois group of a polynomial.

Instances For
instance Polynomial.Gal.instGroup {F : Type u_1} [] (p : ) :
instance Polynomial.Gal.instFintype {F : Type u_1} [] (p : ) :
instance Polynomial.Gal.instCoeFunGalForAllSplittingField {F : Type u_1} [] (p : ) :
CoeFun () fun x =>
instance Polynomial.Gal.applyMulSemiringAction {F : Type u_1} [] (p : ) :
theorem Polynomial.Gal.ext {F : Type u_1} [] (p : ) {σ : } {τ : } (h : ∀ (x : ), σ x = τ x) :
σ = τ
def Polynomial.Gal.uniqueGalOfSplits {F : Type u_1} [] (p : ) (h : ) :

If p splits in F then the p.gal is trivial.

Instances For
instance Polynomial.Gal.instUniqueGal {F : Type u_1} [] (p : ) [h : Fact ()] :
instance Polynomial.Gal.uniqueGalOne {F : Type u_1} [] :
instance Polynomial.Gal.uniqueGalC {F : Type u_1} [] (x : F) :
Unique (Polynomial.Gal (Polynomial.C x))
instance Polynomial.Gal.uniqueGalX {F : Type u_1} [] :
Unique (Polynomial.Gal Polynomial.X)
instance Polynomial.Gal.uniqueGalXSubC {F : Type u_1} [] (x : F) :
Unique (Polynomial.Gal (Polynomial.X - Polynomial.C x))
instance Polynomial.Gal.uniqueGalXPow {F : Type u_1} [] (n : ) :
Unique (Polynomial.Gal (Polynomial.X ^ n))
def Polynomial.Gal.restrict {F : Type u_1} [] (p : ) (E : Type u_2) [] [Algebra F E] [Fact (Polynomial.Splits () p)] :
(E ≃ₐ[F] E) →*

Restrict from a superfield automorphism into a member of gal p.

Instances For
theorem Polynomial.Gal.restrict_surjective {F : Type u_1} [] (p : ) (E : Type u_2) [] [Algebra F E] [Fact (Polynomial.Splits () p)] [Normal F E] :
def Polynomial.Gal.mapRoots {F : Type u_1} [] (p : ) (E : Type u_2) [] [Algebra F E] [Fact (Polynomial.Splits () p)] :
↑()

The function taking rootSet p p.SplittingField to rootSet p E. This is actually a bijection, see Polynomial.Gal.mapRoots_bijective.

Instances For
theorem Polynomial.Gal.mapRoots_bijective {F : Type u_1} [] (p : ) (E : Type u_2) [] [Algebra F E] [h : Fact (Polynomial.Splits () p)] :
def Polynomial.Gal.rootsEquivRoots {F : Type u_1} [] (p : ) (E : Type u_2) [] [Algebra F E] [Fact (Polynomial.Splits () p)] :
↑()

The bijection between rootSet p p.SplittingField and rootSet p E.

Instances For
instance Polynomial.Gal.galActionAux {F : Type u_1} [] (p : ) :
instance Polynomial.Gal.smul {F : Type u_1} [] (p : ) (E : Type u_2) [] [Algebra F E] [Fact (Polynomial.Splits () p)] :
SMul () ↑()
theorem Polynomial.Gal.smul_def {F : Type u_1} [] (p : ) (E : Type u_2) [] [Algebra F E] [Fact (Polynomial.Splits () p)] (ϕ : ) (x : ↑()) :
ϕ x = ↑() (ϕ ().symm x)
instance Polynomial.Gal.galAction {F : Type u_1} [] (p : ) (E : Type u_2) [] [Algebra F E] [Fact (Polynomial.Splits () p)] :
MulAction () ↑()

The action of gal p on the roots of p in E.

@[simp]
theorem Polynomial.Gal.restrict_smul {F : Type u_1} [] {p : } {E : Type u_2} [] [Algebra F E] [Fact (Polynomial.Splits () p)] (ϕ : E ≃ₐ[F] E) (x : ↑()) :
↑(↑() ϕ x) = ϕ x

Polynomial.Gal.restrict p E is compatible with Polynomial.Gal.galAction p E.

def Polynomial.Gal.galActionHom {F : Type u_1} [] (p : ) (E : Type u_2) [] [Algebra F E] [Fact (Polynomial.Splits () p)] :

Polynomial.Gal.galAction as a permutation representation

Instances For
theorem Polynomial.Gal.galActionHom_restrict {F : Type u_1} [] (p : ) (E : Type u_2) [] [Algebra F E] [Fact (Polynomial.Splits () p)] (ϕ : E ≃ₐ[F] E) (x : ↑()) :
↑(↑(↑() (↑() ϕ)) x) = ϕ x
theorem Polynomial.Gal.galActionHom_injective {F : Type u_1} [] (p : ) (E : Type u_2) [] [Algebra F E] [Fact (Polynomial.Splits () p)] :

gal p embeds as a subgroup of permutations of the roots of p in E.

def Polynomial.Gal.restrictDvd {F : Type u_1} [] {p : } {q : } (hpq : p q) :

Polynomial.Gal.restrict, when both fields are splitting fields of polynomials.

Instances For
theorem Polynomial.Gal.restrictDvd_def {F : Type u_1} [] {p : } {q : } [Decidable (q = 0)] (hpq : p q) :
= if hq : q = 0 then 1 else
theorem Polynomial.Gal.restrictDvd_surjective {F : Type u_1} [] {p : } {q : } (hpq : p q) (hq : q 0) :
def Polynomial.Gal.restrictProd {F : Type u_1} [] (p : ) (q : ) :

The Galois group of a product maps into the product of the Galois groups.

Instances For
theorem Polynomial.Gal.restrictProd_injective {F : Type u_1} [] (p : ) (q : ) :

Polynomial.Gal.restrictProd is actually a subgroup embedding.

theorem Polynomial.Gal.mul_splits_in_splittingField_of_mul {F : Type u_1} [] {p₁ : } {q₁ : } {p₂ : } {q₂ : } (hq₁ : q₁ 0) (hq₂ : q₂ 0) (h₁ : ) (h₂ : ) :
theorem Polynomial.Gal.splits_in_splittingField_of_comp {F : Type u_1} [] (p : ) (q : ) (hq : ) :

p splits in the splitting field of p ∘ q, for q non-constant.

def Polynomial.Gal.restrictComp {F : Type u_1} [] (p : ) (q : ) (hq : ) :

Polynomial.Gal.restrict for the composition of polynomials.

Instances For
theorem Polynomial.Gal.restrictComp_surjective {F : Type u_1} [] (p : ) (q : ) (hq : ) :
theorem Polynomial.Gal.card_of_separable {F : Type u_1} [] {p : } (hp : ) :

For a separable polynomial, its Galois group has cardinality equal to the dimension of its splitting field over F.

theorem Polynomial.Gal.prime_degree_dvd_card {F : Type u_1} [] {p : } [] (p_irr : ) (p_deg : ) :

The number of complex roots equals the number of real roots plus the number of roots not fixed by complex conjugation (i.e. with some imaginary component).

theorem Polynomial.Gal.galActionHom_bijective_of_prime_degree {p : } (p_irr : ) (p_deg : ) (p_roots : = + 2) :

An irreducible polynomial of prime degree with two non-real roots has full Galois group.

theorem Polynomial.Gal.galActionHom_bijective_of_prime_degree' {p : } (p_irr : ) (p_deg : ) (p_roots1 : + 1 ) (p_roots2 : + 3) :

An irreducible polynomial of prime degree with 1-3 non-real roots has full Galois group.