Hardy zeta

11.21. HardyZeta.ThetaTransform🔗

def modifiedThetaLogKernel (u : ℝ) : ℂ := Real.exp (-u / 4) • (HurwitzZeta.hurwitzEvenFEPair 0).f_modif (Real.exp (-u))theorem modifiedTheta_mellinConvergent (s : ℂ) : MellinConvergent (HurwitzZeta.hurwitzEvenFEPair 0).f_modif s := ((HurwitzZeta.hurwitzEvenFEPair 0).isStrongFEPair_toStrongFEPair.hasMellin s).1 /-- An unconditional Fourier representation of the pole-removed completed zeta. -/theorem completedZeta₀_eq_fourier (t : ℝ) : completedRiemannZeta₀ (criticalPoint t) = 𝓕 modifiedThetaLogKernel (t / (4 * Real.pi)) / 2 := t:ℝ⊢ completedRiemannZeta₀ (criticalPoint t) = 𝓕 modifiedThetaLogKernel (t / (4 * Real.pi)) / 2 t:ℝ⊢ mellin (HurwitzZeta.hurwitzEvenFEPair 0).f_modif (criticalPoint t / 2) / 2 = 𝓕 modifiedThetaLogKernel (t / (4 * Real.pi)) / 2 t:ℝ⊢ 𝓕 (fun u => Real.exp (-(criticalPoint t / 2).re * u) • (HurwitzZeta.hurwitzEvenFEPair 0).f_modif (Real.exp (-u))) ((criticalPoint t / 2).im / (2 * Real.pi)) / 2 = 𝓕 modifiedThetaLogKernel (t / (4 * Real.pi)) / 2 t:ℝhr:(criticalPoint t / 2).re = 1 / 4⊢ 𝓕 (fun u => Real.exp (-(criticalPoint t / 2).re * u) • (HurwitzZeta.hurwitzEvenFEPair 0).f_modif (Real.exp (-u))) ((criticalPoint t / 2).im / (2 * Real.pi)) / 2 = 𝓕 modifiedThetaLogKernel (t / (4 * Real.pi)) / 2 t:ℝhr:(criticalPoint t / 2).re = 1 / 4hi:(criticalPoint t / 2).im / (2 * Real.pi) = t / (4 * Real.pi)⊢ 𝓕 (fun u => Real.exp (-(criticalPoint t / 2).re * u) • (HurwitzZeta.hurwitzEvenFEPair 0).f_modif (Real.exp (-u))) ((criticalPoint t / 2).im / (2 * Real.pi)) / 2 = 𝓕 modifiedThetaLogKernel (t / (4 * Real.pi)) / 2 t:ℝhr:(criticalPoint t / 2).re = 1 / 4hi:(criticalPoint t / 2).im / (2 * Real.pi) = t / (4 * Real.pi)⊢ 𝓕 (fun u => Real.exp (-(1 / 4) * u) • (HurwitzZeta.hurwitzEvenFEPair 0).f_modif (Real.exp (-u))) (t / (4 * Real.pi)) / 2 = 𝓕 modifiedThetaLogKernel (t / (4 * Real.pi)) / 2 simp_rw t:ℝhr:(criticalPoint t / 2).re = 1 / 4hi:(criticalPoint t / 2).im / (2 * Real.pi) = t / (4 * Real.pi)⊢ 𝓕 (fun u => Real.exp (-(1 / 4) * u) • (HurwitzZeta.hurwitzEvenFEPair 0).f_modif (Real.exp (-u))) (t / (4 * Real.pi)) / 2 = 𝓕 modifiedThetaLogKernel (t / (4 * Real.pi)) / 2show ∀ u : ℝ, -(1 / 4) * u = -u / 4 from fun u ↦ t:ℝhr:(criticalPoint t / 2).re = 1 / 4hi:(criticalPoint t / 2).im / (2 * Real.pi) = t / (4 * Real.pi)u:ℝ⊢ -(1 / 4) * u = -u / 4 All goals completed! 🐙] All goals completed! 🐙 /-- The pole correction in the same representation is explicit. -/theorem completedZeta_eq_fourier (t : ℝ) : completedRiemannZeta (criticalPoint t) = 𝓕 modifiedThetaLogKernel (t / (4 * Real.pi)) / 2 - 1 / criticalPoint t - 1 / (1 - criticalPoint t) := t:ℝ⊢ completedRiemannZeta (criticalPoint t) = 𝓕 modifiedThetaLogKernel (t / (4 * Real.pi)) / 2 - 1 / criticalPoint t - 1 / (1 - criticalPoint t) All goals completed! 🐙 /-- Logarithmic change of variables transfers Mellin convergence to L¹. -/theorem integrable_mellinLogKernel {f : ℝ → ℂ} {σ : ℝ} (hf : MellinConvergent f (σ : ℂ)) : Integrable (fun u : ℝ ↦ Real.exp (-σ * u) • f (Real.exp (-u))) := f:ℝ → ℂσ:ℝhf:MellinConvergent f ↑σ⊢ Integrable (fun u => Real.exp (-σ * u) • f (Real.exp (-u))) volume f:ℝ → ℂσ:ℝhf:MellinConvergent f ↑σhimage:(fun u => Real.exp (-u)) '' univ = Ioi 0⊢ Integrable (fun u => Real.exp (-σ * u) • f (Real.exp (-u))) volume f:ℝ → ℂσ:ℝhf:MellinConvergent f ↑σhimage:(fun u => Real.exp (-u)) '' univ = Ioi 0hder:∀ u ∈ univ, HasDerivWithinAt (fun u => Real.exp (-u)) (-Real.exp (-u)) univ u⊢ Integrable (fun u => Real.exp (-σ * u) • f (Real.exp (-u))) volume f:ℝ → ℂσ:ℝhf:MellinConvergent f ↑σhimage:(fun u => Real.exp (-u)) '' univ = Ioi 0hder:∀ u ∈ univ, HasDerivWithinAt (fun u => Real.exp (-u)) (-Real.exp (-u)) univ uhinj:InjOn (fun u => Real.exp (-u)) univ⊢ Integrable (fun u => Real.exp (-σ * u) • f (Real.exp (-u))) volume f:ℝ → ℂσ:ℝhf:IntegrableOn (fun t => ↑t ^ (↑σ - 1) • f t) (Ioi 0) volumehimage:(fun u => Real.exp (-u)) '' univ = Ioi 0hder:∀ u ∈ univ, HasDerivWithinAt (fun u => Real.exp (-u)) (-Real.exp (-u)) univ uhinj:InjOn (fun u => Real.exp (-u)) univ⊢ Integrable (fun u => Real.exp (-σ * u) • f (Real.exp (-u))) volume f:ℝ → ℂσ:ℝhf:IntegrableOn (fun t => ↑t ^ (↑σ - 1) • f t) ((fun u => Real.exp (-u)) '' univ) volumehimage:(fun u => Real.exp (-u)) '' univ = Ioi 0hder:∀ u ∈ univ, HasDerivWithinAt (fun u => Real.exp (-u)) (-Real.exp (-u)) univ uhinj:InjOn (fun u => Real.exp (-u)) univ⊢ Integrable (fun u => Real.exp (-σ * u) • f (Real.exp (-u))) volume f:ℝ → ℂσ:ℝhf:IntegrableOn (fun t => ↑t ^ (↑σ - 1) • f t) ((fun u => Real.exp (-u)) '' univ) volumehimage:(fun u => Real.exp (-u)) '' univ = Ioi 0hder:∀ u ∈ univ, HasDerivWithinAt (fun u => Real.exp (-u)) (-Real.exp (-u)) univ uhinj:InjOn (fun u => Real.exp (-u)) univh:IntegrableOn (fun x => |(-Real.exp (-x))| • ↑(Real.exp (-x)) ^ (↑σ - 1) • f (Real.exp (-x))) univ volume⊢ Integrable (fun u => Real.exp (-σ * u) • f (Real.exp (-u))) volume f:ℝ → ℂσ:ℝhf:IntegrableOn (fun t => ↑t ^ (↑σ - 1) • f t) ((fun u => Real.exp (-u)) '' univ) volumehimage:(fun u => Real.exp (-u)) '' univ = Ioi 0hder:∀ u ∈ univ, HasDerivWithinAt (fun u => Real.exp (-u)) (-Real.exp (-u)) univ uhinj:InjOn (fun u => Real.exp (-u)) univh:Integrable (fun x => |(-Real.exp (-x))| • ↑(Real.exp (-x)) ^ (↑σ - 1) • f (Real.exp (-x))) volume⊢ Integrable (fun u => Real.exp (-σ * u) • f (Real.exp (-u))) volume f:ℝ → ℂσ:ℝhf:IntegrableOn (fun t => ↑t ^ (↑σ - 1) • f t) ((fun u => Real.exp (-u)) '' univ) volumehimage:(fun u => Real.exp (-u)) '' univ = Ioi 0hder:∀ u ∈ univ, HasDerivWithinAt (fun u => Real.exp (-u)) (-Real.exp (-u)) univ uhinj:InjOn (fun u => Real.exp (-u)) univh:Integrable (fun x => |(-Real.exp (-x))| • ↑(Real.exp (-x)) ^ (↑σ - 1) • f (Real.exp (-x))) volumehe:∀ (u : ℝ), |(-Real.exp (-u))| • ↑(Real.exp (-u)) ^ (↑σ - 1) • f (Real.exp (-u)) = Real.exp (-σ * u) • f (Real.exp (-u))⊢ Integrable (fun u => Real.exp (-σ * u) • f (Real.exp (-u))) volume All goals completed! 🐙theorem integrable_modifiedThetaLogKernel : Integrable modifiedThetaLogKernel := ⊢ Integrable modifiedThetaLogKernel volume h:Integrable (fun u => Real.exp (-(1 / 4) * u) • (HurwitzZeta.hurwitzEvenFEPair 0).f_modif (Real.exp (-u))) volume⊢ Integrable modifiedThetaLogKernel volume h:Integrable (fun u => Real.exp (-(1 / 4) * u) • (HurwitzZeta.hurwitzEvenFEPair 0).f_modif (Real.exp (-u))) volume⊢ Integrable (fun u => Real.exp (-u / 4) • (HurwitzZeta.hurwitzEvenFEPair 0).f_modif (Real.exp (-u))) volume simpa only [show ∀ u : ℝ, -(1 / 4) * u = -u / 4 from fun u ↦ h:Integrable (fun u => Real.exp (-(1 / 4) * u) • (HurwitzZeta.hurwitzEvenFEPair 0).f_modif (Real.exp (-u))) volumeu:ℝ⊢ -(1 / 4) * u = -u / 4 All goals completed! 🐙] using h /-- The elementary correction to the logarithmic kernel. -/def poleLogKernel (u : ℝ) : ℂ := (Real.exp (-|u| / 4) : ℂ)theorem integrable_poleLogKernel : Integrable poleLogKernel := ⊢ Integrable poleLogKernel volume ⊢ Integrable (fun u => ↑(Real.exp (-|u| / 4))) volume simpa only [show ∀ u : ℝ, -(1 / 4) * |u| = -|u| / 4 from fun u ↦ u:ℝ⊢ -(1 / 4) * |u| = -|u| / 4 All goals completed! 🐙] using integrable_exp_neg_abs (⊢ 0 < 1 / 4 All goals completed! 🐙 : (0 : ℝ) < 1 / 4)theorem fourier_poleLogKernel (t : ℝ) : 𝓕 poleLogKernel (t / (4 * Real.pi)) / 2 = 1 / criticalPoint t + 1 / (1 - criticalPoint t) := t:ℝ⊢ 𝓕 poleLogKernel (t / (4 * Real.pi)) / 2 = 1 / criticalPoint t + 1 / (1 - criticalPoint t) t:ℝh:𝓕 (fun u => ↑(Real.exp (-(1 / 4) * |u|))) (t / (4 * Real.pi)) = 1 / (↑(1 / 4) - 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I) + 1 / (↑(1 / 4) + 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I)⊢ 𝓕 poleLogKernel (t / (4 * Real.pi)) / 2 = 1 / criticalPoint t + 1 / (1 - criticalPoint t) t:ℝh:𝓕 (fun u => ↑(Real.exp (-|u| / 4))) (t / (4 * Real.pi)) = 1 / (↑(1 / 4) - 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I) + 1 / (↑(1 / 4) + 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I)⊢ 𝓕 poleLogKernel (t / (4 * Real.pi)) / 2 = 1 / criticalPoint t + 1 / (1 - criticalPoint t) t:ℝh:𝓕 (fun u => ↑(Real.exp (-|u| / 4))) (t / (4 * Real.pi)) = 1 / (↑(1 / 4) - 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I) + 1 / (↑(1 / 4) + 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I)⊢ 𝓕 (fun u => ↑(Real.exp (-|u| / 4))) (t / (4 * Real.pi)) / 2 = 1 / criticalPoint t + 1 / (1 - criticalPoint t) t:ℝh:𝓕 (fun u => ↑(Real.exp (-|u| / 4))) (t / (4 * Real.pi)) = 1 / (↑(1 / 4) - 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I) + 1 / (↑(1 / 4) + 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I)⊢ (1 / (↑(1 / 4) - 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I) + 1 / (↑(1 / 4) + 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I)) / 2 = 1 / criticalPoint t + 1 / (1 - criticalPoint t) t:ℝh:𝓕 (fun u => ↑(Real.exp (-|u| / 4))) (t / (4 * Real.pi)) = 1 / (↑(1 / 4) - 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I) + 1 / (↑(1 / 4) + 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I)he:2 * ↑Real.pi * ↑(t / (4 * Real.pi)) = ↑t / 2⊢ (1 / (↑(1 / 4) - 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I) + 1 / (↑(1 / 4) + 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I)) / 2 = 1 / criticalPoint t + 1 / (1 - criticalPoint t) t:ℝh:𝓕 (fun u => ↑(Real.exp (-|u| / 4))) (t / (4 * Real.pi)) = 1 / (↑(1 / 4) - 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I) + 1 / (↑(1 / 4) + 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I)he:2 * ↑Real.pi * ↑(t / (4 * Real.pi)) = ↑t / 2⊢ (1 / (↑(1 / 4) - ↑t / 2 * I) + 1 / (↑(1 / 4) + ↑t / 2 * I)) / 2 = 1 / criticalPoint t + 1 / (1 - criticalPoint t) t:ℝh:𝓕 (fun u => ↑(Real.exp (-|u| / 4))) (t / (4 * Real.pi)) = 1 / (↑(1 / 4) - 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I) + 1 / (↑(1 / 4) + 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I)he:2 * ↑Real.pi * ↑(t / (4 * Real.pi)) = ↑t / 2hl:↑(1 / 4) - ↑t / 2 * I = (1 - criticalPoint t) / 2⊢ (1 / (↑(1 / 4) - ↑t / 2 * I) + 1 / (↑(1 / 4) + ↑t / 2 * I)) / 2 = 1 / criticalPoint t + 1 / (1 - criticalPoint t) t:ℝh:𝓕 (fun u => ↑(Real.exp (-|u| / 4))) (t / (4 * Real.pi)) = 1 / (↑(1 / 4) - 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I) + 1 / (↑(1 / 4) + 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I)he:2 * ↑Real.pi * ↑(t / (4 * Real.pi)) = ↑t / 2hl:↑(1 / 4) - ↑t / 2 * I = (1 - criticalPoint t) / 2hr:↑(1 / 4) + ↑t / 2 * I = criticalPoint t / 2⊢ (1 / (↑(1 / 4) - ↑t / 2 * I) + 1 / (↑(1 / 4) + ↑t / 2 * I)) / 2 = 1 / criticalPoint t + 1 / (1 - criticalPoint t) t:ℝh:𝓕 (fun u => ↑(Real.exp (-|u| / 4))) (t / (4 * Real.pi)) = 1 / (↑(1 / 4) - 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I) + 1 / (↑(1 / 4) + 2 * ↑Real.pi * ↑(t / (4 * Real.pi)) * I)he:2 * ↑Real.pi * ↑(t / (4 * Real.pi)) = ↑t / 2hl:↑(1 / 4) - ↑t / 2 * I = (1 - criticalPoint t) / 2hr:↑(1 / 4) + ↑t / 2 * I = criticalPoint t / 2⊢ 2 / (1 - criticalPoint t) / 2 + 2 / criticalPoint t / 2 = 1 / criticalPoint t + 1 / (1 - criticalPoint t) All goals completed! 🐙 /-- The integrable theta kernel after removing both poles. -/def correctedThetaLogKernel (u : ℝ) : ℂ := modifiedThetaLogKernel u - poleLogKernel utheorem integrable_correctedThetaLogKernel : Integrable correctedThetaLogKernel := integrable_modifiedThetaLogKernel.sub integrable_poleLogKerneltheorem fourier_sub_of_integrable {f g : ℝ → ℂ} (hf : Integrable f) (hg : Integrable g) (w : ℝ) : 𝓕 (fun u ↦ f u - g u) w = 𝓕 f w - 𝓕 g w := f:ℝ → ℂg:ℝ → ℂhf:Integrable f volumehg:Integrable g volumew:ℝ⊢ 𝓕 (fun u => f u - g u) w = 𝓕 f w - 𝓕 g w f:ℝ → ℂg:ℝ → ℂhf:Integrable f volumehg:Integrable g volumew:ℝ⊢ ∫ (v : ℝ), 𝐞 (-inner ℝ v w) • f v - 𝐞 (-inner ℝ v w) • g v = (∫ (v : ℝ), 𝐞 (-inner ℝ v w) • f v) - ∫ (v : ℝ), 𝐞 (-inner ℝ v w) • g v f:ℝ → ℂg:ℝ → ℂhf:Integrable f volumehg:Integrable g volumew:ℝ⊢ Integrable (fun a => 𝐞 (-inner ℝ a w) • f a) volumef:ℝ → ℂg:ℝ → ℂhf:Integrable f volumehg:Integrable g volumew:ℝ⊢ Integrable (fun a => 𝐞 (-inner ℝ a w) • g a) volume f:ℝ → ℂg:ℝ → ℂhf:Integrable f volumehg:Integrable g volumew:ℝ⊢ Integrable (fun a => 𝐞 (-inner ℝ a w) • f a) volume All goals completed! 🐙 f:ℝ → ℂg:ℝ → ℂhf:Integrable f volumehg:Integrable g volumew:ℝ⊢ Integrable (fun a => 𝐞 (-inner ℝ a w) • g a) volume All goals completed! 🐙 /-- The actual completed zeta is the Fourier transform of one integrable kernel. -/theorem completedZeta_eq_fourier_corrected (t : ℝ) : completedRiemannZeta (criticalPoint t) = 𝓕 correctedThetaLogKernel (t / (4 * Real.pi)) / 2 := t:ℝ⊢ completedRiemannZeta (criticalPoint t) = 𝓕 correctedThetaLogKernel (t / (4 * Real.pi)) / 2 t:ℝ⊢ 𝓕 modifiedThetaLogKernel (t / (4 * Real.pi)) / 2 - 1 / criticalPoint t - 1 / (1 - criticalPoint t) = 𝓕 correctedThetaLogKernel (t / (4 * Real.pi)) / 2 t:ℝ⊢ 𝓕 modifiedThetaLogKernel (t / (4 * Real.pi)) / 2 - 1 / criticalPoint t - 1 / (1 - criticalPoint t) = 𝓕 (fun u => modifiedThetaLogKernel u - poleLogKernel u) (t / (4 * Real.pi)) / 2 t:ℝ⊢ 𝓕 modifiedThetaLogKernel (t / (4 * Real.pi)) / 2 - 1 / criticalPoint t - 1 / (1 - criticalPoint t) = 𝓕 modifiedThetaLogKernel (t / (4 * Real.pi)) / 2 - (1 / criticalPoint t + 1 / (1 - criticalPoint t)) All goals completed! 🐙 /-- The smooth kernel whose restriction agrees almost everywhere with the corrected kernel. -/def thetaLogKernel (z : ℂ) : ℂ := 2 * exp (-z / 4) * psi (exp (-z)) - exp (z / 4)theorem correctedThetaLogKernel_eq {u : ℝ} (hu : u ≠ 0) : correctedThetaLogKernel u = thetaLogKernel (u : ℂ) := u:ℝhu:u ≠ 0⊢ correctedThetaLogKernel u = thetaLogKernel ↑u u:ℝhu:u ≠ 0hx:0 < Real.exp (-u)⊢ correctedThetaLogKernel u = thetaLogKernel ↑u u:ℝhu:u ≠ 0hx:0 < Real.exp (-u)he:cexp (-↑u) = ↑(Real.exp (-u))⊢ correctedThetaLogKernel u = thetaLogKernel ↑u u:ℝhu:u ≠ 0hx:0 < Real.exp (-u)he:cexp (-↑u) = ↑(Real.exp (-u))⊢ correctedThetaLogKernel u = 2 * cexp (-↑u / 4) * psi (cexp (-↑u)) - cexp (↑u / 4) u:ℝhu:u ≠ 0hx:0 < Real.exp (-u)he:cexp (-↑u) = ↑(Real.exp (-u))⊢ correctedThetaLogKernel u = 2 * cexp (-↑u / 4) * ((↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - 1) / 2) - cexp (↑u / 4) u:ℝhu✝:u ≠ 0hx:0 < Real.exp (-u)he:cexp (-↑u) = ↑(Real.exp (-u))hu:u < 0⊢ correctedThetaLogKernel u = 2 * cexp (-↑u / 4) * ((↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - 1) / 2) - cexp (↑u / 4)u:ℝhu✝:u ≠ 0hx:0 < Real.exp (-u)he:cexp (-↑u) = ↑(Real.exp (-u))hu:0 < u⊢ correctedThetaLogKernel u = 2 * cexp (-↑u / 4) * ((↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - 1) / 2) - cexp (↑u / 4) u:ℝhu✝:u ≠ 0hx:0 < Real.exp (-u)he:cexp (-↑u) = ↑(Real.exp (-u))hu:u < 0⊢ correctedThetaLogKernel u = 2 * cexp (-↑u / 4) * ((↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - 1) / 2) - cexp (↑u / 4) u:ℝhu✝:u ≠ 0hx:0 < Real.exp (-u)he:cexp (-↑u) = ↑(Real.exp (-u))hu:u < 0hx1:1 < Real.exp (-u)⊢ correctedThetaLogKernel u = 2 * cexp (-↑u / 4) * ((↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - 1) / 2) - cexp (↑u / 4) u:ℝhu✝:u ≠ 0hx:0 < Real.exp (-u)he:cexp (-↑u) = ↑(Real.exp (-u))hu:u < 0hx1:1 < Real.exp (-u)hn:¬Real.exp (-u) < 1⊢ correctedThetaLogKernel u = 2 * cexp (-↑u / 4) * ((↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - 1) / 2) - cexp (↑u / 4) u:ℝhu✝:u ≠ 0hx:0 < Real.exp (-u)he:cexp (-↑u) = ↑(Real.exp (-u))hu:u < 0hx1:1 < Real.exp (-u)hn:¬Real.exp (-u) < 1⊢ cexp (-↑u / 4) * (↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - 1) = 2 * cexp (-↑u / 4) * ((↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - 1) / 2) All goals completed! 🐙 u:ℝhu✝:u ≠ 0hx:0 < Real.exp (-u)he:cexp (-↑u) = ↑(Real.exp (-u))hu:0 < u⊢ correctedThetaLogKernel u = 2 * cexp (-↑u / 4) * ((↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - 1) / 2) - cexp (↑u / 4) u:ℝhu✝:u ≠ 0hx:0 < Real.exp (-u)he:cexp (-↑u) = ↑(Real.exp (-u))hu:0 < uhx1:Real.exp (-u) < 1⊢ correctedThetaLogKernel u = 2 * cexp (-↑u / 4) * ((↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - 1) / 2) - cexp (↑u / 4) u:ℝhu✝:u ≠ 0hx:0 < Real.exp (-u)he:cexp (-↑u) = ↑(Real.exp (-u))hu:0 < uhx1:Real.exp (-u) < 1hn:¬1 < Real.exp (-u)⊢ correctedThetaLogKernel u = 2 * cexp (-↑u / 4) * ((↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - 1) / 2) - cexp (↑u / 4) u:ℝhu✝:u ≠ 0hx:0 < Real.exp (-u)he:cexp (-↑u) = ↑(Real.exp (-u))hu:0 < uhx1:Real.exp (-u) < 1hn:¬1 < Real.exp (-u)hp:Real.exp (-u) ^ (-(1 / 2)) = Real.exp (u / 2)⊢ correctedThetaLogKernel u = 2 * cexp (-↑u / 4) * ((↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - 1) / 2) - cexp (↑u / 4) u:ℝhu✝:u ≠ 0hx:0 < Real.exp (-u)he:cexp (-↑u) = ↑(Real.exp (-u))hu:0 < uhx1:Real.exp (-u) < 1hn:¬1 < Real.exp (-u)hp:Real.exp (-u) ^ (-2⁻¹) = Real.exp (u / 2)⊢ correctedThetaLogKernel u = 2 * cexp (-↑u / 4) * ((↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - 1) / 2) - cexp (↑u / 4) u:ℝhu✝:u ≠ 0hx:0 < Real.exp (-u)he:cexp (-↑u) = ↑(Real.exp (-u))hu:0 < uhx1:Real.exp (-u) < 1hn:¬1 < Real.exp (-u)hp:Real.exp (-u) ^ (-2⁻¹) = Real.exp (u / 2)hmul:↑(Real.exp (-u / 4)) * ↑(Real.exp (u / 2)) = ↑(Real.exp (u / 4))⊢ correctedThetaLogKernel u = 2 * cexp (-↑u / 4) * ((↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - 1) / 2) - cexp (↑u / 4) u:ℝhu✝:u ≠ 0hx:0 < Real.exp (-u)he:cexp (-↑u) = ↑(Real.exp (-u))hu:0 < uhx1:Real.exp (-u) < 1hn:¬1 < Real.exp (-u)hp:Real.exp (-u) ^ (-2⁻¹) = Real.exp (u / 2)hmul:↑(Real.exp (-u / 4)) * ↑(Real.exp (u / 2)) = ↑(Real.exp (u / 4))⊢ cexp (-↑u / 4) * (↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - cexp (↑u / 2)) - cexp (-↑u / 4) = 2 * cexp (-↑u / 4) * ((↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - 1) / 2) - cexp (↑u / 4) u:ℝhu✝:u ≠ 0hx:0 < Real.exp (-u)he:cexp (-↑u) = ↑(Real.exp (-u))hu:0 < uhx1:Real.exp (-u) < 1hn:¬1 < Real.exp (-u)hp:Real.exp (-u) ^ (-2⁻¹) = Real.exp (u / 2)hmul:cexp (-↑u / 4) * cexp (↑u / 2) = cexp (↑u / 4)⊢ cexp (-↑u / 4) * (↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - cexp (↑u / 2)) - cexp (-↑u / 4) = 2 * cexp (-↑u / 4) * ((↑(HurwitzZeta.evenKernel 0 (Real.exp (-u))) - 1) / 2) - cexp (↑u / 4) All goals completed! 🐙theorem correctedThetaLogKernel_ae_eq : correctedThetaLogKernel =ᵐ[volume] fun u : ℝ ↦ thetaLogKernel (u : ℂ) := ⊢ correctedThetaLogKernel =ᵐ[volume] fun u => thetaLogKernel ↑u filter_upwards [volume.ae_ne (0 : ℝ)] with u u:ℝhu:u ≠ 0⊢ correctedThetaLogKernel u = thetaLogKernel ↑u using correctedThetaLogKernel_eq hutheorem integrable_thetaLogKernel : Integrable (fun u : ℝ ↦ thetaLogKernel (u : ℂ)) := integrable_correctedThetaLogKernel.congr correctedThetaLogKernel_ae_eqtheorem completedZeta_eq_fourier_theta (t : ℝ) : completedRiemannZeta (criticalPoint t) = 𝓕 (fun u : ℝ ↦ thetaLogKernel (u : ℂ)) (t / (4 * Real.pi)) / 2 := t:ℝ⊢ completedRiemannZeta (criticalPoint t) = 𝓕 (fun u => thetaLogKernel ↑u) (t / (4 * Real.pi)) / 2 All goals completed! 🐙theorem differentiableAt_thetaLogKernel {z : ℂ} (hz : |z.im| < Real.pi / 2) : DifferentiableAt ℂ thetaLogKernel z := z:ℂhz:|z.im| < Real.pi / 2⊢ DifferentiableAt ℂ thetaLogKernel z z:ℂhz:|z.im| < Real.pi / 2hc:0 < (cexp (-z)).re⊢ DifferentiableAt ℂ thetaLogKernel z z:ℂhz:|z.im| < Real.pi / 2hc:0 < (cexp (-z)).rehp:DifferentiableAt ℂ (psi ∘ fun x => cexp ((-id) x)) z⊢ DifferentiableAt ℂ thetaLogKernel z z:ℂhz:|z.im| < Real.pi / 2hc:0 < (cexp (-z)).rehp:DifferentiableAt ℂ (psi ∘ fun x => cexp ((-id) x)) z⊢ DifferentiableAt ℂ (fun z => 2 * cexp (-z / 4) * psi (cexp (-z)) - cexp (z / 4)) z All goals completed! 🐙theorem thetaLogKernel_neg {z : ℂ} (hz : |z.im| < Real.pi / 2) : thetaLogKernel (-z) = thetaLogKernel z := z:ℂhz:|z.im| < Real.pi / 2⊢ thetaLogKernel (-z) = thetaLogKernel z z:ℂhz:|z.im| < Real.pi / 2hp:cexp (-z) ^ (1 / 2) = cexp (-z / 2)⊢ thetaLogKernel (-z) = thetaLogKernel z z:ℂhz:|z.im| < Real.pi / 2hp:cexp (-z) ^ (1 / 2) = cexp (-z / 2)hi:1 / cexp (-z) = cexp z⊢ thetaLogKernel (-z) = thetaLogKernel z z:ℂhz:|z.im| < Real.pi / 2hp:cexp (-z) ^ (1 / 2) = cexp (-z / 2)hi:1 / cexp (-z) = cexp zhe:1 + 2 * psi (cexp (-z)) = 1 / cexp (-z) ^ (1 / 2) * (1 + 2 * psi (1 / cexp (-z)))⊢ thetaLogKernel (-z) = thetaLogKernel z z:ℂhz:|z.im| < Real.pi / 2hp:cexp (-z) ^ (1 / 2) = cexp (-z / 2)hi:1 / cexp (-z) = cexp zhe:1 + 2 * psi (cexp (-z)) = cexp (-(-z / 2)) * (1 + 2 * psi (cexp z))⊢ thetaLogKernel (-z) = thetaLogKernel z z:ℂhz:|z.im| < Real.pi / 2hp:cexp (-z) ^ (1 / 2) = cexp (-z / 2)hi:1 / cexp (-z) = cexp zhe:1 + 2 * psi (cexp (-z)) = cexp (-(-z / 2)) * (1 + 2 * psi (cexp z))hm:cexp (-z / 4) * cexp (-(-z / 2)) = cexp (z / 4)⊢ thetaLogKernel (-z) = thetaLogKernel z z:ℂhz:|z.im| < Real.pi / 2hp:cexp (-z) ^ (1 / 2) = cexp (-z / 2)hi:1 / cexp (-z) = cexp zhe:1 + 2 * psi (cexp (-z)) = cexp (-(-z / 2)) * (1 + 2 * psi (cexp z))hm:cexp (-z / 4) * cexp (-(-z / 2)) = cexp (z / 4)hh:cexp (-z / 4) * (1 + 2 * psi (cexp (-z))) = cexp (-z / 4) * (cexp (-(-z / 2)) * (1 + 2 * psi (cexp z)))⊢ thetaLogKernel (-z) = thetaLogKernel z z:ℂhz:|z.im| < Real.pi / 2hp:cexp (-z) ^ (1 / 2) = cexp (-z / 2)hi:1 / cexp (-z) = cexp zhe:1 + 2 * psi (cexp (-z)) = cexp (-(-z / 2)) * (1 + 2 * psi (cexp z))hm:cexp (-z / 4) * cexp (-(-z / 2)) = cexp (z / 4)hh:cexp (-z / 4) * (1 + 2 * psi (cexp (-z))) = cexp (-z / 4) * (cexp (-(-z / 2)) * (1 + 2 * psi (cexp z)))⊢ 2 * cexp (- -z / 4) * psi (cexp (- -z)) - cexp (-z / 4) = 2 * cexp (-z / 4) * psi (cexp (-z)) - cexp (z / 4) z:ℂhz:|z.im| < Real.pi / 2hp:cexp (-z) ^ (1 / 2) = cexp (-z / 2)hi:1 / cexp (-z) = cexp zhe:1 + 2 * psi (cexp (-z)) = cexp (-(-z / 2)) * (1 + 2 * psi (cexp z))hm:cexp (-z / 4) * cexp (-(-z / 2)) = cexp (z / 4)hh:cexp (-z / 4) * (1 + 2 * psi (cexp (-z))) = cexp (-z / 4) * (cexp (-(-z / 2)) * (1 + 2 * psi (cexp z)))⊢ 2 * cexp (z / 4) * psi (cexp z) - cexp (-(z / 4)) = 2 * cexp (-(z / 4)) * psi (cexp (-z)) - cexp (z / 4) z:ℂhz:|z.im| < Real.pi / 2hp:cexp (-z) ^ (1 / 2) = cexp (-z / 2)hi:1 / cexp (-z) = cexp zhe:1 + 2 * psi (cexp (-z)) = cexp (-(-z / 2)) * (1 + 2 * psi (cexp z))hm:cexp (-(z / 4)) * cexp (- -(z / 2)) = cexp (z / 4)hh:cexp (-(z / 4)) * (1 + 2 * psi (cexp (-z))) = cexp (-(z / 4)) * (cexp (- -(z / 2)) * (1 + 2 * psi (cexp z)))⊢ 2 * cexp (z / 4) * psi (cexp z) - cexp (-(z / 4)) = 2 * cexp (-(z / 4)) * psi (cexp (-z)) - cexp (z / 4) All goals completed! 🐙