Module

SmallHilbertClassField.lean

Nyll.ClassFieldTheory.GlobalClassFieldTheory.GlobalClassFields.SmallHilbertClassField
19 declarations indexed from sourceView source ↗

The small Hilbert class field

The small Hilbert class field corresponds to the image in the idele class group of the ideles integral at every finite place. Its reciprocity quotient is canonically the ordinary ideal class group; consequently its order is the class number.

Declarations

GlobalClassFieldTheory.GlobalClassFields.smallHilbertClassFieldIdeleClassGroupIsMulCommutative

Fix the canonical commutative idèle-class structure used by the Hilbert class-field quotients in this module.

Source context 6 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F)
GlobalClassFieldTheory.GlobalClassFields.smallHilbertClassFieldNormSubgroup

The norm subgroup defining the small Hilbert class field. The principal subgroup is included before passing to the idele class group so that the third-isomorphism equivalence applies literally.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
def smallHilbertClassFieldNormSubgroup :
    Subgroup (IdeleClassGroup K)
GlobalClassFieldTheory.GlobalClassFields.smallHilbertClassFieldQuotientEquivClassGroup

The quotient by the small-Hilbert norm subgroup is the ordinary ideal class group.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
def smallHilbertClassFieldQuotientEquivClassGroup :
    IdeleClassGroup K ⧸
        smallHilbertClassFieldNormSubgroup (K := K) ≃*
      ClassGroup (𝓞 K)
GlobalClassFieldTheory.GlobalClassFields.smallHilbertClassFieldNormSubgroup_isOpen

The small-Hilbert norm subgroup is open.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
theorem smallHilbertClassFieldNormSubgroup_isOpen :
    IsOpen
      ((smallHilbertClassFieldNormSubgroup (K := K) :
        Subgroup (IdeleClassGroup K)) :
        Set (IdeleClassGroup K))
GlobalClassFieldTheory.GlobalClassFields.smallHilbertClassFieldNormSubgroup_isClosed

The small-Hilbert norm subgroup is closed.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
theorem smallHilbertClassFieldNormSubgroup_isClosed :
    IsClosed
      ((smallHilbertClassFieldNormSubgroup (K := K) :
        Subgroup (IdeleClassGroup K)) :
        Set (IdeleClassGroup K))
GlobalClassFieldTheory.GlobalClassFields.smallHilbertClassFieldNormSubgroupFiniteIndex

The small-Hilbert norm subgroup has finite index.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
instance smallHilbertClassFieldNormSubgroupFiniteIndex :
    (smallHilbertClassFieldNormSubgroup (K := K)).FiniteIndex
GlobalClassFieldTheory.GlobalClassFields.smallHilbertClassFieldQuotient_card_eq_classNumber

The order of the small-Hilbert reciprocity quotient is the class number of K.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
theorem smallHilbertClassFieldQuotient_card_eq_classNumber :
    Nat.card
        (IdeleClassGroup K ⧸
          smallHilbertClassFieldNormSubgroup (K := K)) =
      NumberField.classNumber K
GlobalClassFieldTheory.GlobalClassFields.bigHilbertClassFieldNormSubgroup_le_smallHilbertClassFieldNormSubgroup

The big-Hilbert norm subgroup is contained in the small-Hilbert norm subgroup. Under class-field duality this is the inclusion of the small Hilbert class field into the big Hilbert class field.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
theorem
    bigHilbertClassFieldNormSubgroup_le_smallHilbertClassFieldNormSubgroup :
    bigHilbertClassFieldNormSubgroup (K := K) ≤
      smallHilbertClassFieldNormSubgroup (K := K)
GlobalClassFieldTheory.GlobalClassFields.smallHilbertClassFieldNormSubgroup_isDefiningModulus

Modulus zero is a defining modulus for the small-Hilbert norm subgroup.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
theorem smallHilbertClassFieldNormSubgroup_isDefiningModulus :
    IsDefiningModulus
      (smallHilbertClassFieldNormSubgroup (K := K))
      (0 : RayClass.Modulus K)
GlobalClassFieldTheory.GlobalClassFields.smallHilbertClassFieldConductorialSubgroup

The conductorial subgroup supplied by the intrinsic small-Hilbert norm subgroup and its zero defining modulus.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
def smallHilbertClassFieldConductorialSubgroup :
    ConductorialSubgroup K
GlobalClassFieldTheory.GlobalClassFields.bigHilbertClassFieldQuotientToSmallHilbertClassFieldQuotient

The canonical quotient transition from the big-Hilbert reciprocity quotient onto the small-Hilbert reciprocity quotient.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
def
    bigHilbertClassFieldQuotientToSmallHilbertClassFieldQuotient :
    (IdeleClassGroup K ⧸
        bigHilbertClassFieldNormSubgroup (K := K)) →*
      (IdeleClassGroup K ⧸
        smallHilbertClassFieldNormSubgroup (K := K))
