Partial zeta values as finite Fourier sums of Bernoulli values
ProvedZMod.tsum_intCast_pow_inv_eq_sum_bernoulliFunLet be a natural number with , let be a natural number with , and let . The assertion is an identity in between the unconditional sum over the subtype of the quantities — that is, the sum of over all integers congruent to modulo , the term (present only when ) contributing because — and the finite expression
where ZMod.stdAddChar is the standard additive character of , , regarded in , r.val is the least non-negative representative of , is the -th Bernoulli polynomial (bernoulliFun k, evaluated at a real argument and then coerced to ), and and are read in . Note that the sign in the prefactor is that of .
This is the classical evaluation of the partial zeta value for as a finite Fourier transform, over , of the Bernoulli values ; in particular the left-hand side lies in . It is used in the computation of the constant terms of Eisenstein series, being cited by EisensteinSeries.tsum_inv_cube_congr_one_ne_zero_and_exists_isIntegral.
import Mathlib set_option maxHeartbeats 4000000 set_option synthInstance.maxHeartbeats 400000 set_option backward.isDefEq.respectTransparency.types false set_option autoImplicit false open Real Complex open scoped Nat
theorem ZMod.tsum_intCast_pow_inv_eq_sum_bernoulliFun (N : ℕ) [NeZero N] (k : ℕ) (hk : 2 ≤ k)
(a : ZMod N) :
∑' d : {d : ℤ // (d : ZMod N) = a}, ((d : ℂ) ^ k)⁻¹ =
-(2 * π * I) ^ k / (k ! * N) *
∑ r : ZMod N, ZMod.stdAddChar (-(r * a)) * (bernoulliFun k ((r.val : ℝ) / N) : ℂ) := by sorry