← Session 28 — ii′-5e: partial-fraction identity (zero series + F entire)
thinking (29206 chars)
`Complex.dist_le_div_mul_dist_of_mapsTo_ball (hd : DifferentiableOn ℂ f (ball c R₁)) (h_maps : MapsTo f (ball c R₁) (closedBall (f c) R₂)) (hz : z ∈ ball c R₁) : dist (f z) (f c) ≤ R₂ / R₁ * dist z c` — EXACTLY the squeeze I need:
For fixed z₀, any R > max(|z₀|, small): f := Gentire, c := 0, R₁ := R, R₂ := sup_{ball(0,R)} ‖Gentire − ...‖ — h_maps : MapsTo Gentire (ball 0 R) (closedBall (Gentire 0) R₂) — need R₂ = sup of ‖Gentire z − Gentire 0‖ over the ball — from the circle bound ‖Gentire‖ ≤ M on the SPHERE plus max-modulus inside... hmm wait — h_maps needs the bound on the whole open ball, which for entire Gentire follows from the sphere bound via max-modulus (norm_le_of_norm_le_on_sphere with the closed ball ✓ — analytic on closedBall ⟹ ≤ sphere-bound inside ✓ — but that's on closedBall; for the open ball from closed ball ✓ fine).
So: R₂(R) := C·(log R)³ + ‖Gentire 0‖ (from the sphere bound + max-modulus). Then:
dist(Gentire z₀, Gentire 0) ≤ (R₂(R)/R)·|z₀| for all R > |z₀| — take R = R_k → ∞ (the gap circles): R₂(R_k)/R_k → 0 ⟹ dist = 0 ⟹ Gentire z₀ = Gentire 0 ✓✓.
The "→ 0" needs a Tendsto argument: for the capstone I just need the EQUALITY Gentire z₀ = Gentire 0 — proof: suppose dist > 0; then (R₂(R_k)/R_k)·|z₀| ≥ dist > 0 for all k — but R₂(R_k)/R_k ≤ (C(log R_k)³ + G₀)/R_k → 0 — so for large k it's < dist/(2|z₀|)... contradiction. Formalize via a limit: show `Tendsto (fun k => (C·(log R_k)³ + G₀)/R_k · |z₀|) atTop (𝓝 0)` then `tendsto_le_of_eventually_le`... The cleanest: `le_of_tendsto` / squeeze: dist ≤ the sequence, sequence → 0 ⟹ dist ≤ 0 ⟹ dist = 0. Use `ge_of_tendsto`? `le_of_tendsto_of_tendsto`? The standard: `le_of_tendsto (h : Tendsto s atTop (𝓝 a)) (h' : ∀ᶠ k, s k ≤ a) : ...` hmm direction. What I want: dist ≤ 0 from dist ≤ s_k and s_k → 0: `le_of_tendsto_of_tendsto'`: hmm. `le_of_tendsto (hg : Tendsto g l (𝓝 y)) (h : ∀ᶠ x, g x ≤ y)`?? no that gives y ≤ ... Let me think: `ge_of_tendsto (h : Tendsto f l (𝓝 a)) (h' : ∀ᶠ x, a ≤ f x) : a ≤ ...`... The right one: `le_of_tendsto_of_tendsto (hf : Tendsto f l (𝓝 a)) (hg : Tendsto g l (𝓝 b)) (h : ∀ᶠ x, f x ≤ g x) : a ≤ b` — with f := const dist (tendsto_const) and g := the sequence → 0: dist ≤ 0 ✓ then dist = 0 (dist_nonneg) ⟹ Gentire z₀ = Gentire 0 (dist_eq_zero)... dist_eq_zero : dist a b = 0 ↔ a = b ✓.
The sequence → 0: R_k ∈ [4k+2.5, 4k+3]: (C(log R_k)³ + G₀)/R_k: bound: R_k ≥ 4k+2.5 ≥ 4k: (log R_k)³/R_k ≤ (log(4k+3))³/(4k): Tendsto of log³/k → 0: `tendsto_pow_log_div...`? There are standard: `tendsto_log_div_atTop`? `tendsto_pow_mul...`: the cleanest available: `tendsto_natCast_atTop_atTop` + `tendsto_log_div_...`: hmm — (log(4k+3))³/(4k) — use comparison: for k ≥ 1, log(4k+3) ≤ 4k+3 ≤ 5k (k≥1: 4k+3 ≤ 7k? 3 ≤ 3k ✓ 4k+3 ≤ 4k+3k = 7k): (log)³ ≤ (4k+3)³?? no that's the wrong direction (log x ≤ x ⟹ (log x)³ ≤ x³ — too weak). Need (log x)³ ≤ x for x ≥ some point — log x ≤ x^{1/3}·3/e-ish: (log x)³ ≤ (3/e)³·x: messy. Standard Mathlib: `tendsto_natCast_log...`: `tendsto_log_atTop`... The cleanest: use `tendsto_pow_log_div_mul_add_atTop`? or the known `tendsto_natCast_pow...`: Let me use a cruder explicit bound: for x ≥ 1: log x ≤ x... (log x)³/x ≤ x³/x = x²?? no. Hmm: (log R)³/R with R ≥ 4k: I want a clean upper sequence: log R ≤ R^{1/2} for R ≥ 16? (log x ≤ 2√x/... x^{1/2}: log x ≤ 2(x^{1/2}−1)/... — standard: log x ≤ 2√x for x ≥ 1? at x = 1: 0 ≤ 2 ✓; derivative 1/x ≤ 1/√x ⟺ √x ≤ x·... 1/x vs 1/√x: 1/x ≤ 1/√x ⟺ x ≥ √x ⟺ x ≥ 1 ✓ so log x ≤ 2(√x − 1) ≤ 2√x ✓ for x ≥ 1 (FTC-style: log x = ∫₁ˣ dt/t ≤ ∫₁ˣ dt/√t = 2(√x−1) — in Lean: is `Real.log_le_two_mul_sqrt...`? hmm). Alternatively: use Real.log_le_sub_one... no. There might be `Real.log_le_rpow` : log x ≤ x^r / r for r > 0? `Real.log_le_rpow (hx : 0 < x) (hr : 0 < r) : log x ≤ x^r / r`? something like `Real.log_le_rpow_div`? If exists with r = 1/4: (log R)³ ≤ R^{3/4}/(1/4)³ = 64 R^{3/4} ⟹ (log R)³/R ≤ 64 R^{−1/4} → 0 ✓. Mathlib: `Real.log_le_rpow_div`? Let me check. Or rpow-growth: `tendsto_rpow_neg_atTop`...
OK — the limit machinery is routine; I'll pick exact forms when writing.
NOW — the big remaining piece: **the circle bound on seriesFun and the assembly**. Let me design it concretely.
Actually — WAIT. Let me reconsider. The series bound O((log R)³/c) via the radial split is the most laborious part (5 shells, counts, the gap). Is there a shortcut using what's already built? The 5c/5d bounds bound ‖logDeriv ζ − nearsum‖; the series Σ m(1/(s−ρ)+1/ρ) is CLOSE to the nearsum + far-parts... no shortcut; the series bound is genuinely needed. OK.
But actually — hmm, let me reconsider the ANNULUS split sizes to minimize pain. On |s| = R (gap circle, k large):
seriesFun s = ∑' ρ, m_ρ·(1/(s−ρ) + 1/ρ). Write |1/(s−ρ) + 1/ρ| = |s|/(|ρ||s−ρ|) = R/(|ρ||s−ρ|).
Split:
(S1) ‖ρ‖ > 2R: ‖s−ρ‖ ≥ ‖ρ‖/2 ⟹ term ≤ 2R/‖ρ‖². Sum: Σ_{‖ρ‖>2R} m·2R/‖ρ‖² ≤ 2R·Σ_{j≥1} (count in dyadic shell [2^j R, 2^{j+1}R])/(2^j R)² — count via Jensen at scale? The Jensen count is for the specific disc at 2+it — for a shell [2^j R, 2^{j+1} R] I need counts at various heights — the Jensen disc at 2+i·2^{j+1}R... only covers the upper part. Ugh — the shells wrap around (re ∈ (0,1), im ∈ ±[shell-radius]): the shell {‖ρ‖ ∈ [X, 2X]} ⊆ {im ∈ [−2X, 2X], re ∈ (0,1)} ⊆ union of ~4X+2 unit windows × 2 sides. Count ≤ (4X+3)·C₀(2X+2)-ish via ZeroCountProp per window. So Σ_{shell} m ≤ (count) IF mult ≤ ... — NO WAIT: ZeroCountProp counts the SET card (no mult); the Jensen count has mult. Mixing: Σ_{ρ ∈ W} m_ρ with W a unit window: ≤ the Jensen count of a disc containing W: W at height t ⊆ disc(2+it', 5/2) for appropriate t' (as computed before: the unit window [t, t+1]×(0,1) ⊆ disc(2 + i(t+0.5)... center 2+i(t+0.5): covers re ∈ [−0.5, 4.5], im ∈ [t−2, t+3] ⊇ [t, t+1] ✓ for t ≥ ... hmm wait the window's re ∈ (0,1) ✓ inside. And Jensen needs |t'| ≥ 10 — for low windows use a fixed big disc... OR use the perimeter's SET-card × max mult... no.
Hmm — hmm hmm. The mult-weighted window count: Σ_{ρ ∈ zeroWindow t} m_ρ — Jensen gives Σ_{ρ ∈ disc} m_ρ ≤ log((9/4)|t|²)/log(33/32) for |t| ≥ 10 — and the window [t,t+1] ⊆ disc(2+i(t+1/2), 5/2)?? |0.5+i(t+0.5) − (2+i(t+0.5))| = 1.5 ≤ 2.5 ✓ corners: (0+it)−(2+i(t+.5)) = √(4+0.25) < 2.5 ✓ ✓. So Σ_{window t} m ≤ Σ_{disc(2+i(t+1/2), 5/2)} m ≤ log((9/4)|t+1/2|²)/log(33/32) — wait — the Jensen count is for the zeros of scaledZeta which correspond to zeros of ζ in the disc — with analyticOrderNatAt multiplicities ✓ (5c's statement: Σ over the toFinset of analyticOrderNatAt (scaledZeta t) ρ ≤ log((9/4)|t|²)/log(33/32)). The push-forward: zeros of scaledZeta t in the unit-ish disc ↔ zeros of ζ in disc(2+it, 5/2) with zeroMult = the order (5c's zeroMult_affMap / analyticOrderNatAt_scaledZeta chain ✓ banked). So:
`jensen_window_count (ht : 20 ≤ |t|) : ∑ ρ ∈ (zeroWindow t).toFinset, zeroMult ρ ≤ 66 * Real.log |t|`-ish — wait |t| ≥ 10 needed for Jensen at t+1/2: |t+1/2| ≥ |t|−1/2 ≥ 9.5 — need ≥ 10: |t| ≥ 10.5. And for |t| < 10.5: the low windows — finitely many unit windows cover [−11, 11]: a SINGLE fixed Jensen-style count for the compact region: the zeros with |im| ≤ 11, re ∈ (0,1) ⊆ disc(2, 12)? Jensen on the disc at 2+i·0 radius 12: needs a bound on |ζ| on B(2, 12) — from 5b's norm_riemannZeta_le_disc? That's for |t| ≥ 10 — B(2, 12) has |t| ≤ 12 — the EM level-2 representation is valid for re > −1 INCLUDING the strip |t| ≤ 12: ‖ζ(s)‖ ≤ |1/2| + |1/(s−1)| + |s(s+1)|·∫|B̃₂|x^{−re−2} — on B(2,12) minus pole at 1: the 1/(s−1) blows near 1!! Jensen needs a bound on a disc — center 2 radius 12 includes the pole 1 — CAN'T. Use center 2, radius 12 but the pole... use Jensen on a region avoiding 1: the zeros with |im| ≤ 11 are in disc(2, 12) — use the disc at 2+i·0... alternatively just handle low zeros differently: the strip arcs have |t| ≥ 10 and the near sum is nearZeros t with |t| ≥ 10 ✓ — the low-height zeros only enter the series bound via the shells — the shell [X, 2X] for X ≥ 2R ≥ 2·20 has |im| ≥ X/2 ≥ 20 — hmm no: the shell {‖ρ‖ ∈ [X, 2X]} includes zeros with SMALL im (re ∈ (0,1), im small ⟹ ‖ρ‖ ≤ 1+small — no: ‖ρ‖ ≥ X means |im| ≥ √(X²−1) ≥ X/2 ✓ for X ≥ 2). So all zeros in shells X ≥ 2R (R ≥ 20) have |im| ≥ 10 ✓ Jensen at the right heights ✓. And shells ≤ R/2 (S2 below) with X ≥ ... the shell split starts from ‖ρ‖ small: the SMALL-‖ρ‖ part: {‖ρ‖ ≤ R/2}: includes the low-|im| zeros (the first zero at 14.14 etc.) — the count of ALL zeros with ‖ρ‖ ≤ R/2 including low ones: split: {‖ρ‖ ≤ 20}: FINITE — bounded by a CONSTANT (compact-finiteness — but I need an explicit bound... hmm — the finiteness gives a finite set; Σ m over it is SOME constant — but for the Lean proof I need an actual number or at least a usable bound!).
Ugh. The low-zero count. Options: the E-021/E-023 numerics?? No — must be rigorous in-Lean. A fixed Jensen count for disc(2+i·0, 5/2)-style at height 0: scaledZeta at t = 0? 5c's Jensen needed |t| ≥ 10 for the DISC BOUND ‖ζ‖ ≤ (3/4)|t|² (5b: |t| ≥ 10). For |t| ≤ 10: bound ‖ζ‖ on B(2, 5/2) directly from the level-2 EM representation (5b's representation is proved for re > −1 — all of B(2, 5/2) except s = 1!): the pole again — B(2, 5/2) contains 1. The Jensen argument needs F(0) = 1 normalization (ζ(2+i·0)... center non-pole) and a bound on the whole closed disc — the pole at 1 is INSIDE B(2, 5/2)?? |1 − 2| = 1 < 5/2 ✓ YES inside. So Jensen fails there (ζ not analytic on the disc). Use zetaA instead (entire!): zeros of zetaA = zeros of ζ off 1 ✓ (zetaA = (s−1)ζ: zeros of zetaA = zeros of ζ ∪ {1}?? — zetaA 1 = 1 ≠ 0 — and off 1, zetaA = (s−1)ζ ⟹ zeros of zetaA off 1 = zeros of ζ off 1 ✓). Bound on zetaA on B(2, 5/2): |zetaA(s)| = |s−1|·|ζ(s)| — the EM rep: ζ(s) = 1/2 + 1/(s−1) − s(s+1)∫B̃₂ x^{−s−2}: zetaA(s) = (s−1)/2 + 1 − (s−1)s(s+1)∫...: bound: |s−1| ≤ 7/2, |s(s+1)| ≤ (9/2)(11/2), ∫|B̃₂|x^{−re−2}dx ≤ (1/12)·1/(re+1)·... for re ≥ −1/2 (on B(2,5/2): re ≥ −1/2): ∫₁^∞ |B̃₂(x)| x^{−re−2} dx ≤ (1/12)∫ x^{−3/2}·... = (1/12)·2 = 1/6-ish for re ≥ −1/2. So |zetaA| ≤ (7/2)(1/2) + 1 + (7/2)(9/2)(11/2)/6 ≈ 1.75+1+14.4 ≈ 17.2 on B(2,5/2) — an explicit bound ~doable from 5b's machinery (the b2Fun integral bound — is there a packaged bound from 5b I can reuse? 5b proved ‖ζ‖ ≤ (3/4)|t|² for |t| ≥ 10 — the same integral bound at general points gives the zetaA bound — the integral ‖∫B̃₂ x^{−s−2}‖ ≤ ∫(1/12)x^{−re−2} = 1/(12(re+1)) — B̃₂ bounded by 1/12: `|B̃₂(x)| ≤ 1/12` — 5b has this? b2Fun machinery — presumably a bound exists. Then Jensen for zetaA on B(2, 5/2): count ≤ log(17.2/|zetaA(2)|)/log(5/2 / (r...)) — ZerosBound needs F(0) = 1 normalization: scale by zetaA(2) = (2−1)ζ(2) = π²/6 ≈ 1.64: F := zetaA/zetaA(2) — |zetaA(2)| = π²/6 ≥ 1 (π² > 9.86/6 > 1.6 ✓ Mathlib riemannZeta_two ✓). Count ≤ log(17.2/1.6)/log((5/2)/(24/25·5/2))-ish... the 5c form: ZerosBound with B = 17.2, radius ratio 24/25: ≤ log(17.2/1.64)/log(33/32)? Hmm the 33/32 came from the gap radii — for a fresh application: count in closedBall(2, 24/25·(5/2))·... The zeros with |im| ≤ 11... wait — do the low zeros (|im| ≤ 11) fit in closedBall(2, (24/25)·(5/2)) = closedBall(2, 2.4)? NO — im up to 2.4 only. The first zero 0.5+14.13i is NOT in this disc. Hmm — the low zeros I need to count: {‖ρ‖ ≤ 20, re ∈ (0,1)}: im ≤ 20: need a disc covering re ∈ (0,1), |im| ≤ 20: disc(0.5, 20.5)? center 1/2+i·0 radius 20.5: contains the pole 1 (|1−0.5| = 0.5 < 20.5) — again the pole — use zetaA again: bound |zetaA| on B(0.5, 20.5)... the EM bound: |s−1| ≤ 21, |s(s+1)| ≤ 21·22 = 462, the integral ≤ 1/(12(re+1)): re ≥ −20 on the disc!! ∫ x^{−re−2} with re = −20: x^{18} DIVERGES. The level-2 EM only works re > −1. The disc B(0.5, 20.5) dips to re = −20. So need higher EM levels (5b's level-2 → level-k pushes re > −k+1...). OR pick the disc differently: disc(2+i·0, 21)? re ≥ −19 same issue. The zeros with |im| ≤ 20, re ∈ (0,1): cover by discs at heights [−20, 20] each avoiding re < −1/2: discs at 2+it, radius 5/2, t ∈ {−20, −18.5, ..., 20} — ~17 discs — each needs the ζ-bound on B(2+it, 5/2) for |t| ≤ 10 — pole-free! B(2+it, 5/2) always contains 1+it'?? The pole is at s = 1 only: |1 − (2+it)| = √(1+t²) ≤ 5/2 ⟺ t² ≤ 21/4 ⟺ |t| ≤ 2.29: so for |t| ≤ 2 the disc CONTAINS the pole. So for the low-middle heights use zetaA (entire): bound zetaA on B(2+it, 5/2) uniformly for |t| ≤ 3: |zetaA s| = |s−1||ζ s| — the level-2 EM on this COMPACT region (re ∈ [−1/2, 9/2] ✓ > −1 ✓): |ζ(s)| ≤ 1/2 + 1/|s−1| + |s(s+1)|/(12(re+1)) — 1/|s−1| unbounded near s = 1! zetaA(s) = (s−1)ζ(s) = (s−1)(1/2 + 1/(s−1) − s(s+1)I(s)) = (s−1)/2 + 1 − (s−1)s(s+1)I(s): |zetaA| ≤ |s−1|/2 + 1 + |s−1||s||s+1|·(1/12)/(re+1): on B(2+it, 5/2), |t| ≤ 3: |s−1| ≤ √(1+9)+2.5 ≤ 5.7, |s| ≤ 7.5+3 ≤ 8, |s+1| ≤ 9, re+1 ≥ 1/2: ≤ 5.7/2 + 1 + 5.7·8·9·(1/6) ≈ 2.85+1+68.4 ≈ 72.3 — an explicit uniform constant ✓. Then Jensen per disc (|t| ≤ 3) with F := zetaA/zetaA(2+it)... center value |zetaA(2+it)| = |1+it|·|ζ(2+it)| ≥ |1+it|/3 (zeta_lower_bound_two ✓ Zeta23, any t!) ≥ 1/3. Count ≤ log(72.3·3)/log(33/32) ≈ log 217/0.0304 ≈ 5.38/0.0304 ≈ 177 per disc. ~17 discs × 177 ≈ 3000 zeros below height 20 (way loose vs truth ~40) — FINE for our purposes (constant factor).
This is ballooning. STOP. Let me simplify the whole 5e-v strategy:
**KEY SIMPLIFICATION**: I don't need the radial split with all shells! Cruder: on the circle, split the series into just TWO parts:
- Near part: zeros with |γ − R| ≤ 2 (the critical band): use the γ-gap (|s−ρ| ≥ c/(2 log R)) + count ≍ C₀ log R: sum ≤ C₀·(2·2R/(R−2))·... ≈ O((log R)²/c).
- Far part: zeros with |γ − R| > 2: |s−ρ| ≥ |t−γ| ≥ ||γ|−R| − |R−|t|| ≥ ||γ|−R| − 13/R ≥ ||γ|−R|/2 (for ||γ|−R| ≥ 2 ≥ 26/R ⟺ R ≥ 13): term ≤ 2R/(|ρ|·||γ|−R|)... hmm — for far zeros: 1/|s−ρ| ≤ 2/||γ|−R| — but ||γ|−R| can be as small as 2 while |ρ| small?? No: ||γ|−R| > 2 with |ρ| small: |ρ| ≤ 1 + |γ| — if |γ| ≤ R−2 then... |ρ| can be small with |γ| near R−2? |γ| ≥ |ρ| − 1... |ρ|² = re²+γ² ≥ γ² − ... |γ| ≤ |ρ| ✓ (re ∈ (0,1)): so |γ| ≤ |ρ|: the far condition |γ − R| > 2 with |γ| ≤ |ρ|:
- |γ| ≤ R−2: |ρ| ≥ |γ|: term ≤ R/(|ρ|(R−|γ|)/2)... sum over such: Σ_{|γ|≤R−2} m·2R/(|ρ|(R−|γ|)) — |ρ| ≥ |γ| ≥ ... this still needs the dyadic split in both |γ| and R−|γ|... no real savings.
Alternatively — the far part via ‖s−ρ‖ ≥ |R − ‖ρ‖ | (reverse triangle on norms!): ‖s−ρ‖ ≥ |‖s‖ − ‖ρ‖| = |R − ‖ρ‖|: then the FAR part by ‖ρ‖-shells: {‖ρ‖ ≤ R−2}: term ≤ R/(‖ρ‖(R−‖ρ‖)); {‖ρ‖ ≥ R+2}: ≤ R/(‖ρ‖(‖ρ‖−R)); and the CRITICAL part {R−2 < ‖ρ‖ < R+2}: use the γ-gap for |s−ρ| ≥ |t−γ| (needs |t| ≈ R: the strip-arc points have |t| ≥ √(R²−49/4) ✓ ≈ R; but the near-axis arcs have |t| < 10 — there |s−ρ| for critical-annulus zeros: |s−ρ| ≥ |re s − re ρ| ≥ re s − 1 ≥ √(R²−100) − 1 ≥ R/2 for R ≥ 11 ✓ HUGE — so on the near-axis arcs the critical terms are tiny ✓✓ — SPLIT BY ARC: the critical annulus bound c/(2 log R) only needed on the strip arcs (|t| ≥ 10 where γ-gap applies via |s−ρ| ≥ |t−γ|)).
So the plan per circle point s (|s| = R, k ≥ K₀):
- |im s| ≥ 10 (strip arcs incl. everything except near-axis):
- critical {‖ρ‖ ∈ (R−2, R+2)}: |s−ρ| ≥ |t−γ| ≥ min over the gap (1/(32Ĉ₀) after the |R−|t|| ≤ 13/R adjustment) ✓ count: the annulus zeros have |γ| ∈ [R−3, R+2]: Σ m over |im| ∈ [R−3, R+2]: ≤ 2·(windows [R−3..R+2] ≈ 5 windows)·(Jensen per window ≈ 66 log(R+2)) = O(log R) ✓ — so critical sum ≤ O(log R)·32Ĉ₀·(2R/(R−2)) = O((log R)²) ✓ (the +1/ρ part: |1/ρ| ≤ 1/(R−2) tiny ✓ — wait the term is R/(|ρ||s−ρ|): with |s−ρ| ≥ 1/(32Ĉ₀): R/((R−2)·(1/(32Ĉ₀))) = 32Ĉ₀·R/(R−2) ≤ 64Ĉ₀: times count O(log R) = O(Ĉ₀·log R) = O((log R)²) ✓).
- shell {‖ρ‖ ≤ R−2}: term ≤ R/(‖ρ‖(R−‖ρ‖)): dyadic in d = R−‖ρ‖ ∈ [2, R]: shell {d ∈ [2^j, 2^{j+1}]}: ‖ρ‖ ∈ [R−2^{j+1}, R−2^j]: count: zeros with |im| ≤ ‖ρ‖ ≤ R: |im| ∈ [R−2^{j+1}, R]·... no wait — ‖ρ‖ ∈ [R−2^{j+1}, R−2^j] ⟹ |γ| ≤ ‖ρ‖ ≤ R−2^j: the zeros with ‖ρ‖ in that range have |γ| ∈ [0, R−2^j] — that's a HUGE range (all heights up to R) — count ≍ R·log R — times 2R/((R−2^{j+1})·2^j)... for j small (2^j ≪ R): R/(‖ρ‖(R−‖ρ‖)) ≈ R/(R·2^j) = 2^{-j}: sum ≍ (R log R)·2^{-j} — summed over j ≤ log R: R log R — O(R log R) — TOO BIG (fatal, exactly D-068's C1 warning!). The fix (C1): the count in the shell should use |γ| ∈ [R−2^{j+1}, R−2^j]·... but ‖ρ‖ ∈ that range does NOT localize |γ| — zeros with ‖ρ‖ ≤ R−2 include ALL low zeros. WAIT no — re-read C1: the split is by RADIAL distance ||s|−|ρ|| with term ≤ 2/(R−|ρ|) — for ‖ρ‖ ≤ R/2: term ≤ 2/‖ρ‖ (using ‖s−ρ‖ ≥ R/2) and Σ_{‖ρ‖≤R/2} m/‖ρ‖ = O((log R)²) — the 2/|ρ| bound saves it (not 2/(R−|ρ|)). For ‖ρ‖ ∈ [R/2, R−2]: term ≤ 2/(R−‖ρ‖) and count of {‖ρ‖ ∈ [R−2^{j+1}, R−2^j]}: |γ| ∈ [√((R−2^{j+1})²−1)...] hmm no: ‖ρ‖ ≥ R−2^{j+1} ⟹ |γ| = √(‖ρ‖² − re²) ≥ √(‖ρ‖²−1) ≥ ‖ρ‖ − 1 ≥ R − 2^{j+1} − 1: so |γ| ∈ [R−2^{j+1}−1, R]: count of zeros with |im| ∈ [R−2^{j+1}−1, R]·: ≍ 2^{j+1} windows × C₀-ish each ≈ 2^{j+1}·(66 log R) (Jensen windows) = O(2^j log R): shell sum ≤ count·2/2^j·(R/‖ρ‖ ≤ 2) = O(2^j log R)·2/2^j·2 = O(log R) per shell; shells j ≤ log₂ R: total O((log R)²) ✓✓.
- shell {‖ρ‖ ∈ [R+2, 2R]}: symmetric: term ≤ R/(‖ρ‖(‖ρ‖−R)) ≤ 1/(‖ρ‖−R): count {‖ρ‖ ∈ [R+2^j, R+2^{j+1}]} ≍ O(2^j log R): sum O(log R) per shell ⟹ O((log R)²) ✓.
- shell {‖ρ‖ > 2R}: term ≤ 2R/‖ρ‖²: dyadic X = 2^j R: count {‖ρ‖ ∈ [X, 2X]} ≍ X·log X (windows) ·... term-sum ≍ X log X·2R/X² = 2R log X/X: sum over j ≥ 1: 2R·Σ log(2^j R)/(2^j R) ≍ 2R·(log R)/R = O(log R) ✓.
- the innermost {‖ρ‖ ≤ R/2}: Σ m/‖ρ‖: dyadic in ‖ρ‖: {‖ρ‖ ∈ [2^j, 2^{j+1}]} count ≍ 2^j·log(2^j) (windows at height ≈ 2^j — for 2^j ≥ 20; for 2^j < 20 the LOW zeros — the constant count C_low (the 17-disc Jensen or whatever)): sum ≍ Σ_j 2^j·j·(2/2^j) = Σ j = O((log R)²) ✓ plus low-zeros: Σ_{‖ρ‖≤20} m·2/‖ρ‖ ≤ C_low·2/14 (‖ρ‖ ≥ 14 for all zeros!! — the first zero is at 14.13 — is there a Lean-available lower bound ‖ρ‖ ≥ 14? hmm — no zeros with |im| ≤ 13: that's a nontrivial fact (needs computation or a theorem!). WITHOUT it: zeros could be tiny (ρ → 0) making 2/‖ρ‖ blow... but there are only finitely many zeros with ‖ρ‖ ≤ 20 and they're FIXED constants — Σ_{‖ρ‖≤20} m/‖ρ‖ is a FIXED FINITE CONSTANT C₁ (whatever it is) — I need SOME bound: since the set is finite, Σ is a fixed real number — bound it by... in Lean: the sum over a finite set is ≤ card × max-term — the max-term needs a lower bound on ‖ρ‖: zeros avoid a neighborhood of... ρ ≠ 0 (re > 0) but ‖ρ‖ can be arbitrarily small a priori?? NO — zeros are DISCRETE: there's a disc around 0 (or around 1/2) with no zeros... Is there a cheap Lean zero-free region near the origin? ζ(0) = −1/2 ≠ 0 + continuity ⟹ ball(0, ε) zero-free for SOME ε — but I need an EXPLICIT ε for the bound! Alternatively: use the conjugate symmetry + ... hmm. The zeros with ‖ρ‖ ≤ 20 form a FIXED finite set F; Σ_{ρ∈F} m_ρ/‖ρ‖ is a fixed constant — in Lean I can bound it as follows: the terms are continuous on the COMPACT set {‖ρ‖ ≤ 20} ∩ {zeros}... no. Simplest: EXPLICIT zero-free disc: |ζ(2)| = π²/6 ≈ 1.64 and Jensen/argument-principle... Actually — here's a clean one: ZERO-FREE for |im| ≤ 13/... no.
Hmm, hold on — simpler: don't isolate the low zeros at all; use the disc-Jensen count for the whole ball {‖ρ‖ ≤ R/2} DIRECTLY: Σ_{‖ρ‖≤R/2} m/‖ρ‖: split at ‖ρ‖ = 1 (not 20): {‖ρ‖ ≤ 1}: contains NO zeros? ‖ρ‖ ≤ 1 with re ∈ (0,1): possible a priori... ζ has no zeros in {|s−2| ≤ 5/2·...}: the disc B(2, 5/2) contains {re ∈ [−1/2, 9/2], ...} ⊇ {‖ρ‖ ≤ 1}∩{re ∈ (0,1)}? {‖ρ‖ ≤ 1, re ∈ (0,1)}: distance to 2: ≥ |2−1| = 1... a point 0.5+0.8i: |·−2| = √(2.25+0.64) = 1.7 ≤ 2.5 ✓ inside. So zeros with ‖ρ‖ ≤ 1 would be inside B(2,5/2)... but the pole at 1 breaks Jensen on B(2,5/2) (as discussed) — zetaA fixes it: zetaA entire; zeros of zetaA in B(2,5/2) = zeros of ζ there (off 1) ∪ nothing (zetaA 1 = 1) ✓; bound |zetaA| on B(2, 5/2): as computed ≈ 72 — but with the t = 0 center value |zetaA(2)| = ζ(2) = π²/6 ≥ 1.6: Jensen: count(orders) ≤ log(72/1.6)/log(33/32)·... ≈ log(45)/0.03 ≈ 127 — for zeros in closedBall(2, 2.4): {‖ρ‖ ≤ 1, re ∈ (0,1)} ⊆ B(2, 2.4)? farthest: 0+1i: |i−2| = √5 ≈ 2.24 ≤ 2.4 ✓; 1+1i: √(1+1) = 1.41 ✓; re→0, im ≤ 1: ✓ all in. So Σ_{‖ρ‖≤1} m ≤ 127 AND each term m/‖ρ‖ with ‖ρ‖ ≤ 1 — SMALL ‖ρ‖ ⟹ 1/‖ρ‖ big — still need the lower bound on ‖ρ‖!! Jensen gives COUNT, not position. Position lower bound: zeros of zetaA in B(2, 2.4): NONE with tiny norm?? Not from Jensen.
Explicit zero-free near 0: the cleanest: ‖ρ‖ ≥ 1 for every nontrivial zero? Truth: yes (first zero 14.13). Proof in reach: ρ zero with ‖ρ‖ ≤ 1 ⟹ ρ ∈ B(2, 2.4)-ish ⟹ zetaA zero there ⟹ ... Jensen gives a count ≤ 127 — doesn't exclude. To EXCLUDE low zeros need more (e.g. the argument principle on a small contour + interval arithmetic = the E-021-style computation — NOT in scope).
ALTERNATIVE that fully sidesteps low-zero position: bound Σ_{‖ρ‖≤1} m/‖ρ‖ ≤ Σ m·(1/‖ρ‖) with... no lower bound needed if I use a different term bound for small ρ: for ‖ρ‖ ≤ 1 ≤ R/2: term ≤ 2/‖ρ‖ — the 1/‖ρ‖ singularity... BUT WAIT: the term is |1/(s−ρ) + 1/ρ| = |s|/(|ρ||s−ρ|): for ‖ρ‖ ≤ 1: |s−ρ| ≥ R−1 ≥ R/2: term ≤ 2R/(‖ρ‖R) = 2/‖ρ‖ ✓ unavoidable 1/‖ρ‖. The sum Σ_{‖ρ‖≤1} m/‖ρ‖ is a FIXED CONSTANT of the universe (finite set, fixed terms) — I can bound it by ANY larger constant if I can compute... or bound it abstractly: the finite set is a finset; the sum is a specific real number; I need an explicit rational bound — impossible without computation.
Hmm hmm. OK — alternative: handle {‖ρ‖ ≤ 1} by noting it's EMPTY — no wait we can't prove that cheaply.
Actually — hold on: is there a zero-free region result ALREADY in Zeta23? The RvM machinery (Rosser-van de... M?): `Zeta23.RvM.zeta_local_zero_count : ∃ A₀ ≥ 1, local count ≤ A₀·...` — from zero_sum_inv_sq's proof: `obtain ⟨A₀, hA₀, hloc⟩ := Zeta23.RvM.zeta_local_zero_count` — a LOCAL zero count exists in Zeta23 with an explicit-ish A₀! `zeta_local_zero_count : ∃ A₀, 1 ≤ A₀ ∧ ∀ t, (count in unit window at t) ≤ A₀·log(...)·...`? If the count is a plain SET-card or mult-weighted count with an EXPLICIT constant, then Σ_{‖ρ‖ ≤ 1} m/‖ρ‖ ≤ (count with ‖ρ‖≤1)·(1/‖ρ‖_min)... still the position issue.
OK here's the cleanest full sidestep: **use 1/‖ρ‖ ≤ 2/‖1+ρ‖... no. Use the term m_ρ/(1+‖γ‖²) weight instead!** The dominator from 5e-iii: for the SMALL-ρ part, instead of the bare 2/‖ρ‖ bound, note: term = R/(‖ρ‖‖s−ρ‖) ≤ R/(‖ρ‖·(R/2)) = 2/‖ρ‖ — the 1/‖ρ‖ is unavoidable BUT: Σ_{ρ} m/(1+‖γ‖²) CONVERGES (zero_sum_inv_sq!) ⟹ Σ_{‖ρ‖ ≤ 1} m/(1+‖γ‖²) ≤ the total sum — a FIXED CONSTANT (its tsum value — some real number T₀). And 1/‖ρ‖ ≤ C/(1+‖γ‖²) for ‖ρ‖ ≤ 1?? 1+‖γ‖² ≤ 1+‖ρ‖² ≤ 2 for ‖ρ‖ ≤ 1: so 1/(1+‖γ‖²) ≥ 1/2: gives 1/‖ρ‖ ≥ ... WRONG direction again (need 1/‖ρ‖ ≤ C/(1+‖γ‖²) ⟺ 1+‖γ‖² ≤ C‖ρ‖ — fails for tiny ρ).
So the small-ρ sum fundamentally needs a zero-position fact. FINE — one more idea, the cleanest: **ρ ≠ 0-free disc via continuity at a SPECIFIC point with an explicit modulus**: ζ(2) = π²/6; zetaA continuous... The zeros of ζ avoid {‖s‖ ≤ δ} for the δ from... The identity 1/ρ = 1/(ρ−1) + 1/(ρ(ρ−1))?? The classical trick: the series Σ m(1/(s−ρ)+1/ρ) — the 1/ρ at tiny ρ pairs with... no.
Actually — the SIMPLEST: zeros come in SYMMETRIC sets under ρ ↦ 1−ρ (FE) and ρ ↦ ρ̄ (conj): a zero ρ with tiny ‖ρ‖ (re ∈ (0,1), |im| tiny) — the quad {ρ, ρ̄, 1−ρ, 1−ρ̄} all near the segment (0,1)... no exclusion without computation.
You know what — the cleanest rigorous-and-cheap zero-position input: **ζ(s) ≠ 0 for |s − 2| ≤ 5/2... no. ζ(s) ≠ 0 for re s ≥ 1 (Mathlib!)** — that excludes re ≥ 1, not small norm.
FINAL ANSWER for the small-ρ issue: bound the sum over {‖ρ‖ ≤ 1} by (Σ_{‖ρ‖≤1} m_ρ) × (max_{ρ: ‖ρ‖≤1} 1/‖ρ‖) where the max is over a FINITE SET — obtain the bound as follows: the finite set's minimal norm is SOME positive real δ₀ (each zero has ‖ρ‖ > 0 since re > 0 ⟹ ρ ≠ 0). In Lean: for the FINITE set F: Σ_{ρ∈F} m/‖ρ‖ =: C_F is a fixed real; I can write "Σ ≤ C_F ≤ its own value" — tautological! For the squeeze I need: sup on circles ≤ C(log R)³ + C_F — where C_F is a FIXED CONSTANT — I can just DEFINE the constant as that finite sum's value (exists!) and carry it symbolically! The squeeze: (C(log R)³ + C_F + G₀)/R → 0 — works with C_F symbolic ✓✓. So: bound Σ_{‖ρ‖≤1} m/‖ρ‖ ≤ Σ_{‖ρ‖≤1} m/‖ρ‖ (rfl!) — i.e., keep it as an opaque finite constant. In the assembly: the circle bound is ‖Fexpr‖ ≤ C·(log R)³ + C_small where C_small := the finite sum over {‖ρ‖ < 1} (a toFinset sum — well-defined, no bound needed).
Even simpler: absorb into the O-term: the total circle bound becomes ‖F‖ ≤ C·(log R)³ + C₀ (a constant) — fine for the squeeze.
OK wait, but hold on — do I even need the mult-weighted window counts (Jensen)? The dyadic shells need Σ_{shell} m_ρ ≤ count-with-multiplicity ≍ (window count)·... The Jensen count (5c's scaledZeta_jensen_count) is stated for the specific disc at height t (|t| ≥ 10) with the order-sum ≤ log((9/4)t²)/log(33/32). For a shell {‖ρ‖ ∈ [2^j, 2^{j+1}]} (2^j ≥ 2): the zeros have |γ| ∈ [√(4^j−1)-ish...]: |γ| ≤ ‖ρ‖ ≤ 2^{j+1} and |γ| ≥ √(‖ρ‖²−1) ≥ 2^j−1: so |γ| ∈ [2^j−1, 2^{j+1}]: windows: [2^j−1, 2^{j+1}] = ~2^j+2 unit windows, ×2 signs. Per window (height t ∈ [2^j−1, 2^{j+1}]): need Σ_{window} m ≤ C·log(t+2): from Jensen at the covering disc (needs |t+1/2| ≥ 10 i.e. 2^j ≥ 12-ish) OR the low-disc constant (for 2^j < 12: finitely many windows, each ≤ the low-disc Jensen constant (via zetaA) — the low-disc count CL ≈ 177·17 ≈ 3000 — a FIXED explicit constant... which needs the zetaA-bound build (~100 lines) OR... hmm — OR use the perimeter ZeroCountProp for the low windows?! ZeroCountProp counts the SET card ≤ Ĉ₀(t+1) for t ≥ 2 — for t ∈ [2, 12]: Ĉ₀(t+1) ≤ Ĉ₀(13) — explicit! And the SET-card ≤ Ĉ₀ ⟹ the MULT-sum: NO (mult vs card again). ARGH.
Hmm — wait, actually: is multiplcity really a problem? zeroMult ρ for ρ in a unit window — could be huge only if a high-order zero exists — but here's the thing: the Jensen count for the covering disc BOUNDS THE ORDER-SUM: Σ_{ρ ∈ window} m_ρ ≤ Σ_{disc} m = Jensen ≤ log((9/4)|t|²)/log(33/32) for |t| ≥ 10 — mult INCLUDED ✓. So for windows with center-height |t + 1/2| ≥ 10 (i.e. t ≥ 9.5 or t ≤ −10.5): mult-sum ≤ 33·log((9/4)(|t|+1)²)·... ≤ 66 log(|t|+2)-ish ✓ EXPLICIT and mult-weighted ✓.
For the LOW windows (|t| ≤ 11): finitely many zeros (the set {zeros with |im| ≤ 12} is finite) — Σ m over them: a FIXED CONSTANT again! Same trick: keep it symbolic (C_low := that finite sum). The total: circle bound ≤ C(log R)² + C_low·(2/1?)... wait the low zeros in the series sum: their terms ≤ m·(2/‖ρ‖) (for ‖ρ‖ ≤ R/2) — 1/‖ρ‖ unbounded a priori — BUT there are finitely many and the terms are FIXED: Σ_{low zeros} m·(1/(s−ρ)+1/ρ) ≤ Σ m·(2/(R) + ... hmm for low zeros (‖ρ‖ ≤ 20 ≤ R/2): |s−ρ| ≥ R−20 ≥ R/2: term ≤ R/(‖ρ‖·R/2)·... = 2/‖ρ‖ — the 1/‖ρ‖ again! Keep the WHOLE low-zero sub-sum symbolic: Σ_{ρ ∈ low} m·‖1/(s−ρ)+1/ρ‖ ≤ Σ_{ρ ∈ low} m·(1/(R−‖ρ‖) + 1/‖ρ‖) ≤ Σ_{ρ∈low} m·(2/(R) + 1/‖ρ‖)·... the 1/‖ρ‖ parts are FIXED constants (finite sums of fixed positive reals — well-defined real numbers): C_low := Σ_{ρ ∈ F_low} m_ρ/‖ρ‖ + 2·Σ m_ρ — all fixed ✓ symbolic ✓.
So the FULL plan:
seriesFun-bound(s) ≤ C₁·(log R)² + C₂ (explicit C₁; C₂ = explicit finite-set constant).
The low set F_low := zeros with ‖ρ‖ ≤ 20 (say): finite ✓ (compact-finiteness). C₂ := Σ_{ρ ∈ F_low.toFinset} m_ρ·(2/‖ρ‖)·... hmm — ‖ρ‖ could be ZERO for a zero?? re ρ > 0 ⟹ ρ ≠ 0 ⟹ ‖ρ‖ > 0 ✓ so 1/‖ρ‖ is a genuine positive real per zero ✓ the finite sum is a well-defined real ✓✓.
So actually the structure: for ‖ρ‖ ≤ 20: term bound 2/‖ρ‖ (fixed finite sum, symbolic constant). For ‖ρ‖ > 20: ALL such zeros have |γ| ≥ √(400−1) ≥ 19 ⟹ Jensen windows apply (|t| ≥ 10 at every window from 19 up ✓).
The dyadic analysis for ‖ρ‖ > 20: shells as in C1. Each shell's mult-sum via windows with Jensen: need a helper: Σ_{ρ : a ≤ |im ρ| ≤ b, nontrivial} m_ρ ≤ 66·(b−a+2)·log(b+2)-ish for a ≥ 10. Build from scaledZeta_jensen_count per unit window: window [t, t+1] ⊆ zeroDisc(2+i(t+1/2))?? — wait: the Jensen count is for the SCALED disc's zeros = ζ-zeros in closedBall(2+it, 5/2)... 5c's count: Σ over zeros of scaledZeta in the ball(0, 24/25)-ish... the affine push-forward: zeros of scaledZeta t at w ↔ zeros of ζ at discCenter t + (5/2)w — the count covers closedBall(2+it, (5/2)·(24/25)) = closedBall(2+it, 2.4). The unit window [t, t+1]×(0,1): points 0..1 + i[t, t+1]: distance to 2+i(t+0.5): max at corners: √(1.5²+0.5²) ≈ 1.58 ≤ 2.4 ✓ ⊆ ✓. So Σ_{window[t,t+1]} m ≤ Σ_{disc(2+i(t+0.5), 2.4)} m ≤ log((9/4)|t+0.5|²)/log(33/32) for |t+0.5| ≥ 10. Wait — but 5c's Jensen is stated with the toFinset of (finiteSetOfZeros_mono ... (24/25) scaledZeta_zeros_finite) — the zeros of the SCALED function — and zeroMult_affMap connects zeroMult at the image to the scaled order ✓ (banked, used in 5c's capstone). So the helper:
`jensen_window_mult_count {t : ℝ} (ht : 21/2 ≤ |t|) : ∑ ρ ∈ (zeroWindow' t).toFinset, (zeroMult ρ : ℝ) ≤ 66 * Real.log (|t| + 2)`-ish
Hmm — wait. Let me reconsider. Is there a simpler global count available: Zeta23's RvM.zeta_local_zero_count (the one zero_sum_inv_sq uses): `∃ A₀ ≥ 1, ∀ t, N(t)-window-count ≤ A₀·(...)` — let me check its exact statement — if it's already a mult-weighted unit-window count with an explicit-ish A₀, EVERYTHING simplifies (no Jensen re-derivation, no low-window special case!). Check.
The squeeze is available via Mathlib's Schwarz lemma. The critical remaining input is a mult-weighted window count — let me check Zeta23's `RvM.zeta_local_zero_count` (used by `zero_sum_inv_sq`), which might subsume the Jensen re-derivation.
tool: Bash
input
{
"command": "cd D:/Python/Quantum/zeta-23-lean && grep -rn -B3 -A10 \"zeta_local_zero_count\" Zeta23/RvM/*.lean | head -30",
"description": "zeta_local_zero_count statement"
}
raw content_json (database row)
[{"type":"thinking","thinking":"`Complex.dist_le_div_mul_dist_of_mapsTo_ball (hd : DifferentiableOn ℂ f (ball c R₁)) (h_maps : MapsTo f (ball c R₁) (closedBall (f c) R₂)) (hz : z ∈ ball c R₁) : dist (f z) (f c) ≤ R₂ / R₁ * dist z c` — EXACTLY the squeeze I need:\n\nFor fixed z₀, any R > max(|z₀|, small): f := Gentire, c := 0, R₁ := R, R₂ := sup_{ball(0,R)} ‖Gentire − ...‖ — h_maps : MapsTo Gentire (ball 0 R) (closedBall (Gentire 0) R₂) — need R₂ = sup of ‖Gentire z − Gentire 0‖ over the ball — from the circle bound ‖Gentire‖ ≤ M on the SPHERE plus max-modulus inside... hmm wait — h_maps needs the bound on the whole open ball, which for entire Gentire follows from the sphere bound via max-modulus (norm_le_of_norm_le_on_sphere with the closed ball ✓ — analytic on closedBall ⟹ ≤ sphere-bound inside ✓ — but that's on closedBall; for the open ball from closed ball ✓ fine).\n\nSo: R₂(R) := C·(log R)³ + ‖Gentire 0‖ (from the sphere bound + max-modulus). Then:\ndist(Gentire z₀, Gentire 0) ≤ (R₂(R)/R)·|z₀| for all R > |z₀| — take R = R_k → ∞ (the gap circles): R₂(R_k)/R_k → 0 ⟹ dist = 0 ⟹ Gentire z₀ = Gentire 0 ✓✓.\n\nThe \"→ 0\" needs a Tendsto argument: for the capstone I just need the EQUALITY Gentire z₀ = Gentire 0 — proof: suppose dist > 0; then (R₂(R_k)/R_k)·|z₀| ≥ dist > 0 for all k — but R₂(R_k)/R_k ≤ (C(log R_k)³ + G₀)/R_k → 0 — so for large k it's < dist/(2|z₀|)... contradiction. Formalize via a limit: show `Tendsto (fun k => (C·(log R_k)³ + G₀)/R_k · |z₀|) atTop (𝓝 0)` then `tendsto_le_of_eventually_le`... The cleanest: `le_of_tendsto` / squeeze: dist ≤ the sequence, sequence → 0 ⟹ dist ≤ 0 ⟹ dist = 0. Use `ge_of_tendsto`? `le_of_tendsto_of_tendsto`? The standard: `le_of_tendsto (h : Tendsto s atTop (𝓝 a)) (h' : ∀ᶠ k, s k ≤ a) : ...` hmm direction. What I want: dist ≤ 0 from dist ≤ s_k and s_k → 0: `le_of_tendsto_of_tendsto'`: hmm. `le_of_tendsto (hg : Tendsto g l (𝓝 y)) (h : ∀ᶠ x, g x ≤ y)`?? no that gives y ≤ ... Let me think: `ge_of_tendsto (h : Tendsto f l (𝓝 a)) (h' : ∀ᶠ x, a ≤ f x) : a ≤ ...`... The right one: `le_of_tendsto_of_tendsto (hf : Tendsto f l (𝓝 a)) (hg : Tendsto g l (𝓝 b)) (h : ∀ᶠ x, f x ≤ g x) : a ≤ b` — with f := const dist (tendsto_const) and g := the sequence → 0: dist ≤ 0 ✓ then dist = 0 (dist_nonneg) ⟹ Gentire z₀ = Gentire 0 (dist_eq_zero)... dist_eq_zero : dist a b = 0 ↔ a = b ✓.\n\nThe sequence → 0: R_k ∈ [4k+2.5, 4k+3]: (C(log R_k)³ + G₀)/R_k: bound: R_k ≥ 4k+2.5 ≥ 4k: (log R_k)³/R_k ≤ (log(4k+3))³/(4k): Tendsto of log³/k → 0: `tendsto_pow_log_div...`? There are standard: `tendsto_log_div_atTop`? `tendsto_pow_mul...`: the cleanest available: `tendsto_natCast_atTop_atTop` + `tendsto_log_div_...`: hmm — (log(4k+3))³/(4k) — use comparison: for k ≥ 1, log(4k+3) ≤ 4k+3 ≤ 5k (k≥1: 4k+3 ≤ 7k? 3 ≤ 3k ✓ 4k+3 ≤ 4k+3k = 7k): (log)³ ≤ (4k+3)³?? no that's the wrong direction (log x ≤ x ⟹ (log x)³ ≤ x³ — too weak). Need (log x)³ ≤ x for x ≥ some point — log x ≤ x^{1/3}·3/e-ish: (log x)³ ≤ (3/e)³·x: messy. Standard Mathlib: `tendsto_natCast_log...`: `tendsto_log_atTop`... The cleanest: use `tendsto_pow_log_div_mul_add_atTop`? or the known `tendsto_natCast_pow...`: Let me use a cruder explicit bound: for x ≥ 1: log x ≤ x... (log x)³/x ≤ x³/x = x²?? no. Hmm: (log R)³/R with R ≥ 4k: I want a clean upper sequence: log R ≤ R^{1/2} for R ≥ 16? (log x ≤ 2√x/... x^{1/2}: log x ≤ 2(x^{1/2}−1)/... — standard: log x ≤ 2√x for x ≥ 1? at x = 1: 0 ≤ 2 ✓; derivative 1/x ≤ 1/√x ⟺ √x ≤ x·... 1/x vs 1/√x: 1/x ≤ 1/√x ⟺ x ≥ √x ⟺ x ≥ 1 ✓ so log x ≤ 2(√x − 1) ≤ 2√x ✓ for x ≥ 1 (FTC-style: log x = ∫₁ˣ dt/t ≤ ∫₁ˣ dt/√t = 2(√x−1) — in Lean: is `Real.log_le_two_mul_sqrt...`? hmm). Alternatively: use Real.log_le_sub_one... no. There might be `Real.log_le_rpow` : log x ≤ x^r / r for r > 0? `Real.log_le_rpow (hx : 0 < x) (hr : 0 < r) : log x ≤ x^r / r`? something like `Real.log_le_rpow_div`? If exists with r = 1/4: (log R)³ ≤ R^{3/4}/(1/4)³ = 64 R^{3/4} ⟹ (log R)³/R ≤ 64 R^{−1/4} → 0 ✓. Mathlib: `Real.log_le_rpow_div`? Let me check. Or rpow-growth: `tendsto_rpow_neg_atTop`...\n\nOK — the limit machinery is routine; I'll pick exact forms when writing. \n\nNOW — the big remaining piece: **the circle bound on seriesFun and the assembly**. Let me design it concretely.\n\nActually — WAIT. Let me reconsider. The series bound O((log R)³/c) via the radial split is the most laborious part (5 shells, counts, the gap). Is there a shortcut using what's already built? The 5c/5d bounds bound ‖logDeriv ζ − nearsum‖; the series Σ m(1/(s−ρ)+1/ρ) is CLOSE to the nearsum + far-parts... no shortcut; the series bound is genuinely needed. OK.\n\nBut actually — hmm, let me reconsider the ANNULUS split sizes to minimize pain. On |s| = R (gap circle, k large):\n\nseriesFun s = ∑' ρ, m_ρ·(1/(s−ρ) + 1/ρ). Write |1/(s−ρ) + 1/ρ| = |s|/(|ρ||s−ρ|) = R/(|ρ||s−ρ|).\n\nSplit:\n(S1) ‖ρ‖ > 2R: ‖s−ρ‖ ≥ ‖ρ‖/2 ⟹ term ≤ 2R/‖ρ‖². Sum: Σ_{‖ρ‖>2R} m·2R/‖ρ‖² ≤ 2R·Σ_{j≥1} (count in dyadic shell [2^j R, 2^{j+1}R])/(2^j R)² — count via Jensen at scale? The Jensen count is for the specific disc at 2+it — for a shell [2^j R, 2^{j+1} R] I need counts at various heights — the Jensen disc at 2+i·2^{j+1}R... only covers the upper part. Ugh — the shells wrap around (re ∈ (0,1), im ∈ ±[shell-radius]): the shell {‖ρ‖ ∈ [X, 2X]} ⊆ {im ∈ [−2X, 2X], re ∈ (0,1)} ⊆ union of ~4X+2 unit windows × 2 sides. Count ≤ (4X+3)·C₀(2X+2)-ish via ZeroCountProp per window. So Σ_{shell} m ≤ (count) IF mult ≤ ... — NO WAIT: ZeroCountProp counts the SET card (no mult); the Jensen count has mult. Mixing: Σ_{ρ ∈ W} m_ρ with W a unit window: ≤ the Jensen count of a disc containing W: W at height t ⊆ disc(2+it', 5/2) for appropriate t' (as computed before: the unit window [t, t+1]×(0,1) ⊆ disc(2 + i(t+0.5)... center 2+i(t+0.5): covers re ∈ [−0.5, 4.5], im ∈ [t−2, t+3] ⊇ [t, t+1] ✓ for t ≥ ... hmm wait the window's re ∈ (0,1) ✓ inside. And Jensen needs |t'| ≥ 10 — for low windows use a fixed big disc... OR use the perimeter's SET-card × max mult... no.\n\nHmm — hmm hmm. The mult-weighted window count: Σ_{ρ ∈ zeroWindow t} m_ρ — Jensen gives Σ_{ρ ∈ disc} m_ρ ≤ log((9/4)|t|²)/log(33/32) for |t| ≥ 10 — and the window [t,t+1] ⊆ disc(2+i(t+1/2), 5/2)?? |0.5+i(t+0.5) − (2+i(t+0.5))| = 1.5 ≤ 2.5 ✓ corners: (0+it)−(2+i(t+.5)) = √(4+0.25) < 2.5 ✓ ✓. So Σ_{window t} m ≤ Σ_{disc(2+i(t+1/2), 5/2)} m ≤ log((9/4)|t+1/2|²)/log(33/32) — wait — the Jensen count is for the zeros of scaledZeta which correspond to zeros of ζ in the disc — with analyticOrderNatAt multiplicities ✓ (5c's statement: Σ over the toFinset of analyticOrderNatAt (scaledZeta t) ρ ≤ log((9/4)|t|²)/log(33/32)). The push-forward: zeros of scaledZeta t in the unit-ish disc ↔ zeros of ζ in disc(2+it, 5/2) with zeroMult = the order (5c's zeroMult_affMap / analyticOrderNatAt_scaledZeta chain ✓ banked). So:\n\n`jensen_window_count (ht : 20 ≤ |t|) : ∑ ρ ∈ (zeroWindow t).toFinset, zeroMult ρ ≤ 66 * Real.log |t|`-ish — wait |t| ≥ 10 needed for Jensen at t+1/2: |t+1/2| ≥ |t|−1/2 ≥ 9.5 — need ≥ 10: |t| ≥ 10.5. And for |t| < 10.5: the low windows — finitely many unit windows cover [−11, 11]: a SINGLE fixed Jensen-style count for the compact region: the zeros with |im| ≤ 11, re ∈ (0,1) ⊆ disc(2, 12)? Jensen on the disc at 2+i·0 radius 12: needs a bound on |ζ| on B(2, 12) — from 5b's norm_riemannZeta_le_disc? That's for |t| ≥ 10 — B(2, 12) has |t| ≤ 12 — the EM level-2 representation is valid for re > −1 INCLUDING the strip |t| ≤ 12: ‖ζ(s)‖ ≤ |1/2| + |1/(s−1)| + |s(s+1)|·∫|B̃₂|x^{−re−2} — on B(2,12) minus pole at 1: the 1/(s−1) blows near 1!! Jensen needs a bound on a disc — center 2 radius 12 includes the pole 1 — CAN'T. Use center 2, radius 12 but the pole... use Jensen on a region avoiding 1: the zeros with |im| ≤ 11 are in disc(2, 12) — use the disc at 2+i·0... alternatively just handle low zeros differently: the strip arcs have |t| ≥ 10 and the near sum is nearZeros t with |t| ≥ 10 ✓ — the low-height zeros only enter the series bound via the shells — the shell [X, 2X] for X ≥ 2R ≥ 2·20 has |im| ≥ X/2 ≥ 20 — hmm no: the shell {‖ρ‖ ∈ [X, 2X]} includes zeros with SMALL im (re ∈ (0,1), im small ⟹ ‖ρ‖ ≤ 1+small — no: ‖ρ‖ ≥ X means |im| ≥ √(X²−1) ≥ X/2 ✓ for X ≥ 2). So all zeros in shells X ≥ 2R (R ≥ 20) have |im| ≥ 10 ✓ Jensen at the right heights ✓. And shells ≤ R/2 (S2 below) with X ≥ ... the shell split starts from ‖ρ‖ small: the SMALL-‖ρ‖ part: {‖ρ‖ ≤ R/2}: includes the low-|im| zeros (the first zero at 14.14 etc.) — the count of ALL zeros with ‖ρ‖ ≤ R/2 including low ones: split: {‖ρ‖ ≤ 20}: FINITE — bounded by a CONSTANT (compact-finiteness — but I need an explicit bound... hmm — the finiteness gives a finite set; Σ m over it is SOME constant — but for the Lean proof I need an actual number or at least a usable bound!). \n\nUgh. The low-zero count. Options: the E-021/E-023 numerics?? No — must be rigorous in-Lean. A fixed Jensen count for disc(2+i·0, 5/2)-style at height 0: scaledZeta at t = 0? 5c's Jensen needed |t| ≥ 10 for the DISC BOUND ‖ζ‖ ≤ (3/4)|t|² (5b: |t| ≥ 10). For |t| ≤ 10: bound ‖ζ‖ on B(2, 5/2) directly from the level-2 EM representation (5b's representation is proved for re > −1 — all of B(2, 5/2) except s = 1!): the pole again — B(2, 5/2) contains 1. The Jensen argument needs F(0) = 1 normalization (ζ(2+i·0)... center non-pole) and a bound on the whole closed disc — the pole at 1 is INSIDE B(2, 5/2)?? |1 − 2| = 1 < 5/2 ✓ YES inside. So Jensen fails there (ζ not analytic on the disc). Use zetaA instead (entire!): zeros of zetaA = zeros of ζ off 1 ✓ (zetaA = (s−1)ζ: zeros of zetaA = zeros of ζ ∪ {1}?? — zetaA 1 = 1 ≠ 0 — and off 1, zetaA = (s−1)ζ ⟹ zeros of zetaA off 1 = zeros of ζ off 1 ✓). Bound on zetaA on B(2, 5/2): |zetaA(s)| = |s−1|·|ζ(s)| — the EM rep: ζ(s) = 1/2 + 1/(s−1) − s(s+1)∫B̃₂ x^{−s−2}: zetaA(s) = (s−1)/2 + 1 − (s−1)s(s+1)∫...: bound: |s−1| ≤ 7/2, |s(s+1)| ≤ (9/2)(11/2), ∫|B̃₂|x^{−re−2}dx ≤ (1/12)·1/(re+1)·... for re ≥ −1/2 (on B(2,5/2): re ≥ −1/2): ∫₁^∞ |B̃₂(x)| x^{−re−2} dx ≤ (1/12)∫ x^{−3/2}·... = (1/12)·2 = 1/6-ish for re ≥ −1/2. So |zetaA| ≤ (7/2)(1/2) + 1 + (7/2)(9/2)(11/2)/6 ≈ 1.75+1+14.4 ≈ 17.2 on B(2,5/2) — an explicit bound ~doable from 5b's machinery (the b2Fun integral bound — is there a packaged bound from 5b I can reuse? 5b proved ‖ζ‖ ≤ (3/4)|t|² for |t| ≥ 10 — the same integral bound at general points gives the zetaA bound — the integral ‖∫B̃₂ x^{−s−2}‖ ≤ ∫(1/12)x^{−re−2} = 1/(12(re+1)) — B̃₂ bounded by 1/12: `|B̃₂(x)| ≤ 1/12` — 5b has this? b2Fun machinery — presumably a bound exists. Then Jensen for zetaA on B(2, 5/2): count ≤ log(17.2/|zetaA(2)|)/log(5/2 / (r...)) — ZerosBound needs F(0) = 1 normalization: scale by zetaA(2) = (2−1)ζ(2) = π²/6 ≈ 1.64: F := zetaA/zetaA(2) — |zetaA(2)| = π²/6 ≥ 1 (π² > 9.86/6 > 1.6 ✓ Mathlib riemannZeta_two ✓). Count ≤ log(17.2/1.6)/log((5/2)/(24/25·5/2))-ish... the 5c form: ZerosBound with B = 17.2, radius ratio 24/25: ≤ log(17.2/1.64)/log(33/32)? Hmm the 33/32 came from the gap radii — for a fresh application: count in closedBall(2, 24/25·(5/2))·... The zeros with |im| ≤ 11... wait — do the low zeros (|im| ≤ 11) fit in closedBall(2, (24/25)·(5/2)) = closedBall(2, 2.4)? NO — im up to 2.4 only. The first zero 0.5+14.13i is NOT in this disc. Hmm — the low zeros I need to count: {‖ρ‖ ≤ 20, re ∈ (0,1)}: im ≤ 20: need a disc covering re ∈ (0,1), |im| ≤ 20: disc(0.5, 20.5)? center 1/2+i·0 radius 20.5: contains the pole 1 (|1−0.5| = 0.5 < 20.5) — again the pole — use zetaA again: bound |zetaA| on B(0.5, 20.5)... the EM bound: |s−1| ≤ 21, |s(s+1)| ≤ 21·22 = 462, the integral ≤ 1/(12(re+1)): re ≥ −20 on the disc!! ∫ x^{−re−2} with re = −20: x^{18} DIVERGES. The level-2 EM only works re > −1. The disc B(0.5, 20.5) dips to re = −20. So need higher EM levels (5b's level-2 → level-k pushes re > −k+1...). OR pick the disc differently: disc(2+i·0, 21)? re ≥ −19 same issue. The zeros with |im| ≤ 20, re ∈ (0,1): cover by discs at heights [−20, 20] each avoiding re < −1/2: discs at 2+it, radius 5/2, t ∈ {−20, −18.5, ..., 20} — ~17 discs — each needs the ζ-bound on B(2+it, 5/2) for |t| ≤ 10 — pole-free! B(2+it, 5/2) always contains 1+it'?? The pole is at s = 1 only: |1 − (2+it)| = √(1+t²) ≤ 5/2 ⟺ t² ≤ 21/4 ⟺ |t| ≤ 2.29: so for |t| ≤ 2 the disc CONTAINS the pole. So for the low-middle heights use zetaA (entire): bound zetaA on B(2+it, 5/2) uniformly for |t| ≤ 3: |zetaA s| = |s−1||ζ s| — the level-2 EM on this COMPACT region (re ∈ [−1/2, 9/2] ✓ > −1 ✓): |ζ(s)| ≤ 1/2 + 1/|s−1| + |s(s+1)|/(12(re+1)) — 1/|s−1| unbounded near s = 1! zetaA(s) = (s−1)ζ(s) = (s−1)(1/2 + 1/(s−1) − s(s+1)I(s)) = (s−1)/2 + 1 − (s−1)s(s+1)I(s): |zetaA| ≤ |s−1|/2 + 1 + |s−1||s||s+1|·(1/12)/(re+1): on B(2+it, 5/2), |t| ≤ 3: |s−1| ≤ √(1+9)+2.5 ≤ 5.7, |s| ≤ 7.5+3 ≤ 8, |s+1| ≤ 9, re+1 ≥ 1/2: ≤ 5.7/2 + 1 + 5.7·8·9·(1/6) ≈ 2.85+1+68.4 ≈ 72.3 — an explicit uniform constant ✓. Then Jensen per disc (|t| ≤ 3) with F := zetaA/zetaA(2+it)... center value |zetaA(2+it)| = |1+it|·|ζ(2+it)| ≥ |1+it|/3 (zeta_lower_bound_two ✓ Zeta23, any t!) ≥ 1/3. Count ≤ log(72.3·3)/log(33/32) ≈ log 217/0.0304 ≈ 5.38/0.0304 ≈ 177 per disc. ~17 discs × 177 ≈ 3000 zeros below height 20 (way loose vs truth ~40) — FINE for our purposes (constant factor).\n\nThis is ballooning. STOP. Let me simplify the whole 5e-v strategy:\n\n**KEY SIMPLIFICATION**: I don't need the radial split with all shells! Cruder: on the circle, split the series into just TWO parts:\n- Near part: zeros with |γ − R| ≤ 2 (the critical band): use the γ-gap (|s−ρ| ≥ c/(2 log R)) + count ≍ C₀ log R: sum ≤ C₀·(2·2R/(R−2))·... ≈ O((log R)²/c).\n- Far part: zeros with |γ − R| > 2: |s−ρ| ≥ |t−γ| ≥ ||γ|−R| − |R−|t|| ≥ ||γ|−R| − 13/R ≥ ||γ|−R|/2 (for ||γ|−R| ≥ 2 ≥ 26/R ⟺ R ≥ 13): term ≤ 2R/(|ρ|·||γ|−R|)... hmm — for far zeros: 1/|s−ρ| ≤ 2/||γ|−R| — but ||γ|−R| can be as small as 2 while |ρ| small?? No: ||γ|−R| > 2 with |ρ| small: |ρ| ≤ 1 + |γ| — if |γ| ≤ R−2 then... |ρ| can be small with |γ| near R−2? |γ| ≥ |ρ| − 1... |ρ|² = re²+γ² ≥ γ² − ... |γ| ≤ |ρ| ✓ (re ∈ (0,1)): so |γ| ≤ |ρ|: the far condition |γ − R| > 2 with |γ| ≤ |ρ|: \n - |γ| ≤ R−2: |ρ| ≥ |γ|: term ≤ R/(|ρ|(R−|γ|)/2)... sum over such: Σ_{|γ|≤R−2} m·2R/(|ρ|(R−|γ|)) — |ρ| ≥ |γ| ≥ ... this still needs the dyadic split in both |γ| and R−|γ|... no real savings.\n\nAlternatively — the far part via ‖s−ρ‖ ≥ |R − ‖ρ‖ | (reverse triangle on norms!): ‖s−ρ‖ ≥ |‖s‖ − ‖ρ‖| = |R − ‖ρ‖|: then the FAR part by ‖ρ‖-shells: {‖ρ‖ ≤ R−2}: term ≤ R/(‖ρ‖(R−‖ρ‖)); {‖ρ‖ ≥ R+2}: ≤ R/(‖ρ‖(‖ρ‖−R)); and the CRITICAL part {R−2 < ‖ρ‖ < R+2}: use the γ-gap for |s−ρ| ≥ |t−γ| (needs |t| ≈ R: the strip-arc points have |t| ≥ √(R²−49/4) ✓ ≈ R; but the near-axis arcs have |t| < 10 — there |s−ρ| for critical-annulus zeros: |s−ρ| ≥ |re s − re ρ| ≥ re s − 1 ≥ √(R²−100) − 1 ≥ R/2 for R ≥ 11 ✓ HUGE — so on the near-axis arcs the critical terms are tiny ✓✓ — SPLIT BY ARC: the critical annulus bound c/(2 log R) only needed on the strip arcs (|t| ≥ 10 where γ-gap applies via |s−ρ| ≥ |t−γ|)).\n\nSo the plan per circle point s (|s| = R, k ≥ K₀):\n- |im s| ≥ 10 (strip arcs incl. everything except near-axis): \n - critical {‖ρ‖ ∈ (R−2, R+2)}: |s−ρ| ≥ |t−γ| ≥ min over the gap (1/(32Ĉ₀) after the |R−|t|| ≤ 13/R adjustment) ✓ count: the annulus zeros have |γ| ∈ [R−3, R+2]: Σ m over |im| ∈ [R−3, R+2]: ≤ 2·(windows [R−3..R+2] ≈ 5 windows)·(Jensen per window ≈ 66 log(R+2)) = O(log R) ✓ — so critical sum ≤ O(log R)·32Ĉ₀·(2R/(R−2)) = O((log R)²) ✓ (the +1/ρ part: |1/ρ| ≤ 1/(R−2) tiny ✓ — wait the term is R/(|ρ||s−ρ|): with |s−ρ| ≥ 1/(32Ĉ₀): R/((R−2)·(1/(32Ĉ₀))) = 32Ĉ₀·R/(R−2) ≤ 64Ĉ₀: times count O(log R) = O(Ĉ₀·log R) = O((log R)²) ✓).\n - shell {‖ρ‖ ≤ R−2}: term ≤ R/(‖ρ‖(R−‖ρ‖)): dyadic in d = R−‖ρ‖ ∈ [2, R]: shell {d ∈ [2^j, 2^{j+1}]}: ‖ρ‖ ∈ [R−2^{j+1}, R−2^j]: count: zeros with |im| ≤ ‖ρ‖ ≤ R: |im| ∈ [R−2^{j+1}, R]·... no wait — ‖ρ‖ ∈ [R−2^{j+1}, R−2^j] ⟹ |γ| ≤ ‖ρ‖ ≤ R−2^j: the zeros with ‖ρ‖ in that range have |γ| ∈ [0, R−2^j] — that's a HUGE range (all heights up to R) — count ≍ R·log R — times 2R/((R−2^{j+1})·2^j)... for j small (2^j ≪ R): R/(‖ρ‖(R−‖ρ‖)) ≈ R/(R·2^j) = 2^{-j}: sum ≍ (R log R)·2^{-j} — summed over j ≤ log R: R log R — O(R log R) — TOO BIG (fatal, exactly D-068's C1 warning!). The fix (C1): the count in the shell should use |γ| ∈ [R−2^{j+1}, R−2^j]·... but ‖ρ‖ ∈ that range does NOT localize |γ| — zeros with ‖ρ‖ ≤ R−2 include ALL low zeros. WAIT no — re-read C1: the split is by RADIAL distance ||s|−|ρ|| with term ≤ 2/(R−|ρ|) — for ‖ρ‖ ≤ R/2: term ≤ 2/‖ρ‖ (using ‖s−ρ‖ ≥ R/2) and Σ_{‖ρ‖≤R/2} m/‖ρ‖ = O((log R)²) — the 2/|ρ| bound saves it (not 2/(R−|ρ|)). For ‖ρ‖ ∈ [R/2, R−2]: term ≤ 2/(R−‖ρ‖) and count of {‖ρ‖ ∈ [R−2^{j+1}, R−2^j]}: |γ| ∈ [√((R−2^{j+1})²−1)...] hmm no: ‖ρ‖ ≥ R−2^{j+1} ⟹ |γ| = √(‖ρ‖² − re²) ≥ √(‖ρ‖²−1) ≥ ‖ρ‖ − 1 ≥ R − 2^{j+1} − 1: so |γ| ∈ [R−2^{j+1}−1, R]: count of zeros with |im| ∈ [R−2^{j+1}−1, R]·: ≍ 2^{j+1} windows × C₀-ish each ≈ 2^{j+1}·(66 log R) (Jensen windows) = O(2^j log R): shell sum ≤ count·2/2^j·(R/‖ρ‖ ≤ 2) = O(2^j log R)·2/2^j·2 = O(log R) per shell; shells j ≤ log₂ R: total O((log R)²) ✓✓.\n - shell {‖ρ‖ ∈ [R+2, 2R]}: symmetric: term ≤ R/(‖ρ‖(‖ρ‖−R)) ≤ 1/(‖ρ‖−R): count {‖ρ‖ ∈ [R+2^j, R+2^{j+1}]} ≍ O(2^j log R): sum O(log R) per shell ⟹ O((log R)²) ✓.\n - shell {‖ρ‖ > 2R}: term ≤ 2R/‖ρ‖²: dyadic X = 2^j R: count {‖ρ‖ ∈ [X, 2X]} ≍ X·log X (windows) ·... term-sum ≍ X log X·2R/X² = 2R log X/X: sum over j ≥ 1: 2R·Σ log(2^j R)/(2^j R) ≍ 2R·(log R)/R = O(log R) ✓.\n - the innermost {‖ρ‖ ≤ R/2}: Σ m/‖ρ‖: dyadic in ‖ρ‖: {‖ρ‖ ∈ [2^j, 2^{j+1}]} count ≍ 2^j·log(2^j) (windows at height ≈ 2^j — for 2^j ≥ 20; for 2^j < 20 the LOW zeros — the constant count C_low (the 17-disc Jensen or whatever)): sum ≍ Σ_j 2^j·j·(2/2^j) = Σ j = O((log R)²) ✓ plus low-zeros: Σ_{‖ρ‖≤20} m·2/‖ρ‖ ≤ C_low·2/14 (‖ρ‖ ≥ 14 for all zeros!! — the first zero is at 14.13 — is there a Lean-available lower bound ‖ρ‖ ≥ 14? hmm — no zeros with |im| ≤ 13: that's a nontrivial fact (needs computation or a theorem!). WITHOUT it: zeros could be tiny (ρ → 0) making 2/‖ρ‖ blow... but there are only finitely many zeros with ‖ρ‖ ≤ 20 and they're FIXED constants — Σ_{‖ρ‖≤20} m/‖ρ‖ is a FIXED FINITE CONSTANT C₁ (whatever it is) — I need SOME bound: since the set is finite, Σ is a fixed real number — bound it by... in Lean: the sum over a finite set is ≤ card × max-term — the max-term needs a lower bound on ‖ρ‖: zeros avoid a neighborhood of... ρ ≠ 0 (re > 0) but ‖ρ‖ can be arbitrarily small a priori?? NO — zeros are DISCRETE: there's a disc around 0 (or around 1/2) with no zeros... Is there a cheap Lean zero-free region near the origin? ζ(0) = −1/2 ≠ 0 + continuity ⟹ ball(0, ε) zero-free for SOME ε — but I need an EXPLICIT ε for the bound! Alternatively: use the conjugate symmetry + ... hmm. The zeros with ‖ρ‖ ≤ 20 form a FIXED finite set F; Σ_{ρ∈F} m_ρ/‖ρ‖ is a fixed constant — in Lean I can bound it as follows: the terms are continuous on the COMPACT set {‖ρ‖ ≤ 20} ∩ {zeros}... no. Simplest: EXPLICIT zero-free disc: |ζ(2)| = π²/6 ≈ 1.64 and Jensen/argument-principle... Actually — here's a clean one: ZERO-FREE for |im| ≤ 13/... no.\n\n Hmm, hold on — simpler: don't isolate the low zeros at all; use the disc-Jensen count for the whole ball {‖ρ‖ ≤ R/2} DIRECTLY: Σ_{‖ρ‖≤R/2} m/‖ρ‖: split at ‖ρ‖ = 1 (not 20): {‖ρ‖ ≤ 1}: contains NO zeros? ‖ρ‖ ≤ 1 with re ∈ (0,1): possible a priori... ζ has no zeros in {|s−2| ≤ 5/2·...}: the disc B(2, 5/2) contains {re ∈ [−1/2, 9/2], ...} ⊇ {‖ρ‖ ≤ 1}∩{re ∈ (0,1)}? {‖ρ‖ ≤ 1, re ∈ (0,1)}: distance to 2: ≥ |2−1| = 1... a point 0.5+0.8i: |·−2| = √(2.25+0.64) = 1.7 ≤ 2.5 ✓ inside. So zeros with ‖ρ‖ ≤ 1 would be inside B(2,5/2)... but the pole at 1 breaks Jensen on B(2,5/2) (as discussed) — zetaA fixes it: zetaA entire; zeros of zetaA in B(2,5/2) = zeros of ζ there (off 1) ∪ nothing (zetaA 1 = 1) ✓; bound |zetaA| on B(2, 5/2): as computed ≈ 72 — but with the t = 0 center value |zetaA(2)| = ζ(2) = π²/6 ≥ 1.6: Jensen: count(orders) ≤ log(72/1.6)/log(33/32)·... ≈ log(45)/0.03 ≈ 127 — for zeros in closedBall(2, 2.4): {‖ρ‖ ≤ 1, re ∈ (0,1)} ⊆ B(2, 2.4)? farthest: 0+1i: |i−2| = √5 ≈ 2.24 ≤ 2.4 ✓; 1+1i: √(1+1) = 1.41 ✓; re→0, im ≤ 1: ✓ all in. So Σ_{‖ρ‖≤1} m ≤ 127 AND each term m/‖ρ‖ with ‖ρ‖ ≤ 1 — SMALL ‖ρ‖ ⟹ 1/‖ρ‖ big — still need the lower bound on ‖ρ‖!! Jensen gives COUNT, not position. Position lower bound: zeros of zetaA in B(2, 2.4): NONE with tiny norm?? Not from Jensen.\n\n Explicit zero-free near 0: the cleanest: ‖ρ‖ ≥ 1 for every nontrivial zero? Truth: yes (first zero 14.13). Proof in reach: ρ zero with ‖ρ‖ ≤ 1 ⟹ ρ ∈ B(2, 2.4)-ish ⟹ zetaA zero there ⟹ ... Jensen gives a count ≤ 127 — doesn't exclude. To EXCLUDE low zeros need more (e.g. the argument principle on a small contour + interval arithmetic = the E-021-style computation — NOT in scope).\n\n ALTERNATIVE that fully sidesteps low-zero position: bound Σ_{‖ρ‖≤1} m/‖ρ‖ ≤ Σ m·(1/‖ρ‖) with... no lower bound needed if I use a different term bound for small ρ: for ‖ρ‖ ≤ 1 ≤ R/2: term ≤ 2/‖ρ‖ — the 1/‖ρ‖ singularity... BUT WAIT: the term is |1/(s−ρ) + 1/ρ| = |s|/(|ρ||s−ρ|): for ‖ρ‖ ≤ 1: |s−ρ| ≥ R−1 ≥ R/2: term ≤ 2R/(‖ρ‖R) = 2/‖ρ‖ ✓ unavoidable 1/‖ρ‖. The sum Σ_{‖ρ‖≤1} m/‖ρ‖ is a FIXED CONSTANT of the universe (finite set, fixed terms) — I can bound it by ANY larger constant if I can compute... or bound it abstractly: the finite set is a finset; the sum is a specific real number; I need an explicit rational bound — impossible without computation.\n\n Hmm hmm. OK — alternative: handle {‖ρ‖ ≤ 1} by noting it's EMPTY — no wait we can't prove that cheaply.\n\n Actually — hold on: is there a zero-free region result ALREADY in Zeta23? The RvM machinery (Rosser-van de... M?): `Zeta23.RvM.zeta_local_zero_count : ∃ A₀ ≥ 1, local count ≤ A₀·...` — from zero_sum_inv_sq's proof: `obtain ⟨A₀, hA₀, hloc⟩ := Zeta23.RvM.zeta_local_zero_count` — a LOCAL zero count exists in Zeta23 with an explicit-ish A₀! `zeta_local_zero_count : ∃ A₀, 1 ≤ A₀ ∧ ∀ t, (count in unit window at t) ≤ A₀·log(...)·...`? If the count is a plain SET-card or mult-weighted count with an EXPLICIT constant, then Σ_{‖ρ‖ ≤ 1} m/‖ρ‖ ≤ (count with ‖ρ‖≤1)·(1/‖ρ‖_min)... still the position issue.\n\n OK here's the cleanest full sidestep: **use 1/‖ρ‖ ≤ 2/‖1+ρ‖... no. Use the term m_ρ/(1+‖γ‖²) weight instead!** The dominator from 5e-iii: for the SMALL-ρ part, instead of the bare 2/‖ρ‖ bound, note: term = R/(‖ρ‖‖s−ρ‖) ≤ R/(‖ρ‖·(R/2)) = 2/‖ρ‖ — the 1/‖ρ‖ is unavoidable BUT: Σ_{ρ} m/(1+‖γ‖²) CONVERGES (zero_sum_inv_sq!) ⟹ Σ_{‖ρ‖ ≤ 1} m/(1+‖γ‖²) ≤ the total sum — a FIXED CONSTANT (its tsum value — some real number T₀). And 1/‖ρ‖ ≤ C/(1+‖γ‖²) for ‖ρ‖ ≤ 1?? 1+‖γ‖² ≤ 1+‖ρ‖² ≤ 2 for ‖ρ‖ ≤ 1: so 1/(1+‖γ‖²) ≥ 1/2: gives 1/‖ρ‖ ≥ ... WRONG direction again (need 1/‖ρ‖ ≤ C/(1+‖γ‖²) ⟺ 1+‖γ‖² ≤ C‖ρ‖ — fails for tiny ρ).\n\n So the small-ρ sum fundamentally needs a zero-position fact. FINE — one more idea, the cleanest: **ρ ≠ 0-free disc via continuity at a SPECIFIC point with an explicit modulus**: ζ(2) = π²/6; zetaA continuous... The zeros of ζ avoid {‖s‖ ≤ δ} for the δ from... The identity 1/ρ = 1/(ρ−1) + 1/(ρ(ρ−1))?? The classical trick: the series Σ m(1/(s−ρ)+1/ρ) — the 1/ρ at tiny ρ pairs with... no.\n\n Actually — the SIMPLEST: zeros come in SYMMETRIC sets under ρ ↦ 1−ρ (FE) and ρ ↦ ρ̄ (conj): a zero ρ with tiny ‖ρ‖ (re ∈ (0,1), |im| tiny) — the quad {ρ, ρ̄, 1−ρ, 1−ρ̄} all near the segment (0,1)... no exclusion without computation.\n\n You know what — the cleanest rigorous-and-cheap zero-position input: **ζ(s) ≠ 0 for |s − 2| ≤ 5/2... no. ζ(s) ≠ 0 for re s ≥ 1 (Mathlib!)** — that excludes re ≥ 1, not small norm.\n\n FINAL ANSWER for the small-ρ issue: bound the sum over {‖ρ‖ ≤ 1} by (Σ_{‖ρ‖≤1} m_ρ) × (max_{ρ: ‖ρ‖≤1} 1/‖ρ‖) where the max is over a FINITE SET — obtain the bound as follows: the finite set's minimal norm is SOME positive real δ₀ (each zero has ‖ρ‖ > 0 since re > 0 ⟹ ρ ≠ 0). In Lean: for the FINITE set F: Σ_{ρ∈F} m/‖ρ‖ =: C_F is a fixed real; I can write \"Σ ≤ C_F ≤ its own value\" — tautological! For the squeeze I need: sup on circles ≤ C(log R)³ + C_F — where C_F is a FIXED CONSTANT — I can just DEFINE the constant as that finite sum's value (exists!) and carry it symbolically! The squeeze: (C(log R)³ + C_F + G₀)/R → 0 — works with C_F symbolic ✓✓. So: bound Σ_{‖ρ‖≤1} m/‖ρ‖ ≤ Σ_{‖ρ‖≤1} m/‖ρ‖ (rfl!) — i.e., keep it as an opaque finite constant. In the assembly: the circle bound is ‖Fexpr‖ ≤ C·(log R)³ + C_small where C_small := the finite sum over {‖ρ‖ < 1} (a toFinset sum — well-defined, no bound needed). \n\n Even simpler: absorb into the O-term: the total circle bound becomes ‖F‖ ≤ C·(log R)³ + C₀ (a constant) — fine for the squeeze.\n\nOK wait, but hold on — do I even need the mult-weighted window counts (Jensen)? The dyadic shells need Σ_{shell} m_ρ ≤ count-with-multiplicity ≍ (window count)·... The Jensen count (5c's scaledZeta_jensen_count) is stated for the specific disc at height t (|t| ≥ 10) with the order-sum ≤ log((9/4)t²)/log(33/32). For a shell {‖ρ‖ ∈ [2^j, 2^{j+1}]} (2^j ≥ 2): the zeros have |γ| ∈ [√(4^j−1)-ish...]: |γ| ≤ ‖ρ‖ ≤ 2^{j+1} and |γ| ≥ √(‖ρ‖²−1) ≥ 2^j−1: so |γ| ∈ [2^j−1, 2^{j+1}]: windows: [2^j−1, 2^{j+1}] = ~2^j+2 unit windows, ×2 signs. Per window (height t ∈ [2^j−1, 2^{j+1}]): need Σ_{window} m ≤ C·log(t+2): from Jensen at the covering disc (needs |t+1/2| ≥ 10 i.e. 2^j ≥ 12-ish) OR the low-disc constant (for 2^j < 12: finitely many windows, each ≤ the low-disc Jensen constant (via zetaA) — the low-disc count CL ≈ 177·17 ≈ 3000 — a FIXED explicit constant... which needs the zetaA-bound build (~100 lines) OR... hmm — OR use the perimeter ZeroCountProp for the low windows?! ZeroCountProp counts the SET card ≤ Ĉ₀(t+1) for t ≥ 2 — for t ∈ [2, 12]: Ĉ₀(t+1) ≤ Ĉ₀(13) — explicit! And the SET-card ≤ Ĉ₀ ⟹ the MULT-sum: NO (mult vs card again). ARGH.\n\nHmm — wait, actually: is multiplcity really a problem? zeroMult ρ for ρ in a unit window — could be huge only if a high-order zero exists — but here's the thing: the Jensen count for the covering disc BOUNDS THE ORDER-SUM: Σ_{ρ ∈ window} m_ρ ≤ Σ_{disc} m = Jensen ≤ log((9/4)|t|²)/log(33/32) for |t| ≥ 10 — mult INCLUDED ✓. So for windows with center-height |t + 1/2| ≥ 10 (i.e. t ≥ 9.5 or t ≤ −10.5): mult-sum ≤ 33·log((9/4)(|t|+1)²)·... ≤ 66 log(|t|+2)-ish ✓ EXPLICIT and mult-weighted ✓.\n\nFor the LOW windows (|t| ≤ 11): finitely many zeros (the set {zeros with |im| ≤ 12} is finite) — Σ m over them: a FIXED CONSTANT again! Same trick: keep it symbolic (C_low := that finite sum). The total: circle bound ≤ C(log R)² + C_low·(2/1?)... wait the low zeros in the series sum: their terms ≤ m·(2/‖ρ‖) (for ‖ρ‖ ≤ R/2) — 1/‖ρ‖ unbounded a priori — BUT there are finitely many and the terms are FIXED: Σ_{low zeros} m·(1/(s−ρ)+1/ρ) ≤ Σ m·(2/(R) + ... hmm for low zeros (‖ρ‖ ≤ 20 ≤ R/2): |s−ρ| ≥ R−20 ≥ R/2: term ≤ R/(‖ρ‖·R/2)·... = 2/‖ρ‖ — the 1/‖ρ‖ again! Keep the WHOLE low-zero sub-sum symbolic: Σ_{ρ ∈ low} m·‖1/(s−ρ)+1/ρ‖ ≤ Σ_{ρ ∈ low} m·(1/(R−‖ρ‖) + 1/‖ρ‖) ≤ Σ_{ρ∈low} m·(2/(R) + 1/‖ρ‖)·... the 1/‖ρ‖ parts are FIXED constants (finite sums of fixed positive reals — well-defined real numbers): C_low := Σ_{ρ ∈ F_low} m_ρ/‖ρ‖ + 2·Σ m_ρ — all fixed ✓ symbolic ✓. \n\nSo the FULL plan:\nseriesFun-bound(s) ≤ C₁·(log R)² + C₂ (explicit C₁; C₂ = explicit finite-set constant).\n\nThe low set F_low := zeros with ‖ρ‖ ≤ 20 (say): finite ✓ (compact-finiteness). C₂ := Σ_{ρ ∈ F_low.toFinset} m_ρ·(2/‖ρ‖)·... hmm — ‖ρ‖ could be ZERO for a zero?? re ρ > 0 ⟹ ρ ≠ 0 ⟹ ‖ρ‖ > 0 ✓ so 1/‖ρ‖ is a genuine positive real per zero ✓ the finite sum is a well-defined real ✓✓.\n\nSo actually the structure: for ‖ρ‖ ≤ 20: term bound 2/‖ρ‖ (fixed finite sum, symbolic constant). For ‖ρ‖ > 20: ALL such zeros have |γ| ≥ √(400−1) ≥ 19 ⟹ Jensen windows apply (|t| ≥ 10 at every window from 19 up ✓). \n\nThe dyadic analysis for ‖ρ‖ > 20: shells as in C1. Each shell's mult-sum via windows with Jensen: need a helper: Σ_{ρ : a ≤ |im ρ| ≤ b, nontrivial} m_ρ ≤ 66·(b−a+2)·log(b+2)-ish for a ≥ 10. Build from scaledZeta_jensen_count per unit window: window [t, t+1] ⊆ zeroDisc(2+i(t+1/2))?? — wait: the Jensen count is for the SCALED disc's zeros = ζ-zeros in closedBall(2+it, 5/2)... 5c's count: Σ over zeros of scaledZeta in the ball(0, 24/25)-ish... the affine push-forward: zeros of scaledZeta t at w ↔ zeros of ζ at discCenter t + (5/2)w — the count covers closedBall(2+it, (5/2)·(24/25)) = closedBall(2+it, 2.4). The unit window [t, t+1]×(0,1): points 0..1 + i[t, t+1]: distance to 2+i(t+0.5): max at corners: √(1.5²+0.5²) ≈ 1.58 ≤ 2.4 ✓ ⊆ ✓. So Σ_{window[t,t+1]} m ≤ Σ_{disc(2+i(t+0.5), 2.4)} m ≤ log((9/4)|t+0.5|²)/log(33/32) for |t+0.5| ≥ 10. Wait — but 5c's Jensen is stated with the toFinset of (finiteSetOfZeros_mono ... (24/25) scaledZeta_zeros_finite) — the zeros of the SCALED function — and zeroMult_affMap connects zeroMult at the image to the scaled order ✓ (banked, used in 5c's capstone). So the helper: \n\n`jensen_window_mult_count {t : ℝ} (ht : 21/2 ≤ |t|) : ∑ ρ ∈ (zeroWindow' t).toFinset, (zeroMult ρ : ℝ) ≤ 66 * Real.log (|t| + 2)`-ish\n\nHmm — wait. Let me reconsider. Is there a simpler global count available: Zeta23's RvM.zeta_local_zero_count (the one zero_sum_inv_sq uses): `∃ A₀ ≥ 1, ∀ t, N(t)-window-count ≤ A₀·(...)` — let me check its exact statement — if it's already a mult-weighted unit-window count with an explicit-ish A₀, EVERYTHING simplifies (no Jensen re-derivation, no low-window special case!). Check.","signature":""},{"type":"text","text":"The squeeze is available via Mathlib's Schwarz lemma. The critical remaining input is a mult-weighted window count — let me check Zeta23's `RvM.zeta_local_zero_count` (used by `zero_sum_inv_sq`), which might subsume the Jensen re-derivation."},{"type":"tool_use","id":"Bash_248","name":"Bash","input":{"command":"cd D:/Python/Quantum/zeta-23-lean && grep -rn -B3 -A10 \"zeta_local_zero_count\" Zeta23/RvM/*.lean | head -30","description":"zeta_local_zero_count statement"},"extra_content":null}]