Kummer's Criterion and Regular Primes in Lean

11.6. Supporting machinery developed in the project🔗

This section records the principal named theorems developed in the project — including pieces that were not used on the critical path to the FLT37 statement above. They are part of the project's deliverable formalisation of cyclotomic-field arithmetic and are referenced from multiple chapters of the wider blueprint.

11.6.1. Sinnott's index formula🔗

Theorem11.6.1.1
uses 0used by 1L∃∀N

Under the Kummer–Dirichlet regulator identity (the analytic input, proved via the deleted-Fourier formula), Sinnott's index formula holds: [\mathcal{O}_{\mathbb{Q}(\zeta_p)^+}^\times : C^+] = 2^{(p-3)/2}\, h^+.

Lean code for Theorem11.6.1.11 theorem
  • theoremdefined in BernoulliRegular/FLT37/LehmerVandiver/PlusCoprime/Sinnott/IndexFormula.lean
    complete
    theorem BernoulliRegular.FLT37.Sinnott.sinnottIndexFormula_of_regulatorIdentity.{u_1}
      (p : ) [hp : Fact (Nat.Prime p)] (K : Type u_1) [Field K]
      [NumberField K] [IsCyclotomicExtension {p}  K]
      [NumberField.IsCMField K] (hp_odd : p  2) (hp_three : 3  p)
      (h :
        BernoulliRegular.FLT37.Sinnott.SinnottRegulatorIdentity p K hp_odd
          hp_three) :
      BernoulliRegular.FLT37.Sinnott.SinnottIndexFormula p K hp_odd hp_three
    theorem BernoulliRegular.FLT37.Sinnott.sinnottIndexFormula_of_regulatorIdentity.{u_1}
      (p : ) [hp : Fact (Nat.Prime p)]
      (K : Type u_1) [Field K] [NumberField K]
      [IsCyclotomicExtension {p}  K]
      [NumberField.IsCMField K]
      (hp_odd : p  2) (hp_three : 3  p)
      (h :
        BernoulliRegular.FLT37.Sinnott.SinnottRegulatorIdentity
          p K hp_odd hp_three) :
      BernoulliRegular.FLT37.Sinnott.SinnottIndexFormula
        p K hp_odd hp_three
    **Equivalence of Sinnott formula formulations**: the index version
    follows from the regulator version (both encode the same content via
    `regOfFamily_div_regulator`). 
Theorem11.6.1.2
uses 1used by 0L∃∀N

Sinnott's formula transports the divisibility p \mid h^+ to the cyclotomic-unit index p \mid [E^+ : C^+] (and conversely), giving the unit-side characterisation used to bypass Vandiver's conjecture at p = 37 via a direct Bernoulli-table check.

Theorem 11.6.1.1

Lean code for Theorem11.6.1.21 theorem
  • theoremdefined in BernoulliRegular/CyclotomicUnits/IndexFormula.lean
    complete
    theorem BernoulliRegular.cyclotomicUnitIndex_primeConductor_pPrimary_of_sinnottIndexFormula
      {p : } [Fact (Nat.Prime p)] {K : Type} [Field K] [NumberField K]
      [IsCyclotomicExtension {p}  K] [NumberField.IsCMField K]
      (hp_odd : p  2) (hp_three : 3  p)
      (hSinnott :
        BernoulliRegular.FLT37.Sinnott.SinnottIndexFormula p K hp_odd
          hp_three) :
      p 
          (BernoulliRegular.cyclotomicUnitIndexSubgroup hp_odd
              hp_three).index 
        p  BernoulliRegular.hPlus K
    theorem BernoulliRegular.cyclotomicUnitIndex_primeConductor_pPrimary_of_sinnottIndexFormula
      {p : } [Fact (Nat.Prime p)] {K : Type}
      [Field K] [NumberField K]
      [IsCyclotomicExtension {p}  K]
      [NumberField.IsCMField K]
      (hp_odd : p  2) (hp_three : 3  p)
      (hSinnott :
        BernoulliRegular.FLT37.Sinnott.SinnottIndexFormula
          p K hp_odd hp_three) :
      p 
          (BernoulliRegular.cyclotomicUnitIndexSubgroup
              hp_odd hp_three).index 
        p  BernoulliRegular.hPlus K
    P-primary form of the real cyclotomic-unit index formula, conditional on
    the existing explicit Sinnott index formula. 

11.6.2. Thaine's theorem and circular units🔗

Theorem11.6.2.1
uses 0used by 0L∃∀N

Sinnott's and Washington's two conventions for the group of circular units of \mathbb{Q}(\zeta_p)^+ coincide. The identification underwrites the use of either convention in downstream Thaine-style annihilation arguments.

