Hardy zeta

11.11. HardyZeta.Reality🔗

theorem mellin_conj_of_real_kernel (f : ℝ → ℂ) (hf : ∀ x, conj (f x) = f x) (s : ℂ) : mellin f (conj s) = conj (mellin f s) := f:ℝ → ℂhf:∀ (x : ℝ), (starRingEnd ℂ) (f x) = f xs:ℂ⊢ mellin f ((starRingEnd ℂ) s) = (starRingEnd ℂ) (mellin f s) f:ℝ → ℂhf:∀ (x : ℝ), (starRingEnd ℂ) (f x) = f xs:ℂ⊢ ∫ (t : ℝ) in Ioi 0, ↑t ^ ((starRingEnd ℂ) s - 1) • f t = (starRingEnd ℂ) (∫ (t : ℝ) in Ioi 0, ↑t ^ (s - 1) • f t) f:ℝ → ℂhf:∀ (x : ℝ), (starRingEnd ℂ) (f x) = f xs:ℂ⊢ ∫ (t : ℝ) in Ioi 0, ↑t ^ ((starRingEnd ℂ) s - 1) • f t = ∫ (x : ℝ) in Ioi 0, (starRingEnd ℂ) (↑x ^ (s - 1) • f x) f:ℝ → ℂhf:∀ (x : ℝ), (starRingEnd ℂ) (f x) = f xs:ℂ⊢ EqOn (fun x => ↑x ^ ((starRingEnd ℂ) s - 1) • f x) (fun x => (starRingEnd ℂ) (↑x ^ (s - 1) • f x)) (Ioi 0) f:ℝ → ℂhf:∀ (x : ℝ), (starRingEnd ℂ) (f x) = f xs:ℂx:ℝhx:x ∈ Ioi 0⊢ (fun x => ↑x ^ ((starRingEnd ℂ) s - 1) • f x) x = (fun x => (starRingEnd ℂ) (↑x ^ (s - 1) • f x)) x f:ℝ → ℂhf:∀ (x : ℝ), (starRingEnd ℂ) (f x) = f xs:ℂx:ℝhx:x ∈ Ioi 0ha:(↑x).arg ≠ Real.pi⊢ (fun x => ↑x ^ ((starRingEnd ℂ) s - 1) • f x) x = (fun x => (starRingEnd ℂ) (↑x ^ (s - 1) • f x)) x f:ℝ → ℂhf:∀ (x : ℝ), (starRingEnd ℂ) (f x) = f xs:ℂx:ℝhx:x ∈ Ioi 0ha:(↑x).arg ≠ Real.pi⊢ ↑x ^ ((starRingEnd ℂ) s - 1) • f x = (starRingEnd ℂ) (↑x ^ (s - 1) • f x) f:ℝ → ℂhf:∀ (x : ℝ), (starRingEnd ℂ) (f x) = f xs:ℂx:ℝhx:x ∈ Ioi 0ha:(↑x).arg ≠ Real.pi⊢ ↑x ^ ((starRingEnd ℂ) s - 1) * f x = (starRingEnd ℂ) (↑x ^ (s - 1)) * f x f:ℝ → ℂhf:∀ (x : ℝ), (starRingEnd ℂ) (f x) = f xs:ℂx:ℝhx:x ∈ Ioi 0ha:(↑x).arg ≠ Real.pi⊢ ↑x ^ ((starRingEnd ℂ) s - 1) = (starRingEnd ℂ) (↑x ^ (s - 1)) f:ℝ → ℂhf:∀ (x : ℝ), (starRingEnd ℂ) (f x) = f xs:ℂx:ℝhx:x ∈ Ioi 0ha:(↑x).arg ≠ Real.pihc:↑x ^ (starRingEnd ℂ) (s - 1) = (starRingEnd ℂ) ((starRingEnd ℂ) ↑x ^ (s - 1))⊢ ↑x ^ ((starRingEnd ℂ) s - 1) = (starRingEnd ℂ) (↑x ^ (s - 1)) All goals completed! 🐙theorem modifiedTheta_conj (x : ℝ) : conj ((HurwitzZeta.hurwitzEvenFEPair 0).f_modif x) = (HurwitzZeta.hurwitzEvenFEPair 0).f_modif x := x:ℝ⊢ (starRingEnd ℂ) ((HurwitzZeta.hurwitzEvenFEPair 0).f_modif x) = (HurwitzZeta.hurwitzEvenFEPair 0).f_modif x x:ℝ⊢ (starRingEnd ℂ) ((Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) x) = (Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) x x:ℝh₁:x ∈ Ioi 1⊢ (starRingEnd ℂ) ((Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) x) = (Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) xx:ℝh₁:x ∉ Ioi 1⊢ (starRingEnd ℂ) ((Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) x) = (Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) x x:ℝh₁:x ∈ Ioi 1⊢ (starRingEnd ℂ) ((Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) x) = (Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) xx:ℝh₁:x ∉ Ioi 1⊢ (starRingEnd ℂ) ((Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) x) = (Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) x x:ℝh₁:x ∉ Ioi 1h₂:x ∈ Ioo 0 1⊢ (starRingEnd ℂ) ((Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) x) = (Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) xx:ℝh₁:x ∉ Ioi 1h₂:x ∉ Ioo 0 1⊢ (starRingEnd ℂ) ((Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) x) = (Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) x x:ℝh₁:x ∈ Ioi 1h₂:x ∈ Ioo 0 1⊢ (starRingEnd ℂ) ((Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) x) = (Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) xx:ℝh₁:x ∈ Ioi 1h₂:x ∉ Ioo 0 1⊢ (starRingEnd ℂ) ((Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) x) = (Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) xx:ℝh₁:x ∉ Ioi 1h₂:x ∈ Ioo 0 1⊢ (starRingEnd ℂ) ((Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) x) = (Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) xx:ℝh₁:x ∉ Ioi 1h₂:x ∉ Ioo 0 1⊢ (starRingEnd ℂ) ((Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) x) = (Ioi 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - (HurwitzZeta.hurwitzEvenFEPair 0).f₀) x + (Ioo 0 1).indicator (fun x => (HurwitzZeta.hurwitzEvenFEPair 0).f x - ((HurwitzZeta.hurwitzEvenFEPair 0).ε * ↑(x ^ (-(HurwitzZeta.hurwitzEvenFEPair 0).k))) • (HurwitzZeta.hurwitzEvenFEPair 0).g₀) x All goals completed! 🐙theorem completedZeta₀_conj (s : ℂ) : completedRiemannZeta₀ (conj s) = conj (completedRiemannZeta₀ s) := s:ℂ⊢ completedRiemannZeta₀ ((starRingEnd ℂ) s) = (starRingEnd ℂ) (completedRiemannZeta₀ s) s:ℂ⊢ mellin (HurwitzZeta.hurwitzEvenFEPair 0).f_modif ((starRingEnd ℂ) s / 2) / 2 = (starRingEnd ℂ) (mellin (HurwitzZeta.hurwitzEvenFEPair 0).f_modif (s / 2) / 2) s:ℂ⊢ mellin (HurwitzZeta.hurwitzEvenFEPair 0).f_modif ((starRingEnd ℂ) (s / 2)) / 2 = (starRingEnd ℂ) (mellin (HurwitzZeta.hurwitzEvenFEPair 0).f_modif (s / 2) / 2) s:ℂ⊢ (starRingEnd ℂ) (mellin (HurwitzZeta.hurwitzEvenFEPair 0).f_modif (s / 2)) / 2 = (starRingEnd ℂ) (mellin (HurwitzZeta.hurwitzEvenFEPair 0).f_modif (s / 2) / 2) All goals completed! 🐙theorem completedZeta_conj (s : ℂ) : completedRiemannZeta (conj s) = conj (completedRiemannZeta s) := s:ℂ⊢ completedRiemannZeta ((starRingEnd ℂ) s) = (starRingEnd ℂ) (completedRiemannZeta s) All goals completed! 🐙theorem xi_conj (s : ℂ) : xi (conj s) = conj (xi s) := s:ℂ⊢ xi ((starRingEnd ℂ) s) = (starRingEnd ℂ) (xi s) All goals completed! 🐙theorem conj_criticalPoint (t : ℝ) : conj (criticalPoint t) = 1 - criticalPoint t := t:ℝ⊢ (starRingEnd ℂ) (criticalPoint t) = 1 - criticalPoint t t:ℝ⊢ 2⁻¹ + -(↑t * I) = 1 - (2⁻¹ + ↑t * I) All goals completed! 🐙theorem criticalXi_conj (t : ℝ) : conj (criticalXi t) = criticalXi t := t:ℝ⊢ (starRingEnd ℂ) (criticalXi t) = criticalXi t All goals completed! 🐙 /-- The restriction of xi to the critical line is genuinely real. -/theorem criticalXi_im (t : ℝ) : (criticalXi t).im = 0 := t:ℝ⊢ (criticalXi t).im = 0 t:ℝh:((starRingEnd ℂ) (criticalXi t)).im = (criticalXi t).im⊢ (criticalXi t).im = 0 t:ℝh:-(criticalXi t).im = (criticalXi t).im⊢ (criticalXi t).im = 0 All goals completed! 🐙 /-- Hardy's real xi function. -/def hardyXi (t : ℝ) : ℝ := (criticalXi t).retheorem ofReal_hardyXi (t : ℝ) : (hardyXi t : ℂ) = criticalXi t := t:ℝ⊢ ↑(hardyXi t) = criticalXi t t:ℝ⊢ (↑(hardyXi t)).re = (criticalXi t).ret:ℝ⊢ (↑(hardyXi t)).im = (criticalXi t).im t:ℝ⊢ (↑(hardyXi t)).re = (criticalXi t).ret:ℝ⊢ (↑(hardyXi t)).im = (criticalXi t).im All goals completed! 🐙theorem hardyXi_eq_zero_iff (t : ℝ) : hardyXi t = 0 ↔ riemannZeta (criticalPoint t) = 0 := t:ℝ⊢ hardyXi t = 0 ↔ riemannZeta (criticalPoint t) = 0 t:ℝ⊢ hardyXi t = 0 ↔ ↑(hardyXi t) = 0 All goals completed! 🐙theorem continuous_hardyXi : Continuous hardyXi := Complex.continuous_re.comp continuous_criticalXitheorem hardyXi_neg (t : ℝ) : hardyXi (-t) = hardyXi t := t:ℝ⊢ hardyXi (-t) = hardyXi t All goals completed! 🐙 end HardyZeta