Documentation

Mathlib.FieldTheory.Galois.IsGaloisGroup

Predicate for Galois Groups #

Given an action of a group G on an extension of fields L/K, we introduce a predicate IsGaloisGroup G K L saying that G acts faithfully on L with fixed field K. In particular, we do not assume that L is an algebraic extension of K.

Implementation notes #

We actually define IsGaloisGroup G A B for extensions of rings B/A, with the same definition (faithful action on B with fixed ring A). This definition turns out to axiomatize a common setup in algebraic number theory where a Galois group Gal(L/K) acts on an extension of subrings B/A (e.g., rings of integers). In particular, there are theorems in algebraic number theory that naturally assume [IsGaloisGroup G A B] and whose statements would otherwise require assuming (K L : Type*) [Field K] [Field L] [Algebra K L] [IsGalois K L] (along with predicates relating K and L to the rings A and B) despite K and L not appearing in the conclusion.

Unfortunately, this definition of IsGaloisGroup G A B for extensions of rings B/A is nonstandard and clashes with other notions such as the Γ©tale fundamental group. In particular, if G is finite and A is integrally closed, then IsGaloisGroup G A B is equivalent to B/A being integral and the fields of fractions Frac(B)/Frac(A) being Galois with Galois group G (see IsGaloisGroup.iff_isFractionRing), rather than B/A being Γ©tale for instance.

But in the absence of a more suitable name, the utility of the predicate IsGaloisGroup G A B for extensions of rings B/A seems to outweigh these terminological issues.

class IsGaloisGroup (G : Type u_1) (A : Type u_2) (B : Type u_4) [Group G] [CommSemiring A] [Semiring B] [Algebra A B] [MulSemiringAction G B] :

G is a Galois group for L/K if the action of G on L is faithful with fixed field K. In particular, we do not assume that L is an algebraic extension of K.

See the implementation notes in this file for the meaning of this definition in the case of rings.

