The regularized zero expansion of the logarithmic derivative of zeta
OpenriemannZeta_logDeriv_nontrivial_zeros_with_multiplicityLet be the set of distinct nontrivial zeros of the Riemann zeta function. For , let be its order of vanishing. Let be the Euler-Mascheroni constant, and let be the digamma function.
For every with , , and , the regularized zero sum converges absolutely:
Moreover,
This expansion expresses the logarithmic derivative in terms of its pole, the gamma factor, and the nontrivial zeros counted with their actual multiplicities. Absolute convergence makes the sum independent of an enumeration of the zeros. The identity is the form recorded by Rosser and Schoenfeld (1975), page 246, equations (1.11)-(1.13), on the domain stated here.
Formalization note. The sum is indexed by the subtype of nontrivial zeros of riemannZeta; its integer weight is the finite meromorphic order of that same function. The digamma function is Mathlib's Complex.digamma.
import Mathlib.Analysis.Complex.CanonicalDecomposition import Mathlib.Analysis.Complex.AbsMax import Mathlib.Analysis.Normed.Group.Tannery import Mathlib.NumberTheory.LSeries.Nonvanishing import Mathlib.Analysis.Meromorphic.FactorizedRational import Mathlib.Analysis.Meromorphic.LogDeriv import Mathlib.Analysis.Meromorphic.RCLike import Mathlib.Analysis.SpecialFunctions.Gamma.Digamma import Mathlib.Tactic import Mathlib.Analysis.Complex.JensenFormula import Mathlib.Analysis.SpecificLimits.Normed import Mathlib.Analysis.Complex.BorelCaratheodory import Mathlib.Analysis.Complex.Liouville import Mathlib.Analysis.Complex.HasPrimitives import Mathlib.Analysis.Calculus.LogDeriv import Mathlib.Analysis.SpecialFunctions.ExpDeriv import Mathlib.Analysis.SpecialFunctions.Log.Basic import Mathlib.Tactic.FieldSimp import Mathlib.Tactic.Linarith import Mathlib.Tactic.Ring
theorem riemannZeta_logDeriv_nontrivial_zeros_with_multiplicity (s : ℂ) (hs : 0 < s.re) (hs1 : s ≠ 1)
(hz : riemannZeta s ≠ 0) :
Summable (fun ρ : {ρ : ℂ // 0 < ρ.re ∧ ρ.re < 1 ∧ riemannZeta ρ = 0} =>
‖((meromorphicOrderAt riemannZeta (ρ : ℂ)).untop₀ : ℂ) *
(1 / (s - (ρ : ℂ)) + 1 / (ρ : ℂ))‖) ∧
deriv riemannZeta s / riemannZeta s =
Complex.log (2 * (Real.pi : ℂ)) - 1 - (Real.eulerMascheroniConstant : ℂ) / 2 -
1 / (s - 1) - Complex.digamma (s / 2 + 1) / 2 +
∑' ρ : {ρ : ℂ // 0 < ρ.re ∧ ρ.re < 1 ∧ riemannZeta ρ = 0},
((meromorphicOrderAt riemannZeta (ρ : ℂ)).untop₀ : ℂ) *
(1 / (s - (ρ : ℂ)) + 1 / (ρ : ℂ)) := by sorry