← Session 28 — ii′-5e: partial-fraction identity (zero series + F entire)
thinking (10373 chars)
`Ncount T₁ T₂ := ∑ᶠ ρ ∈ zerosIn T₁ T₂, zeroMult ρ` — the finsum over `zerosIn T₁ T₂ := {ρ | IsNontrivialZero ρ ∧ T₁ < ρ.im ∧ ρ.im ≤ T₂}` with zeroMult — mult-weighted ✓, two-sided windows (T₁ < im ≤ T₂) ✓.
So `zeta_local_zero_count : ∃ A₀ ≥ 1, ∀ t, (Ncount t (t+1) : ℝ) ≤ A₀ * Real.log (|t|+3)` — mult-weighted, all t, UNCONDITIONAL (proved in Zeta23, no perimeter!). This is the count input for the series bound. It also SUBSUMES the perimeter ZeroCountProp for the near-sum (I'll use Ncount-bounds there too — cleaner than mixing).
Hmm wait — but the γ-gap circles (5e-i) DID use the perimeter ZeroCountProp. So the capstone ∃ B will be proved under (hZC : ZeroCountProp) as a hypothesis?? Let me check: exists_gapCircle_radius takes (hZC : ZeroCountProp). So the 5e-v capstone theorem will have hZC as a hypothesis — meaning the identity is proved ASSUMING ZeroCountProp — and ZeroCountProp is the declared Trudgian input (perimeter). At ii′-7, SfBoundProp gets proved from the perimeter — fine — the perimeter is declared as a hypothesis to the final theorem anyway (the final `lambda_pos_finite_height_closed` has the 3 perimeter hypotheses... currently (hRH : RHUpTo) (hfinite : LiVerifiedUpTo) (hSf : SfBoundProp); at ii′-7 hSf gets discharged by the identity work using Trudgian N(T)/S(T) — which will be an additional declared perimeter hypothesis (the D-062 §4 plan already lists "Trudgian N(T)/S(T)" in the perimeter). OK — consistent with the plan.
Now — Ncount windows vs my needs:
- nearZeros t sum: nearZeros t = zeros with |γ−t| < 1 (in the disc) — Σ m ≤ Ncount (t−1) t + Ncount t (t+1)?? zerosIn (t−1) (t+1) covers |γ−t| < 1·... zerosIn T₁ T₂ := {T₁ < im ≤ T₂}: (t−1, t+1] ⊇ {|γ−t| < 1} (|γ−t|<1 ⟹ t−1 < γ < t+1 ✓). Ncount (t−1) (t+1) ≤ Ncount (t−1) t + Ncount t (t+1)?? — as finsums over disjoint windows: zerosIn (t−1)(t+1) = zerosIn (t−1) t ∪ zerosIn t (t+1) ✓ disjoint ✓ finsum splits ✓. Each ≤ A₀ log(|t|+3)+ish ✓. But is there a READY lemma Ncount-additivity? Or compute: Ncount t (t+1) for t := |t|±... — the windows for NEGATIVE t: zeta_local_zero_count is ∀ t : ℝ ✓ two-sided ✓.
Hmm — actually for simplicity: Σ_{ρ ∈ nearZeros t} m_ρ ≤ Ncount (t−1) (t+1): is there a direct finsum-monotonicity? Ncount (t−1) (t+1) = ∑ᶠ ρ ∈ zerosIn (t−1)(t+1), m_ρ; nearZeros t is a finset of zeros with |γ−t| < 1 ⊆ zerosIn (t−1)(t+1): Σ_{finset} m ≤ ∑ᶠ: `finsum_le_...`? finsum over a set vs a finset subset: ∑ᶠ ρ ∈ S, f ρ = ∑ over the finite support...: Ncount uses ∑ᶠ (finsum) — the zeros are finite in the window (zerosIn_finite ✓ Zeta23). Connection: for finite S: ∑ᶠ ρ ∈ S, f ρ = ∑ over S.toFinset — `finsum_eq_toFinset_sum`? There are API bridges. And nearZeros t is a finset of ℂ-points (with duplicates impossible — finset) — its sum Σ ρ ∈ nearZeros t, m_ρ ≤ Σ over zerosIn.toFinset = Ncount ✓ via subset monotonicity (m ≥ 0... zeroMult ≥ 0 ✓ as ℕ). Workable.
Now — the D-068 C1 radial split detail. Wait, actually — with the Ncount window count available, the series bound can be done via a cleaner ORDINATE-dyadic split (instead of radial): the zeros by |γ| ∈ dyadic shells [2^j, 2^{j+1}] and |γ| < 2: because ‖ρ‖ ≈ |γ| (re ∈ (0,1) ⟹ |γ| ≤ ‖ρ‖ ≤ |γ|+1) — the ordinate split is equivalent up to constants and the window counts are DIRECTLY in ordinates. Term bound: |1/(s−ρ)+1/ρ| = R/(‖ρ‖‖s−ρ‖):
- |γ| ≤ 2 (low): ‖ρ‖ ≤ 3: count ≤ Ncount(−2, 2]-ish ≤ 4 windows·A₀log5: the 1/‖ρ‖ singularity — finite symbolic constant? With the low set now just {|γ| ≤ 2}: Σ m/‖ρ‖: ‖ρ‖ ≥ |γ|·... ‖ρ‖ ≥ re... no lower bound — symbolic constant C_low := Σ_{|γ|≤2} m/‖ρ‖ (finite, well-defined ✓). Hmm — OR use the zero-free... symbolic is fine, decided.
- 2 ≤ |γ| ≤ R−2 (lower shells): |s−ρ| ≥ |t−γ| ≥ ... hmm — for the strip arcs (|t| ≈ R): |t−γ| ≥ |t|−|γ| ≥ R−13/R−|γ| — for |γ| ≤ R−2: ≥ 2−13/R ≥ 1 — but sharper for deep shells: |t−γ| ≥ R − |γ| − 13/R ≥ (R−|γ|)/2: term ≤ R/(|γ|·(R−|γ|)/2) = 2R/(|γ|(R−|γ|)): dyadic in BOTH |γ| and R−|γ|... the standard: for |γ| ∈ [2^j, 2^{j+1}] (2^j ≤ R−2): term ≤ 2R/(2^j·(R−2^{j+1}))·... split j ≤ log₂(R/2) (so R−2^{j+1} ≥ R−R = ... hmm need 2^{j+1} ≤ R−2: for 2^{j+1} ≤ R/2: R−2^{j+1} ≥ R/2: term ≤ 2R/(2^j·R/2) = 4/2^j: count ≍ 2^j·A₀log(2^{j+1}): sum ≍ Σ_j 4A₀(j+2) = O((log R)²) ✓; for the TOP band |γ| ∈ [R/2, R−2]: |s−ρ| ≥ |t−γ| ≥ (R−|γ|)/2-ish (|t| ≥ R−13/R): term ≤ 2R/(|γ|·(R−|γ|−13/R))... with |γ| ≥ R/2: ≤ 4/(R−|γ|−13/R): dyadic in d := R−|γ| ∈ [2, R/2]: count of {|γ| ∈ [R−2^{j+1}, R−2^j]} ≍ 2^j windows ≍ 2^j A₀ log R: term ≤ 4/(2^j−13/R) ≤ 8/2^j: shell sum ≍ 2^j·A₀logR·8/2^j = 8A₀logR per shell, j ≤ log R shells: O((log R)²) ✓.
- critical band |γ| ∈ (R−2, R+2): the γ-gap: |s−ρ| ≥ |t−γ| ≥ 1/(32Ĉ₀) — count ≍ 4 windows ≍ 4A₀log(R+2): sum ≤ 4A₀log(R+2)·32Ĉ₀·(R/(R−2))·... wait term = R/(‖ρ‖|s−ρ|) ≤ R/((R−3)·(1/(32Ĉ₀))) ≤ 64Ĉ₀: sum ≤ 4A₀log(R+2)·64Ĉ₀ = O(Ĉ₀·log R) = O((log R)²) ✓ — BUT this needs |t| ≈ R i.e. STRIP arcs only. On NEAR-AXIS arcs (|t| < 10): |s−ρ| ≥ |re s − re ρ| ≥ re s − 1: right near-axis: re ≥ √(R²−100) ≥ R−1 ⟹ |s−ρ| ≥ R−2 ≥ R/2: term ≤ R/((R−3)·(R/2)) = 2/(R−3) tiny ✓; count O(log R): sum O(log R / R) ✓. Left near-axis: re ≤ −√(R²−100): |s−ρ| ≥ |re s| − 1 ≥ R/2 ✓ same ✓.
- upper band |γ| ∈ [R+2, 2R]: |s−ρ| ≥ ||t|−|γ|| ≥ (|γ|−R)−13/R ≥ (|γ|−R)/2 (for |γ| ≥ R+2, R ≥ 26): term ≤ 2R/(|γ|(|γ|−R)): dyadic in d = |γ|−R ∈ [2, R]: shell {d ∈ [2^j, 2^{j+1}]}: count ≍ 2^j A₀ log(R+2^{j+1}) ≍ 2^j A₀ log R (2^{j+1} ≤ R... for shells up to d = R): term ≤ 2R/((R)·2^j) = 2/2^j: shell sum ≍ 2^j·A₀logR·2/2^j = 2A₀ log R per shell ⟹ O((log R)²) ✓. Wait — need |γ| ≥ R/2 in the term R/(|γ|·...) ≤ R/((R/2)·...) ✓ |γ| ≥ R ✓.
- far band |γ| > 2R: |s−ρ| ≥ (|γ|−R)/2 ≥ |γ|/4·... |γ|−R ≥ |γ|/2 (|γ| > 2R ⟹ R < |γ|/2): |s−ρ| ≥ |γ|/4: term ≤ R/(|γ|·|γ|/4) = 4R/|γ|²: dyadic |γ| ∈ [2^j, 2^{j+1}], 2^j ≥ 2R: count ≍ 2^j A₀ log(2^j): shell sum ≍ 4R·2^j·A₀·j/4^j = 4RA₀·j/2^j: Σ_{j ≥ log R} j/2^j ≍ log R/R: total ≍ 4RA₀·(log R)/R = O(log R) ✓.
Total series bound: O((log R)²) + C_low — even better than the (log R)³ (the fine Ĉ₀-clearance is only 1/(32Ĉ₀) vs D-068's c/(2 log R) — same order since Ĉ₀ ≍ log R).
Wait — one important check: on the strip arcs |t−γ| ≥ (R−|γ|)/2 for |γ| ≤ R−2: |t| ≥ √(R²−49/4)... the strip arcs are re ∈ [−5/2, 7/2]·|re| ≤ 7/2 ⟹ |t| = √(R²−re²) ≥ √(R²−12.25) ≥ R − 13/R (R ≥ 4: R−√(R²−12.25) = 12.25/(R+√) ≤ 13/R ✓). So |t−γ| ≥ |t|−|γ| ≥ R − 13/R − |γ| for |γ| ≤ R−2: ≥ 2 − 13/R ≥ 1 (R ≥ 13) ✓ and ≥ (R−|γ|)/2 ⟺ R−13/R−|γ| ≥ (R−|γ|)/2 ⟺ (R−|γ|)/2 ≥ 13/R ⟺ R−|γ| ≥ 26/R ✓ for |γ| ≤ R−2 and R ≥ 4: 26/R ≤ 6.5/... R ≥ 13: 26/R ≤ 2 ✓ (R−|γ| ≥ 2 ≥ 26/R ⟺ R ≥ 13) ✓.
Hmm — and the near-axis arcs |t| < 10 ⟹ re > 7/2 or re < −5/2... the strip arcs are exactly where 5c/5d apply: re ∈ [1/2, 7/2] (5c) and re ∈ [−5/2, 1/2] (5d) — together re ∈ [−5/2, 7/2] — and the complement on the circle: re > 7/2 (right near-axis) or re < −5/2 (left near-axis). On the right near-axis: re > 7/2 ≥ 2 ✓ Dirichlet. But ALSO: |t| < 10 happens exactly when re² > R²−100 ⟺ |re| > √(R²−100) ≥ 7/2 for R ≥ 11·... √(R²−100) ≥ 7/2 ⟺ R² ≥ 112.25 ⟺ R ≥ 10.6 ✓ (k ≥ 2). But wait — the strip-arc pieces (5c/5d) require |t| ≥ 10 — on the arc re ∈ [1/2, 7/2] with |s| = R: |t| = √(R²−re²) ≥ √(R²−12.25) ≥ 10 ⟺ R ≥ 10.7 ✓ (k ≥ 2). But ALSO points with re ∈ [−5/2, 1/2] have |t| ≥ √(R²−6.25) ≥ 10 similarly ✓. So for R ≥ 11 (k ≥ 2): every circle point has either |re| ≤ 7/2·... hmm the partition: re ∈ [−5/2, 7/2] (strip, |t| ≥ √(R²−12.25) ≥ 10 ✓) vs re > 7/2 (right near-axis, Dirichlet) vs re < −5/2 (left near-axis, FE). ✓ Clean trichotomy for R ≥ 11. And the series analysis used |t| ≈ R (strip) vs |re| ≈ R (near-axis) consistently ✓. Note the near-axis arcs are re > 7/2 or re < −5/2 — but the "strip" piece for the SERIES used |t| ≥ √(R²−12.25) which holds on the whole strip ✓; on the near-axis arcs the series uses |s−ρ| ≥ |re|−1 ≥ 5/2... for the critical-band zeros I said |s−ρ| ≥ re s − 1 ≥ R/2 — for the LEFT arc: |re s| ≥ √(R²−100): |s−ρ| ≥ |re(s−ρ)| = |re s − re ρ| ≥ |re s| − 1 ≥ √(R²−100) − 1 ≥ R/2 for R ≥ 11 ✓ (both arcs: |re s| ≥ √(R²−100) ⟹ |s−ρ| ≥ √(R²−100)−1 ≥ R/2 (R ≥ 11: √(R²−100) ≥ R−50/R ≥ R/2+1 ⟺ R/2 ≥ 1+50/R ⟺ R ≥ 11 ✓)).
The strip-arc γ-gap clearance: zeros with |γ| ∈ (R−2, R+2) have... wait I need to double check the 5e-i gap applies: the gap is for ALL nontrivial zeros: fine-clearance |ρ.im − R| ≥ 1/(16Ĉ₀) OR coarse ≥ 1 — for zeros with NEGATIVE im near −R: use conj — the conj zero has im = −ρ.im near +R: the gap applies to conj ρ (also nontrivial ✓ need IsNontrivialZero (conj ρ) — build via riemannZeta_conj — CHECK: does Mathlib have riemannZeta_conj? `riemannZeta_conj (s : ℂ) : riemannZeta (conj s) = conj (riemannZeta s)` — I'm quite sure it exists. Then |ρ.im − (−R)| = |(−ρ.im) − R| = |(conj ρ).im − R| ✓ (conj_im : (conj ρ).im = −ρ.im ✓). So lower-side clearance ✓.
Also — a subtlety: |t − γ| ≥ | |t| − |γ| | — for t ≥ 0: |t−γ| with γ > 0: fine. For t > 0 and γ < 0: |t−γ| = t+|γ| ≥ R−1-ish huge ✓ no problem. The dangerous case is |γ| ≈ |t| with matching sign ✓ handled via ||t|−|γ|| and the conjugated gap.
OK. Now — how big is this build? Honestly this is the largest analytic estimation in the project. Components:
1. Dirichlet bound lemma (~80 lines).
2. conj-symmetry lemmas (~30).
3. Ncount bridges: window sums from finsums (~80).
4. The series circle bound (~400-500 lines of estimation).
5. logDeriv ζ circle bound assembly (strip via 5c/5d+near-sum, right Dirichlet, left FE + digamma) (~200).
6. Elementary terms (~60).
7. The Fexpr circle bound assembly (~80).
8. The squeeze (Schwarz + limit) + capstone (~150).
Total ~1100-1200 lines — a big session (maybe 1.5). Sub-stage: 5e-v-a (1–3) → 5e-v-b (4) → 5e-v-c (5–8). Commit per part.
Given the session's already-substantial length, let me start with 5e-v-a now. Actually — wait. Let me reconsider scope once more. Is there any way to shrink the series bound? …
Alternative for the series: bound ‖seriesFun s‖ on the circle via the MAX-MODULUS trick differently — no, the series has poles inside.
Hmm, one more consideration — maybe simplify the series bound using the SMARTER comparison: on the circle, |1/(s−ρ) + 1/ρ| ≤ 2R/(‖ρ‖·|s−ρ|)·... what if I use ‖s−ρ‖ ≥ |t−γ| AND combine the shells by |γ| directly (the ordinate-dyadic split I outlined) — that's what I have. Fine.
Let me also double-check the nearZeros-t finset sum ≤ Ncount bridge and the finsum API. And check `riemannZeta_conj` exists.
The count input is settled (`zeta_local_zero_count`, unconditional, mult-weighted). Checking the conj-symmetry and finsum bridge API, then I'll write the 5e-v design into a task list.
tool: Bash
input
{
"command": "cd D:/Python/Quantum/zeta-23-lean/.lake/packages/mathlib && grep -rn \"riemannZeta_conj\\|conj_riemannZeta\" Mathlib/NumberTheory/ -r --include=*.lean | head -3; grep -rn \"theorem finsum_le_finset_sum\\|finsum_mem_eq_toFinset_sum\\|finsum_eq_toFinset_sum\" Mathlib/ -r --include=*.lean | head -5",
"description": "riemannZeta_conj + finsum bridges"
}
raw content_json (database row)
[{"type":"thinking","thinking":"`Ncount T₁ T₂ := ∑ᶠ ρ ∈ zerosIn T₁ T₂, zeroMult ρ` — the finsum over `zerosIn T₁ T₂ := {ρ | IsNontrivialZero ρ ∧ T₁ < ρ.im ∧ ρ.im ≤ T₂}` with zeroMult — mult-weighted ✓, two-sided windows (T₁ < im ≤ T₂) ✓.\n\nSo `zeta_local_zero_count : ∃ A₀ ≥ 1, ∀ t, (Ncount t (t+1) : ℝ) ≤ A₀ * Real.log (|t|+3)` — mult-weighted, all t, UNCONDITIONAL (proved in Zeta23, no perimeter!). This is the count input for the series bound. It also SUBSUMES the perimeter ZeroCountProp for the near-sum (I'll use Ncount-bounds there too — cleaner than mixing).\n\nHmm wait — but the γ-gap circles (5e-i) DID use the perimeter ZeroCountProp. So the capstone ∃ B will be proved under (hZC : ZeroCountProp) as a hypothesis?? Let me check: exists_gapCircle_radius takes (hZC : ZeroCountProp). So the 5e-v capstone theorem will have hZC as a hypothesis — meaning the identity is proved ASSUMING ZeroCountProp — and ZeroCountProp is the declared Trudgian input (perimeter). At ii′-7, SfBoundProp gets proved from the perimeter — fine — the perimeter is declared as a hypothesis to the final theorem anyway (the final `lambda_pos_finite_height_closed` has the 3 perimeter hypotheses... currently (hRH : RHUpTo) (hfinite : LiVerifiedUpTo) (hSf : SfBoundProp); at ii′-7 hSf gets discharged by the identity work using Trudgian N(T)/S(T) — which will be an additional declared perimeter hypothesis (the D-062 §4 plan already lists \"Trudgian N(T)/S(T)\" in the perimeter). OK — consistent with the plan.\n\nNow — Ncount windows vs my needs:\n- nearZeros t sum: nearZeros t = zeros with |γ−t| < 1 (in the disc) — Σ m ≤ Ncount (t−1) t + Ncount t (t+1)?? zerosIn (t−1) (t+1) covers |γ−t| < 1·... zerosIn T₁ T₂ := {T₁ < im ≤ T₂}: (t−1, t+1] ⊇ {|γ−t| < 1} (|γ−t|<1 ⟹ t−1 < γ < t+1 ✓). Ncount (t−1) (t+1) ≤ Ncount (t−1) t + Ncount t (t+1)?? — as finsums over disjoint windows: zerosIn (t−1)(t+1) = zerosIn (t−1) t ∪ zerosIn t (t+1) ✓ disjoint ✓ finsum splits ✓. Each ≤ A₀ log(|t|+3)+ish ✓. But is there a READY lemma Ncount-additivity? Or compute: Ncount t (t+1) for t := |t|±... — the windows for NEGATIVE t: zeta_local_zero_count is ∀ t : ℝ ✓ two-sided ✓.\n\nHmm — actually for simplicity: Σ_{ρ ∈ nearZeros t} m_ρ ≤ Ncount (t−1) (t+1): is there a direct finsum-monotonicity? Ncount (t−1) (t+1) = ∑ᶠ ρ ∈ zerosIn (t−1)(t+1), m_ρ; nearZeros t is a finset of zeros with |γ−t| < 1 ⊆ zerosIn (t−1)(t+1): Σ_{finset} m ≤ ∑ᶠ: `finsum_le_...`? finsum over a set vs a finset subset: ∑ᶠ ρ ∈ S, f ρ = ∑ over the finite support...: Ncount uses ∑ᶠ (finsum) — the zeros are finite in the window (zerosIn_finite ✓ Zeta23). Connection: for finite S: ∑ᶠ ρ ∈ S, f ρ = ∑ over S.toFinset — `finsum_eq_toFinset_sum`? There are API bridges. And nearZeros t is a finset of ℂ-points (with duplicates impossible — finset) — its sum Σ ρ ∈ nearZeros t, m_ρ ≤ Σ over zerosIn.toFinset = Ncount ✓ via subset monotonicity (m ≥ 0... zeroMult ≥ 0 ✓ as ℕ). Workable.\n\nNow — the D-068 C1 radial split detail. Wait, actually — with the Ncount window count available, the series bound can be done via a cleaner ORDINATE-dyadic split (instead of radial): the zeros by |γ| ∈ dyadic shells [2^j, 2^{j+1}] and |γ| < 2: because ‖ρ‖ ≈ |γ| (re ∈ (0,1) ⟹ |γ| ≤ ‖ρ‖ ≤ |γ|+1) — the ordinate split is equivalent up to constants and the window counts are DIRECTLY in ordinates. Term bound: |1/(s−ρ)+1/ρ| = R/(‖ρ‖‖s−ρ‖):\n- |γ| ≤ 2 (low): ‖ρ‖ ≤ 3: count ≤ Ncount(−2, 2]-ish ≤ 4 windows·A₀log5: the 1/‖ρ‖ singularity — finite symbolic constant? With the low set now just {|γ| ≤ 2}: Σ m/‖ρ‖: ‖ρ‖ ≥ |γ|·... ‖ρ‖ ≥ re... no lower bound — symbolic constant C_low := Σ_{|γ|≤2} m/‖ρ‖ (finite, well-defined ✓). Hmm — OR use the zero-free... symbolic is fine, decided.\n- 2 ≤ |γ| ≤ R−2 (lower shells): |s−ρ| ≥ |t−γ| ≥ ... hmm — for the strip arcs (|t| ≈ R): |t−γ| ≥ |t|−|γ| ≥ R−13/R−|γ| — for |γ| ≤ R−2: ≥ 2−13/R ≥ 1 — but sharper for deep shells: |t−γ| ≥ R − |γ| − 13/R ≥ (R−|γ|)/2: term ≤ R/(|γ|·(R−|γ|)/2) = 2R/(|γ|(R−|γ|)): dyadic in BOTH |γ| and R−|γ|... the standard: for |γ| ∈ [2^j, 2^{j+1}] (2^j ≤ R−2): term ≤ 2R/(2^j·(R−2^{j+1}))·... split j ≤ log₂(R/2) (so R−2^{j+1} ≥ R−R = ... hmm need 2^{j+1} ≤ R−2: for 2^{j+1} ≤ R/2: R−2^{j+1} ≥ R/2: term ≤ 2R/(2^j·R/2) = 4/2^j: count ≍ 2^j·A₀log(2^{j+1}): sum ≍ Σ_j 4A₀(j+2) = O((log R)²) ✓; for the TOP band |γ| ∈ [R/2, R−2]: |s−ρ| ≥ |t−γ| ≥ (R−|γ|)/2-ish (|t| ≥ R−13/R): term ≤ 2R/(|γ|·(R−|γ|−13/R))... with |γ| ≥ R/2: ≤ 4/(R−|γ|−13/R): dyadic in d := R−|γ| ∈ [2, R/2]: count of {|γ| ∈ [R−2^{j+1}, R−2^j]} ≍ 2^j windows ≍ 2^j A₀ log R: term ≤ 4/(2^j−13/R) ≤ 8/2^j: shell sum ≍ 2^j·A₀logR·8/2^j = 8A₀logR per shell, j ≤ log R shells: O((log R)²) ✓.\n- critical band |γ| ∈ (R−2, R+2): the γ-gap: |s−ρ| ≥ |t−γ| ≥ 1/(32Ĉ₀) — count ≍ 4 windows ≍ 4A₀log(R+2): sum ≤ 4A₀log(R+2)·32Ĉ₀·(R/(R−2))·... wait term = R/(‖ρ‖|s−ρ|) ≤ R/((R−3)·(1/(32Ĉ₀))) ≤ 64Ĉ₀: sum ≤ 4A₀log(R+2)·64Ĉ₀ = O(Ĉ₀·log R) = O((log R)²) ✓ — BUT this needs |t| ≈ R i.e. STRIP arcs only. On NEAR-AXIS arcs (|t| < 10): |s−ρ| ≥ |re s − re ρ| ≥ re s − 1: right near-axis: re ≥ √(R²−100) ≥ R−1 ⟹ |s−ρ| ≥ R−2 ≥ R/2: term ≤ R/((R−3)·(R/2)) = 2/(R−3) tiny ✓; count O(log R): sum O(log R / R) ✓. Left near-axis: re ≤ −√(R²−100): |s−ρ| ≥ |re s| − 1 ≥ R/2 ✓ same ✓.\n- upper band |γ| ∈ [R+2, 2R]: |s−ρ| ≥ ||t|−|γ|| ≥ (|γ|−R)−13/R ≥ (|γ|−R)/2 (for |γ| ≥ R+2, R ≥ 26): term ≤ 2R/(|γ|(|γ|−R)): dyadic in d = |γ|−R ∈ [2, R]: shell {d ∈ [2^j, 2^{j+1}]}: count ≍ 2^j A₀ log(R+2^{j+1}) ≍ 2^j A₀ log R (2^{j+1} ≤ R... for shells up to d = R): term ≤ 2R/((R)·2^j) = 2/2^j: shell sum ≍ 2^j·A₀logR·2/2^j = 2A₀ log R per shell ⟹ O((log R)²) ✓. Wait — need |γ| ≥ R/2 in the term R/(|γ|·...) ≤ R/((R/2)·...) ✓ |γ| ≥ R ✓.\n- far band |γ| > 2R: |s−ρ| ≥ (|γ|−R)/2 ≥ |γ|/4·... |γ|−R ≥ |γ|/2 (|γ| > 2R ⟹ R < |γ|/2): |s−ρ| ≥ |γ|/4: term ≤ R/(|γ|·|γ|/4) = 4R/|γ|²: dyadic |γ| ∈ [2^j, 2^{j+1}], 2^j ≥ 2R: count ≍ 2^j A₀ log(2^j): shell sum ≍ 4R·2^j·A₀·j/4^j = 4RA₀·j/2^j: Σ_{j ≥ log R} j/2^j ≍ log R/R: total ≍ 4RA₀·(log R)/R = O(log R) ✓.\n\nTotal series bound: O((log R)²) + C_low — even better than the (log R)³ (the fine Ĉ₀-clearance is only 1/(32Ĉ₀) vs D-068's c/(2 log R) — same order since Ĉ₀ ≍ log R). \n\nWait — one important check: on the strip arcs |t−γ| ≥ (R−|γ|)/2 for |γ| ≤ R−2: |t| ≥ √(R²−49/4)... the strip arcs are re ∈ [−5/2, 7/2]·|re| ≤ 7/2 ⟹ |t| = √(R²−re²) ≥ √(R²−12.25) ≥ R − 13/R (R ≥ 4: R−√(R²−12.25) = 12.25/(R+√) ≤ 13/R ✓). So |t−γ| ≥ |t|−|γ| ≥ R − 13/R − |γ| for |γ| ≤ R−2: ≥ 2 − 13/R ≥ 1 (R ≥ 13) ✓ and ≥ (R−|γ|)/2 ⟺ R−13/R−|γ| ≥ (R−|γ|)/2 ⟺ (R−|γ|)/2 ≥ 13/R ⟺ R−|γ| ≥ 26/R ✓ for |γ| ≤ R−2 and R ≥ 4: 26/R ≤ 6.5/... R ≥ 13: 26/R ≤ 2 ✓ (R−|γ| ≥ 2 ≥ 26/R ⟺ R ≥ 13) ✓.\n\nHmm — and the near-axis arcs |t| < 10 ⟹ re > 7/2 or re < −5/2... the strip arcs are exactly where 5c/5d apply: re ∈ [1/2, 7/2] (5c) and re ∈ [−5/2, 1/2] (5d) — together re ∈ [−5/2, 7/2] — and the complement on the circle: re > 7/2 (right near-axis) or re < −5/2 (left near-axis). On the right near-axis: re > 7/2 ≥ 2 ✓ Dirichlet. But ALSO: |t| < 10 happens exactly when re² > R²−100 ⟺ |re| > √(R²−100) ≥ 7/2 for R ≥ 11·... √(R²−100) ≥ 7/2 ⟺ R² ≥ 112.25 ⟺ R ≥ 10.6 ✓ (k ≥ 2). But wait — the strip-arc pieces (5c/5d) require |t| ≥ 10 — on the arc re ∈ [1/2, 7/2] with |s| = R: |t| = √(R²−re²) ≥ √(R²−12.25) ≥ 10 ⟺ R ≥ 10.7 ✓ (k ≥ 2). But ALSO points with re ∈ [−5/2, 1/2] have |t| ≥ √(R²−6.25) ≥ 10 similarly ✓. So for R ≥ 11 (k ≥ 2): every circle point has either |re| ≤ 7/2·... hmm the partition: re ∈ [−5/2, 7/2] (strip, |t| ≥ √(R²−12.25) ≥ 10 ✓) vs re > 7/2 (right near-axis, Dirichlet) vs re < −5/2 (left near-axis, FE). ✓ Clean trichotomy for R ≥ 11. And the series analysis used |t| ≈ R (strip) vs |re| ≈ R (near-axis) consistently ✓. Note the near-axis arcs are re > 7/2 or re < −5/2 — but the \"strip\" piece for the SERIES used |t| ≥ √(R²−12.25) which holds on the whole strip ✓; on the near-axis arcs the series uses |s−ρ| ≥ |re|−1 ≥ 5/2... for the critical-band zeros I said |s−ρ| ≥ re s − 1 ≥ R/2 — for the LEFT arc: |re s| ≥ √(R²−100): |s−ρ| ≥ |re(s−ρ)| = |re s − re ρ| ≥ |re s| − 1 ≥ √(R²−100) − 1 ≥ R/2 for R ≥ 11 ✓ (both arcs: |re s| ≥ √(R²−100) ⟹ |s−ρ| ≥ √(R²−100)−1 ≥ R/2 (R ≥ 11: √(R²−100) ≥ R−50/R ≥ R/2+1 ⟺ R/2 ≥ 1+50/R ⟺ R ≥ 11 ✓)).\n\nThe strip-arc γ-gap clearance: zeros with |γ| ∈ (R−2, R+2) have... wait I need to double check the 5e-i gap applies: the gap is for ALL nontrivial zeros: fine-clearance |ρ.im − R| ≥ 1/(16Ĉ₀) OR coarse ≥ 1 — for zeros with NEGATIVE im near −R: use conj — the conj zero has im = −ρ.im near +R: the gap applies to conj ρ (also nontrivial ✓ need IsNontrivialZero (conj ρ) — build via riemannZeta_conj — CHECK: does Mathlib have riemannZeta_conj? `riemannZeta_conj (s : ℂ) : riemannZeta (conj s) = conj (riemannZeta s)` — I'm quite sure it exists. Then |ρ.im − (−R)| = |(−ρ.im) − R| = |(conj ρ).im − R| ✓ (conj_im : (conj ρ).im = −ρ.im ✓). So lower-side clearance ✓.\n\nAlso — a subtlety: |t − γ| ≥ | |t| − |γ| | — for t ≥ 0: |t−γ| with γ > 0: fine. For t > 0 and γ < 0: |t−γ| = t+|γ| ≥ R−1-ish huge ✓ no problem. The dangerous case is |γ| ≈ |t| with matching sign ✓ handled via ||t|−|γ|| and the conjugated gap.\n\nOK. Now — how big is this build? Honestly this is the largest analytic estimation in the project. Components:\n1. Dirichlet bound lemma (~80 lines).\n2. conj-symmetry lemmas (~30).\n3. Ncount bridges: window sums from finsums (~80).\n4. The series circle bound (~400-500 lines of estimation).\n5. logDeriv ζ circle bound assembly (strip via 5c/5d+near-sum, right Dirichlet, left FE + digamma) (~200).\n6. Elementary terms (~60).\n7. The Fexpr circle bound assembly (~80).\n8. The squeeze (Schwarz + limit) + capstone (~150).\n\nTotal ~1100-1200 lines — a big session (maybe 1.5). Sub-stage: 5e-v-a (1–3) → 5e-v-b (4) → 5e-v-c (5–8). Commit per part.\n\nGiven the session's already-substantial length, let me start with 5e-v-a now. Actually — wait. Let me reconsider scope once more. Is there any way to shrink the series bound? … \n\nAlternative for the series: bound ‖seriesFun s‖ on the circle via the MAX-MODULUS trick differently — no, the series has poles inside.\n\nHmm, one more consideration — maybe simplify the series bound using the SMARTER comparison: on the circle, |1/(s−ρ) + 1/ρ| ≤ 2R/(‖ρ‖·|s−ρ|)·... what if I use ‖s−ρ‖ ≥ |t−γ| AND combine the shells by |γ| directly (the ordinate-dyadic split I outlined) — that's what I have. Fine.\n\nLet me also double-check the nearZeros-t finset sum ≤ Ncount bridge and the finsum API. And check `riemannZeta_conj` exists.","signature":""},{"type":"text","text":"The count input is settled (`zeta_local_zero_count`, unconditional, mult-weighted). Checking the conj-symmetry and finsum bridge API, then I'll write the 5e-v design into a task list."},{"type":"tool_use","id":"Bash_251","name":"Bash","input":{"command":"cd D:/Python/Quantum/zeta-23-lean/.lake/packages/mathlib && grep -rn \"riemannZeta_conj\\|conj_riemannZeta\" Mathlib/NumberTheory/ -r --include=*.lean | head -3; grep -rn \"theorem finsum_le_finset_sum\\|finsum_mem_eq_toFinset_sum\\|finsum_eq_toFinset_sum\" Mathlib/ -r --include=*.lean | head -5","description":"riemannZeta_conj + finsum bridges"},"extra_content":null}]