Instances
    theorem IsGaloisGroup.of_mulEquiv {G : Type u_1} {A : Type u_2} {B : Type u_4} [Group G] [CommSemiring A] [Semiring B] [Algebra A B] [MulSemiringAction G B] [hG : IsGaloisGroup G A B] {H : Type u_5} [Group H] [MulSemiringAction H B] (e : H ≃* G) (he : βˆ€ (h : H) (x : B), e h β€’ x = h β€’ x) :
    noncomputable def IsGaloisGroup.ringEquivFixedPoints (G : Type u_1) (A : Type u_2) (B : Type u_4) [Group G] [CommSemiring A] [Semiring B] [Algebra A B] [MulSemiringAction G B] [FaithfulSMul A B] [hA : IsGaloisGroup G A B] :

    If B/A is Galois with Galois group G, then A is isomorphic to the subring of elements of B fixed by G.

    Instances For
      @[simp]
      theorem IsGaloisGroup.ringEquivFixedPoints_apply_coe (G : Type u_1) (A : Type u_2) (B : Type u_4) [Group G] [CommSemiring A] [Semiring B] [Algebra A B] [MulSemiringAction G B] [FaithfulSMul A B] [hA : IsGaloisGroup G A B] (x : A) :
      ↑((ringEquivFixedPoints G A B) x) = (algebraMap A B) x
      @[simp]
      theorem IsGaloisGroup.algebraMap_ringEquivFixedPoints_symm_apply (G : Type u_1) (A : Type u_2) (B : Type u_4) [Group G] [CommSemiring A] [Semiring B] [Algebra A B] [MulSemiringAction G B] [FaithfulSMul A B] [hA : IsGaloisGroup G A B] (x : β†₯(FixedPoints.subsemiring B G)) :
      (algebraMap A B) ((ringEquivFixedPoints G A B).symm x) = ↑x
      noncomputable def IsGaloisGroup.ringEquiv (G : Type u_1) (A : Type u_2) (A' : Type u_3) (B : Type u_4) [Group G] [CommSemiring A] [Semiring B] [Algebra A B] [MulSemiringAction G B] [FaithfulSMul A B] [hA : IsGaloisGroup G A B] [CommSemiring A'] [Algebra A' B] [FaithfulSMul A' B] [hA' : IsGaloisGroup G A' B] :

      If B/A and B/A' are Galois with the same Galois group, then A ≃+* A'.

      Instances For
        @[simp]
        theorem IsGaloisGroup.algebraMap_ringEquiv_apply (G : Type u_1) (A : Type u_2) (A' : Type u_3) (B : Type u_4) [Group G] [CommSemiring A] [Semiring B] [Algebra A B] [MulSemiringAction G B] [FaithfulSMul A B] [hA : IsGaloisGroup G A B] [CommSemiring A'] [Algebra A' B] [FaithfulSMul A' B] [hA' : IsGaloisGroup G A' B] (x : A) :
        (algebraMap A' B) ((ringEquiv G A A' B) x) = (algebraMap A B) x
        @[simp]
        theorem IsGaloisGroup.algebraMap_ringEquiv_symm_apply (G : Type u_1) (A : Type u_2) (A' : Type u_3) (B : Type u_4) [Group G] [CommSemiring A] [Semiring B] [Algebra A B] [MulSemiringAction G B] [FaithfulSMul A B] [hA : IsGaloisGroup G A B] [CommSemiring A'] [Algebra A' B] [FaithfulSMul A' B] [hA' : IsGaloisGroup G A' B] (x : A') :
        (algebraMap A B) ((ringEquiv G A A' B).symm x) = (algebraMap A' B) x
        theorem IsGaloisGroup.to_isFractionRing (G : Type u_1) (A : Type u_2) (B : Type u_3) (K : Type u_4) (L : Type u_5) [Group G] [CommRing A] [CommRing B] [MulSemiringAction G B] [Algebra A B] [Field K] [Field L] [Algebra K L] [Algebra A K] [Algebra B L] [Algebra A L] [IsFractionRing A K] [IsFractionRing B L] [IsScalarTower A K L] [IsScalarTower A B L] [MulSemiringAction G L] [SMulDistribClass G B L] [Finite G] [hGAB : IsGaloisGroup G A B] :

        IsGaloisGroup for rings implies IsGaloisGroup for their fraction fields.

        theorem IsGaloisGroup.of_isFractionRing (G : Type u_1) (A : Type u_2) (B : Type u_3) (K : Type u_4) (L : Type u_5) [Group G] [CommRing A] [CommRing B] [MulSemiringAction G B] [Algebra A B] [Field K] [Field L] [Algebra K L] [Algebra A K] [Algebra B L] [Algebra A L] [IsFractionRing A K] [IsFractionRing B L] [IsScalarTower A K L] [IsScalarTower A B L] [MulSemiringAction G L] [SMulDistribClass G B L] [hGKL : IsGaloisGroup G K L] [IsIntegrallyClosed A] [Algebra.IsIntegral A B] :

        If B is an integral extension of an integrally closed domain A, then IsGaloisGroup for their fraction fields implies IsGaloisGroup for these rings.

        theorem IsGaloisGroup.iff_isFractionRing (G : Type u_1) (A : Type u_2) (B : Type u_3) (K : Type u_4) (L : Type u_5) [Group G] [CommRing A] [CommRing B] [MulSemiringAction G B] [Algebra A B] [Field K] [Field L] [Algebra K L] [Algebra A K] [Algebra B L] [Algebra A L] [IsFractionRing A K] [IsFractionRing B L] [IsScalarTower A K L] [IsScalarTower A B L] [MulSemiringAction G L] [SMulDistribClass G B L] [Finite G] [IsIntegrallyClosed A] :
        IsGaloisGroup G A B ↔ Algebra.IsIntegral A B ∧ IsGaloisGroup G K L

        If G is finite and A is integrally closed then IsGaloisGroup G A B is equivalent to B/A being integral and the fields of fractions Frac(B)/Frac(A) being Galois with Galois group G.

        @[implicit_reducible]

        Assume that IsGaloisGroup G A B with A and B domains, then G has a MulSemiringAction on FractionRing B. This cannot be an instance since Lean cannot figure out A.

        Instances For

          If G is finite and IsGaloisGroup G A B with A and B domains, then G is also a Galois group for FractionRing B / FractionRing A for the action defined by FractionRing.mulSemiringAction_of_isGaloisGroup.

          theorem IsGaloisGroup.isGalois (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] [Finite G] [IsGaloisGroup G K L] :

          If G is a finite Galois group for L/K, then L/K is a Galois extension.

          instance IsGaloisGroup.of_isGalois (K : Type u_3) (L : Type u_4) [Field K] [Field L] [Algebra K L] [IsGalois K L] :
          IsGaloisGroup Gal(L/K) K L

          If L/K is a Galois extension, then Gal(L/K) is a Galois group for L/K.

          theorem IsGaloisGroup.card_eq_finrank (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] [IsGaloisGroup G K L] :
          theorem IsGaloisGroup.finite (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] [FiniteDimensional K L] [IsGaloisGroup G K L] :
          noncomputable def IsGaloisGroup.mulEquivAlgEquiv (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] [IsGaloisGroup G K L] [Finite G] :
          G ≃* Gal(L/K)

          If G is a finite Galois group for L/K, then G is isomorphic to Gal(L/K).

          Instances For
            @[simp]
            theorem IsGaloisGroup.mulEquivAlgEquiv_apply_apply (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] [IsGaloisGroup G K L] [Finite G] (a : G) (a✝ : L) :
            ((mulEquivAlgEquiv G K L) a) a✝ = a β€’ a✝
            @[simp]
            theorem IsGaloisGroup.mulEquivAlgEquiv_symm_apply (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] [IsGaloisGroup G K L] [Finite G] (b : Gal(L/K)) :
            (mulEquivAlgEquiv G K L).symm b = Function.surjInv β‹― b
            @[simp]
            theorem IsGaloisGroup.mulEquivAlgEquiv_apply_symm_apply (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] [IsGaloisGroup G K L] [Finite G] (a : G) (a✝ : L) :
            ((mulEquivAlgEquiv G K L) a).symm a✝ = a⁻¹ β€’ a✝
            noncomputable def IsGaloisGroup.mulEquivCongr (G : Type u_1) (H : Type u_2) (K : Type u_3) (L : Type u_4) [Group G] [Group H] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] [MulSemiringAction H L] [IsGaloisGroup G K L] [Finite G] [IsGaloisGroup H K L] [Finite H] :

            If G and H are finite Galois groups for L/K, then G is isomorphic to H.

            Instances For
              @[simp]
              theorem IsGaloisGroup.mulEquivCongr_apply_smul (G : Type u_1) (H : Type u_2) (K : Type u_3) (L : Type u_4) [Group G] [Group H] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] [MulSemiringAction H L] [IsGaloisGroup G K L] [Finite G] [IsGaloisGroup H K L] [Finite H] (g : G) (x : L) :
              (mulEquivCongr G H K L) g β€’ x = g β€’ x
              instance IsGaloisGroup.subgroup (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] (H : Subgroup G) [hGKL : IsGaloisGroup G K L] :
              IsGaloisGroup (β†₯H) (β†₯(FixedPoints.intermediateField β†₯H)) L
              theorem IsGaloisGroup.fixedPoints_of_isGaloisGroup (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] (H : Subgroup G) (F : IntermediateField K L) [hGKL : IsGaloisGroup G K L] [hHFL : IsGaloisGroup (β†₯H) (β†₯F) L] :
              theorem IsGaloisGroup.of_fixedPoints_eq (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] (H : Subgroup G) (F : IntermediateField K L) [hGKL : IsGaloisGroup G K L] (hF : FixedPoints.intermediateField β†₯H = F) :
              IsGaloisGroup (β†₯H) (β†₯F) L
              theorem IsGaloisGroup.subgroup_iff {G : Type u_1} {K : Type u_3} {L : Type u_4} [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] {H : Subgroup G} {F : IntermediateField K L} [hGKL : IsGaloisGroup G K L] :
              IsGaloisGroup (β†₯H) (β†₯F) L ↔ FixedPoints.intermediateField β†₯H = F
              theorem IsGaloisGroup.smul_eq_self (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] (H : Subgroup G) (F : IntermediateField K L) [IsGaloisGroup (β†₯H) (β†₯F) L] (g : G) (hg : g ∈ H) (x : β†₯F) :
              g β€’ ↑x = ↑x
              theorem IsGaloisGroup.smul_mem_of_normal (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] (F : IntermediateField K L) (N : Subgroup G) [hN : N.Normal] [hF : IsGaloisGroup (β†₯N) (β†₯F) L] (g : G) (x : β†₯F) :
              g β€’ ↑x ∈ F
              @[simp]
              theorem IsGaloisGroup.finrank_fixedPoints_eq_card_subgroup (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] (H : Subgroup G) [IsGaloisGroup G K L] :
              Module.finrank (β†₯(FixedPoints.intermediateField β†₯H)) L = Nat.card β†₯H
              theorem IsGaloisGroup.of_mulEquiv_algEquiv {G : Type u_1} {K : Type u_3} {L : Type u_4} [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] [IsGalois K L] (e : G ≃* Gal(L/K)) (he : βˆ€ (g : G) (x : L), (e g) x = g β€’ x) :
              instance IsGaloisGroup.intermediateField (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] (F : IntermediateField K L) [Finite G] [hGKL : IsGaloisGroup G K L] :
              IsGaloisGroup (β†₯(fixingSubgroup G ↑F)) (β†₯F) L
              @[simp]
              theorem IsGaloisGroup.card_fixingSubgroup_eq_finrank (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] (F : IntermediateField K L) [Finite G] [IsGaloisGroup G K L] :
              Nat.card β†₯(fixingSubgroup G ↑F) = Module.finrank (β†₯F) L
              theorem IsGaloisGroup.fixingSubgroup_le_of_le (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] (F F' : IntermediateField K L) (h : F ≀ F') :
              @[simp]
              theorem IsGaloisGroup.fixingSubgroup_bot (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] [SMulCommClass G K L] :
              theorem IsGaloisGroup.fixingSubgroup_top (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] [hGKL : IsGaloisGroup G K L] :
              @[simp]
              theorem IsGaloisGroup.fixedPoints_top (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] [hGKL : IsGaloisGroup G K L] :
              noncomputable def IsGaloisGroup.intermediateFieldEquivSubgroup (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] [hGKL : IsGaloisGroup G K L] [Finite G] :

              The Galois correspondence from intermediate fields to subgroups.

              Instances For
                @[simp]
                theorem IsGaloisGroup.fixingSubgroup_fixedPoints (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] (H : Subgroup G) [hGKL : IsGaloisGroup G K L] [Finite G] :
                @[simp]
                theorem IsGaloisGroup.fixedPoints_fixingSubgroup (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] (F : IntermediateField K L) [hGKL : IsGaloisGroup G K L] [Finite G] :
                @[implicit_reducible]
                instance IsGaloisGroup.instSMulQuotientSubgroupSubtypeMemIntermediateField (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] (F : IntermediateField K L) (N : Subgroup G) [N.Normal] [hF : IsGaloisGroup (β†₯N) (β†₯F) L] :
                SMul (G β§Έ N) β†₯F
                @[simp]
                theorem IsGaloisGroup.coe_quotient_smul (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] (F : IntermediateField K L) (N : Subgroup G) [N.Normal] [hF : IsGaloisGroup (β†₯N) (β†₯F) L] (g : G) (x : β†₯F) :
                ↑(↑g β€’ x) = g β€’ ↑x
                @[implicit_reducible]
                instance IsGaloisGroup.instMulSemiringActionQuotientSubgroupSubtypeMemIntermediateField (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] (F : IntermediateField K L) (N : Subgroup G) [N.Normal] [hF : IsGaloisGroup (β†₯N) (β†₯F) L] :
                MulSemiringAction (G β§Έ N) β†₯F
                instance IsGaloisGroup.instSMulCommClassQuotientSubgroupSubtypeMemIntermediateField (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] (F : IntermediateField K L) (N : Subgroup G) [N.Normal] [hF : IsGaloisGroup (β†₯N) (β†₯F) L] [SMulCommClass G K L] :
                SMulCommClass (G β§Έ N) K β†₯F
                instance IsGaloisGroup.quotient (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] (F : IntermediateField K L) (N : Subgroup G) [N.Normal] [hF : IsGaloisGroup (β†₯N) (β†₯F) L] [hK : IsGaloisGroup G K L] [Finite G] :
                IsGaloisGroup (G β§Έ N) K β†₯F
                theorem IsGaloisGroup.quotientMap (G : Type u_1) (K : Type u_3) (L : Type u_4) [Group G] [Field K] [Field L] [Algebra K L] [MulSemiringAction G L] (F : IntermediateField K L) (N : Subgroup G) [N.Normal] [hF : IsGaloisGroup (β†₯N) (β†₯F) L] [hK : IsGaloisGroup G K L] [Finite G] (E : IntermediateField K L) (H : Subgroup G) [hE : IsGaloisGroup (β†₯H) (β†₯E) L] (h : E ≀ F) :
                IsGaloisGroup β†₯(Subgroup.map (QuotientGroup.mk' N) H) β†₯E β†₯F