Hardy zeta

11.14. HardyZeta.Theta🔗

def psi (z : ℂ) : ℂ := (jacobiTheta (I * z) - 1) / 2theorem hasSum_psi {z : ℂ} (hz : 0 < z.re) : HasSum (fun n : ℕ ↦ Complex.exp (-Real.pi * ((n : ℂ) + 1) ^ 2 * z)) (psi z) := z:ℂhz:0 < z.re⊢ HasSum (fun n => cexp (-↑Real.pi * (↑n + 1) ^ 2 * z)) (psi z) z:ℂhz:0 < z.reh:HasSum (fun n => cexp (↑Real.pi * I * (↑n + 1) ^ 2 * (I * z))) ((jacobiTheta (I * z) - 1) / 2)⊢ HasSum (fun n => cexp (-↑Real.pi * (↑n + 1) ^ 2 * z)) (psi z) z:ℂhz:0 < z.reh:HasSum (fun n => cexp (↑Real.pi * I * (↑n + 1) ^ 2 * (I * z))) ((jacobiTheta (I * z) - 1) / 2)⊢ HasSum (fun n => cexp (-↑Real.pi * (↑n + 1) ^ 2 * z)) ((jacobiTheta (I * z) - 1) / 2) z:ℂhz:0 < z.reh:HasSum (fun n => cexp (↑Real.pi * I * (↑n + 1) ^ 2 * (I * z))) ((jacobiTheta (I * z) - 1) / 2)⊢ (fun n => cexp (-↑Real.pi * (↑n + 1) ^ 2 * z)) = fun n => cexp (↑Real.pi * I * (↑n + 1) ^ 2 * (I * z)) z:ℂhz:0 < z.reh:HasSum (fun n => cexp (↑Real.pi * I * (↑n + 1) ^ 2 * (I * z))) ((jacobiTheta (I * z) - 1) / 2)n:ℕ⊢ cexp (-↑Real.pi * (↑n + 1) ^ 2 * z) = cexp (↑Real.pi * I * (↑n + 1) ^ 2 * (I * z)) z:ℂhz:0 < z.reh:HasSum (fun n => cexp (↑Real.pi * I * (↑n + 1) ^ 2 * (I * z))) ((jacobiTheta (I * z) - 1) / 2)n:ℕ⊢ -↑Real.pi * (↑n + 1) ^ 2 * z = ↑Real.pi * I * (↑n + 1) ^ 2 * (I * z) calc -(Real.pi : ℂ) * ((n : ℂ) + 1) ^ 2 * z = (Real.pi : ℂ) * I ^ 2 * ((n : ℂ) + 1) ^ 2 * z := z:ℂhz:0 < z.reh:HasSum (fun n => cexp (↑Real.pi * I * (↑n + 1) ^ 2 * (I * z))) ((jacobiTheta (I * z) - 1) / 2)n:ℕ⊢ -↑Real.pi * (↑n + 1) ^ 2 * z = ↑Real.pi * I ^ 2 * (↑n + 1) ^ 2 * z z:ℂhz:0 < z.reh:HasSum (fun n => cexp (↑Real.pi * I * (↑n + 1) ^ 2 * (I * z))) ((jacobiTheta (I * z) - 1) / 2)n:ℕ⊢ -↑Real.pi * (↑n + 1) ^ 2 * z = ↑Real.pi * -1 * (↑n + 1) ^ 2 * z; All goals completed! 🐙 _ = _ := z:ℂhz:0 < z.reh:HasSum (fun n => cexp (↑Real.pi * I * (↑n + 1) ^ 2 * (I * z))) ((jacobiTheta (I * z) - 1) / 2)n:ℕ⊢ ↑Real.pi * I ^ 2 * (↑n + 1) ^ 2 * z = ↑Real.pi * I * (↑n + 1) ^ 2 * (I * z) All goals completed! 🐙theorem psi_eq_tsum {z : ℂ} (hz : 0 < z.re) : psi z = ∑' n : ℕ, Complex.exp (-Real.pi * ((n : ℂ) + 1) ^ 2 * z) := (hasSum_psi hz).tsum_eq.symm /-- Explicit decay estimate, with the convergence domain recorded. -/theorem norm_psi_le {z : ℂ} (hz : 0 < z.re) : ‖psi z‖ ≤ Real.exp (-Real.pi * z.re) / (1 - Real.exp (-Real.pi * z.re)) := z:ℂhz:0 < z.re⊢ ‖psi z‖ ≤ Real.exp (-Real.pi * z.re) / (1 - Real.exp (-Real.pi * z.re)) z:ℂhz:0 < z.reh:‖jacobiTheta (I * z) - 1‖ ≤ 2 / (1 - Real.exp (-Real.pi * (I * z).im)) * Real.exp (-Real.pi * (I * z).im)⊢ ‖psi z‖ ≤ Real.exp (-Real.pi * z.re) / (1 - Real.exp (-Real.pi * z.re)) z:ℂhz:0 < z.reh:‖jacobiTheta (I * z) - 1‖ ≤ 2 / (1 - Real.exp (-Real.pi * z.re)) * Real.exp (-Real.pi * z.re)⊢ ‖psi z‖ ≤ Real.exp (-Real.pi * z.re) / (1 - Real.exp (-Real.pi * z.re)) z:ℂhz:0 < z.reh:‖jacobiTheta (I * z) - 1‖ ≤ 2 / (1 - Real.exp (-Real.pi * z.re)) * Real.exp (-Real.pi * z.re)⊢ ‖jacobiTheta (I * z) - 1‖ / 2 ≤ Real.exp (-Real.pi * z.re) / (1 - Real.exp (-Real.pi * z.re)) calc ‖jacobiTheta (I * z) - 1‖ / 2 ≤ (2 / (1 - Real.exp (-Real.pi * z.re)) * Real.exp (-Real.pi * z.re)) / 2 := z:ℂhz:0 < z.reh:‖jacobiTheta (I * z) - 1‖ ≤ 2 / (1 - Real.exp (-Real.pi * z.re)) * Real.exp (-Real.pi * z.re)⊢ ‖jacobiTheta (I * z) - 1‖ / 2 ≤ 2 / (1 - Real.exp (-Real.pi * z.re)) * Real.exp (-Real.pi * z.re) / 2 exact div_le_div_of_nonneg_right h (z:ℂhz:0 < z.reh:‖jacobiTheta (I * z) - 1‖ ≤ 2 / (1 - Real.exp (-Real.pi * z.re)) * Real.exp (-Real.pi * z.re)⊢ 0 ≤ 2 All goals completed! 🐙) _ = _ := z:ℂhz:0 < z.reh:‖jacobiTheta (I * z) - 1‖ ≤ 2 / (1 - Real.exp (-Real.pi * z.re)) * Real.exp (-Real.pi * z.re)⊢ 2 / (1 - Real.exp (-Real.pi * z.re)) * Real.exp (-Real.pi * z.re) / 2 = Real.exp (-Real.pi * z.re) / (1 - Real.exp (-Real.pi * z.re)) All goals completed! 🐙theorem differentiableAt_psi {z : ℂ} (hz : 0 < z.re) : DifferentiableAt ℂ psi z := z:ℂhz:0 < z.re⊢ DifferentiableAt ℂ psi z z:ℂhz:0 < z.reh:DifferentiableAt ℂ (jacobiTheta ∘ HMul.hMul I) z⊢ DifferentiableAt ℂ psi z All goals completed! 🐙 /-- The theta inversion formula in the right-half-plane convention. -/theorem psi_inversion (z : ℂ) : 1 + 2 * psi z = (1 / z ^ (1 / 2 : ℂ)) * (1 + 2 * psi (1 / z)) := z:ℂ⊢ 1 + 2 * psi z = 1 / z ^ (1 / 2) * (1 + 2 * psi (1 / z)) z:ℂh:jacobiTheta₂ 0 (I * z) = 1 / (-I * (I * z)) ^ (1 / 2) * cexp (-↑Real.pi * I * 0 ^ 2 / (I * z)) * jacobiTheta₂ (0 / (I * z)) (-1 / (I * z))⊢ 1 + 2 * psi z = 1 / z ^ (1 / 2) * (1 + 2 * psi (1 / z)) z:ℂh:jacobiTheta₂ 0 (I * z) = 1 / (-I * (I * z)) ^ (1 / 2) * cexp (-↑Real.pi * I * 0 ^ 2 / (I * z)) * jacobiTheta₂ (0 / (I * z)) (-1 / (I * z))h₁:-I * (I * z) = z⊢ 1 + 2 * psi z = 1 / z ^ (1 / 2) * (1 + 2 * psi (1 / z)) z:ℂh:jacobiTheta₂ 0 (I * z) = 1 / (-I * (I * z)) ^ (1 / 2) * cexp (-↑Real.pi * I * 0 ^ 2 / (I * z)) * jacobiTheta₂ (0 / (I * z)) (-1 / (I * z))h₁:-I * (I * z) = zh₂:-1 / (I * z) = I * (1 / z)⊢ 1 + 2 * psi z = 1 / z ^ (1 / 2) * (1 + 2 * psi (1 / z)) z:ℂh₁:-I * (I * z) = zh₂:-1 / (I * z) = I * (1 / z)h:jacobiTheta₂ 0 (I * z) = 1 / z ^ (1 / 2) * jacobiTheta₂ 0 (I * (1 / z))⊢ 1 + 2 * psi z = 1 / z ^ (1 / 2) * (1 + 2 * psi (1 / z)) z:ℂh₁:-I * (I * z) = zh₂:-1 / (I * z) = I * (1 / z)h:jacobiTheta₂ 0 (I * z) = 1 / z ^ (1 / 2) * jacobiTheta₂ 0 (I * (1 / z))⊢ 1 + 2 * ((jacobiTheta (I * z) - 1) / 2) = 1 / z ^ (1 / 2) * (1 + 2 * ((jacobiTheta (I * (1 / z)) - 1) / 2)) z:ℂh₁:-I * (I * z) = zh₂:-1 / (I * z) = I * (1 / z)h:jacobiTheta₂ 0 (I * z) = 1 / z ^ (1 / 2) * jacobiTheta₂ 0 (I * (1 / z))⊢ 1 + 2 * ((jacobiTheta₂ 0 (I * z) - 1) / 2) = 1 / z ^ (1 / 2) * (1 + 2 * ((jacobiTheta₂ 0 (I * (1 / z)) - 1) / 2)) z:ℂh₁:-I * (I * z) = zh₂:-1 / (I * z) = I * (1 / z)h:jacobiTheta₂ 0 (I * z) = 1 / z ^ (1 / 2) * jacobiTheta₂ 0 (I * (1 / z))⊢ 1 + 2 * ((jacobiTheta₂ 0 (I * z) - 1) / 2) = jacobiTheta₂ 0 (I * z)z:ℂh₁:-I * (I * z) = zh₂:-1 / (I * z) = I * (1 / z)h:jacobiTheta₂ 0 (I * z) = 1 / z ^ (1 / 2) * jacobiTheta₂ 0 (I * (1 / z))⊢ 1 / z ^ (1 / 2) * (1 + 2 * ((jacobiTheta₂ 0 (I * (1 / z)) - 1) / 2)) = 1 / z ^ (1 / 2) * jacobiTheta₂ 0 (I * (1 / z)) z:ℂh₁:-I * (I * z) = zh₂:-1 / (I * z) = I * (1 / z)h:jacobiTheta₂ 0 (I * z) = 1 / z ^ (1 / 2) * jacobiTheta₂ 0 (I * (1 / z))⊢ 1 + 2 * ((jacobiTheta₂ 0 (I * z) - 1) / 2) = jacobiTheta₂ 0 (I * z)z:ℂh₁:-I * (I * z) = zh₂:-1 / (I * z) = I * (1 / z)h:jacobiTheta₂ 0 (I * z) = 1 / z ^ (1 / 2) * jacobiTheta₂ 0 (I * (1 / z))⊢ 1 / z ^ (1 / 2) * (1 + 2 * ((jacobiTheta₂ 0 (I * (1 / z)) - 1) / 2)) = 1 / z ^ (1 / 2) * jacobiTheta₂ 0 (I * (1 / z)) All goals completed! 🐙 /-- Link to the real kernel already used by mathlib to define completed zeta. -/theorem psi_ofReal_eq_evenKernel (x : ℝ) : psi (x : ℂ) = ((HurwitzZeta.evenKernel 0 x : ℂ) - 1) / 2 := x:ℝ⊢ psi ↑x = (↑(HurwitzZeta.evenKernel 0 x) - 1) / 2 x:ℝh:↑(HurwitzZeta.evenKernel (↑0) x) = cexp (-↑Real.pi * ↑0 ^ 2 * ↑x) * jacobiTheta₂ (↑0 * I * ↑x) (I * ↑x)⊢ psi ↑x = (↑(HurwitzZeta.evenKernel 0 x) - 1) / 2 x:ℝh:↑(HurwitzZeta.evenKernel (↑0) x) = jacobiTheta₂ 0 (I * ↑x)⊢ psi ↑x = (↑(HurwitzZeta.evenKernel 0 x) - 1) / 2 x:ℝh:↑(HurwitzZeta.evenKernel (↑0) x) = jacobiTheta₂ 0 (I * ↑x)⊢ (↑(HurwitzZeta.evenKernel (↑0) x) - 1) / 2 = (↑(HurwitzZeta.evenKernel 0 x) - 1) / 2 All goals completed! 🐙 end HardyZeta