Module

Frobenius.lean

Nyll.ClassFieldTheory.AbstractClassFieldTheory.Degree.Frobenius
24 declarations indexed from sourceView source ↗

normalized degree and Frobenius theory: normalized degree maps and Frobenius

For a field of finite residue degree, this file constructs the map d_K = (1 / f_K) d; division is performed only after proving that d(G_K) = f_K ℤ̂. The Frobenius is then the unique class mapping to 1.

Declarations

ClassFormation.DegreeData.fieldImageAdd

The image d(G_K), written additively inside ℤ̂.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
def fieldImageAdd (D : DegreeData G) (K : ClosedSubgroup G) : AddSubgroup ZHat
ClassFormation.DegreeData.fieldImageAdd_index

The additive degree image has index equal to the field's positive residue degree.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem fieldImageAdd_index (D : DegreeData G)
    (K : FiniteResidueAbstractField D) :
    (D.fieldImageAdd K.field).index = (K.residueDegree : ℕ)
ClassFormation.DegreeData.fieldImageAdd_eq_mulNat_range

Finite residue degree identifies d(G_K) with f_K ℤ̂.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem fieldImageAdd_eq_mulNat_range (D : DegreeData G)
    (K : FiniteResidueAbstractField D) :
    D.fieldImageAdd K.field =
      (zHatMulNat (K.residueDegree : ℕ)).toAddMonoidHom.range
ClassFormation.DegreeData.restrictedDegreeInMulNatRange

The raw value d(k) regarded as an element of the subgroup f_K ℤ̂.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
def restrictedDegreeInMulNatRange (D : DegreeData G)
    (K : FiniteResidueAbstractField D) (k : K.field.toSubgroup) :
    (zHatMulNat (K.residueDegree : ℕ)).toAddMonoidHom.range
ClassFormation.DegreeData.restrictedDegreeInMulNatRange_coe

The restricted degree in the natural-multiple range has the original additive value.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem restrictedDegreeInMulNatRange_coe (D : DegreeData G)
    (K : FiniteResidueAbstractField D) (k : K.toSubgroup) :
    (D.restrictedDegreeInMulNatRange K k).1 = (D.degree k.1).toAdd
ClassFormation.DegreeData.normalizedDegree

The normalized degree map d_K = (1 / f_K)d.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
def normalizedDegree (D : DegreeData G) (K : FiniteResidueAbstractField D) :
    K.field.toSubgroup →ₜ* ZHatMul where
  toFun k := Multiplicative.ofAdd
    (zHatDivide (K.residueDegree : ℕ) K.residueDegree.property
      (D.restrictedDegreeInMulNatRange K k))
  map_one' := by
    apply Multiplicative.ext
    change zHatDivide (K.residueDegree : ℕ) K.residueDegree.property
      (D.restrictedDegreeInMulNatRange K 1) = 0
    rw [show D.restrictedDegreeInMulNatRange K 1 = 0 by
      apply Subtype.ext
      exact congrArg Multiplicative.toAdd (map_one D.degree)]
    exact map_zero (zHatDivide (K.residueDegree : ℕ) K.residueDegree.property)
  map_mul' x y := by
    apply Multiplicative.ext
    change zHatDivide (K.residueDegree : ℕ) K.residueDegree.property
        (D.restrictedDegreeInMulNatRange K (x * y)) =
      zHatDivide (K.residueDegree : ℕ) K.residueDegree.property
          (D.restrictedDegreeInMulNatRange K x) +
        zHatDivide (K.residueDegree : ℕ) K.residueDegree.property
          (D.restrictedDegreeInMulNatRange K y)
    rw [show D.restrictedDegreeInMulNatRange K (x * y) =
        D.restrictedDegreeInMulNatRange K x +
          D.restrictedDegreeInMulNatRange K y by
      apply Subtype.ext
      exact congrArg Multiplicative.toAdd
        (map_mul D.degree x.1 y.1)]
    exact map_add (zHatDivide (K.residueDegree : ℕ) K.residueDegree.property) _ _
  continuous_toFun := by
    apply (map_continuous
      (zHatDivide (K.residueDegree : ℕ) K.residueDegree.property)).comp
    exact Continuous.subtype_mk
      (D.restrictedDegree K.field).continuous_toFun
      (fun k => (D.restrictedDegreeInMulNatRange K k).2)