Lean code for Theorem11.6.2.11 theorem
  • theoremdefined in BernoulliRegular/Thaine/CircularUnits.lean
    complete
    theorem BernoulliRegular.Thaine.circularSubgroupKplus_eq_sinnott_eq_washington.{u_1}
      (p : ) [Fact (Nat.Prime p)] (K : Type u_1) [Field K] [NumberField K]
      [IsCyclotomicExtension {p}  K] [NumberField.IsCMField K]
      (hp_three : 3  p) :
      BernoulliRegular.Thaine.circularSubgroupKplus p K hp_three =
        BernoulliRegular.Thaine.circularSubgroupKplus p K hp_three
    theorem BernoulliRegular.Thaine.circularSubgroupKplus_eq_sinnott_eq_washington.{u_1}
      (p : ) [Fact (Nat.Prime p)]
      (K : Type u_1) [Field K] [NumberField K]
      [IsCyclotomicExtension {p}  K]
      [NumberField.IsCMField K]
      (hp_three : 3  p) :
      BernoulliRegular.Thaine.circularSubgroupKplus
          p K hp_three =
        BernoulliRegular.Thaine.circularSubgroupKplus
          p K hp_three
    **Marker theorem: for prime conductor, `circularSubgroupKplus` serves
    as both Sinnott's `C_S(K⁺)` and Washington's `C_cl(K⁺)`**.
    
    The two are definitionally the same group when the conductor is prime
    ([Wash97 §8.2] / [Sinnott 1980]). The naming `circularSubgroupKplus`
    avoids the distinction. 
Theorem11.6.2.2
uses 0used by 1L∃∀N

For every prime \ell in the Chebotarev-positive density set \{\ell : \ell \equiv 1 \pmod p, \ell \text{ totally split in some auxiliary field}\}, the Thaine auxiliary construction produces an annihilator of the class group \mathrm{Cl}(\mathbb{Q}(\zeta_p)^+) drawn from a circular unit at \ell. Combined with a finite-set exclusion, this gives existence of Thaine auxiliaries outside any fixed finite set of bad primes.

Lean code for Theorem11.6.2.21 theorem
  • theoremdefined in BernoulliRegular/Thaine/AuxiliaryPrimes.lean
    complete
    theorem BernoulliRegular.Thaine.thaineAuxiliaryExistence_of_prime (p : )
      (hp : Nat.Prime p) (n : ) (hn : 1  n) :
      BernoulliRegular.Thaine.ThaineAuxiliaryExistence p n
    theorem BernoulliRegular.Thaine.thaineAuxiliaryExistence_of_prime
      (p : ) (hp : Nat.Prime p) (n : )
      (hn : 1  n) :
      BernoulliRegular.Thaine.ThaineAuxiliaryExistence
        p n
    **Generic Thaine-auxiliary existence via Dirichlet density**
    (unconditional). For any prime `p` and any `n ≥ 1`, there exists a
    prime ℓ ≠ p with `p^n ∣ ℓ - 1`. Proof: Dirichlet's theorem (mathlib's
    `Nat.setOf_prime_and_eq_mod_infinite`) says the set of primes ℓ with
    `(ℓ : ZMod (p^n)) = 1` is infinite, hence in particular non-empty;
    moreover, `ℓ ≠ p` is automatic since `(p : ZMod (p^n)) = 0 ≠ 1` for any
    prime `p` (since `p ∣ p^n` already, so `p ≡ 0` not `1` modulo `p^n`). 
Theorem11.6.2.3
uses 1used by 0L∃∀N

The set of Thaine auxiliary primes is infinite.

Theorem 11.6.2.2

Lean code for Theorem11.6.2.31 theorem
  • theoremdefined in BernoulliRegular/Thaine/AuxiliaryPrimes.lean
    complete
    theorem BernoulliRegular.Thaine.infinite_setOf_thaineAuxiliary (p : )
      (hp : Nat.Prime p) (n : ) (hn : 1  n) :
      { |
          Nat.Prime  
            BernoulliRegular.Thaine.IsThaineAuxiliary p n }.Infinite
    theorem BernoulliRegular.Thaine.infinite_setOf_thaineAuxiliary
      (p : ) (hp : Nat.Prime p) (n : )
      (hn : 1  n) :
      { |
          Nat.Prime  
            BernoulliRegular.Thaine.IsThaineAuxiliary
              p n }.Infinite
    **Infinitude of Thaine-auxiliary primes** (unconditional). For any
    prime `p` and any `n ≥ 1`, the set of primes ℓ with `IsThaineAuxiliary
    p n ℓ` is infinite. Proof: the set of primes ℓ with `(ℓ : ZMod (p^n)) = 1`
    is infinite by Dirichlet density, and removing the (at most one) prime
    equal to `p` (which doesn't satisfy the congruence anyway, by the
    argument in `thaineAuxiliaryExistence_of_prime`) leaves an infinite set. 

11.6.3. Reflection / Spiegelungssatz🔗

