pith. machine review for the scientific record. sign in

IndisputableMonolith.NumberTheory.EulerProductEqualsZeta

IndisputableMonolith/NumberTheory/EulerProductEqualsZeta.lean · 82 lines · 6 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import Mathlib.NumberTheory.EulerProduct.DirichletLSeries
   2import IndisputableMonolith.NumberTheory.EulerLedgerPartition
   3import IndisputableMonolith.NumberTheory.LogicPrimeLedgerAtom
   4
   5/-!
   6  EulerProductEqualsZeta.lean
   7
   8  Phase 1 of the RS-native zeta program.
   9
  10  This module wires the formal RS prime-ledger partition to Mathlib's
  11  theorem that the Euler product over primes equals the Riemann zeta function
  12  on the half-plane `Re(s) > 1`.
  13
  14  The point is not to reprove analytic continuation here. The point is to
  15  replace the old `True` stub in `EulerLedgerPartitionCert` with a real
  16  analytic theorem: the Euler product over prime ledger atoms converges to
  17  `riemannZeta` in the domain where the product is classically valid.
  18-/
  19
  20namespace IndisputableMonolith
  21namespace NumberTheory
  22namespace EulerProductEqualsZeta
  23
  24open Filter Topology
  25open LogicPrimeLedgerAtom
  26
  27noncomputable section
  28
  29/-- The Mathlib Euler product theorem for `riemannZeta`, restated under the
  30RS prime-ledger namespace. This is the convergence of finite prime partial
  31products to `riemannZeta s` on `Re(s) > 1`. -/
  32theorem rs_riemannZeta_eulerProduct_tendsto (s : ℂ) (hs : 1 < s.re) :
  33    Tendsto (fun n : ℕ ↦ ∏ p ∈ Nat.primesBelow n, (1 - (p : ℂ) ^ (-s))⁻¹)
  34      atTop (𝓝 (riemannZeta s)) :=
  35  _root_.riemannZeta_eulerProduct hs
  36
  37/-- The equivalent infinite-product statement. -/
  38theorem rs_riemannZeta_eulerProduct_tprod (s : ℂ) (hs : 1 < s.re) :
  39    ∏' p : Nat.Primes, (1 - (p : ℂ) ^ (-s))⁻¹ = riemannZeta s :=
  40  _root_.riemannZeta_eulerProduct_tprod hs
  41
  42/-- `HasProd` form of the same theorem. -/
  43theorem rs_riemannZeta_eulerProduct_hasProd (s : ℂ) (hs : 1 < s.re) :
  44    HasProd (fun p : Nat.Primes ↦ (1 - (p : ℂ) ^ (-s))⁻¹) (riemannZeta s) :=
  45  _root_.riemannZeta_eulerProduct_hasProd hs
  46
  47/-- The finite prime-ledger partition is exactly Mathlib's finite Euler
  48partial product over `Nat.primesBelow n`. -/
  49theorem finitePrimeLedgerPartition_primesBelow (s : ℂ) (n : ℕ) :
  50    finitePrimeLedgerPartition s (Nat.primesBelow n) =
  51      ∏ p ∈ Nat.primesBelow n, (1 - (p : ℂ) ^ (-s))⁻¹ := by
  52  unfold finitePrimeLedgerPartition primeLedgerLocalPartition primePostingWeight
  53  apply Finset.prod_congr rfl
  54  intro p hp
  55  have hprime : Nat.Prime p := by
  56    exact (Nat.mem_primesBelow.mp hp).2
  57  simp [hprime]
  58
  59/-- The RS finite prime-ledger partitions converge to `riemannZeta` on
  60`Re(s) > 1`. This is the ledger reading of Mathlib's Euler product theorem. -/
  61theorem ledger_partition_equals_zeta (s : ℂ) (hs : 1 < s.re) :
  62    Tendsto (fun n : ℕ ↦ finitePrimeLedgerPartition s (Nat.primesBelow n))
  63      atTop (𝓝 (riemannZeta s)) := by
  64  simpa [finitePrimeLedgerPartition_primesBelow] using
  65    rs_riemannZeta_eulerProduct_tendsto s hs
  66
  67/-- The recovered-prime ledger is compatible with the analytic Euler product:
  68prime postings in the recovered ledger transport to the classical prime
  69factors used by Mathlib's Euler product. -/
  70theorem recovered_prime_ledger_supports_euler_product :
  71    PrimeLedgerLogicCert ∧
  72      (∀ s : ℂ, 1 < s.re →
  73        Tendsto (fun n : ℕ ↦ finitePrimeLedgerPartition s (Nat.primesBelow n))
  74          atTop (𝓝 (riemannZeta s))) :=
  75  ⟨primeLedgerLogicCert, ledger_partition_equals_zeta⟩
  76
  77end
  78
  79end EulerProductEqualsZeta
  80end NumberTheory
  81end IndisputableMonolith
  82

source mirrored from github.com/jonwashburn/shape-of-logic