Current task: —

← Session 28 — ii′-5e: partial-fraction identity (zero series + F entire)

#1468 assistant 2026-08-23 13:46:25.855 UTC · 1405→1042 tok open ⤢
thinking (2476 chars)
The NF machinery: `hρα.analyticOrderAt_ne_top.mp (zeta_order_ne_top_of_ne hρ)` gives `⟨h, hh, hh0, hfh⟩` with `hh : AnalyticAt ℂ h ρ`, `hh0 : h ρ ≠ 0`, `hfh : riemannZeta =ᶠ[𝓝 ρ] fun z => (z − ρ)^orderNatAt • h z`. For ball-avoidance at a ζ-zero s₀ ≠ 1: from hfh, on a small ball ζ(z) = (z−s₀)^m·h(z), h ≠ 0 on the ball (continuous + nonzero at center). So ζ zeros in the ball ⊆ {s₀}. Since s₀ ∈ U (not nontrivial), no nontrivial zeros in the ball. ✓ For s₀ = 1: ζ(z) = zetaA(z)/(z−1) near 1 with zetaA analytic, zetaA 1 = 1 — on a small ball zetaA ≠ 0 ⟹ ζ(z) ≠ 0 for z ≠ 1. And 1 is not a nontrivial zero (re = 1). So no nontrivial zeros in the ball ✓. Need the zetaA facts from LiResidue: `zetaA`, `zetaA_analyticAt_one`, `zetaA_one`, `zetaA_apply` (agreement off 1). ✓ banked. Also need at s₀ with ζ s₀ ≠ 0 (any s₀, including s₀ = 1 if junk nonzero — but if ζ 1 = 0 junk... whatever, the case split is: s₀ = 1 → zetaA; s₀ ≠ 1 ∧ ζ s₀ ≠ 0 → continuity (differentiableAt_riemannZeta); s₀ ≠ 1 ∧ ζ s₀ = 0 → NF). Wait, one more check: `analyticAt_riemannZeta` exists as Mathlib lemma `analyticAt_riemannZeta (h : s ≠ 1)` ✓ (used above). Now — which file to put this in? New file `LiSeries.lean`. Imports: Mathlib, Zeta23.Statement, Zeta23.WeilEF.ZeroSummability, Zeta23.Statement.SeamClosed, and NguyenRH1.LiSides? LiSides imports LiResidue/LiPrincipal... Importing LiSides brings zeta_order_ne_top_of_ne + zetaA facts (zetaA is in LiResidue, LiSides imports it). Importing LiSides pulls in a lot (RectangleIntegral machinery) but that's fine — all built. Hmm, but wait: also need `IsCompact.inter_riemannZetaZeros_finite` — that's a Mathlib lemma about `riemannZetaZeros` (the full zero set? or nontrivial?). It was used in LiSkeleton as `hcomp.inter_riemannZetaZeros_finite` producing finiteness of `closedBall ∩ riemannZetaZeros`. And the LiSkeleton pattern intersected {IsNontrivialZero} with the ball, then hzeros : (ball ∩ {IsNontrivialZero}) ⊆ (ball ∩ riemannZetaZeros) via hz.2.1... wait: `exact ⟨hz.1, hz.2.1⟩` where hz : z ∈ closedBall ∧ IsNontrivialZero z. So `mem_riemannZetaZeros.mpr h.2` — from LiDisc line 51: `⟨h.1, mem_riemannZetaZeros.mpr h.2⟩` where h.2 : IsNontrivialZero? Hmm in LiDisc: `zeroDiscFinset` built from `(isCompact_closedBall ...).inter_riemannZetaZeros_finite` and membership required `mem_riemannZetaZeros.mpr h.2`. So Mathlib has `riemannZetaZeros` and `mem_riemannZetaZeros : ... ↔ ...`. Let me check Mathlib's def of riemannZetaZeros.
Let me check Mathlib's `riemannZetaZeros` definition and the finiteness lemma signature.
tool: Bash
input
{
  "command": "cd D:/Python/Quantum/zeta-23-lean/.lake/packages/mathlib && grep -rn \"riemannZetaZeros\\|mem_riemannZetaZeros\\|inter_riemannZetaZeros_finite\" Mathlib/NumberTheory/LSeries/RiemannZeta.lean Mathlib/NumberTheory/Zeta*.lean 2>/dev/null | head -20; grep -rln \"inter_riemannZetaZeros_finite\" Mathlib/ | head",
  "description": "Find riemannZetaZeros definition in Mathlib"
}
raw content_json (database row)
[{"type":"thinking","thinking":"The NF machinery: `hρα.analyticOrderAt_ne_top.mp (zeta_order_ne_top_of_ne hρ)` gives `⟨h, hh, hh0, hfh⟩` with `hh : AnalyticAt ℂ h ρ`, `hh0 : h ρ ≠ 0`, `hfh : riemannZeta =ᶠ[𝓝 ρ] fun z => (z − ρ)^orderNatAt • h z`. \n\nFor ball-avoidance at a ζ-zero s₀ ≠ 1: from hfh, on a small ball ζ(z) = (z−s₀)^m·h(z), h ≠ 0 on the ball (continuous + nonzero at center). So ζ zeros in the ball ⊆ {s₀}. Since s₀ ∈ U (not nontrivial), no nontrivial zeros in the ball. ✓\n\nFor s₀ = 1: ζ(z) = zetaA(z)/(z−1) near 1 with zetaA analytic, zetaA 1 = 1 — on a small ball zetaA ≠ 0 ⟹ ζ(z) ≠ 0 for z ≠ 1. And 1 is not a nontrivial zero (re = 1). So no nontrivial zeros in the ball ✓. Need the zetaA facts from LiResidue: `zetaA`, `zetaA_analyticAt_one`, `zetaA_one`, `zetaA_apply` (agreement off 1). ✓ banked.\n\nAlso need at s₀ with ζ s₀ ≠ 0 (any s₀, including s₀ = 1 if junk nonzero — but if ζ 1 = 0 junk... whatever, the case split is: s₀ = 1 → zetaA; s₀ ≠ 1 ∧ ζ s₀ ≠ 0 → continuity (differentiableAt_riemannZeta); s₀ ≠ 1 ∧ ζ s₀ = 0 → NF).\n\nWait, one more check: `analyticAt_riemannZeta` exists as Mathlib lemma `analyticAt_riemannZeta (h : s ≠ 1)` ✓ (used above).\n\nNow — which file to put this in? New file `LiSeries.lean`. Imports: Mathlib, Zeta23.Statement, Zeta23.WeilEF.ZeroSummability, Zeta23.Statement.SeamClosed, and NguyenRH1.LiSides? LiSides imports LiResidue/LiPrincipal... Importing LiSides brings zeta_order_ne_top_of_ne + zetaA facts (zetaA is in LiResidue, LiSides imports it). Importing LiSides pulls in a lot (RectangleIntegral machinery) but that's fine — all built.\n\nHmm, but wait: also need `IsCompact.inter_riemannZetaZeros_finite` — that's a Mathlib lemma about `riemannZetaZeros` (the full zero set? or nontrivial?). It was used in LiSkeleton as `hcomp.inter_riemannZetaZeros_finite` producing finiteness of `closedBall ∩ riemannZetaZeros`. And the LiSkeleton pattern intersected {IsNontrivialZero} with the ball, then hzeros : (ball ∩ {IsNontrivialZero}) ⊆ (ball ∩ riemannZetaZeros) via hz.2.1... wait: `exact ⟨hz.1, hz.2.1⟩` where hz : z ∈ closedBall ∧ IsNontrivialZero z. So `mem_riemannZetaZeros.mpr h.2` — from LiDisc line 51: `⟨h.1, mem_riemannZetaZeros.mpr h.2⟩` where h.2 : IsNontrivialZero? Hmm in LiDisc: `zeroDiscFinset` built from `(isCompact_closedBall ...).inter_riemannZetaZeros_finite` and membership required `mem_riemannZetaZeros.mpr h.2`. So Mathlib has `riemannZetaZeros` and `mem_riemannZetaZeros : ... ↔ ...`. Let me check Mathlib's def of riemannZetaZeros.","signature":""},{"type":"text","text":"Let me check Mathlib's `riemannZetaZeros` definition and the finiteness lemma signature."},{"type":"tool_use","id":"Bash_24","name":"Bash","input":{"command":"cd D:/Python/Quantum/zeta-23-lean/.lake/packages/mathlib && grep -rn \"riemannZetaZeros\\|mem_riemannZetaZeros\\|inter_riemannZetaZeros_finite\" Mathlib/NumberTheory/LSeries/RiemannZeta.lean Mathlib/NumberTheory/Zeta*.lean 2>/dev/null | head -20; grep -rln \"inter_riemannZetaZeros_finite\" Mathlib/ | head","description":"Find riemannZetaZeros definition in Mathlib"},"extra_content":null}]