Documentation

Mathlib.NumberTheory.EulerProduct.DirichletLSeries

The Euler Product for the Riemann Zeta Function and Dirichlet L-Series #

The first main result of this file is the Euler Product formula for the Riemann ζ function $$\prod_p \frac{1}{1 - p^{-s}} = \lim_{n \to \infty} \prod_{p < n} \frac{1}{1 - p^{-s}} = \zeta(s)$$ for $s$ with real part $> 1$ ($p$ runs through the primes). riemannZeta_eulerProduct is the second equality above. There are versions riemannZeta_eulerProduct_hasProd and riemannZeta_eulerProduct_tprod in terms of HasProd and tprod, respectively.

The second result is dirichletLSeries_eulerProduct (with variants dirichletLSeries_eulerProduct_hasProd and dirichletLSeries_eulerProduct_tprod), which is the analogous statement for Dirichlet L-series.

noncomputable def riemannZetaSummandHom {s : } (hs : s 0) :

When s ≠ 0, the map n ↦ n^(-s) is completely multiplicative and vanishes at zero.

Equations
Instances For
    noncomputable def dirichletSummandHom {s : } {n : } (χ : DirichletCharacter n) (hs : s 0) :

    When χ is a Dirichlet character and s ≠ 0, the map n ↦ χ n * n^(-s) is completely multiplicative and vanishes at zero.

    Equations
    • dirichletSummandHom χ hs = { toFun := fun (n_1 : ) => χ n_1 * n_1 ^ (-s), map_zero' := , map_one' := , map_mul' := }
    Instances For
      theorem summable_riemannZetaSummand {s : } (hs : 1 < s.re) :

      When s.re > 1, the map n ↦ n^(-s) is norm-summable.

      theorem tsum_riemannZetaSummand {s : } (hs : 1 < s.re) :
      ∑' (n : ), (riemannZetaSummandHom ) n = riemannZeta s
      theorem summable_dirichletSummand {s : } {N : } (χ : DirichletCharacter N) (hs : 1 < s.re) :
      Summable fun (n : ) => (dirichletSummandHom χ ) n

      When s.re > 1, the map n ↦ χ(n) * n^(-s) is norm-summable.

      theorem tsum_dirichletSummand {s : } {N : } (χ : DirichletCharacter N) (hs : 1 < s.re) :
      ∑' (n : ), (dirichletSummandHom χ ) n = LSeries (fun (n : ) => χ n) s
      theorem riemannZeta_eulerProduct_hasProd {s : } (hs : 1 < s.re) :
      HasProd (fun (p : Nat.Primes) => (1 - p ^ (-s))⁻¹) (riemannZeta s)

      The Euler product for the Riemann ζ function, valid for s.re > 1. This version is stated in terms of HasProd.

      theorem riemannZeta_eulerProduct_tprod {s : } (hs : 1 < s.re) :
      ∏' (p : Nat.Primes), (1 - p ^ (-s))⁻¹ = riemannZeta s

      The Euler product for the Riemann ζ function, valid for s.re > 1. This version is stated in terms of tprod.

      theorem riemannZeta_eulerProduct {s : } (hs : 1 < s.re) :
      Filter.Tendsto (fun (n : ) => pn.primesBelow, (1 - p ^ (-s))⁻¹) Filter.atTop (nhds (riemannZeta s))

      The Euler product for the Riemann ζ function, valid for s.re > 1. This version is stated in the form of convergence of finite partial products.

      theorem DirichletCharacter.LSeries_eulerProduct_hasProd {s : } {N : } (χ : DirichletCharacter N) (hs : 1 < s.re) :
      HasProd (fun (p : Nat.Primes) => (1 - χ p * p ^ (-s))⁻¹) (LSeries (fun (n : ) => χ n) s)

      The Euler product for Dirichlet L-series, valid for s.re > 1. This version is stated in terms of HasProd.

      @[deprecated DirichletCharacter.LSeries_eulerProduct_hasProd]
      theorem dirichletLSeries_eulerProduct_hasProd {s : } {N : } (χ : DirichletCharacter N) (hs : 1 < s.re) :
      HasProd (fun (p : Nat.Primes) => (1 - χ p * p ^ (-s))⁻¹) (LSeries (fun (n : ) => χ n) s)

      Alias of DirichletCharacter.LSeries_eulerProduct_hasProd.


      The Euler product for Dirichlet L-series, valid for s.re > 1. This version is stated in terms of HasProd.

      theorem DirichletCharacter.LSeries_eulerProduct_tprod {s : } {N : } (χ : DirichletCharacter N) (hs : 1 < s.re) :
      ∏' (p : Nat.Primes), (1 - χ p * p ^ (-s))⁻¹ = LSeries (fun (n : ) => χ n) s

      The Euler product for Dirichlet L-series, valid for s.re > 1. This version is stated in terms of tprod.

      @[deprecated DirichletCharacter.LSeries_eulerProduct_tprod]
      theorem dirichlet_LSeries_eulerProduct_tprod {s : } {N : } (χ : DirichletCharacter N) (hs : 1 < s.re) :
      ∏' (p : Nat.Primes), (1 - χ p * p ^ (-s))⁻¹ = LSeries (fun (n : ) => χ n) s

      Alias of DirichletCharacter.LSeries_eulerProduct_tprod.


      The Euler product for Dirichlet L-series, valid for s.re > 1. This version is stated in terms of tprod.

      theorem DirichletCharacter.LSeries_eulerProduct {s : } {N : } (χ : DirichletCharacter N) (hs : 1 < s.re) :
      Filter.Tendsto (fun (n : ) => pn.primesBelow, (1 - χ p * p ^ (-s))⁻¹) Filter.atTop (nhds (LSeries (fun (n : ) => χ n) s))

      The Euler product for Dirichlet L-series, valid for s.re > 1. This version is stated in the form of convergence of finite partial products.

      @[deprecated DirichletCharacter.LSeries_eulerProduct]
      theorem dirichletLSeries_eulerProduct {s : } {N : } (χ : DirichletCharacter N) (hs : 1 < s.re) :
      Filter.Tendsto (fun (n : ) => pn.primesBelow, (1 - χ p * p ^ (-s))⁻¹) Filter.atTop (nhds (LSeries (fun (n : ) => χ n) s))

      Alias of DirichletCharacter.LSeries_eulerProduct.


      The Euler product for Dirichlet L-series, valid for s.re > 1. This version is stated in the form of convergence of finite partial products.

      theorem DirichletCharacter.LSeries_eulerProduct_exp_log {N : } (χ : DirichletCharacter N) {s : } (hs : 1 < s.re) :
      Complex.exp (∑' (p : Nat.Primes), -Complex.log (1 - χ p * p ^ (-s))) = LSeries (fun (n : ) => χ n) s

      A variant of the Euler product for Dirichlet L-series.

      theorem ArithmeticFunction.LSeries_zeta_eulerProduct_exp_log {s : } (hs : 1 < s.re) :
      Complex.exp (∑' (p : Nat.Primes), -Complex.log (1 - p ^ (-s))) = LSeries 1 s

      A variant of the Euler product for the L-series of ζ.

      theorem riemannZeta_eulerProduct_exp_log {s : } (hs : 1 < s.re) :
      Complex.exp (∑' (p : Nat.Primes), -Complex.log (1 - p ^ (-s))) = riemannZeta s

      A variant of the Euler product for the Riemann zeta function.

      Changing the level of a Dirichlet L-series #

      theorem DirichletCharacter.LSeries_changeLevel {M N : } [NeZero N] (hMN : M N) (χ : DirichletCharacter M) {s : } (hs : 1 < s.re) :
      LSeries (fun (n : ) => ((DirichletCharacter.changeLevel hMN) χ) n) s = LSeries (fun (n : ) => χ n) s * pN.primeFactors, (1 - χ p * p ^ (-s))

      If χ is a Dirichlet character and its level M divides N, then we obtain the L-series of χ considered as a Dirichlet character of level N from the L-series of χ by multiplying with ∏ p ∈ N.primeFactors, (1 - χ p * p ^ (-s)).