Theorem11.6.3.1
uses 0used by 1L∃∀N

The weak reflection principle on the unit side: divisibility of the plus class number p \mid h^+ implies a non-trivial \epsilon_i-eigencomponent in the minus class group for some reflection-component index i. This is the project's bridge from unit-side data to class-side data, used as one input to the Lehmer–Vandiver descent.

Lean code for Theorem11.6.3.11 theorem
  • theoremdefined in BernoulliRegular/CyclotomicUnits/UnitsReflection.lean
    complete
    theorem BernoulliRegular.weakReflection_dvd_hMinus_of_dvd_hPlus_units {p : }
      [Fact (Nat.Prime p)] {K : Type} [Field K] [NumberField K]
      [IsCyclotomicExtension {p}  K] [NumberField.IsCMField K]
      (hp_odd : p  2) (hplus : p  BernoulliRegular.hPlus K) :
      p  BernoulliRegular.hMinus K
    theorem BernoulliRegular.weakReflection_dvd_hMinus_of_dvd_hPlus_units
      {p : } [Fact (Nat.Prime p)] {K : Type}
      [Field K] [NumberField K]
      [IsCyclotomicExtension {p}  K]
      [NumberField.IsCMField K]
      (hp_odd : p  2)
      (hplus : p  BernoulliRegular.hPlus K) :
      p  BernoulliRegular.hMinus K
    CU-18: weak reflection by contrapositive from the cyclotomic-unit route. 
Theorem11.6.3.2
uses 1used by 0L∃∀N

Conditional on the weak reflection principle, p \mid h is equivalent to p dividing a Bernoulli numerator in the Kummer range — an alternative form of Kummer's criterion routed through the reflection / Spiegelungssatz machinery rather than the Sinnott / circular-unit route.

Theorem 11.6.3.1

Lean code for Theorem11.6.3.21 theorem
  • theoremdefined in BernoulliRegular/Reflection/ClassNumberCriterion.lean
    complete
    theorem BernoulliRegular.dvd_h_iff_exists_dvd_bernoulli_of_weakReflection.{u_1}
      {p : } [hp : Fact (Nat.Prime p)] (hp_odd : p  2) {K : Type u_1}
      [Field K] [NumberField K] [IsCyclotomicExtension {p}  K]
      [NumberField.IsCMField K] :
      p  BernoulliRegular.h K 
         k, 1  k  2 * k  p - 3  p  (bernoulli (2 * k)).num
    theorem BernoulliRegular.dvd_h_iff_exists_dvd_bernoulli_of_weakReflection.{u_1}
      {p : } [hp : Fact (Nat.Prime p)]
      (hp_odd : p  2) {K : Type u_1}
      [Field K] [NumberField K]
      [IsCyclotomicExtension {p}  K]
      [NumberField.IsCMField K] :
      p  BernoulliRegular.h K 
         k,
          1  k 
            2 * k  p - 3 
              p  (bernoulli (2 * k)).num
    **T045a/T045b via weak reflection.**
    
    This is the class-number/Bernoulli bridge using the explicit weak-reflection
    component theorem rather than a prebuilt `ReflectionMinusNontrivialityBridge`.
    The only reflection input is `weakReflection_componentNontrivial`. 

11.6.4. The CM splitting h-plus divides h🔗

Theorem11.6.4.1
uses 0used by 0L∃∀N

In the CM field \mathbb{Q}(\zeta_p)/\mathbb{Q}(\zeta_p)^+, the plus class number divides the full class number, h(\mathbb{Q}(\zeta_p)^+) \mid h(\mathbb{Q}(\zeta_p)). This is proved unconditionally via faithful flatness of \mathcal{O}_{\mathbb{Q}(\zeta_p)}/\mathcal{O}_{\mathbb{Q}(\zeta_p)^+} and the injectivity of the induced map of class groups.

Lean code for Theorem11.6.4.11 theorem
  • theoremdefined in BernoulliRegular/TotallyRealSubfield/ClassGroup.lean
    complete
    theorem BernoulliRegular.hPlus_dvd_h.{u_1} (p : ) [hp : Fact (Nat.Prime p)]
      (hp_odd : p  2) (K : Type u_1) [Field K] [NumberField K]
      [IsCyclotomicExtension {p}  K] [NumberField.IsCMField K] :
      BernoulliRegular.hPlus K  BernoulliRegular.h K
    theorem BernoulliRegular.hPlus_dvd_h.{u_1} (p : )
      [hp : Fact (Nat.Prime p)]
      (hp_odd : p  2) (K : Type u_1)
      [Field K] [NumberField K]
      [IsCyclotomicExtension {p}  K]
      [NumberField.IsCMField K] :
      BernoulliRegular.hPlus K 
        BernoulliRegular.h K
    The class number of `K⁺` divides the class number of `K`.