Definition of the Riemann zeta function #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
Main definitions: #
riemann_zeta: the Riemann zeta functionζ : ℂ → ℂ.riemann_completed_zeta: the completed zeta functionΛ : ℂ → ℂ, which satisfiesΛ(s) = π ^ (-s / 2) Γ(s / 2) ζ(s)(away from the poles ofΓ(s / 2)).riemann_completed_zeta₀: the entire functionΛ₀satisfyingΛ₀(s) = Λ(s) + 1 / (s - 1) - 1 / swherever the RHS is defined.
Note that mathematically ζ(s) is undefined at s = 1, while Λ(s) is undefined at both s = 0
and s = 1. Our construction assigns some values at these points (which are not arbitrary, but
I haven't checked exactly what they are).
Main results: #
differentiable_completed_zeta₀: the functionΛ₀(s)is entire.differentiable_at_completed_zeta: the functionΛ(s)is differentiable away froms = 0ands = 1.differentiable_at_riemann_zeta: the functionζ(s)is differentiable away froms = 1.zeta_eq_tsum_of_one_lt_re: for1 < re s, we haveζ(s) = ∑' (n : ℕ), 1 / (n + 1) ^ s.riemann_completed_zeta₀_one_sub,riemann_completed_zeta_one_sub, andriemann_zeta_one_sub: functional equation relating values atsand1 - sriemann_zeta_neg_nat_eq_bernoulli: for anyk ∈ ℕwe have the formulariemann_zeta (-k) = (-1) ^ k * bernoulli (k + 1) / (k + 1)riemann_zeta_two_mul_nat: formula forζ(2 * k)fork ∈ ℕ, k ≠ 0in terms of Bernoulli numbers
Outline of proofs: #
We define two related functions on the reals, zeta_kernel₁ and zeta_kernel₂. The first is
(θ (t * I) - 1) / 2, where θ is Jacobi's theta function; its Mellin transform is exactly the
completed zeta function. The second is obtained by subtracting a linear combination of powers on
the interval Ioc 0 1 to give a function with exponential decay at both 0 and ∞. We then define
riemann_completed_zeta₀ as the Mellin transform of the second zeta kernel, and define
riemann_completed_zeta and riemann_zeta from this.
Since zeta_kernel₂ has rapid decay and satisfies a functional equation relating its values at t
and 1 / t, we deduce the analyticity of riemann_completed_zeta₀ and the functional equation
relating its values at s and 1 - s. On the other hand, since zeta_kernel₁ can be expanded in
powers of exp (-π * t) and the Mellin transform integrated term-by-term, we obtain the relation
to the naive Dirichlet series ∑' (n : ℕ), 1 / (n + 1) ^ s.
Definition of the Riemann zeta function and related functions #
The completed Riemann zeta function with its poles removed, Λ(s) + 1 / s - 1 / (s - 1).
Equations
- riemann_completed_zeta₀ s = mellin zeta_kernel₂ (s / 2)
The completed Riemann zeta function, Λ(s), which satisfies
Λ(s) = π ^ (-s / 2) Γ(s / 2) ζ(s) (up to a minor correction at s = 0).
Equations
- riemann_completed_zeta s = riemann_completed_zeta₀ s - 1 / s + 1 / (s - 1)
The Riemann zeta function ζ(s). We set this to be irreducible to hide messy implementation
details.
Equations
- riemann_zeta = function.update (λ (s : ℂ), ↑real.pi ^ (s / 2) * riemann_completed_zeta s / complex.Gamma (s / 2)) 0 ((-1) / 2)
First properties of the zeta kernels #
Relate zeta_kernel₁ to the Jacobi theta function on ℍ. (We don't use this as the definition
of zeta_kernel₁, since the sum over ℕ rather than ℤ is more convenient for relating zeta to
the Dirichlet series for re s > 1.)
Continuity of zeta_kernel₁.
Local integrability of zeta_kernel₁.
Local integrability of zeta_kernel₂.
Functional equation for zeta_kernel₂.
Bounds for zeta kernels #
We now establish asymptotic bounds for the zeta kernels as t → ∞ and t → 0, and use these to
show holomorphy of their Mellin transforms (for 1 / 2 < re s for zeta_kernel₁, and all s for
zeta_kernel₂).
Bound for zeta_kernel₁ for large t.
Bound for zeta_kernel₂ for large t.
Precise but awkward-to-use bound for zeta_kernel₂ for t → 0.
Weaker but more usable bound for zeta_kernel₂ for t → 0.
Bound for zeta_kernel₁ for t → 0.
Differentiability of the completed zeta function #
The Mellin transform of the first zeta kernel is holomorphic for 1 / 2 < re s.
The Mellin transform of the second zeta kernel is entire.
The modified completed Riemann zeta function Λ(s) + 1 / s - 1 / (s - 1) is entire.
The completed Riemann zeta function Λ(s) is differentiable away from s = 0 and s = 1
(where it has simple poles).
The Riemann zeta function is differentiable away from s = 1.
The trivial zeroes of the zeta function.
Relating the Mellin transforms of the two zeta kernels #
Relating the first zeta kernel to the Dirichlet series #
Auxiliary lemma for mellin_zeta_kernel₁_eq_tsum, computing the Mellin transform of an
individual term in the series.
The Riemann zeta function agrees with the naive Dirichlet-series definition when the latter
converges. (Note that this is false without the assumption: when re s ≤ 1 the sum is divergent,
and we use a different definition to obtain the analytic continuation to all s.)
Alternate formulation of zeta_eq_tsum_one_div_nat_add_one_cpow without the + 1, using the
fact that for s ≠ 0 we define 0 ^ s = 0.
Special case of zeta_eq_tsum_one_div_nat_cpow when the argument is in ℕ, so the power
function can be expressed using naïve pow rather than cpow.
Explicit formula for ζ (2 * k), for k ∈ ℕ with k ≠ 0: we have
ζ (2 * k) = (-1) ^ (k + 1) * 2 ^ (2 * k - 1) * π ^ (2 * k) * bernoulli (2 * k) / (2 * k)!.
Compare has_sum_zeta_nat for a version formulated explicitly as a sum, and
riemann_zeta_neg_nat_eq_bernoulli for values at negative integers (equivalent to the above via
the functional equation).
Functional equation #
Riemann zeta functional equation, formulated for Λ₀: for any complex s we have
Λ₀(1 - s) = Λ₀ s.
Riemann zeta functional equation, formulated for Λ: for any complex s we have
Λ (1 - s) = Λ s.