ModuleFrattiniClassField.lean
Nyll.SawinTotallyRealTowers.UnramifiedProPRelationRank.Global.FrattiniClassField
20 declarations indexed from sourceView source ↗ Module documentation
The Frattini quotient and the elementary Hilbert class field
This file identifies the power--commutator quotient of the maximal everywhere- unramified pro-p Galois group with the elementary Hilbert class-field layer. For odd p, it then identifies the topological generator rank with the p-class rank.
Declarations
ClassFieldTower.Martinet.M
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
ClassFieldTower.Martinet.H
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
ClassFieldTower.Martinet.maxPowerCommutatorToHilbert
DocumentationRestriction to the elementary Hilbert layer, factored through the power--commutator quotient.
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
local instance :
(closedPowerCommutator p
(MaxEverywhereUnramifiedProPGaloisGroup F p)).Normal :=
closedPowerCommutator_normal p
(MaxEverywhereUnramifiedProPGaloisGroup F p)
ClassFieldTower.Martinet.maxPowerCommutatorToHilbert_surjective
DocumentationEvery automorphism of the elementary Hilbert layer extends to the maximal everywhere-unramified pro-p extension.
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
local instance :
(closedPowerCommutator p
(MaxEverywhereUnramifiedProPGaloisGroup F p)).Normal :=
closedPowerCommutator_normal p
(MaxEverywhereUnramifiedProPGaloisGroup F p)
ClassFieldTower.Martinet.powerCommutatorClosed
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
local instance :
(closedPowerCommutator p
(MaxEverywhereUnramifiedProPGaloisGroup F p)).Normal :=
closedPowerCommutator_normal p
(MaxEverywhereUnramifiedProPGaloisGroup F p)
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
local instance :
(closedPowerCommutator p
(MaxEverywhereUnramifiedProPGaloisGroup F p)).Normal :=
closedPowerCommutator_normal p
(MaxEverywhereUnramifiedProPGaloisGroup F p)
ClassFieldTower.Martinet.powerCommutatorFixedField
Source context 12 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
local instance :
(closedPowerCommutator p
(MaxEverywhereUnramifiedProPGaloisGroup F p)).Normal :=
closedPowerCommutator_normal p
(MaxEverywhereUnramifiedProPGaloisGroup F p)
local instance : (powerCommutatorClosed F p :
Subgroup Gal((M F p) / F)).Normal := by
change (closedPowerCommutator p Gal((M F p) / F)).Normal
exact closedPowerCommutator_normal p Gal((M F p) / F)
Source context 12 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
local instance :
(closedPowerCommutator p
(MaxEverywhereUnramifiedProPGaloisGroup F p)).Normal :=
closedPowerCommutator_normal p
(MaxEverywhereUnramifiedProPGaloisGroup F p)
local instance : (powerCommutatorClosed F p :
Subgroup Gal((M F p) / F)).Normal := by
change (closedPowerCommutator p Gal((M F p) / F)).Normal
exact closedPowerCommutator_normal p Gal((M F p) / F)
Source context 13 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
local instance :
(closedPowerCommutator p
(MaxEverywhereUnramifiedProPGaloisGroup F p)).Normal :=
closedPowerCommutator_normal p
(MaxEverywhereUnramifiedProPGaloisGroup F p)
local instance : (powerCommutatorClosed F p :
Subgroup Gal((M F p) / F)).Normal := by
change (closedPowerCommutator p Gal((M F p) / F)).Normal
exact closedPowerCommutator_normal p Gal((M F p) / F)
local instance : IsGalois F (powerCommutatorFixedField F p) :=
IsGalois.of_fixedField_normal_subgroup
(powerCommutatorClosed F p).toSubgroup
ClassFieldTower.Martinet.powerCommutatorFixedField_galois_pow_eq_one
Source context 14 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
local instance :
(closedPowerCommutator p
(MaxEverywhereUnramifiedProPGaloisGroup F p)).Normal :=
closedPowerCommutator_normal p
(MaxEverywhereUnramifiedProPGaloisGroup F p)
local instance : (powerCommutatorClosed F p :
Subgroup Gal((M F p) / F)).Normal := by
change (closedPowerCommutator p Gal((M F p) / F)).Normal
exact closedPowerCommutator_normal p Gal((M F p) / F)
local instance : IsGalois F (powerCommutatorFixedField F p) :=
IsGalois.of_fixedField_normal_subgroup
(powerCommutatorClosed F p).toSubgroup
local instance : IsAbelianGalois F (powerCommutatorFixedField F p) where
is_comm.comm σ τ := by
let e := InfiniteGalois.normalAutEquivQuotient
(powerCommutatorClosed F p)
calc
σ * τ = e (e.symm σ * e.symm τ) := by simp
_ = e (e.symm τ * e.symm σ) := by
congr 1
exact powerCommutatorQuotient_mul_comm p
Gal((M F p) / F) _ _
_ = τ * σ := by simp
ClassFieldTower.Martinet.liftedPowerCommutatorFixedField
Source context 14 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
local instance :
(closedPowerCommutator p
(MaxEverywhereUnramifiedProPGaloisGroup F p)).Normal :=
closedPowerCommutator_normal p
(MaxEverywhereUnramifiedProPGaloisGroup F p)
local instance : (powerCommutatorClosed F p :
Subgroup Gal((M F p) / F)).Normal := by
change (closedPowerCommutator p Gal((M F p) / F)).Normal
exact closedPowerCommutator_normal p Gal((M F p) / F)
local instance : IsGalois F (powerCommutatorFixedField F p) :=
IsGalois.of_fixedField_normal_subgroup
(powerCommutatorClosed F p).toSubgroup
local instance : IsAbelianGalois F (powerCommutatorFixedField F p) where
is_comm.comm σ τ := by
let e := InfiniteGalois.normalAutEquivQuotient
(powerCommutatorClosed F p)
calc
σ * τ = e (e.symm σ * e.symm τ) := by simp
_ = e (e.symm τ * e.symm σ) := by
congr 1
exact powerCommutatorQuotient_mul_comm p
Gal((M F p) / F) _ _
_ = τ * σ := by simp
Source context 14 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
local instance :
(closedPowerCommutator p
(MaxEverywhereUnramifiedProPGaloisGroup F p)).Normal :=
closedPowerCommutator_normal p
(MaxEverywhereUnramifiedProPGaloisGroup F p)
local instance : (powerCommutatorClosed F p :
Subgroup Gal((M F p) / F)).Normal := by
change (closedPowerCommutator p Gal((M F p) / F)).Normal
exact closedPowerCommutator_normal p Gal((M F p) / F)
local instance : IsGalois F (powerCommutatorFixedField F p) :=
IsGalois.of_fixedField_normal_subgroup
(powerCommutatorClosed F p).toSubgroup
local instance : IsAbelianGalois F (powerCommutatorFixedField F p) where
is_comm.comm σ τ := by
let e := InfiniteGalois.normalAutEquivQuotient
(powerCommutatorClosed F p)
calc
σ * τ = e (e.symm σ * e.symm τ) := by simp
_ = e (e.symm τ * e.symm σ) := by
congr 1
exact powerCommutatorQuotient_mul_comm p
Gal((M F p) / F) _ _
_ = τ * σ := by simp
ClassFieldTower.Martinet.liftedPowerCommutatorFixedField_galois_pow_eq_one
Source context 15 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
local instance :
(closedPowerCommutator p
(MaxEverywhereUnramifiedProPGaloisGroup F p)).Normal :=
closedPowerCommutator_normal p
(MaxEverywhereUnramifiedProPGaloisGroup F p)
local instance : (powerCommutatorClosed F p :
Subgroup Gal((M F p) / F)).Normal := by
change (closedPowerCommutator p Gal((M F p) / F)).Normal
exact closedPowerCommutator_normal p Gal((M F p) / F)
local instance : IsGalois F (powerCommutatorFixedField F p) :=
IsGalois.of_fixedField_normal_subgroup
(powerCommutatorClosed F p).toSubgroup
local instance : IsAbelianGalois F (powerCommutatorFixedField F p) where
is_comm.comm σ τ := by
let e := InfiniteGalois.normalAutEquivQuotient
(powerCommutatorClosed F p)
calc
σ * τ = e (e.symm σ * e.symm τ) := by simp
_ = e (e.symm τ * e.symm σ) := by
congr 1
exact powerCommutatorQuotient_mul_comm p
Gal((M F p) / F) _ _
_ = τ * σ := by simp
local instance : IsAbelianGalois F (liftedPowerCommutatorFixedField F p) :=
IsAbelianGalois.of_algHom
(IntermediateField.liftAlgEquiv
(powerCommutatorFixedField F p)).symm.toAlgHom
ClassFieldTower.Martinet.liftedPowerCommutatorFixedField_le_hilbert
Source context 15 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
local instance :
(closedPowerCommutator p
(MaxEverywhereUnramifiedProPGaloisGroup F p)).Normal :=
closedPowerCommutator_normal p
(MaxEverywhereUnramifiedProPGaloisGroup F p)
local instance : (powerCommutatorClosed F p :
Subgroup Gal((M F p) / F)).Normal := by
change (closedPowerCommutator p Gal((M F p) / F)).Normal
exact closedPowerCommutator_normal p Gal((M F p) / F)
local instance : IsGalois F (powerCommutatorFixedField F p) :=
IsGalois.of_fixedField_normal_subgroup
(powerCommutatorClosed F p).toSubgroup
local instance : IsAbelianGalois F (powerCommutatorFixedField F p) where
is_comm.comm σ τ := by
let e := InfiniteGalois.normalAutEquivQuotient
(powerCommutatorClosed F p)
calc
σ * τ = e (e.symm σ * e.symm τ) := by simp
_ = e (e.symm τ * e.symm σ) := by
congr 1
exact powerCommutatorQuotient_mul_comm p
Gal((M F p) / F) _ _
_ = τ * σ := by simp
local instance : IsAbelianGalois F (liftedPowerCommutatorFixedField F p) :=
IsAbelianGalois.of_algHom
(IntermediateField.liftAlgEquiv
(powerCommutatorFixedField F p)).symm.toAlgHom
ClassFieldTower.Martinet.powerCommutatorFixedField_le_hilbertInMaximal
Source context 15 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
local instance :
(closedPowerCommutator p
(MaxEverywhereUnramifiedProPGaloisGroup F p)).Normal :=
closedPowerCommutator_normal p
(MaxEverywhereUnramifiedProPGaloisGroup F p)
local instance : (powerCommutatorClosed F p :
Subgroup Gal((M F p) / F)).Normal := by
change (closedPowerCommutator p Gal((M F p) / F)).Normal
exact closedPowerCommutator_normal p Gal((M F p) / F)
local instance : IsGalois F (powerCommutatorFixedField F p) :=
IsGalois.of_fixedField_normal_subgroup
(powerCommutatorClosed F p).toSubgroup
local instance : IsAbelianGalois F (powerCommutatorFixedField F p) where
is_comm.comm σ τ := by
let e := InfiniteGalois.normalAutEquivQuotient
(powerCommutatorClosed F p)
calc
σ * τ = e (e.symm σ * e.symm τ) := by simp
_ = e (e.symm τ * e.symm σ) := by
congr 1
exact powerCommutatorQuotient_mul_comm p
Gal((M F p) / F) _ _
_ = τ * σ := by simp
local instance : IsAbelianGalois F (liftedPowerCommutatorFixedField F p) :=
IsAbelianGalois.of_algHom
(IntermediateField.liftAlgEquiv
(powerCommutatorFixedField F p)).symm.toAlgHom
ClassFieldTower.Martinet.maxPowerCommutatorToHilbert_injective
DocumentationFor odd p, restriction to the elementary Hilbert layer is injective on the power--commutator quotient.
Source context 15 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
local instance :
(closedPowerCommutator p
(MaxEverywhereUnramifiedProPGaloisGroup F p)).Normal :=
closedPowerCommutator_normal p
(MaxEverywhereUnramifiedProPGaloisGroup F p)
local instance : (powerCommutatorClosed F p :
Subgroup Gal((M F p) / F)).Normal := by
change (closedPowerCommutator p Gal((M F p) / F)).Normal
exact closedPowerCommutator_normal p Gal((M F p) / F)
local instance : IsGalois F (powerCommutatorFixedField F p) :=
IsGalois.of_fixedField_normal_subgroup
(powerCommutatorClosed F p).toSubgroup
local instance : IsAbelianGalois F (powerCommutatorFixedField F p) where
is_comm.comm σ τ := by
let e := InfiniteGalois.normalAutEquivQuotient
(powerCommutatorClosed F p)
calc
σ * τ = e (e.symm σ * e.symm τ) := by simp
_ = e (e.symm τ * e.symm σ) := by
congr 1
exact powerCommutatorQuotient_mul_comm p
Gal((M F p) / F) _ _
_ = τ * σ := by simp
local instance : IsAbelianGalois F (liftedPowerCommutatorFixedField F p) :=
IsAbelianGalois.of_algHom
(IntermediateField.liftAlgEquiv
(powerCommutatorFixedField F p)).symm.toAlgHom
ClassFieldTower.Martinet.maxPowerCommutatorEquivHilbert
DocumentationThe Frattini quotient of the maximal unramified pro-p Galois group is the Galois group of the elementary Hilbert layer.
Source context 15 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
local instance :
(closedPowerCommutator p
(MaxEverywhereUnramifiedProPGaloisGroup F p)).Normal :=
closedPowerCommutator_normal p
(MaxEverywhereUnramifiedProPGaloisGroup F p)
local instance : (powerCommutatorClosed F p :
Subgroup Gal((M F p) / F)).Normal := by
change (closedPowerCommutator p Gal((M F p) / F)).Normal
exact closedPowerCommutator_normal p Gal((M F p) / F)
local instance : IsGalois F (powerCommutatorFixedField F p) :=
IsGalois.of_fixedField_normal_subgroup
(powerCommutatorClosed F p).toSubgroup
local instance : IsAbelianGalois F (powerCommutatorFixedField F p) where
is_comm.comm σ τ := by
let e := InfiniteGalois.normalAutEquivQuotient
(powerCommutatorClosed F p)
calc
σ * τ = e (e.symm σ * e.symm τ) := by simp
_ = e (e.symm τ * e.symm σ) := by
congr 1
exact powerCommutatorQuotient_mul_comm p
Gal((M F p) / F) _ _
_ = τ * σ := by simp
local instance : IsAbelianGalois F (liftedPowerCommutatorFixedField F p) :=
IsAbelianGalois.of_algHom
(IntermediateField.liftAlgEquiv
(powerCommutatorFixedField F p)).symm.toAlgHom
ClassFieldTower.Martinet.topologicallyFinitelyGenerated_of_finite_powerCommutatorQuotient
Source context 15 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
local instance :
(closedPowerCommutator p
(MaxEverywhereUnramifiedProPGaloisGroup F p)).Normal :=
closedPowerCommutator_normal p
(MaxEverywhereUnramifiedProPGaloisGroup F p)
local instance : (powerCommutatorClosed F p :
Subgroup Gal((M F p) / F)).Normal := by
change (closedPowerCommutator p Gal((M F p) / F)).Normal
exact closedPowerCommutator_normal p Gal((M F p) / F)
local instance : IsGalois F (powerCommutatorFixedField F p) :=
IsGalois.of_fixedField_normal_subgroup
(powerCommutatorClosed F p).toSubgroup
local instance : IsAbelianGalois F (powerCommutatorFixedField F p) where
is_comm.comm σ τ := by
let e := InfiniteGalois.normalAutEquivQuotient
(powerCommutatorClosed F p)
calc
σ * τ = e (e.symm σ * e.symm τ) := by simp
_ = e (e.symm τ * e.symm σ) := by
congr 1
exact powerCommutatorQuotient_mul_comm p
Gal((M F p) / F) _ _
_ = τ * σ := by simp
local instance : IsAbelianGalois F (liftedPowerCommutatorFixedField F p) :=
IsAbelianGalois.of_algHom
(IntermediateField.liftAlgEquiv
(powerCommutatorFixedField F p)).symm.toAlgHom
ClassFieldTower.Martinet.generatorRank_maxUnramified_eq_pClassRank
DocumentationFor odd p, the generator rank of the maximal everywhere-unramified pro-p Galois group is the p-class rank.
Source context 15 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField IsMulCommutative
noncomputable section
open Set
open GlobalClassFieldTheory GlobalClassFieldTheory.GlobalClassFields
namespace ClassFieldTower.Martinet
open ClassFieldTower.ProP
open ProCGroups.Generation
open ProCGroups.FiniteGeneration
variable (F : Type) [Field F] [NumberField F]
variable (p : ℕ) [Fact p.Prime]
local instance :
(closedPowerCommutator p
(MaxEverywhereUnramifiedProPGaloisGroup F p)).Normal :=
closedPowerCommutator_normal p
(MaxEverywhereUnramifiedProPGaloisGroup F p)
local instance : (powerCommutatorClosed F p :
Subgroup Gal((M F p) / F)).Normal := by
change (closedPowerCommutator p Gal((M F p) / F)).Normal
exact closedPowerCommutator_normal p Gal((M F p) / F)
local instance : IsGalois F (powerCommutatorFixedField F p) :=
IsGalois.of_fixedField_normal_subgroup
(powerCommutatorClosed F p).toSubgroup
local instance : IsAbelianGalois F (powerCommutatorFixedField F p) where
is_comm.comm σ τ := by
let e := InfiniteGalois.normalAutEquivQuotient
(powerCommutatorClosed F p)
calc
σ * τ = e (e.symm σ * e.symm τ) := by simp
_ = e (e.symm τ * e.symm σ) := by
congr 1
exact powerCommutatorQuotient_mul_comm p
Gal((M F p) / F) _ _
_ = τ * σ := by simp
local instance : IsAbelianGalois F (liftedPowerCommutatorFixedField F p) :=
IsAbelianGalois.of_algHom
(IntermediateField.liftAlgEquiv
(powerCommutatorFixedField F p)).symm.toAlgHom