Target: hardyZ Status: Ready to draft Lean code Workspace: lean/ZetaLean/ Target Host: leanprover-community/mathlib4
Goal
Formalize Hardy's Z function in Lean 4 to pave the way for proving the Critical Line Theorem.
The Strategy
Instead of wrestling with continuous branches of log Γ for the Riemann-Siegel ϑ, we are directly defining Z t using the completed Riemann zeta function Λ (which is completedRiemannZeta in Mathlib). Since Λ(1/2 + it) is known to be real, this lets us sidestep the logarithm branching issues entirely.
Definition Stubs
I've placed a stub file at ZetaLean/HardyZ.lean. It includes the basic definition shape and outlines the lemmas for the first PR:
- Definition:
hardyZ (t : ℝ) : ℂ := completedRiemannZeta (1/2 + t*I) / (...) - Realness: Prove
∃ r : ℝ, hardyZ t = rusingriemannZeta_conjandcompletedRiemannZeta_one_sub. - Absolute Value: Prove
‖hardyZ t‖ = ‖riemannZeta (1/2 + I*t)‖(requires showingΓ(1/4 + I*t/2) ≠ 0). - Evenness: Prove
hardyZ (-t) = hardyZ t. - Zero Equivalency: Prove
hardyZ t = 0 ↔ riemannZeta (1/2 + I*t) = 0. - Continuity: Prove
Continuous hardyZ.
Notes on the First PR
- No
sorry: Thecontrib-labhooks will complain if you try to commit withsorryorsnake_caseanywhere, so keep them commented out (as I did in the stub) or usesorryonly during local iterative building. - Type Signature Debate: The Zulip post asks whether
Zshould beℝ → ℝorℝ → ℂ. The stub currently returnsℂfor algebraic convenience, but you can change this to output exactlyℝif that's what the community prefers. - No Math in
contrib-lab: Remember thatcontrib-labis just the tracking system. Keep your Lean work insidezeta-lab/lean/ZetaLeanuntil it's ready to be transplanted into amathlib4fork.