GlobalClassFieldTheory.GlobalClassFields.bigHilbertClassFieldQuotientToSmallHilbertClassFieldQuotient_mk

The big-to-small Hilbert quotient transition sends the class of an idele class to the same class modulo the larger norm subgroup.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
theorem bigHilbertClassFieldQuotientToSmallHilbertClassFieldQuotient_mk
    (x : IdeleClassGroup K) :
    bigHilbertClassFieldQuotientToSmallHilbertClassFieldQuotient
        (K := K)
        (QuotientGroup.mk'
          (bigHilbertClassFieldNormSubgroup (K := K)) x) =
      QuotientGroup.mk'
        (smallHilbertClassFieldNormSubgroup (K := K)) x
GlobalClassFieldTheory.GlobalClassFields.bigHilbertClassFieldQuotientToSmallHilbertClassFieldQuotient_surjective

The canonical transition from the big-Hilbert quotient to the small-Hilbert quotient is surjective.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
theorem
    bigHilbertClassFieldQuotientToSmallHilbertClassFieldQuotient_surjective :
    Function.Surjective
      (bigHilbertClassFieldQuotientToSmallHilbertClassFieldQuotient
        (K := K))
GlobalClassFieldTheory.GlobalClassFields.bigHilbertClassFieldQuotientToSmallHilbertClassFieldQuotient_ker

The kernel of the canonical big-to-small Hilbert quotient transition is the image of the small-Hilbert norm subgroup modulo the big-Hilbert norm subgroup.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
theorem
    bigHilbertClassFieldQuotientToSmallHilbertClassFieldQuotient_ker :
    MonoidHom.ker
        (bigHilbertClassFieldQuotientToSmallHilbertClassFieldQuotient
          (K := K)) =
      Subgroup.map
        (QuotientGroup.mk'
          (bigHilbertClassFieldNormSubgroup (K := K)))
        (smallHilbertClassFieldNormSubgroup (K := K))
GlobalClassFieldTheory.GlobalClassFields.smallHilbertClassFieldQuotient_card_dvd_bigHilbertClassFieldQuotient_card

The order of the small-Hilbert reciprocity quotient divides the order of the big-Hilbert reciprocity quotient.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
theorem smallHilbertClassFieldQuotient_card_dvd_bigHilbertClassFieldQuotient_card :
    Nat.card
        (IdeleClassGroup K ⧸
          smallHilbertClassFieldNormSubgroup (K := K)) ∣
      Nat.card
        (IdeleClassGroup K ⧸
          bigHilbertClassFieldNormSubgroup (K := K))
GlobalClassFieldTheory.GlobalClassFields.classNumber_dvd_narrowClassGroup_card

The class number divides the order of the narrow class group.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
theorem classNumber_dvd_narrowClassGroup_card :
    NumberField.classNumber K ∣
      Nat.card (RayClass.NarrowClassGroup K)
GlobalClassFieldTheory.GlobalClassFields.narrowClassGroup_card_eq_bigToSmallKernel_card_mul_classNumber

The kernel of the big-to-small Hilbert quotient transition measures the exact difference between the narrow and ordinary class numbers.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
theorem narrowClassGroup_card_eq_bigToSmallKernel_card_mul_classNumber :
    Nat.card (RayClass.NarrowClassGroup K) =
      Nat.card
          (MonoidHom.ker
            (bigHilbertClassFieldQuotientToSmallHilbertClassFieldQuotient
              (K := K))) *
        NumberField.classNumber K
GlobalClassFieldTheory.GlobalClassFields.narrowClassGroup_card_eq_smallHilbertNormImage_card_mul_classNumber

The exact difference between the narrow and ordinary class numbers is the order of the image of the small-Hilbert norm subgroup in the big-Hilbert reciprocity quotient.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
theorem
    narrowClassGroup_card_eq_smallHilbertNormImage_card_mul_classNumber :
    Nat.card (RayClass.NarrowClassGroup K) =
      Nat.card
          (Subgroup.map
            (QuotientGroup.mk'
              (bigHilbertClassFieldNormSubgroup (K := K)))
            (smallHilbertClassFieldNormSubgroup (K := K))) *
        NumberField.classNumber K
GlobalClassFieldTheory.GlobalClassFields.smallHilbertClassField_narrowFiniteConductor

The narrow finite conductor of the small-Hilbert norm subgroup is zero.

Source context 7 commands

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

open scoped NumberField IsMulCommutative
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField
variable {K : Type*} [Field K] [NumberField K]
/-- Fix the canonical commutative idèle-class structure used by the Hilbert
class-field quotients in this module. -/
local instance smallHilbertClassFieldIdeleClassGroupIsMulCommutative
    {F : Type*} [Field F] [NumberField F] :
    IsMulCommutative (IdeleClassGroup F) :=
  ⟨⟨fun a b => mul_comm a b⟩⟩
theorem smallHilbertClassField_narrowFiniteConductor :
    (smallHilbertClassFieldConductorialSubgroup
      (K := K)).narrowFiniteConductor = 0