ClassFormation.DegreeData.normalizedDegree_apply_toAdd

The additive coordinate of normalized degree is obtained by dividing by the residue degree.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem normalizedDegree_apply_toAdd (D : DegreeData G)
    (K : FiniteResidueAbstractField D) (k : K.field.toSubgroup) :
    (D.normalizedDegree K k).toAdd =
      zHatDivide (K.residueDegree : ℕ) K.residueDegree.property
        (D.restrictedDegreeInMulNatRange K k)
ClassFormation.DegreeData.residueDegree_nsmul_normalizedDegree

The defining identity f_K d_K = d.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem residueDegree_nsmul_normalizedDegree (D : DegreeData G)
    (K : FiniteResidueAbstractField D) (k : K.field.toSubgroup) :
    (K.residueDegree : ℕ) • (D.normalizedDegree K k).toAdd =
      (D.degree k.1).toAdd
ClassFormation.DegreeData.normalizedDegree_surjective

The normalized map is surjective, exactly as asserted before the normalized Frobenius definition.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem normalizedDegree_surjective (D : DegreeData G)
    (K : FiniteResidueAbstractField D) :
    Function.Surjective (D.normalizedDegree K)
ClassFormation.DegreeData.normalizedDegree_ker

The kernel of d_K is the inertia group I_K.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem normalizedDegree_ker (D : DegreeData G)
    (K : FiniteResidueAbstractField D) :
    (D.normalizedDegree K).toMonoidHom.ker = D.fieldInertiaWithin K.field
ClassFormation.DegreeData.fieldInertiaWithin_le_normalizedDegree_ker
Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem fieldInertiaWithin_le_normalizedDegree_ker
    (D : DegreeData G) (K : FiniteResidueAbstractField D) :
    D.fieldInertiaWithin K.field ≤ (D.normalizedDegree K).toMonoidHom.ker
ClassFormation.DegreeData.maximalUnramifiedDegreeEquiv

The isomorphism d_K : G(\widetilde K|K) ≃ ℤ̂.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
def maximalUnramifiedDegreeEquiv (D : DegreeData G)
    (K : FiniteResidueAbstractField D) :
    (K.field.toSubgroup ⧸ D.fieldInertiaWithin K.field) ≃* ZHatMul
ClassFormation.DegreeData.maximalUnramifiedDegreeEquiv_mk

On quotient representatives, the maximal-unramified degree equivalence is normalized degree.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem maximalUnramifiedDegreeEquiv_mk (D : DegreeData G)
    (K : FiniteResidueAbstractField D) (k : K.field.toSubgroup) :
    D.maximalUnramifiedDegreeEquiv K (QuotientGroup.mk k) =
      D.normalizedDegree K k
ClassFormation.DegreeData.frobenius

the normalized Frobenius definition. The Frobenius over K, characterized by d_K(φ_K)=1.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
def frobenius (D : DegreeData G) (K : FiniteResidueAbstractField D) :
    K.field.toSubgroup ⧸ D.fieldInertiaWithin K.field
ClassFormation.DegreeData.maximalUnramifiedDegreeEquiv_frobenius

The maximal-unramified degree equivalence sends Frobenius to the generator one.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem maximalUnramifiedDegreeEquiv_frobenius (D : DegreeData G)
    (K : FiniteResidueAbstractField D) :
    D.maximalUnramifiedDegreeEquiv K (D.frobenius K) =
      Multiplicative.ofAdd (1 : ZHat)
ClassFormation.DegreeData.eq_frobenius_iff

Uniqueness clause in the normalized Frobenius definition.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem eq_frobenius_iff (D : DegreeData G)
    (K : FiniteResidueAbstractField D)
    (σ : K.field.toSubgroup ⧸ D.fieldInertiaWithin K.field) :
    σ = D.frobenius K ↔
      D.maximalUnramifiedDegreeEquiv K σ =
        Multiplicative.ofAdd (1 : ZHat)
ClassFormation.DegreeData.FiniteResidueAbstractExtension.residueDegree_mul_absoluteResidueDegree

