The Chebotarev Density Theorem in Lean

2. Decomposition, inertia, Frobenius🔗

Let L/K be a finite Galois extension of number fields with G = \Gal{L/K}. The Galois group acts on ideals of \mathcal{O}_L (via the canonical G-action restricted to \mathcal{O}_L and extended multiplicatively), and in particular permutes the primes lying above a given prime \mathfrak{p} of \mathcal{O}_K.

Definition2.1
uses 0
Used by 2
Reverse dependency previews
Preview
Definition 2.4
Loading preview
Reverse dependency preview content is loaded from the Blueprint HTML cache.
L∃∀N

A nonzero prime ideal \mathfrak{p} of \mathcal{O}_K is unramified in L if every prime \mathfrak{P} of \mathcal{O}_L lying over \mathfrak{p} has ramification index 1, i.e. \mathfrak{p}\mathcal{O}_L factors into distinct primes.

Lean code for Definition2.11 definition
  • defdefined in CebotarevDensity/Frobenius.lean
    complete
    def Chebotarev.UnramifiedIn.{u_1, u_2} (K : Type u_1) (L : Type u_2)
      [Field K] [Field L] [Algebra K L] [IsGalois K L]
      (𝔭 : Ideal (NumberField.RingOfIntegers K)) : Prop
    def Chebotarev.UnramifiedIn.{u_1, u_2}
      (K : Type u_1) (L : Type u_2) [Field K]
      [Field L] [Algebra K L] [IsGalois K L]
      (𝔭 :
        Ideal
          (NumberField.RingOfIntegers K)) :
      Prop
    A prime `𝔭` of `𝓞 K` is unramified in `L` if it is nonzero and every **maximal** prime
    `𝔓` of `𝓞 L` lying over `𝔭` is unramified over `𝓞 K` (`Algebra.IsUnramifiedAt`). The `∀ 𝔓`
    clause has the same shape as the unramified condition in mathlib's
    `NumberField.not_dvd_discr_iff_forall_liesOver`. The `𝔭 ≠ ⊥` clause (on the base prime) is
    kept because the Frobenius `arithFrobAt 𝔓` needs a finite residue field `𝓞 L ⧸ 𝔓`; for nonzero
    `𝔭` the maximal primes over `𝔭` are exactly its prime divisors, so each has `e(𝔓 ∣ 𝔭) = 1`
    (`Algebra.isUnramifiedAt_iff_of_isDedekindDomain`). 
Definition2.2
uses 0
Used by 2
Reverse dependency previews
Preview
Definition 2.3
Loading preview
Reverse dependency preview content is loaded from the Blueprint HTML cache.
XL∃∀N

For a prime \mathfrak{P} of \mathcal{O}_L, the decomposition group at \mathfrak{P} is D_\mathfrak{P} \;=\; \{\sigma \in G : \sigma(\mathfrak{P}) = \mathfrak{P}\} \;=\; \operatorname{Stab}_G(\mathfrak{P}). In the formalisation this is mathlib's stabiliser MulAction.stabilizer G 𝔓 of the G-action on the primes of \mathcal{O}_L, so it is not restated as a separate project definition.

Definition2.3
uses 1used by 0XL∃∀N

The inertia group at \mathfrak{P} is I_\mathfrak{P} \;=\; \{\sigma \in G : \forall x \in \mathcal{O}_L,\ \sigma(x) \equiv x \pmod{\mathfrak{P}}\}. This is the generic ideal-inertia subgroup Ideal.inertia from mathlib, instantiated at the natural action of G on \mathcal{O}_L; acting trivially mod \mathfrak{P} forces stabilising \mathfrak{P}, so I_\mathfrak{P} sits inside D_\mathfrak{P}, and is the kernel of the action of D_\mathfrak{P} on the residue field \mathcal{O}_L/\mathfrak{P}.

Definition 2.2

