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
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.1●1 theorem
Associated Lean declarations
-
theoremdefined in BernoulliRegular/FLT37/LehmerVandiver/PlusCoprime/Sinnott/IndexFormula.leancomplete
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`).
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.
Lean code for Theorem11.6.1.2●1 theorem
Associated Lean declarations
-
theoremdefined in BernoulliRegular/CyclotomicUnits/IndexFormula.leancomplete
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
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.1●1 theorem
Associated Lean declarations
-
theoremdefined in BernoulliRegular/Thaine/CircularUnits.leancomplete
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.
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.2●1 theorem
Associated Lean declarations
-
theoremdefined in BernoulliRegular/Thaine/AuxiliaryPrimes.leancomplete
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`).
The set of Thaine auxiliary primes is infinite.
Lean code for Theorem11.6.2.3●1 theorem
Associated Lean declarations
-
theoremdefined in BernoulliRegular/Thaine/AuxiliaryPrimes.leancomplete
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
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.1●1 theorem
Associated Lean declarations
-
theoremdefined in BernoulliRegular/CyclotomicUnits/UnitsReflection.leancomplete
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.
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.
Lean code for Theorem11.6.3.2●1 theorem
Associated Lean declarations
-
theoremdefined in BernoulliRegular/Reflection/ClassNumberCriterion.leancomplete
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
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.1●1 theorem
Associated Lean declarations
-
BernoulliRegular.hPlus_dvd_h[complete]
-
BernoulliRegular.hPlus_dvd_h[complete]
-
theoremdefined in BernoulliRegular/TotallyRealSubfield/ClassGroup.leancomplete
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`.