For a finite extension, its positive residue degree times the absolute residue degree of the base is the absolute residue degree of the field.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem FiniteResidueAbstractExtension.residueDegree_mul_absoluteResidueDegree
    (D : DegreeData G) (E : FiniteResidueAbstractExtension D) :
    (E.residueDegree : ℕ) * (E.base.residueDegree : ℕ) =
      (E.field.residueDegree : ℕ)
ClassFormation.DegreeData.frobeniusRestrictionNaturality_residueDegree

Frobenius residue-degree compatibility (residue degrees). If f_K and f_L are finite, then f_{L|K} = f_L / f_K.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem frobeniusRestrictionNaturality_residueDegree (D : DegreeData G)
    (E : FiniteResidueAbstractExtension D) :
    (E.residueDegree : ℕ) =
      (E.field.residueDegree : ℕ) / (E.base.residueDegree : ℕ)
ClassFormation.DegreeData.frobeniusRestrictionNaturality_normalizedDegree

Frobenius residue-degree compatibility (commutative square). On G_L, the normalized degree maps satisfy d_K = f_{L|K} d_L.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem frobeniusRestrictionNaturality_normalizedDegree (D : DegreeData G)
    (E : FiniteResidueAbstractExtension D)
    (l : E.field.field.toSubgroup) :
    (D.normalizedDegree E.base (Subgroup.inclusion E.below l)).toAdd =
      (E.residueDegree : ℕ) •
        (D.normalizedDegree E.field l).toAdd
ClassFormation.DegreeData.fieldInertiaWithin_le_comap_inclusion
Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem fieldInertiaWithin_le_comap_inclusion
    (D : DegreeData G) {L K : ClosedSubgroup G}
    (hLK : L.toSubgroup ≤ K.toSubgroup) :
    D.fieldInertiaWithin L ≤
      (D.fieldInertiaWithin K).comap (Subgroup.inclusion hLK)
ClassFormation.DegreeData.maximalUnramifiedRestriction

Restriction G(\widetilde L/L) → G(\widetilde K/K) for L | K.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
def maximalUnramifiedRestriction (D : DegreeData G) {L K : ClosedSubgroup G}
    (hLK : L.toSubgroup ≤ K.toSubgroup) :
    (L.toSubgroup ⧸ D.fieldInertiaWithin L) →*
      (K.toSubgroup ⧸ D.fieldInertiaWithin K)
ClassFormation.DegreeData.maximalUnramifiedRestriction_mk

Maximal-unramified restriction sends a quotient representative to its restricted representative.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem maximalUnramifiedRestriction_mk (D : DegreeData G)
    {L K : ClosedSubgroup G} (hLK : L.toSubgroup ≤ K.toSubgroup)
    (l : L.toSubgroup) :
    D.maximalUnramifiedRestriction hLK (QuotientGroup.mk l) =
      QuotientGroup.mk (Subgroup.inclusion hLK l)
ClassFormation.DegreeData.frobeniusRestrictionNaturality_quotient_square

The quotient form of the commutative square in Frobenius residue-degree compatibility.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem frobeniusRestrictionNaturality_quotient_square (D : DegreeData G)
    (E : FiniteResidueAbstractExtension D)
    (σ : E.field.field.toSubgroup ⧸ D.fieldInertiaWithin E.field.field) :
    (D.maximalUnramifiedDegreeEquiv E.base
      (D.maximalUnramifiedRestriction E.below σ)).toAdd =
      (E.residueDegree : ℕ) •
        (D.maximalUnramifiedDegreeEquiv E.field σ).toAdd
ClassFormation.DegreeData.frobenius_restriction_eq_power

The final assertion of Frobenius residue-degree compatibility: φ_L|_{\widetilde K} = φ_K ^ f_{L|K}.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ClassFormation
noncomputable section
variable {G : Type*} [Group G] [TopologicalSpace G]
namespace DegreeData
theorem frobenius_restriction_eq_power (D : DegreeData G)
    (E : FiniteResidueAbstractExtension D) :
    D.maximalUnramifiedRestriction E.below (D.frobenius E.field) =
      (D.frobenius E.base) ^ (E.residueDegree : ℕ)