When \mathfrak{P} is unramified the inertia group is trivial: |I_\mathfrak{P}| = e(\mathfrak{P} \mid \mathfrak{p}) = 1. Hence the surjection D_\mathfrak{P} \to \Gal{(\mathcal{O}_L/\mathfrak{P})/(\mathcal{O}_K/\mathfrak{p})} (mathlib's IsFractionRing.stabilizerHom_surjective) is an isomorphism, and the residue Galois group of a finite-field extension is cyclic with distinguished generator the absolute Frobenius x \mapsto x^{\Norm\mathfrak{p}}. So D_\mathfrak{P} contains a unique element acting as x \mapsto x^{\Norm\mathfrak{p}} on \mathcal{O}_L/\mathfrak{P}. In the formalisation this existence and uniqueness is supplied directly by mathlib's arithmetic-Frobenius API (IsArithFrobAt.exists_of_isInvariant for existence, IsArithFrobAt.mul_inv_mem_inertia together with trivial inertia for uniqueness), so it is not restated as a separate project result.

Definition2.4
Statement uses 2
Statement dependency previews
Preview
Definition 2.1
Loading preview
Statement dependency preview content is loaded from the Blueprint HTML cache.
XL∃∀N

For an unramified nonzero prime \mathfrak{P} of \mathcal{O}_L, the Frobenius automorphism \Frob_\mathfrak{P} \in G is mathlib's arithFrobAt for the action of G on \mathcal{O}_L: the unique element of D_\mathfrak{P} characterised by \Frob_\mathfrak{P}(x) \equiv x^{\Norm\mathfrak{p}} \pmod{\mathfrak{P}} for all x \in \mathcal{O}_L.

Definition 2.2 Definition 2.1

For a nonzero prime \mathfrak{p} of \mathcal{O}_K unramified in L, the Frobenius conjugacy class is \sigma_\mathfrak{p} \;=\; \{\Frob_\mathfrak{P} : \mathfrak{P} \mid \mathfrak{p}\} \;\in\; \operatorname{Conj}(G), the conjugacy class in G containing \Frob_\mathfrak{P} for any (equivalently every) prime \mathfrak{P} of \mathcal{O}_L above \mathfrak{p}. The class is independent of the choice of \mathfrak{P}.

Definition 2.4

Lean code for Definition2.51 definition
  • defdefined in CebotarevDensity/Frobenius.lean
    complete
    def Chebotarev.frobeniusClass.{u_1, u_2} (K : Type u_1) (L : Type u_2)
      [Field K] [Field L] [Algebra K L] [NumberField K] [NumberField L]
      [IsGalois K L] (𝔭 : Ideal (NumberField.RingOfIntegers K)) :
      ConjClasses Gal(L/K)
    def Chebotarev.frobeniusClass.{u_1, u_2}
      (K : Type u_1) (L : Type u_2) [Field K]
      [Field L] [Algebra K L] [NumberField K]
      [NumberField L] [IsGalois K L]
      (𝔭 :
        Ideal
          (NumberField.RingOfIntegers K)) :
      ConjClasses Gal(L/K)
    The Frobenius conjugacy class of a prime `𝔭` of `𝓞 K`. When `𝔭` is a
    nonzero unramified prime, this is the conjugacy class of any arithmetic Frobenius `σ`
    (`IsArithFrobAt`) at any prime `𝔓` of `𝓞 L` above `𝔭` (well-definedness from
    `exists_frobeniusClass`). For other primes the value is the trivial class —
    a junk value never used in the Chebotarev statement (which always restricts
    to unramified nonzero primes). 
Lemma2.6
uses 1used by 1L∃∀N

For a nonzero prime \mathfrak{p} of \mathcal{O}_K unramified in L, there exists a conjugacy class C \subseteq \Gal{L/K} such that for every prime \mathfrak{P} of \mathcal{O}_L above \mathfrak{p}, C = [\Frob_\mathfrak{P}]. (Equivalently, the Frobenius elements above \mathfrak{p} are all conjugate.)

Definition 2.4

Lean code for Lemma2.61 theorem
  • theoremdefined in CebotarevDensity/Frobenius.lean
    complete
    theorem Chebotarev.exists_frobeniusClass.{u_1, u_2} (K : Type u_1)
      (L : Type u_2) [Field K] [Field L] [Algebra K L] [NumberField K]
      [NumberField L] [IsGalois K L]
      (𝔭 : Ideal (NumberField.RingOfIntegers K)) [𝔭.IsPrime]
      (hunr : Chebotarev.UnramifiedIn K L 𝔭) :
       C,
         (σ : Gal(L/K)) (𝔓 : Ideal (NumberField.RingOfIntegers L))
          [𝔓.IsPrime],
          IsArithFrobAt (NumberField.RingOfIntegers K) σ 𝔓 
            𝔓.LiesOver 𝔭  C = ConjClasses.mk σ
    theorem Chebotarev.exists_frobeniusClass.{u_1,
        u_2}
      (K : Type u_1) (L : Type u_2) [Field K]
      [Field L] [Algebra K L] [NumberField K]
      [NumberField L] [IsGalois K L]
      (𝔭 :
        Ideal (NumberField.RingOfIntegers K))
      [𝔭.IsPrime]
      (hunr : Chebotarev.UnramifiedIn K L 𝔭) :
       C,
         (σ : Gal(L/K))
          (𝔓 :
            Ideal
              (NumberField.RingOfIntegers L))
          [𝔓.IsPrime],
          IsArithFrobAt
              (NumberField.RingOfIntegers K) σ
              𝔓 
            𝔓.LiesOver 𝔭 
              C = ConjClasses.mk σ
    Existence and well-definedness of the Frobenius
    conjugacy class of an unramified prime `𝔭` of `𝓞 K`: there is a single conjugacy class `C`
    such that `C = ConjClasses.mk σ` for every `σ` that is an arithmetic Frobenius
    (`IsArithFrobAt`) at some prime `𝔓` of `𝓞 L` above `𝔭`.
    Sharifi §7.2 + SL Appendix paragraph 1. 
Lemma2.7
Statement uses 3
Statement dependency previews
Preview
Definition 2.4
Loading preview
Statement dependency preview content is loaded from the Blueprint HTML cache.
used by 0L∃∀N

For a nonzero prime \mathfrak{p} of \mathcal{O}_K unramified in L, and any prime \mathfrak{P} of \mathcal{O}_L above \mathfrak{p}, \sigma_\mathfrak{p} \;=\; [\Frob_\mathfrak{P}].

Definition 2.5 Definition 2.4 Lemma 2.6

Lean code for Lemma2.71 theorem
  • theoremdefined in CebotarevDensity/Frobenius.lean
    complete
    theorem Chebotarev.frobeniusClass_eq_mk_of_isArithFrobAt.{u_1, u_2}
      (K : Type u_1) (L : Type u_2) [Field K] [Field L] [Algebra K L]
      [NumberField K] [NumberField L] [IsGalois K L]
      (𝔭 : Ideal (NumberField.RingOfIntegers K)) [𝔭.IsPrime]
      (hunr : Chebotarev.UnramifiedIn K L 𝔭) (σ : Gal(L/K))
      (𝔓 : Ideal (NumberField.RingOfIntegers L)) [𝔓.IsPrime]
      ( : IsArithFrobAt (NumberField.RingOfIntegers K) σ 𝔓)
      (hP : 𝔓.LiesOver 𝔭) :
      Chebotarev.frobeniusClass K L 𝔭 = ConjClasses.mk σ
    theorem Chebotarev.frobeniusClass_eq_mk_of_isArithFrobAt.{u_1,
        u_2}
      (K : Type u_1) (L : Type u_2) [Field K]
      [Field L] [Algebra K L] [NumberField K]
      [NumberField L] [IsGalois K L]
      (𝔭 :
        Ideal (NumberField.RingOfIntegers K))
      [𝔭.IsPrime]
      (hunr : Chebotarev.UnramifiedIn K L 𝔭)
      (σ : Gal(L/K))
      (𝔓 :
        Ideal (NumberField.RingOfIntegers L))
      [𝔓.IsPrime]
      ( :
        IsArithFrobAt
          (NumberField.RingOfIntegers K) σ 𝔓)
      (hP : 𝔓.LiesOver 𝔭) :
      Chebotarev.frobeniusClass K L 𝔭 =
        ConjClasses.mk σ
    `frobeniusClass K L 𝔭` is the conjugacy class of any arithmetic Frobenius `σ`
    (`IsArithFrobAt (𝓞 K) σ 𝔓`) at any prime `𝔓` of `𝓞 L` above `𝔭`. 
Proof for Lemma 2.7

Unfold \sigma_\mathfrak{p} at the unramified positive case to expose the choice function from Lemma 2.6; the witness property of its specification at \mathfrak{P} closes the goal.

Lemma 2.6

Lemma2.8
uses 1used by 1L∃∀N

Only finitely many nonzero primes of \mathcal{O}_K ramify in L.

Definition 2.1

Lean code for Lemma2.81 theorem
  • theoremdefined in CebotarevDensity/Frobenius.lean
    complete
    theorem Chebotarev.finite_ramifiedIn.{u_1, u_2} (K : Type u_1) (L : Type u_2)
      [Field K] [Field L] [Algebra K L] [NumberField K] [NumberField L]
      [IsGalois K L] :
      {𝔭 | 𝔭.IsPrime  𝔭    ¬Chebotarev.UnramifiedIn K L 𝔭}.Finite
    theorem Chebotarev.finite_ramifiedIn.{u_1, u_2}
      (K : Type u_1) (L : Type u_2) [Field K]
      [Field L] [Algebra K L] [NumberField K]
      [NumberField L] [IsGalois K L] :
      {𝔭 |
          𝔭.IsPrime 
            𝔭   
              ¬Chebotarev.UnramifiedIn K L
                  𝔭}.Finite
    Only finitely many nonzero primes of `K` ramify in `L`. 
Proof for Lemma 2.8
uses 0

The primes ramifying in L are exactly the divisors of the relative different ideal \mathfrak{d}_{L/K} \subseteq \mathcal{O}_L, which has a finite prime factorisation in the Dedekind domain \mathcal{O}_L.