Current task: —

← Session 29 — ii′-5e-v: circle bound (far-tail + series bounds)

#1632 assistant 2026-08-24 01:44:39.223 UTC · 336618→11739 tok open ⤢
thinking (24678 chars)
Session 033: ii′-5e-v-c — the logDeriv/elem assembly ⟹ ‖Fexpr s‖ ≤ C·(log R)³ on the γ-gap circles. Per protocol, I've already read STATE.md (it's in context from this session's work — the NEXT ACTION is fresh in context). Let me re-read the current STATE.md NEXT ACTION since I just rewrote it, plus check the design in journal-030 (already in context above). From STATE.md (just written): Session 033: **ii′-5e-v-c** — the logDeriv/elem assembly ⟹ ‖Fexpr s‖ ≤ C·(log R)³ on the γ-gap circles (LiCircleBound.lean §10). Design (journal-030): 1. **logDeriv ζ on the circle**, three arc families: - strip arcs (re s ∈ [−5/2, 7/2], |im s| ≥ 10): the 5c/5d capstones `logDeriv_riemannZeta_sub_nearZeros_le` (100000·(log|t|)²) and `..._left` (200000·(log|t|)²) + the near sum Σ_{|γ−t|<1} m/|s−ρ| ≤ 32Ĉ₀·(count): the γ-gap gives |t−γ| ≥ 1/(32Ĉ₀) on these arcs (reuse shell_crit's hsep argument); the count ≤ 2·A₀·log(|t|+4) (two Ncount windows). - right near-axis (re s ≥ √(R²−100) ≥ 2): the Dirichlet bound `norm_logDeriv_zeta_le_dirichlet` (‖ζ′/ζ‖ ≤ dirichletC2). - left near-axis (re s ≤ −√(R²−100)): 5d's `logDeriv_zeta_fe` pointwise + Dirichlet at 1−s + the ΓR brackets via 5e-ii (A)/(B) + `logDeriv_Gammaℝ_eq` (G, im ≠ 0; the REAL point s = −R by closure/continuity). 2. **elems**: 1/s, 1/(s−1) = O(1/R); ψ(s/2)/2 = O(log R): right arc via 5e-ii (B) `norm_digamma_le_of_two_le_re`; strip arcs via 5d's `norm_digamma_sub_log_le_of_two_le_abs_im` (|im(s/2)| ≥ 5) + ‖log w‖ ≤ log‖w‖ + π (LiReflect:414); left arc via 5e-ii (A) `norm_digamma_le_of_dist_nat` with dist(s/2, −ℕ) ≥ 1/8 (from dist(R/2, ℤ) ≥ 1/4 — the hgapInt hypothesis from exists_gapCircle_radius, NOT yet a theorem argument: add it). 3. Assemble: ‖Fexpr s‖ ≤ ‖logDeriv ζ‖ + ‖seriesFun‖ + ‖1/s‖ + ‖1/(s−1)‖ + ‖(log π)/2‖ + ‖ψ(s/2)/2‖ ≤ C·(log R)³ (Ĉ₀(4k+9/2) ≤ Ĉ₀(R+2) via C0hat_mono + R ≤ 4k+3). I need to look at the exact signatures of: - `logDeriv_riemannZeta_sub_nearZeros_le` (5c, LiDisc.lean) - `logDeriv_riemannZeta_sub_nearZeros_le_left` (5d, LiReflect.lean) - `nearZeros` definition - `logDeriv_zeta_fe` (5d) - `norm_digamma_sub_log_le_of_two_le_abs_im` (5d) - `norm_digamma_le_of_two_le_re` (5e-ii, LiDigammaLeft) - `norm_digamma_le_of_dist_nat` (5e-ii) - `logDeriv_Gammaℝ_eq` (5e-ii) - `Complex.digamma` definition/API - Fexpr definition (5e-iv): `Fexpr s := logDeriv ζ s − seriesFun s + 1/s + 1/(s−1) − (log π)/2 + ψ(s/2)/2` where ψ = Complex.digamma. The work plan for 5e-v-c: **Part 1: logDeriv ζ on the circle.** For s with ‖s‖ = R (gap circle, k ≥ 4000): - Case A: |im s| ≥ 10 AND re s ∈ [−5/2, 7/2]: - if re s ≥ 1/2: 5c capstone: ‖logDeriv ζ s − Σ_{ρ ∈ nearZeros t} m/(s−ρ)‖ ≤ 100000·(log|t|)². - if re s ≤ 1/2: 5d capstone: ‖logDeriv ζ s − Σ_{ρ ∈ nearZeros (−t)?}...‖ ≤ 200000·(log|t|)². Wait — the left version has nearZeros too (nearZeros t or nearZeros (−t)?). Let me check the exact statements. - The near sum: Σ_{ρ ∈ nearZeros t} m·‖1/(s−ρ)‖ ≤ (count)·32Ĉ₀ — because for ρ ∈ nearZeros t (|γ−t| < 1, nontrivial zeros): ‖s−ρ‖ ≥ 1/(32Ĉ₀) — the shell_crit arc analysis applies? In shell_crit, hsep was for ρ in the critical SHELL (‖ρ‖ ∈ (R−2, R+2)). For the near sum, ρ ∈ nearZeros t: |γ−t| < 1 ⟹ ‖ρ‖ ≈ |t| ≈ R — need ‖ρ‖ ∈ (R−2, R+2) to reuse hsep: |‖ρ‖−|t|| ≤ |re ρ| ≤ 1 hmm: ‖ρ‖ ≤ |re|+|im| ≤ 1+|γ| ≤ 1+|t|+1 = R+2·... ‖ρ‖ ≥ |γ| ≥ |t|−1 hmm |t| ≤ R: ‖ρ‖ ∈ [|t|−1, |t|+2] — and |t| ∈ [10, R]: ‖ρ‖ ∈ [9, R+2]: NOT necessarily > R−2 (|t| could be < R−1). Hmm — but for those ρ with ‖ρ‖ ≤ R−2: ‖s−ρ‖ ≥ R−‖ρ‖ ≥ 2·... wait no: ‖s−ρ‖ ≥ |‖s‖−‖ρ‖| = R−‖ρ‖ ≥ 2 if ‖ρ‖ ≤ R−2. So: - ρ with ‖ρ‖ > R−2: then ‖ρ‖ ∈ (R−2, R+2): ρ in the critical shell: hsep applies IF ρ ∈ FS (the crit filter — also needs ρ ∈ circleZeros R: ‖ρ‖ < 2R+1 ✓ since ‖ρ‖ ≤ R+2). hsep gives ‖s−ρ‖ ≥ 1/(32Ĉ₀). - ρ with ‖ρ‖ ≤ R−2: ‖s−ρ‖ ≥ 2 ≥ 1/(32Ĉ₀) ✓ (1/(32Ĉ₀) ≤ 1/64 ≤ 2). So uniformly ‖s−ρ‖ ≥ 1/(32Ĉ₀) for ALL ρ ∈ nearZeros t on these arcs. - near sum ≤ 32Ĉ₀·Σ_{nearZeros t} m: the mult-count of nearZeros t: nearZeros t = zeros with |γ−t| < 1 (def? need to check — in LiDisc.lean: nearZeros t := {ρ | IsNontrivialZero ρ ∧ |γ−t| < 1} as a Finset?). Count: Ncount(t−1, t+1] + Ncount(−t−1, −t+1] ≤ 2·A₀·3·log(3(|t|+1)+5)-ish — via the interval count or directly Ncount_le_of_interval_gen: Ncount(t−1, t+1] ≤ A₀·3·log(3·max|t−1||t+1|+5). Or use the existing nearZeros cardinality bound — maybe 5c already has one? Let me check LiDisc for a nearZeros-count lemma. - So strip arcs: ‖logDeriv ζ s‖ ≤ 200000·(log|t|)² + 32Ĉ₀·(near count) ≤ 200000·(log R)² + 32Ĉ₀·2·A₀·3·log(3(R+1)+5) = O((log R)² + Ĉ₀A₀ log R). - Case B: re s ≥ √(R²−100) (right near-axis, |im s| ≤ 10): re s ≥ √(R²−100) ≥ 2 for R ≥ ~11: Dirichlet bound: ‖logDeriv ζ s‖ ≤ dirichletC2. CONSTANT. - Case C: re s ≤ −√(R²−100) (left near-axis, |im s| ≤ 10): use logDeriv_zeta_fe: logDeriv ζ s = −logDeriv ζ(1−s) − [logDeriv ΓR s + logDeriv ΓR(1−s)]: re(1−s) = 1−re s ≥ 1+√(R²−100) ≥ 2: Dirichlet: ‖logDeriv ζ(1−s)‖ ≤ dirichletC2. The ΓR brackets: logDeriv ΓR s + logDeriv ΓR(1−s): via 5e-ii (G): logDeriv ΓR w = −(log π)/2 + ½ψ(w/2) for im w ≠ 0. im s ≠ 0 here (|im s|... wait in case C, |im s| ≤ 10 — could im s = 0? The real point s = −R: re = −R ≤ −√(R²−100) ✓ — so the real point IS in case C! That's why the design says "the REAL point s = −R via the closure/continuity extension". Hmm — this complicates: for im s = 0 (s = −R exactly): logDeriv_zeta_fe needs "good points" (s not a pole/zero/trivial?). ζ(−R) ≠ 0? −R: trivial zeros are at −2n: dist(R/2, ℤ) ≥ 1/4 ⟹ R/2 ∉ ℤ ⟹ R ∉ 2ℤ... wait dist(R/2,ℤ) ≥ 1/4 means R/2 is not an integer, so R is not an even integer — but −R could still be... −2n = −R ⟺ R = 2n even integer — excluded ✓. But ζ(−R) for −R odd-integer or non-integer: nonzero ✓ (only trivial zeros are −2n). But is s = −R an integer at all? R ∈ [4k+5/2, 4k+3]: R = 4k+3 possible (integer, odd) — then −R = −(4k+3) odd negative integer: ζ(−odd) = −B_{n+1}/(n+1) ≠ 0 ✓. And logDeriv_zeta_fe's hypotheses — need to check what "good points" means (probably ζ s ≠ 0, s ≠ 0, s ≠ 1, not trivial zero — exactly the Fexpr good-point conditions). For s = −R: ζ(−R) ≠ 0 ⟸ zero classification (zeros = nontrivial ∪ {0} ∪ {−2n}): −R ∉ those (re < 0, ≠ −2n, ≠ 0) ⟹ ζ(−R) ≠ 0 via zeta_zero_classification ✓. So for ALL points of case C (including s = −R), logDeriv_zeta_fe applies IF its hypotheses are the good-point ones. And logDeriv_Gammaℝ_eq needs im ≠ 0 — at s = −R (im = 0) that fails! The design: "the REAL point s = −R via the closure/continuity extension — the bound set is closed and the im ≠ 0 arc points are dense". So: prove the BOUND for im ≠ 0 points of case C, then extend to s = −R by continuity of logDeriv ΓR (it's continuous at −R since ΓR(−R) ≠ 0 — hmm ΓR(s) = π^{−s/2}Γ(s/2): at s = −R: Γ(−R/2): −R/2: dist(R/2,ℤ) ≥ 1/4 ⟹ −R/2 ∉ ℤ... wait −R/2 near negative integers/half: Γ has poles at 0,−1,−2,...: −R/2 ∈ nonpositive integers iff R/2 ∈ ℕ ⟺ R/2 ∈ {0,1,2,...}: dist(R/2,ℤ) ≥ 1/4 ⟹ R/2 ∉ ℤ ⟹ Γ(−R/2) finite, ΓR(−R) ≠ 0 ✓ so logDeriv ΓR continuous at −R ✓). The continuity extension: the bound ‖g(s)‖ ≤ C on the dense subset {im ≠ 0} ∩ case-C-arc, g continuous at −R ⟹ ‖g(−R)‖ ≤ C (norm continuity + closure: ‖g(−R)‖ = lim ‖g(s_n)‖ ≤ C). In Lean: has a clean path? (Continuous.norm + Tendsto.le_of_tendsto... or IsClosed.mem_of_tendsto). Since the arc is one point, simplest: take a sequence s_n → −R along the arc (s_n = −R + i/n·... wait the arc is |s| = R: points near −R on the circle: s(θ) = R·e^{i(π−1/n)}-ish. Simpler: s_n := ⟨−√(R²−1/n²), 1/n⟩ hmm — or R·cos(π−1/n) + i·R·sin(π−1/n)·... Any sequence on the circle with im ≠ 0 converging to −R: s_n := (R·exp(I·(π − 1/(n+1)))): ‖s_n‖ = R ✓ im = R·sin(π−1/(n+1)) = R·sin(1/(n+1)) > 0 ✓ → 0, re → R·cos π = −R ✓. Tendsto s_n (−R) via the continuous exp. Then the bound at −R by continuity. Hmm — this is doable but adds machinery. ALTERNATIVE cleaner: bound the digamma bracket DIRECTLY at s = −R via 5e-ii (A) `norm_digamma_le_of_dist_nat` (the near-axis bound for re ≤ 2, dist(w,−ℕ) ≥ c — covers REAL points!). And for logDeriv ΓR at s = −R: use the recurrence instead of (G)? (G) needs im ≠ 0. Hmm — what is logDeriv ΓR at a real point? = −(log π)/2 + ½ψ(s/2) — the identity (G) is stated for im ≠ 0. For the real point, prove the same identity by continuity, OR use the fact that logDeriv ΓR = −(logπ)/2 + ½ψ(s/2) holds EVERYWHERE off the poles (the identity theorem: both sides analytic on ℂ \ {poles}, agree on im ≠ 0 dense ⟹ agree everywhere in the domain). Mathlib identity principle: AnalyticOnNhd.eq_of_frequently_eq... That's the analytic-continuation route — heavier. OR: bound the BRACKET ‖logDeriv ΓR s + logDeriv ΓR(1−s)‖ directly with the m-fold shift machinery from 5d/5e-ii at the real point... Simplest robust: the continuity-of-the-BOUND route (sequence + tendsto): it only needs continuity of the bracket (analytic at −R) and the bound on the dense set. ~30-40 lines. I'll do that. Actually wait — even simpler: prove the case-C bound for ALL s in case C with im s ≠ 0, and handle s = −R SEPARATELY by the same digamma machinery: at s = −R: logDeriv ΓR(−R) = −(logπ)/2 + ½ψ(−R/2) — again the identity needed. Hmm no. OK let me now think about what the digamma bracket bound IS. ψ(s/2)/2 + ψ((1−s)/2)/2 — wait no: the FE bracket is logDeriv ΓR s + logDeriv ΓR(1−s) = −log π + ½[ψ(s/2) + ψ((1−s)/2)] (via (G) for im ≠ 0). Bound: - ψ(s/2): case C: re(s/2) ≤ −√(R²−100)/2 ≤ ~−R/2: far left: 5e-ii (A): dist(s/2, −ℕ) ≥ 1/8 (from dist(R/2,ℤ) ≥ 1/4 and |re(s/2) + R/2| ≤ |im s|/(2R)-ish: s/2 = (re s + i·im s)/2: re(s/2) = (re s)/2 ∈ [−R/2, −√(R²−100)/2]: so s/2 has re ∈ [−R/2, −√(R²−100)/2] and |im(s/2)| ≤ 5: the distance from s/2 to −ℕ: |s/2 − (−n)| for n ∈ ℕ: closest −n to re(s/2) = re s/2: re s/2 ∈ [−R/2, −√(R²−100)/2]: |re s/2 − (−n)| ≥ dist(re s/2, −ℕ) hmm and R/2 has dist(R/2, ℤ) ≥ 1/4: re s/2 = (re s)/2 with re s ∈ [−R, −√(R²−100)]: re s/2 ∈ [−R/2, −√(R²−100)/2]: dist(re s/2, −ℕ): let m := the nearest integer to re s/2... hmm −ℕ = {0,−1,−2,...}: re s/2 ∈ [−R/2, ...]: distance from re s/2 to −ℕ = distance to the nearest nonpositive integer — the design (journal-030) says: "left arc via 5e-ii (A) with dist(s/2, −ℕ) ≥ 1/8 (from dist(R/2, ℤ) ≥ 1/4 and |re s/2| ∈ [√(R²−100)/2, R/2] ⊆ [R/2 − 26/R, R/2], R ≥ 208)": so re s/2 ∈ [−R/2, −R/2+26/R]: the point −R/2 has dist(R/2, ℤ) ≥ 1/4 ⟹ dist(−R/2, −ℕ·... dist(−R/2, ℤ) = dist(R/2,ℤ) ≥ 1/4: and re s/2 ∈ [−R/2, −R/2+26/R]: |re s/2 − (−R/2)| ≤ 26/R ≤ 1/8 (R ≥ 208): so dist(re s/2, −ℕ) ≥ 1/4 − 1/8 = 1/8 ✓ (triangle: dist to nearest integer ≥ dist(−R/2,ℤ) − |re s/2−(−R/2)| ≥ 1/4 − 1/8). And |s/2 − (−n)| ≥ |re(s/2 −(−n))| = |re s/2 + n| ≥ dist(re s/2, −ℕ) ≥ 1/8 ✓. So dist(s/2, −ℕ) ≥ 1/8 (with the set-distance definition from 5e-ii (A) — need to check the exact form: `norm_digamma_le_of_dist_nat` — what does it take? dist(w, −ℕ) ≥ c probably as ∀ n : ℕ, c ≤ ‖w + n‖ or similar. Check the signature.) - ψ((1−s)/2): re((1−s)/2) = (1−re s)/2 ≥ (1+√(R²−100))/2 ≥ ~R/2 ≥ 2: 5e-ii (B): ‖ψ((1−s)/2)‖ ≤ 20·log(2+‖(1−s)/2‖) ✓ (B needs re ≥ 2 and |im| ≤ 5: |im((1−s)/2)| = |im s|/2 ≤ 5 ✓). - So bracket ≤ log π + ½[((46+2/(1/8)) + 23·log(2+‖s/2‖)) + 20·log(2+‖(1−s)/2‖)] = O(log R) — via 5e-ii (A): ‖ψ(w)‖ ≤ (46 + 2/c) + 23·log(2+‖w‖) with c = 1/8: 46+16 = 62. So ‖ψ(s/2)‖ ≤ 62 + 23·log(2+R/2) = O(log R). - Thus case C: ‖logDeriv ζ s‖ ≤ dirichletC2 + log π + ½(62 + 23·log(2+R/2)) + ½·20·log(2+(R+1)/2) = O(log R). **Part 2: the elementary terms.** - ‖1/s‖ = 1/R ≤ 1. - ‖1/(s−1)‖ = 1/‖s−1‖ ≤ 1/(R−1) ≤ 1 (s ≠ 1 ✓ since ‖s‖ = R > 1). - ‖(log π)/2‖: constant ≤ (log π)/2 — need log π bounded: log π ≤ 2 (π ≤ e² ⟸ π ≤ 4·... π < 3.15 ≤ e² ✓ via Real.pi_lt_315 or similar). - ψ(s/2)/2: - right near-axis (case B: re s ≥ √(R²−100)): re(s/2) ≥ √(R²−100)/2 ≥ 2 (R ≥ 11): |im(s/2)| ≤ 5: 5e-ii (B): ‖ψ(s/2)‖ ≤ 20·log(2+‖s/2‖) ≤ 20·log(2+R/2) = O(log R). - strip arcs (re ∈ [−5/2, 7/2], |im| ≥ 10): |im(s/2)| ≥ 5: 5d's `norm_digamma_sub_log_le_of_two_le_abs_im`: ‖ψ(w) − log w‖ ≤ 3 for |im w| ≥ 2: with w = s/2: ‖ψ(s/2)‖ ≤ ‖log(s/2)‖ + 3 ≤ (log‖s/2‖ + π) + 3 (‖log w‖ ≤ log‖w‖ + π for complex log — LiReflect:414 per journal-030: there's a lemma `norm_log_le` in LiReflect). log‖s/2‖ = log(R/2) = O(log R). - left near-axis (case C): same as the case-C digamma above: ‖ψ(s/2)‖ ≤ 62 + 23·log(2+R/2) via 5e-ii (A) with c = 1/8. **Part 3: assembly.** ‖Fexpr s‖ ≤ ‖logDeriv ζ s‖ + ‖seriesFun s‖ + ‖1/s‖ + ‖1/(s−1)‖ + ‖log π /2‖ + ‖ψ(s/2)/2‖. The Fexpr definition: `Fexpr s := logDeriv ζ s − seriesFun s + 1/s + 1/(s−1) − (log π)/2 + ψ(s/2)/2` — check exact form in LiFEntire.lean. Then norm ≤ sum of norms (norm_add_le / norm_sub_le chain). Each piece: - ‖logDeriv ζ s‖: case-dependent: strip: 200000·(log R)² + 96·Ĉ₀·A₀·(2L)-ish; right: dirichletC2; left: dirichletC2 + log π + 62/2+... Let me just compute a uniform bound: ‖logDeriv ζ s‖ ≤ 200000·(log R)² + 200·Ĉ₀·A₀·log R + dirichletC2 + log π + 62 + 43·log R·... — uniform across cases. Then total: ‖Fexpr s‖ ≤ [200000·L² + 200Ĉ₀A₀L + dirichletC2 + log π + 62 + 43L] + [2·lowZeroConst + 2900A₀Ĉ₀L²] + [1] + [1] + [log π/2] + [½(62+23·log(2+R/2)) or ½(20·log(2+R/2)+3+π)]. Everything ≤ C·A₀·Ĉ₀·L² for a suitable C with the lowZeroConst and dirichletC2 as additive symbolic constants. For the squeeze (5e-v-d), the bound just needs to be o(R): (log R)²·Ĉ₀ ~ (log R)³·loglog — the squeeze works with any polylog. Form: ‖Fexpr s‖ ≤ 2·lowZeroConst + dirichletC2 + C·A₀·Ĉ₀·(log R)² — hmm — Ĉ₀ here is Ĉ₀(4k+9/2); convert to Ĉ₀(R+2) via C0hat_mono (R ≤ 4k+3 ⟹ 4k+9/2 ≤ R+2 hmm 4k+4.5 vs R+2 ≥ 4k+4.5 ⟺ R ≥ 4k+2.5 ✓ so Ĉ₀(4k+9/2) ≤ Ĉ₀(R+2)?? mono needs a ≤ b: 4k+9/2 ≤ R+2 ⟺ 4k+5/2 ≤ R ✓ YES). So bound in terms of Ĉ₀(R+2) — cleaner for the squeeze (R-dependent only). Let me design the final form: ‖Fexpr s‖ ≤ 2·lowZeroConst + dirichletC2 + 400000·A0count·C0hat (R+2) · (Real.log R)^2 (picking a round C = 400000 that absorbs everything: the strip 200000·L² + 96Ĉ₀A₀·2L ≤ 200000L² + 192Ĉ₀A₀L² (L ≥ 1) ≤ (200000 + 192·... hmm — 200000·L² alone needs to fit inside 400000·A₀·Ĉ₀·L²: A₀ ≥ 1, Ĉ₀ ≥ 2: 400000·A₀·Ĉ₀·L² ≥ 800000·L² ≥ 200000·L² ✓ huge slack. The series 2900·A₀·Ĉ₀·L² ✓ fits. The rest are lower-order or symbolic constants absorbed into the additive 2·lowZeroConst + dirichletC2 term... but some are log-terms without Ĉ₀/A₀: 62, log π, 43L, 62+23·log(2+R/2): these need absorption into A₀·Ĉ₀·L² as well: 62+23·log(2+R/2) ≤ 62+23·(L+... log(2+R/2) ≤ log(2R) hmm for R ≥ 4: 2+R/2 ≤ R (R ≥ 4): ≤ log R = L: so 62+23L ≤ (62/2+23)·Ĉ₀·L²·... Ĉ₀ ≥ 2, L ≥ 9: 62 ≤ 62·Ĉ₀·L²/(2·81)·... simplest: 62 ≤ 62·A₀·Ĉ₀·L²·(1/(1·2·81))·... let me just make the constant bigger and absorb: each of 62, 43L, log π ≤ 100·L² ≤ 50·Ĉ₀·A₀·L² (A₀ ≥ 1, Ĉ₀ ≥ 2, L² ≥ 1). And 1+1 (the 1/s, 1/(s−1)). And dirichletC2 + 2·lowZeroConst stay symbolic additive. Final form: ‖Fexpr s‖ ≤ 2·lowZeroConst + dirichletC2 + 400000·A0count·C0hat (R+2)·(Real.log R)^2 — need to verify every piece ≤ its share. Let me budget: total allowance 400000·A₀Ĉ₀L²: - series: 2900·A₀Ĉ₀L² (direct). - strip logDeriv: 200000·L² + 192·Ĉ₀A₀·L·... let me recompute the near sum: 32Ĉ₀·(count): count ≤ 2·A₀·3·log(3(|t|+1)+5)·... hmm the near-window: nearZeros t — what's its def? Probably {ρ nontrivial ∧ |ρ.im − t| < 1} or zerosIn(t−1, t+1]. Count via Ncount: Ncount(t−1, t+1] + Ncount(−t−1, −t+1]: each ≤ A₀·(2+1)·log(3·max+5) = 3A₀·log(3(|t|+1)+5): total 6A₀·log(3(|t|+1)+5) ≤ 6A₀·2L = 12A₀L (3(|t|+1)+5 ≤ 3(R+1)+5 = 3R+8 ≤ 4R: log(4R) ≤ 2L ✓). So near sum ≤ 32Ĉ₀·12A₀L = 384Ĉ₀A₀L ≤ 384Ĉ₀A₀L². Strip total: 200000·L² + 384·Ĉ₀A₀L² ≤ 200000·A₀Ĉ₀L²/2·... 200000·L² ≤ 100000·A₀Ĉ₀L² (A₀Ĉ₀ ≥ 2): so strip ≤ 100384·A₀Ĉ₀L². - left: dirichletC2 (symbolic, goes to the additive) + log π + 62/2... wait: left logDeriv ≤ dirichletC2 + [log π + ½(62 + 23·log(2+‖s/2‖)) + ½·20·log(2+‖(1−s)/2‖)]: the bracket ≤ log π + 31 + 11.5·log(2+R/2) + 10·log(2+(R+1)/2): log(2+(R+1)/2) ≤ log(2+R/2+1/2) hmm ≤ log(R) for R ≥ 5 (2+(R+1)/2 = (R+5)/2 ≤ R ⟺ 5 ≤ R ✓): so ≤ log π + 31 + 21.5·L. The digamma piece here is SEPARATE from the elem ψ(s/2)/2 — careful not to double count: case C's elem ψ(s/2)/2 = the SAME ψ(s/2) bound (62+23L)/2. And the FE bracket has its own ψ(s/2) + ψ((1−s)/2). So in case C: logDeriv uses ψ(s/2) and ψ((1−s)/2); the elem uses ψ(s/2) again. Fine — just count each occurrence. - So universal assembly (bounding each piece by the max over cases): ‖logDeriv ζ‖ ≤ max(strip, right, left) ≤ 100384·A₀Ĉ₀L² + dirichletC2 + (log π + 31 + 21.5·L) — hmm the left's bracket. Uniform: ‖logDeriv ζ‖ ≤ 100384·A₀Ĉ₀L² + dirichletC2 + log π + 31 + 22·L (the non-Ĉ₀ part only from the left bracket; absorb: log π + 31 + 22L ≤ (2+31+22)·Ĉ₀A₀L²/2... log π ≤ 2, so ≤ 55·L·... ≤ 55·A₀Ĉ₀L² (L ≥ 1, A₀Ĉ₀ ≥ 2 ⟹ A₀Ĉ₀L² ≥ 2L² ≥ 2·... 55·L ≤ 55·A₀Ĉ₀L² ⟸ A₀Ĉ₀L ≥ 1 ✓). So ‖logDeriv ζ‖ ≤ dirichletC2 + 100439·A₀Ĉ₀L². Hmm wait — but the LEFT case's logDeriv ≤ dirichletC2 + bracket — no 200000·L² there; the strip's 200000·L² + near — no bracket. The uniform bound takes the max: ≤ 200000·L² + 384Ĉ₀A₀L² + dirichletC2 + log π + 31 + 22L ≤ dirichletC2 + 100000·A₀Ĉ₀L²·... 200000·L² = 100000·2·L² ≤ 100000·A₀Ĉ₀L²: total ≤ dirichletC2 + (100000 + 384 + 55)·A₀Ĉ₀L² = dirichletC2 + 100439·A₀Ĉ₀L² ✓. - ψ(s/2)/2 ≤ max(right: 10·log(2+R/2) ≤ 10L, strip: (L + π + 3)/2 ≤ (2L+3+2)/2 hmm: ‖log(s/2)‖ + 3 ≤ log(R/2) + π + 3 = L − log2 + π + 3 ≤ L + 2 + 3 = L+5 (log π ≤ 2 hmm π the number: ‖log w‖ ≤ log‖w‖ + π where π ≈ 3.14: so ≤ log(R/2) + π + 3 ≤ L + 3.15 + 3 = L + 6.15: /2: ≤ (L+7)/2), left: (62 + 23L)/2): uniform ≤ 31 + 12·L ≤ (31+12)·A₀Ĉ₀L²/2·... 31+12L ≤ 43L² ≤ 22·A₀Ĉ₀L² (A₀Ĉ₀ ≥ 2) ✓. So ψ-elem ≤ 31 + 12·L ≤ 22·A₀Ĉ₀L² + ·... let me absorb: 31 + 12L ≤ 43·A₀Ĉ₀L² (A₀Ĉ₀L² ≥ 2·81 = 162 ≥ 43... need 31+12L ≤ 43·A₀Ĉ₀L²: 12L ≤ 12·A₀Ĉ₀L² ✓; 31 ≤ 31·A₀Ĉ₀L²/162·... A₀Ĉ₀L² ≥ 162: 31 ≤ 31/162·A₀Ĉ₀L² ≤ 0.2·A₀Ĉ₀L²: so 31+12L ≤ 12·A₀Ĉ₀L² + 0.2·A₀Ĉ₀L² ≤ 13·A₀Ĉ₀L² ✓). - 1/s + 1/(s−1) ≤ 2 ≤ 2·A₀Ĉ₀L²/324·... tiny: 2 ≤ A₀Ĉ₀L² (A₀Ĉ₀L² ≥ 162 ≥ 2 ✓). - ‖(log π)/2‖ ≤ 1 ≤ A₀Ĉ₀L². - series: 2900·A₀Ĉ₀L² + 2·lowZeroConst. TOTAL: ‖Fexpr‖ ≤ [dirichletC2 + 100439] + [13] + [1] + [1] + [2900] A₀Ĉ₀L² + 2·lowZeroConst = 2·lowZeroConst + dirichletC2 + 103355·A₀Ĉ₀L² ≤ 2·lowZeroConst + dirichletC2 + 400000·A₀Ĉ₀L² ✓ plenty of room. Hmm wait — one more check on the strip-arc split: the 5c capstone is for re s ∈ [1/2, 7/2] and the 5d LEFT capstone for re s ∈ [−5/2, 1/2]. The strip arcs of the circle: |im s| ≥ 10 and re s ∈ [−√(R²−100), √(R²−100)] — re s can be up to √(R²−100) ≈ R huge! The 5c/5d capstones only cover re ∈ [−5/2, 7/2]! For re s > 7/2 (with |im s| ≥ 10): that's covered by... hmm — re s ∈ (7/2, √(R²−100)) with |im s| ≥ 10: which bound? re s > 7/2 ≥ 2: DIRICHLET! (re ≥ 2 ✓). Similarly re s < −5/2 with |im s| ≥ 10: the LEFT-plane: 5d's FE route (like case C but with |im| ≥ 10 instead of ≤ 10): the digamma bounds differ: ψ(s/2) with |im(s/2)| ≥ 5: use 5d's norm_digamma_sub_log (like the strip elem) instead of 5e-ii (A)! So actually the case split is better organized as: **By re s**: (i) re s ≥ 2: Dirichlet (covers right near-axis AND right-strip re ∈ [2, √(R²−100)]). (ii) re s ∈ [−5/2, 2]: hmm — 5c needs re ∈ [1/2, 7/2]; 5d-left needs re ∈ [−5/2, 1/2]: union [−5/2, 7/2] hmm but the capstones ALSO need |t| ≥ 10. For re ∈ [−5/2, 2] with |im| < 10: those are near-axis LEFT-ish points (re ∈ [−5/2, 2] ⊂ [−√(R²−100), √(R²−100)] for R big... wait |im| < 10 ⟹ |re| ≥ √(R²−100) ≫ 2: contradiction: |im| < 10 ⟹ re² ≥ R²−100 ⟹ |re| ≥ √(R²−100) ≥ ~R: so re ∈ [−5/2, 2] with |im| < 10 is IMPOSSIBLE for R ≥ 11 (|re| ≥ √(R²−100) > 2). GOOD: so the region re ∈ [−5/2, 2] only occurs with |im| ≥ 10 ✓ capstones apply (5c for [1/2, 2], 5d-left for [−5/2, 1/2] — union covers [−5/2, 2] ✓ overlap at 1/2 ✓). (iii) re s < −5/2: the FE route: logDeriv ζ s = −logDeriv ζ(1−s) − bracket: re(1−s) ≥ 1+5/2 = 7/2 ≥ 2: Dirichlet at 1−s ✓. The digamma bracket: ψ(s/2): re(s/2) < −5/4: two sub-cases: |im(s/2)| ≥ 5 (|im s| ≥ 10): 5d's norm_digamma_sub_log (‖ψ−log‖ ≤ 3 ⟹ ‖ψ‖ ≤ ‖log‖+3 ≤ log‖s/2‖+π+3); |im(s/2)| < 5 (|im s| < 10 — the left near-axis): 5e-ii (A) with dist ≥ 1/8 ✓. And ψ((1−s)/2): re((1−s)/2) = (1−re s)/2 ≥ (1+5/2)/2 = 7/4 ≥ ... hmm (B) needs re ≥ 2: (1−re s)/2 with re s < −5/2: (1−re s)/2 > (1+5/2)/2 = 1.75 — NOT ≥ 2 always! For re s ∈ (−5, −5/2): (1−re s)/2 ∈ (1.75, 3): below 2. Hmm — 5e-ii (B) needs re w ≥ 2. For re w ∈ [1.75, 2): use... the digamma recurrence ψ(w) = ψ(w+1) − 1/w: ψ((1−s)/2) = ψ((1−s)/2+1) − 1/((1−s)/2): re((1−s)/2+1) = (3−re s)/2 ≥ 2.75 ≥ 2 ✓ (B) applies with the shift: ‖ψ(w)‖ ≤ ‖ψ(w+1)‖ + 1/‖w‖ ≤ 20·log(2+‖w+1‖) + 1/1.75-ish. Or just use (A) for the whole ψ((1−s)/2)?? (A) is for re ≤ 2 with dist(w,−ℕ) ≥ c: re((1−s)/2) ≥ 1.75 — could apply (A) with c = 1: dist((1−s)/2, −ℕ) ≥ 1.75 ≥ 1 ✓ (re ≥ 1.75 ⟹ distance to −ℕ ≥ 1.75). Hmm (A) gives ‖ψ‖ ≤ (46+2/c) + 23·log(2+‖w‖) = 48 + 23·log(...). Uniform: for ψ((1−s)/2) use (A) with c = 1: ≤ 48 + 23·log(2+(R+1)/2) = O(log R) ✓ no recurrence needed. But wait — (A)'s hypothesis: re w ≤ 2: re((1−s)/2) ≥ 1.75 could EXCEED 2 (re s < −3: (1−s)/2's re > 2). Then use (B) (re ≥ 2). Split: re((1−s)/2) ≤ 2 vs ≥ 2: (A) with c = 1 hmm — (A) needs re ≤ 2 AND dist ≥ c: for re ≤ 2: dist ≥ re ≥ 1.75 ≥ 1 ✓; for re ≥ 2: (B) with |im| ≤ 5: |im((1−s)/2)| = |im s|/2: in case (iii), |im s| can be ≥ 10 (the left-strip)! Then |im((1−s)/2)| ≥ 5: (B) needs |im| ≤ 5?? Let me check 5e-ii (B)'s signature: `norm_digamma_le_of_two_le_re` — from STATE: "(B): ‖ψ‖ ≤ 20 log(2+‖w‖), re ≥ 2" — the journal-030 design says "right arc via 5e-ii (B) (re ≥ 2, |im| ≤ 5)". So (B) has an |im| ≤ 5 hypothesis?! For |im((1−s)/2)| ≥ 5: use 5d's norm_digamma_sub_log (|im| ≥ 2): ‖ψ−log‖ ≤ 3: ‖ψ‖ ≤ ‖log w‖+3. So ψ((1−s)/2): |im| ≥ 5: sub-log bound; |im| < 5: re ≥ 2: (B); re ∈ [1.75, 2]: (A) c = 1. Ugh — three sub-cases but each simple. OR unify: for ANY w with re w ≥ 1.75: ‖ψ(w)‖ ≤ 48 + 23·log(2+‖w‖)?? — hmm (A) requires re ≤ 2. For re > 2 with |im| ≥ 5 the sub-log bound ≤ log‖w‖ + π + 3 ≤ 48+23·log(2+‖w‖) ✓ (log‖w‖ ≤ log(2+‖w‖)·... log(2+‖w‖) ≥ log 2 > 0: π+3 ≤ 7 ≤ 48 ✓ and log‖w‖ ≤ 23·log(2+‖w‖) ✓). For re > 2 with |im| < 5: (B): 20·log(2+‖w‖) ≤ 48+23·log(2+‖w‖) ✓. For re ∈ [1.75, 2]: (A) c = 1: (46+2) + 23·log(2+‖w‖) = 48+23·log(2+‖w‖) ✓ EXACT. So uniform: re w ≥ 1.75 ⟹ ‖ψ(w)‖ ≤ 48 + 23·log(2+‖w‖). A small lemma `digamma_right_le` combining the three. ✓ Similarly for ψ(s/2) (re(s/2) < −5/4): sub-cases on |im(s/2)|: ≥ 5: sub-log: ‖ψ‖ ≤ log‖s/2‖ + π + 3; < 5: (A) c = 1/8: 62 + 23·log(2+‖s/2‖). Uniform: ‖ψ(s/2)‖ ≤ 62 + 23·log(2+‖s/2‖) (sub-log ≤ log‖s/2‖+π+3 ≤ 23·log(2+‖s/2‖) + 62 ✓ since π+3 ≤ 7 ≤ 62 and log‖s/2‖ ≤ 23·log(2+‖s/2‖) ✓ — wait log‖s/2‖ vs 23·log(2+‖s/2‖): log(2+x) ≥ log x hmm x = ‖s/2‖: log(2+x) ≥ log x ✓ so log x ≤ log(2+x) ≤ 23·log(2+x) ✓.) So: case (iii) bracket: ‖logDeriv ΓR s + logDeriv ΓR(1−s)‖ ≤ log π + ½(‖ψ(s/2)‖ + ‖ψ((1−s)/2)‖) ≤ log π + ½(62 + 23·log(2+‖s/2‖)) + ½(48 + 23·log(2+‖(1−s)/2‖)) ≤ 2 + 55 + 12·log(2+R/2) + 12·log(2+(R+1)/2)·... ≤ 57 + 24·L-ish. And case (ii) the near-sum — for re s ∈ [−5/2, 2] (with |im s| ≥ 10 automatic): the capstones have the near-sum Σ_{ρ ∈ nearZeros t} (zeroMult ρ)/(s−ρ) — need the EXACT statements of the 5c/5d capstones. Let me look at LiDisc.lean's capstone and LiReflect.lean's. Also for case (ii)'s elem ψ(s/2)/2: |im(s/2)| ≥ 5 ✓ sub-log: ‖ψ(s/2)‖ ≤ ‖log(s/2)‖ + 3 ≤ log(R/2) + π + 3. And case (i) (re ≥ 2) elem ψ(s/2): re(s/2) ≥ 1: hmm — (B) needs re ≥ 2: re(s/2) ∈ [1, ...): |im(s/2)| ≤ 5 (case (i) includes both |im| ≤ 10-ish... case (i) is re s ≥ 2 with ANY im: |im(s/2)| arbitrary! For |im(s/2)| ≥ 2: sub-log bound (|im w| ≥ 2 ✓). For |im(s/2)| < 2: re(s/2) ≥ 1: (A) with c = 1: dist(s/2, −ℕ) ≥ 1 (re ≥ 1) ⟹ 48+23·log(2+‖s/2‖) ✓. Uniform: ‖ψ(s/2)‖ ≤ 48 + 23·log(2+R/2)·... sub-log: ‖ψ‖ ≤ log‖s/2‖+π+3 ≤ 48+23·log(2+‖s/2‖) ✓ covered. So for ALL s on the circle: ‖ψ(s/2)‖ ≤ 62 + 23·log(2+R/2) UNIFORMLY (the max of the three: 48, 62, sub-log-absorbed) — a single elem bound! ‖ψ(s/2)/2‖ ≤ 31 + 12·log(2+R/2) ≤ 31 + 12·L. OK — so the digamma-right lemma `digamma_right_le`: for re w ≥ 1.75: ‖ψ w‖ ≤ 48 + 23·log(2+‖w‖). Via: |im w| ≥ 5: sub-log; else re ≥ 2: (B); else (A) c = 1. Now — let me check the exact signatures I need. Let me look at: 1. LiDisc.lean capstone `logDeriv_riemannZeta_sub_nearZeros_le` — the nearZeros def + the exact statement. 2. LiReflect.lean: `logDeriv_riemannZeta_sub_nearZeros_le_left`, `logDeriv_zeta_fe`, `norm_digamma_sub_log_le_of_two_le_abs_im`, the norm-log lemma (‖log w‖ ≤ log‖w‖ + π). 3. LiDigammaLeft.lean: `norm_digamma_le_of_two_le_re` (B), `norm_digamma_le_of_dist_nat` (A), `logDeriv_Gammaℝ_eq` (G). 4. LiFEntire.lean: Fexpr's exact definition. Let me grep those.
Continuing with session 033: **ii′-5e-v-c** — the logDeriv/elem assembly ⟹ ‖Fexpr‖ ≤ C·(log R)³. STATE.md's NEXT ACTION is fresh in context (I wrote it at yesterday's closure). First, pull the exact signatures of the 5c/5d/5e-ii capstones I'll assemble.
tool: Grep ok
input
{
  "pattern": "(theorem logDeriv_riemannZeta_sub_nearZeros_le|def nearZeros|theorem logDeriv_zeta_fe|theorem norm_digamma_sub_log_le_of_two_le_abs_im|theorem logDeriv_riemannZeta_sub_nearZeros_le_left)",
  "path": "D:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1",
  "output_mode": "content",
  "-n": true,
  "-A": 12
}
result 2026-08-24 01:44:39Z → 2026-08-24 01:44:39Z
mode='content' num_files=0 filenames=[] content='research\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean:283:theorem logDeriv_zeta_fe {s : ℂ} (hs0 : s ≠ 0) (hs1 : s ≠ 1)\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-284-    (hG: Complex.Gammaℝ s ≠ 0) (hζ : riemannZeta s ≠ 0)\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-285-    (hd: DifferentiableAt ℂ Complex.Gammaℝ s)\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-286-    (h1s0: 1 - s ≠ 0) (h1s1 : 1 - s ≠ 1)\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-287-    (hG1: Complex.Gammaℝ (1 - s) ≠ 0) (hζ1 : riemannZeta (1 - s) ≠ 0)\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-288-    (hd1: DifferentiableAt ℂ Complex.Gammaℝ (1 - s)) :\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-289-    logDeriv riemannZeta s\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-290-      = - logDeriv riemannZeta (1 - s)\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-291-        - (logDeriv Complex.Gammaℝ s + logDeriv Complex.Gammaℝ (1 - s)):= by\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-292-  have h1:= logDeriv_completedZeta_eq_add hs0 hs1 hG hζ hd\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-293-  have h2:= logDeriv_completedZeta_eq_add h1s0 h1s1 hG1 hζ1 hd1\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-294-  have h3:= logDeriv_completedZeta_neg_one_sub h1s0 h1s1\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-295-  linear_combination -h1 - h2 + h3\n--\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean:640:theorem norm_digamma_sub_log_le_of_two_le_abs_im {w : ℂ} (hw : 2 ≤ |w.im|) :\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-641-    ‖Complex.digamma w - Complex.log w‖ ≤ 3:= by\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-642-  -- setup\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-643-  have him: w.im ≠ 0 := by\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-644-    intro h\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-645-    rw [h, abs_zero] at hw\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-646-    norm_num at hw\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-647-  have hc0: (0 : ℝ) < |w.im| := by linarith [hw]\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-648-  set n:= ⌈|w.re|⌉₊ + 2 with hn\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-649-  set v:= w + (n : ℂ) with hv\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-650-  have hnv: (0 : ℝ) < w.re + (n : ℝ) := by\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-651-    have h1: (n : ℝ) = (⌈|w.re|⌉₊ : ℝ) + 2 := by rw [hn]; push_cast; ring\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-652-    have h2: |w.re| ≤ (⌈|w.re|⌉₊ : ℝ) := Nat.le_ceil _\n--\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean:928:theorem logDeriv_riemannZeta_sub_nearZeros_le_left {t : ℝ} (ht : 10 ≤ |t|) {s : ℂ}\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-929-    (hsim: s.im = t) (hσlo : -5 / 2 ≤ s.re) (hσhi : s.re ≤ 1 / 2)\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-930-    (hs0: riemannZeta s ≠ 0) :\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-931-    ‖logDeriv riemannZeta s - ∑ ρ ∈ nearZeros t, (zeroMult ρ: ℂ) / (s - ρ)‖\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-932-      ≤ 200000 * (Real.log |t|) ^ 2:= by\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-933-  have ht0: (0 : ℝ) < |t| := lt_of_lt_of_le (by norm_num) ht\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-934-  have htim: s.im ≠ 0 := by\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-935-    rw [hsim]\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-936-    intro h\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-937-    rw [h, abs_zero] at ht\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-938-    norm_num at ht\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-939-  have hne0: s ≠ 0 := fun h => by rw [h] at htim; simp at htim\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiReflect.lean-940-  have hne1: s ≠ 1 := fun h => by rw [h] at htim; simp at htim\n--\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean:970:def nearZeros (t : ℝ) : Finset ℂ :=\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-971-  (zeroDiscFinset t).filter fun ρ => |ρ.im - t| < 1\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-972-\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-973-theorem mem_nearZeros {t: ℝ} {ρ : ℂ} :\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-974-    ρ ∈ nearZeros t ↔ ρ ∈ zeroDiscFinset t ∧ |ρ.im - t| < 1:= Finset.mem_filter\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-975-\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-976-/-- The affine map is injective. -/\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-977-theorem affMap_injOn {t: ℝ} (s : Finset ℂ) :\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-978-    Set.InjOn (fun w: ℂ => discCenter t + (5 / 2 : ℂ) * w) s :=\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-979-  fun a _ b _ hab => mul_left_cancel₀ (by norm_num: (5 / 2 : ℂ) ≠ 0) (add_left_cancel hab)\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-980-\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-981-/-- zeroMult at the affine image equals the scaled order. -/\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-982-theorem zeroMult_affMap {t: ℝ} (ht : 10 ≤ |t|) {w : ℂ} (hw : w ∈ collZeros ht) :\n--\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean:1076:theorem logDeriv_riemannZeta_sub_nearZeros_le {t : ℝ} (ht : 10 ≤ |t|) {s : ℂ}\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-1077-    (hsim: s.im = t) (hσlo : 1 / 2 ≤ s.re) (hσhi : s.re ≤ 7 / 2)\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-1078-    (hs0: riemannZeta s ≠ 0) :\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-1079-    ‖logDeriv riemannZeta s - ∑ ρ ∈ nearZeros t, (zeroMult ρ: ℂ) / (s - ρ)‖\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-1080-      ≤ 100000 * (Real.log |t|) ^ 2:= by\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-1081-  classical\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-1082-  set w₀: ℂ := (2 / 5 : ℂ) * (s - discCenter t) with hw₀def\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-1083-  have haff: discCenter t + (5 / 2 : ℂ) * w₀ = s := by rw [hw₀def]; ring\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-1084-  have hw₀norm: ‖w₀‖ ≤ 3 / 5 := by\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-1085-    have hsnorm: ‖s - discCenter t‖ = |s.re - 2| := by\nresearch\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-1086-      have heq: s - discCenter t = ((s.re - 2 : ℝ) : ℂ) := by\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-1087-        apply Complex.ext_iff.mpr\nD:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean-1088-        constructor' num_lines=69 num_matches=None applied_limit=None applied_offset=None
raw content_json (database row)
[{"type":"thinking","thinking":"Session 033: ii′-5e-v-c — the logDeriv/elem assembly ⟹ ‖Fexpr s‖ ≤ C·(log R)³ on the γ-gap circles. Per protocol, I've already read STATE.md (it's in context from this session's work — the NEXT ACTION is fresh in context). Let me re-read the current STATE.md NEXT ACTION since I just rewrote it, plus check the design in journal-030 (already in context above).\n\nFrom STATE.md (just written):\n\nSession 033: **ii′-5e-v-c** — the logDeriv/elem assembly ⟹ ‖Fexpr s‖ ≤ C·(log R)³ on the γ-gap circles (LiCircleBound.lean §10).\nDesign (journal-030):\n1. **logDeriv ζ on the circle**, three arc families:\n   - strip arcs (re s ∈ [−5/2, 7/2], |im s| ≥ 10): the 5c/5d capstones `logDeriv_riemannZeta_sub_nearZeros_le` (100000·(log|t|)²) and `..._left` (200000·(log|t|)²) + the near sum Σ_{|γ−t|<1} m/|s−ρ| ≤ 32Ĉ₀·(count): the γ-gap gives |t−γ| ≥ 1/(32Ĉ₀) on these arcs (reuse shell_crit's hsep argument); the count ≤ 2·A₀·log(|t|+4) (two Ncount windows).\n   - right near-axis (re s ≥ √(R²−100) ≥ 2): the Dirichlet bound `norm_logDeriv_zeta_le_dirichlet` (‖ζ′/ζ‖ ≤ dirichletC2).\n   - left near-axis (re s ≤ −√(R²−100)): 5d's `logDeriv_zeta_fe` pointwise + Dirichlet at 1−s + the ΓR brackets via 5e-ii (A)/(B) + `logDeriv_Gammaℝ_eq` (G, im ≠ 0; the REAL point s = −R by closure/continuity).\n2. **elems**: 1/s, 1/(s−1) = O(1/R); ψ(s/2)/2 = O(log R): right arc via 5e-ii (B) `norm_digamma_le_of_two_le_re`; strip arcs via 5d's `norm_digamma_sub_log_le_of_two_le_abs_im` (|im(s/2)| ≥ 5) + ‖log w‖ ≤ log‖w‖ + π (LiReflect:414); left arc via 5e-ii (A) `norm_digamma_le_of_dist_nat` with dist(s/2, −ℕ) ≥ 1/8 (from dist(R/2, ℤ) ≥ 1/4 — the hgapInt hypothesis from exists_gapCircle_radius, NOT yet a theorem argument: add it).\n3. Assemble: ‖Fexpr s‖ ≤ ‖logDeriv ζ‖ + ‖seriesFun‖ + ‖1/s‖ + ‖1/(s−1)‖ + ‖(log π)/2‖ + ‖ψ(s/2)/2‖ ≤ C·(log R)³ (Ĉ₀(4k+9/2) ≤ Ĉ₀(R+2) via C0hat_mono + R ≤ 4k+3).\n\nI need to look at the exact signatures of:\n- `logDeriv_riemannZeta_sub_nearZeros_le` (5c, LiDisc.lean)\n- `logDeriv_riemannZeta_sub_nearZeros_le_left` (5d, LiReflect.lean)\n- `nearZeros` definition\n- `logDeriv_zeta_fe` (5d)\n- `norm_digamma_sub_log_le_of_two_le_abs_im` (5d)\n- `norm_digamma_le_of_two_le_re` (5e-ii, LiDigammaLeft)\n- `norm_digamma_le_of_dist_nat` (5e-ii)\n- `logDeriv_Gammaℝ_eq` (5e-ii)\n- `Complex.digamma` definition/API\n- Fexpr definition (5e-iv): `Fexpr s := logDeriv ζ s − seriesFun s + 1/s + 1/(s−1) − (log π)/2 + ψ(s/2)/2` where ψ = Complex.digamma.\n\nThe work plan for 5e-v-c:\n\n**Part 1: logDeriv ζ on the circle.**\nFor s with ‖s‖ = R (gap circle, k ≥ 4000):\n- Case A: |im s| ≥ 10 AND re s ∈ [−5/2, 7/2]: \n  - if re s ≥ 1/2: 5c capstone: ‖logDeriv ζ s − Σ_{ρ ∈ nearZeros t} m/(s−ρ)‖ ≤ 100000·(log|t|)².\n  - if re s ≤ 1/2: 5d capstone: ‖logDeriv ζ s − Σ_{ρ ∈ nearZeros (−t)?}...‖ ≤ 200000·(log|t|)². Wait — the left version has nearZeros too (nearZeros t or nearZeros (−t)?). Let me check the exact statements.\n  - The near sum: Σ_{ρ ∈ nearZeros t} m·‖1/(s−ρ)‖ ≤ (count)·32Ĉ₀ — because for ρ ∈ nearZeros t (|γ−t| < 1, nontrivial zeros): ‖s−ρ‖ ≥ 1/(32Ĉ₀) — the shell_crit arc analysis applies? In shell_crit, hsep was for ρ in the critical SHELL (‖ρ‖ ∈ (R−2, R+2)). For the near sum, ρ ∈ nearZeros t: |γ−t| < 1 ⟹ ‖ρ‖ ≈ |t| ≈ R — need ‖ρ‖ ∈ (R−2, R+2) to reuse hsep: |‖ρ‖−|t|| ≤ |re ρ| ≤ 1 hmm: ‖ρ‖ ≤ |re|+|im| ≤ 1+|γ| ≤ 1+|t|+1 = R+2·... ‖ρ‖ ≥ |γ| ≥ |t|−1 hmm |t| ≤ R: ‖ρ‖ ∈ [|t|−1, |t|+2] — and |t| ∈ [10, R]: ‖ρ‖ ∈ [9, R+2]: NOT necessarily > R−2 (|t| could be < R−1). Hmm — but for those ρ with ‖ρ‖ ≤ R−2: ‖s−ρ‖ ≥ R−‖ρ‖ ≥ 2·... wait no: ‖s−ρ‖ ≥ |‖s‖−‖ρ‖| = R−‖ρ‖ ≥ 2 if ‖ρ‖ ≤ R−2. So:\n    - ρ with ‖ρ‖ > R−2: then ‖ρ‖ ∈ (R−2, R+2): ρ in the critical shell: hsep applies IF ρ ∈ FS (the crit filter — also needs ρ ∈ circleZeros R: ‖ρ‖ < 2R+1 ✓ since ‖ρ‖ ≤ R+2). hsep gives ‖s−ρ‖ ≥ 1/(32Ĉ₀).\n    - ρ with ‖ρ‖ ≤ R−2: ‖s−ρ‖ ≥ 2 ≥ 1/(32Ĉ₀) ✓ (1/(32Ĉ₀) ≤ 1/64 ≤ 2).\n    So uniformly ‖s−ρ‖ ≥ 1/(32Ĉ₀) for ALL ρ ∈ nearZeros t on these arcs. \n  - near sum ≤ 32Ĉ₀·Σ_{nearZeros t} m: the mult-count of nearZeros t: nearZeros t = zeros with |γ−t| < 1 (def? need to check — in LiDisc.lean: nearZeros t := {ρ | IsNontrivialZero ρ ∧ |γ−t| < 1} as a Finset?). Count: Ncount(t−1, t+1] + Ncount(−t−1, −t+1] ≤ 2·A₀·3·log(3(|t|+1)+5)-ish — via the interval count or directly Ncount_le_of_interval_gen: Ncount(t−1, t+1] ≤ A₀·3·log(3·max|t−1||t+1|+5). Or use the existing nearZeros cardinality bound — maybe 5c already has one? Let me check LiDisc for a nearZeros-count lemma.\n  - So strip arcs: ‖logDeriv ζ s‖ ≤ 200000·(log|t|)² + 32Ĉ₀·(near count) ≤ 200000·(log R)² + 32Ĉ₀·2·A₀·3·log(3(R+1)+5) = O((log R)² + Ĉ₀A₀ log R).\n- Case B: re s ≥ √(R²−100) (right near-axis, |im s| ≤ 10): re s ≥ √(R²−100) ≥ 2 for R ≥ ~11: Dirichlet bound: ‖logDeriv ζ s‖ ≤ dirichletC2. CONSTANT.\n- Case C: re s ≤ −√(R²−100) (left near-axis, |im s| ≤ 10): use logDeriv_zeta_fe: logDeriv ζ s = −logDeriv ζ(1−s) − [logDeriv ΓR s + logDeriv ΓR(1−s)]: re(1−s) = 1−re s ≥ 1+√(R²−100) ≥ 2: Dirichlet: ‖logDeriv ζ(1−s)‖ ≤ dirichletC2. The ΓR brackets: logDeriv ΓR s + logDeriv ΓR(1−s): via 5e-ii (G): logDeriv ΓR w = −(log π)/2 + ½ψ(w/2) for im w ≠ 0. im s ≠ 0 here (|im s|... wait in case C, |im s| ≤ 10 — could im s = 0? The real point s = −R: re = −R ≤ −√(R²−100) ✓ — so the real point IS in case C! That's why the design says \"the REAL point s = −R via the closure/continuity extension\". Hmm — this complicates: for im s = 0 (s = −R exactly): logDeriv_zeta_fe needs \"good points\" (s not a pole/zero/trivial?). ζ(−R) ≠ 0? −R: trivial zeros are at −2n: dist(R/2, ℤ) ≥ 1/4 ⟹ R/2 ∉ ℤ ⟹ R ∉ 2ℤ... wait dist(R/2,ℤ) ≥ 1/4 means R/2 is not an integer, so R is not an even integer — but −R could still be... −2n = −R ⟺ R = 2n even integer — excluded ✓. But ζ(−R) for −R odd-integer or non-integer: nonzero ✓ (only trivial zeros are −2n). But is s = −R an integer at all? R ∈ [4k+5/2, 4k+3]: R = 4k+3 possible (integer, odd) — then −R = −(4k+3) odd negative integer: ζ(−odd) = −B_{n+1}/(n+1) ≠ 0 ✓. And logDeriv_zeta_fe's hypotheses — need to check what \"good points\" means (probably ζ s ≠ 0, s ≠ 0, s ≠ 1, not trivial zero — exactly the Fexpr good-point conditions). For s = −R: ζ(−R) ≠ 0 ⟸ zero classification (zeros = nontrivial ∪ {0} ∪ {−2n}): −R ∉ those (re < 0, ≠ −2n, ≠ 0) ⟹ ζ(−R) ≠ 0 via zeta_zero_classification ✓.\n  So for ALL points of case C (including s = −R), logDeriv_zeta_fe applies IF its hypotheses are the good-point ones. And logDeriv_Gammaℝ_eq needs im ≠ 0 — at s = −R (im = 0) that fails! The design: \"the REAL point s = −R via the closure/continuity extension — the bound set is closed and the im ≠ 0 arc points are dense\". So: prove the BOUND for im ≠ 0 points of case C, then extend to s = −R by continuity of logDeriv ΓR (it's continuous at −R since ΓR(−R) ≠ 0 — hmm ΓR(s) = π^{−s/2}Γ(s/2): at s = −R: Γ(−R/2): −R/2: dist(R/2,ℤ) ≥ 1/4 ⟹ −R/2 ∉ ℤ... wait −R/2 near negative integers/half: Γ has poles at 0,−1,−2,...: −R/2 ∈ nonpositive integers iff R/2 ∈ ℕ ⟺ R/2 ∈ {0,1,2,...}: dist(R/2,ℤ) ≥ 1/4 ⟹ R/2 ∉ ℤ ⟹ Γ(−R/2) finite, ΓR(−R) ≠ 0 ✓ so logDeriv ΓR continuous at −R ✓). The continuity extension: the bound ‖g(s)‖ ≤ C on the dense subset {im ≠ 0} ∩ case-C-arc, g continuous at −R ⟹ ‖g(−R)‖ ≤ C (norm continuity + closure: ‖g(−R)‖ = lim ‖g(s_n)‖ ≤ C). In Lean: has a clean path? (Continuous.norm + Tendsto.le_of_tendsto... or IsClosed.mem_of_tendsto). Since the arc is one point, simplest: take a sequence s_n → −R along the arc (s_n = −R + i/n·... wait the arc is |s| = R: points near −R on the circle: s(θ) = R·e^{i(π−1/n)}-ish. Simpler: s_n := ⟨−√(R²−1/n²), 1/n⟩ hmm — or R·cos(π−1/n) + i·R·sin(π−1/n)·... Any sequence on the circle with im ≠ 0 converging to −R: s_n := (R·exp(I·(π − 1/(n+1)))): ‖s_n‖ = R ✓ im = R·sin(π−1/(n+1)) = R·sin(1/(n+1)) > 0 ✓ → 0, re → R·cos π = −R ✓. Tendsto s_n (−R) via the continuous exp. Then the bound at −R by continuity.\n  \n  Hmm — this is doable but adds machinery. ALTERNATIVE cleaner: bound the digamma bracket DIRECTLY at s = −R via 5e-ii (A) `norm_digamma_le_of_dist_nat` (the near-axis bound for re ≤ 2, dist(w,−ℕ) ≥ c — covers REAL points!). And for logDeriv ΓR at s = −R: use the recurrence instead of (G)? (G) needs im ≠ 0. Hmm — what is logDeriv ΓR at a real point? = −(log π)/2 + ½ψ(s/2) — the identity (G) is stated for im ≠ 0. For the real point, prove the same identity by continuity, OR use the fact that logDeriv ΓR = −(logπ)/2 + ½ψ(s/2) holds EVERYWHERE off the poles (the identity theorem: both sides analytic on ℂ \\ {poles}, agree on im ≠ 0 dense ⟹ agree everywhere in the domain). Mathlib identity principle: AnalyticOnNhd.eq_of_frequently_eq... That's the analytic-continuation route — heavier. OR: bound the BRACKET ‖logDeriv ΓR s + logDeriv ΓR(1−s)‖ directly with the m-fold shift machinery from 5d/5e-ii at the real point... \n\n  Simplest robust: the continuity-of-the-BOUND route (sequence + tendsto): it only needs continuity of the bracket (analytic at −R) and the bound on the dense set. ~30-40 lines. I'll do that.\n\n  Actually wait — even simpler: prove the case-C bound for ALL s in case C with im s ≠ 0, and handle s = −R SEPARATELY by the same digamma machinery: at s = −R: logDeriv ΓR(−R) = −(logπ)/2 + ½ψ(−R/2) — again the identity needed. Hmm no.\n\n  OK let me now think about what the digamma bracket bound IS. ψ(s/2)/2 + ψ((1−s)/2)/2 — wait no: the FE bracket is logDeriv ΓR s + logDeriv ΓR(1−s) = −log π + ½[ψ(s/2) + ψ((1−s)/2)] (via (G) for im ≠ 0). Bound: \n  - ψ(s/2): case C: re(s/2) ≤ −√(R²−100)/2 ≤ ~−R/2: far left: 5e-ii (A): dist(s/2, −ℕ) ≥ 1/8 (from dist(R/2,ℤ) ≥ 1/4 and |re(s/2) + R/2| ≤ |im s|/(2R)-ish: s/2 = (re s + i·im s)/2: re(s/2) = (re s)/2 ∈ [−R/2, −√(R²−100)/2]: so s/2 has re ∈ [−R/2, −√(R²−100)/2] and |im(s/2)| ≤ 5: the distance from s/2 to −ℕ: |s/2 − (−n)| for n ∈ ℕ: closest −n to re(s/2) = re s/2: re s/2 ∈ [−R/2, −√(R²−100)/2]: |re s/2 − (−n)| ≥ dist(re s/2, −ℕ) hmm and R/2 has dist(R/2, ℤ) ≥ 1/4: re s/2 = (re s)/2 with re s ∈ [−R, −√(R²−100)]: re s/2 ∈ [−R/2, −√(R²−100)/2]: dist(re s/2, −ℕ): let m := the nearest integer to re s/2... hmm −ℕ = {0,−1,−2,...}: re s/2 ∈ [−R/2, ...]: distance from re s/2 to −ℕ = distance to the nearest nonpositive integer — the design (journal-030) says: \"left arc via 5e-ii (A) with dist(s/2, −ℕ) ≥ 1/8 (from dist(R/2, ℤ) ≥ 1/4 and |re s/2| ∈ [√(R²−100)/2, R/2] ⊆ [R/2 − 26/R, R/2], R ≥ 208)\": so re s/2 ∈ [−R/2, −R/2+26/R]: the point −R/2 has dist(R/2, ℤ) ≥ 1/4 ⟹ dist(−R/2, −ℕ·... dist(−R/2, ℤ) = dist(R/2,ℤ) ≥ 1/4: and re s/2 ∈ [−R/2, −R/2+26/R]: |re s/2 − (−R/2)| ≤ 26/R ≤ 1/8 (R ≥ 208): so dist(re s/2, −ℕ) ≥ 1/4 − 1/8 = 1/8 ✓ (triangle: dist to nearest integer ≥ dist(−R/2,ℤ) − |re s/2−(−R/2)| ≥ 1/4 − 1/8). And |s/2 − (−n)| ≥ |re(s/2 −(−n))| = |re s/2 + n| ≥ dist(re s/2, −ℕ) ≥ 1/8 ✓. So dist(s/2, −ℕ) ≥ 1/8 (with the set-distance definition from 5e-ii (A) — need to check the exact form: `norm_digamma_le_of_dist_nat` — what does it take? dist(w, −ℕ) ≥ c probably as ∀ n : ℕ, c ≤ ‖w + n‖ or similar. Check the signature.)\n  - ψ((1−s)/2): re((1−s)/2) = (1−re s)/2 ≥ (1+√(R²−100))/2 ≥ ~R/2 ≥ 2: 5e-ii (B): ‖ψ((1−s)/2)‖ ≤ 20·log(2+‖(1−s)/2‖) ✓ (B needs re ≥ 2 and |im| ≤ 5: |im((1−s)/2)| = |im s|/2 ≤ 5 ✓).\n  - So bracket ≤ log π + ½[((46+2/(1/8)) + 23·log(2+‖s/2‖)) + 20·log(2+‖(1−s)/2‖)] = O(log R) — via 5e-ii (A): ‖ψ(w)‖ ≤ (46 + 2/c) + 23·log(2+‖w‖) with c = 1/8: 46+16 = 62. So ‖ψ(s/2)‖ ≤ 62 + 23·log(2+R/2) = O(log R).\n  - Thus case C: ‖logDeriv ζ s‖ ≤ dirichletC2 + log π + ½(62 + 23·log(2+R/2)) + ½·20·log(2+(R+1)/2) = O(log R).\n\n**Part 2: the elementary terms.**\n- ‖1/s‖ = 1/R ≤ 1.\n- ‖1/(s−1)‖ = 1/‖s−1‖ ≤ 1/(R−1) ≤ 1 (s ≠ 1 ✓ since ‖s‖ = R > 1).\n- ‖(log π)/2‖: constant ≤ (log π)/2 — need log π bounded: log π ≤ 2 (π ≤ e² ⟸ π ≤ 4·... π < 3.15 ≤ e² ✓ via Real.pi_lt_315 or similar).\n- ψ(s/2)/2: \n  - right near-axis (case B: re s ≥ √(R²−100)): re(s/2) ≥ √(R²−100)/2 ≥ 2 (R ≥ 11): |im(s/2)| ≤ 5: 5e-ii (B): ‖ψ(s/2)‖ ≤ 20·log(2+‖s/2‖) ≤ 20·log(2+R/2) = O(log R).\n  - strip arcs (re ∈ [−5/2, 7/2], |im| ≥ 10): |im(s/2)| ≥ 5: 5d's `norm_digamma_sub_log_le_of_two_le_abs_im`: ‖ψ(w) − log w‖ ≤ 3 for |im w| ≥ 2: with w = s/2: ‖ψ(s/2)‖ ≤ ‖log(s/2)‖ + 3 ≤ (log‖s/2‖ + π) + 3 (‖log w‖ ≤ log‖w‖ + π for complex log — LiReflect:414 per journal-030: there's a lemma `norm_log_le` in LiReflect). log‖s/2‖ = log(R/2) = O(log R).\n  - left near-axis (case C): same as the case-C digamma above: ‖ψ(s/2)‖ ≤ 62 + 23·log(2+R/2) via 5e-ii (A) with c = 1/8.\n\n**Part 3: assembly.**\n‖Fexpr s‖ ≤ ‖logDeriv ζ s‖ + ‖seriesFun s‖ + ‖1/s‖ + ‖1/(s−1)‖ + ‖log π /2‖ + ‖ψ(s/2)/2‖.\nThe Fexpr definition: `Fexpr s := logDeriv ζ s − seriesFun s + 1/s + 1/(s−1) − (log π)/2 + ψ(s/2)/2` — check exact form in LiFEntire.lean. Then norm ≤ sum of norms (norm_add_le / norm_sub_le chain). Each piece:\n- ‖logDeriv ζ s‖: case-dependent: strip: 200000·(log R)² + 96·Ĉ₀·A₀·(2L)-ish; right: dirichletC2; left: dirichletC2 + log π + 62/2+... Let me just compute a uniform bound: ‖logDeriv ζ s‖ ≤ 200000·(log R)² + 200·Ĉ₀·A₀·log R + dirichletC2 + log π + 62 + 43·log R·... — uniform across cases. Then total:\n  ‖Fexpr s‖ ≤ [200000·L² + 200Ĉ₀A₀L + dirichletC2 + log π + 62 + 43L] + [2·lowZeroConst + 2900A₀Ĉ₀L²] + [1] + [1] + [log π/2] + [½(62+23·log(2+R/2)) or ½(20·log(2+R/2)+3+π)].\n  Everything ≤ C·A₀·Ĉ₀·L² for a suitable C with the lowZeroConst and dirichletC2 as additive symbolic constants. For the squeeze (5e-v-d), the bound just needs to be o(R): (log R)²·Ĉ₀ ~ (log R)³·loglog — the squeeze works with any polylog. Form: ‖Fexpr s‖ ≤ 2·lowZeroConst + dirichletC2 + C·A₀·Ĉ₀·(log R)² — hmm — Ĉ₀ here is Ĉ₀(4k+9/2); convert to Ĉ₀(R+2) via C0hat_mono (R ≤ 4k+3 ⟹ 4k+9/2 ≤ R+2 hmm 4k+4.5 vs R+2 ≥ 4k+4.5 ⟺ R ≥ 4k+2.5 ✓ so Ĉ₀(4k+9/2) ≤ Ĉ₀(R+2)?? mono needs a ≤ b: 4k+9/2 ≤ R+2 ⟺ 4k+5/2 ≤ R ✓ YES). So bound in terms of Ĉ₀(R+2) — cleaner for the squeeze (R-dependent only). \n\n  Let me design the final form: \n  ‖Fexpr s‖ ≤ 2·lowZeroConst + dirichletC2 + 400000·A0count·C0hat (R+2) · (Real.log R)^2\n  (picking a round C = 400000 that absorbs everything: the strip 200000·L² + 96Ĉ₀A₀·2L ≤ 200000L² + 192Ĉ₀A₀L² (L ≥ 1) ≤ (200000 + 192·... hmm — 200000·L² alone needs to fit inside 400000·A₀·Ĉ₀·L²: A₀ ≥ 1, Ĉ₀ ≥ 2: 400000·A₀·Ĉ₀·L² ≥ 800000·L² ≥ 200000·L² ✓ huge slack. The series 2900·A₀·Ĉ₀·L² ✓ fits. The rest are lower-order or symbolic constants absorbed into the additive 2·lowZeroConst + dirichletC2 term... but some are log-terms without Ĉ₀/A₀: 62, log π, 43L, 62+23·log(2+R/2): these need absorption into A₀·Ĉ₀·L² as well: 62+23·log(2+R/2) ≤ 62+23·(L+... log(2+R/2) ≤ log(2R) hmm for R ≥ 4: 2+R/2 ≤ R (R ≥ 4): ≤ log R = L: so 62+23L ≤ (62/2+23)·Ĉ₀·L²·... Ĉ₀ ≥ 2, L ≥ 9: 62 ≤ 62·Ĉ₀·L²/(2·81)·... simplest: 62 ≤ 62·A₀·Ĉ₀·L²·(1/(1·2·81))·... let me just make the constant bigger and absorb: each of 62, 43L, log π ≤ 100·L² ≤ 50·Ĉ₀·A₀·L² (A₀ ≥ 1, Ĉ₀ ≥ 2, L² ≥ 1). And 1+1 (the 1/s, 1/(s−1)). And dirichletC2 + 2·lowZeroConst stay symbolic additive.\n  \n  Final form: ‖Fexpr s‖ ≤ 2·lowZeroConst + dirichletC2 + 400000·A0count·C0hat (R+2)·(Real.log R)^2 — need to verify every piece ≤ its share. Let me budget: total allowance 400000·A₀Ĉ₀L²:\n  - series: 2900·A₀Ĉ₀L² (direct).\n  - strip logDeriv: 200000·L² + 192·Ĉ₀A₀·L·... let me recompute the near sum: 32Ĉ₀·(count): count ≤ 2·A₀·3·log(3(|t|+1)+5)·... hmm the near-window: nearZeros t — what's its def? Probably {ρ nontrivial ∧ |ρ.im − t| < 1} or zerosIn(t−1, t+1]. Count via Ncount: Ncount(t−1, t+1] + Ncount(−t−1, −t+1]: each ≤ A₀·(2+1)·log(3·max+5) = 3A₀·log(3(|t|+1)+5): total 6A₀·log(3(|t|+1)+5) ≤ 6A₀·2L = 12A₀L (3(|t|+1)+5 ≤ 3(R+1)+5 = 3R+8 ≤ 4R: log(4R) ≤ 2L ✓). So near sum ≤ 32Ĉ₀·12A₀L = 384Ĉ₀A₀L ≤ 384Ĉ₀A₀L².\n    Strip total: 200000·L² + 384·Ĉ₀A₀L² ≤ 200000·A₀Ĉ₀L²/2·... 200000·L² ≤ 100000·A₀Ĉ₀L² (A₀Ĉ₀ ≥ 2): so strip ≤ 100384·A₀Ĉ₀L².\n  - left: dirichletC2 (symbolic, goes to the additive) + log π + 62/2... wait: left logDeriv ≤ dirichletC2 + [log π + ½(62 + 23·log(2+‖s/2‖)) + ½·20·log(2+‖(1−s)/2‖)]: the bracket ≤ log π + 31 + 11.5·log(2+R/2) + 10·log(2+(R+1)/2): log(2+(R+1)/2) ≤ log(2+R/2+1/2) hmm ≤ log(R) for R ≥ 5 (2+(R+1)/2 = (R+5)/2 ≤ R ⟺ 5 ≤ R ✓): so ≤ log π + 31 + 21.5·L. The digamma piece here is SEPARATE from the elem ψ(s/2)/2 — careful not to double count: case C's elem ψ(s/2)/2 = the SAME ψ(s/2) bound (62+23L)/2. And the FE bracket has its own ψ(s/2) + ψ((1−s)/2). So in case C: logDeriv uses ψ(s/2) and ψ((1−s)/2); the elem uses ψ(s/2) again. Fine — just count each occurrence.\n  - So universal assembly (bounding each piece by the max over cases):\n    ‖logDeriv ζ‖ ≤ max(strip, right, left) ≤ 100384·A₀Ĉ₀L² + dirichletC2 + (log π + 31 + 21.5·L) — hmm the left's bracket. Uniform: ‖logDeriv ζ‖ ≤ 100384·A₀Ĉ₀L² + dirichletC2 + log π + 31 + 22·L (the non-Ĉ₀ part only from the left bracket; absorb: log π + 31 + 22L ≤ (2+31+22)·Ĉ₀A₀L²/2... log π ≤ 2, so ≤ 55·L·... ≤ 55·A₀Ĉ₀L² (L ≥ 1, A₀Ĉ₀ ≥ 2 ⟹ A₀Ĉ₀L² ≥ 2L² ≥ 2·... 55·L ≤ 55·A₀Ĉ₀L² ⟸ A₀Ĉ₀L ≥ 1 ✓). So ‖logDeriv ζ‖ ≤ dirichletC2 + 100439·A₀Ĉ₀L².\n    Hmm wait — but the LEFT case's logDeriv ≤ dirichletC2 + bracket — no 200000·L² there; the strip's 200000·L² + near — no bracket. The uniform bound takes the max: ≤ 200000·L² + 384Ĉ₀A₀L² + dirichletC2 + log π + 31 + 22L ≤ dirichletC2 + 100000·A₀Ĉ₀L²·... 200000·L² = 100000·2·L² ≤ 100000·A₀Ĉ₀L²: total ≤ dirichletC2 + (100000 + 384 + 55)·A₀Ĉ₀L² = dirichletC2 + 100439·A₀Ĉ₀L² ✓.\n  - ψ(s/2)/2 ≤ max(right: 10·log(2+R/2) ≤ 10L, strip: (L + π + 3)/2 ≤ (2L+3+2)/2 hmm: ‖log(s/2)‖ + 3 ≤ log(R/2) + π + 3 = L − log2 + π + 3 ≤ L + 2 + 3 = L+5 (log π ≤ 2 hmm π the number: ‖log w‖ ≤ log‖w‖ + π where π ≈ 3.14: so ≤ log(R/2) + π + 3 ≤ L + 3.15 + 3 = L + 6.15: /2: ≤ (L+7)/2), left: (62 + 23L)/2): uniform ≤ 31 + 12·L ≤ (31+12)·A₀Ĉ₀L²/2·... 31+12L ≤ 43L² ≤ 22·A₀Ĉ₀L² (A₀Ĉ₀ ≥ 2) ✓. So ψ-elem ≤ 31 + 12·L ≤ 22·A₀Ĉ₀L² + ·... let me absorb: 31 + 12L ≤ 43·A₀Ĉ₀L² (A₀Ĉ₀L² ≥ 2·81 = 162 ≥ 43... need 31+12L ≤ 43·A₀Ĉ₀L²: 12L ≤ 12·A₀Ĉ₀L² ✓; 31 ≤ 31·A₀Ĉ₀L²/162·... A₀Ĉ₀L² ≥ 162: 31 ≤ 31/162·A₀Ĉ₀L² ≤ 0.2·A₀Ĉ₀L²: so 31+12L ≤ 12·A₀Ĉ₀L² + 0.2·A₀Ĉ₀L² ≤ 13·A₀Ĉ₀L² ✓).\n  - 1/s + 1/(s−1) ≤ 2 ≤ 2·A₀Ĉ₀L²/324·... tiny: 2 ≤ A₀Ĉ₀L² (A₀Ĉ₀L² ≥ 162 ≥ 2 ✓).\n  - ‖(log π)/2‖ ≤ 1 ≤ A₀Ĉ₀L².\n  - series: 2900·A₀Ĉ₀L² + 2·lowZeroConst.\n  TOTAL: ‖Fexpr‖ ≤ [dirichletC2 + 100439] + [13] + [1] + [1] + [2900] A₀Ĉ₀L² + 2·lowZeroConst = 2·lowZeroConst + dirichletC2 + 103355·A₀Ĉ₀L² ≤ 2·lowZeroConst + dirichletC2 + 400000·A₀Ĉ₀L² ✓ plenty of room. \n\n  Hmm wait — one more check on the strip-arc split: the 5c capstone is for re s ∈ [1/2, 7/2] and the 5d LEFT capstone for re s ∈ [−5/2, 1/2]. The strip arcs of the circle: |im s| ≥ 10 and re s ∈ [−√(R²−100), √(R²−100)] — re s can be up to √(R²−100) ≈ R huge! The 5c/5d capstones only cover re ∈ [−5/2, 7/2]! For re s > 7/2 (with |im s| ≥ 10): that's covered by... hmm — re s ∈ (7/2, √(R²−100)) with |im s| ≥ 10: which bound? re s > 7/2 ≥ 2: DIRICHLET! (re ≥ 2 ✓). Similarly re s < −5/2 with |im s| ≥ 10: the LEFT-plane: 5d's FE route (like case C but with |im| ≥ 10 instead of ≤ 10): the digamma bounds differ: ψ(s/2) with |im(s/2)| ≥ 5: use 5d's norm_digamma_sub_log (like the strip elem) instead of 5e-ii (A)! So actually the case split is better organized as:\n  \n  **By re s**: (i) re s ≥ 2: Dirichlet (covers right near-axis AND right-strip re ∈ [2, √(R²−100)]). (ii) re s ∈ [−5/2, 2]: hmm — 5c needs re ∈ [1/2, 7/2]; 5d-left needs re ∈ [−5/2, 1/2]: union [−5/2, 7/2] hmm but the capstones ALSO need |t| ≥ 10. For re ∈ [−5/2, 2] with |im| < 10: those are near-axis LEFT-ish points (re ∈ [−5/2, 2] ⊂ [−√(R²−100), √(R²−100)] for R big... wait |im| < 10 ⟹ |re| ≥ √(R²−100) ≫ 2: contradiction: |im| < 10 ⟹ re² ≥ R²−100 ⟹ |re| ≥ √(R²−100) ≥ ~R: so re ∈ [−5/2, 2] with |im| < 10 is IMPOSSIBLE for R ≥ 11 (|re| ≥ √(R²−100) > 2). GOOD: so the region re ∈ [−5/2, 2] only occurs with |im| ≥ 10 ✓ capstones apply (5c for [1/2, 2], 5d-left for [−5/2, 1/2] — union covers [−5/2, 2] ✓ overlap at 1/2 ✓).\n  (iii) re s < −5/2: the FE route: logDeriv ζ s = −logDeriv ζ(1−s) − bracket: re(1−s) ≥ 1+5/2 = 7/2 ≥ 2: Dirichlet at 1−s ✓. The digamma bracket: ψ(s/2): re(s/2) < −5/4: two sub-cases: |im(s/2)| ≥ 5 (|im s| ≥ 10): 5d's norm_digamma_sub_log (‖ψ−log‖ ≤ 3 ⟹ ‖ψ‖ ≤ ‖log‖+3 ≤ log‖s/2‖+π+3); |im(s/2)| < 5 (|im s| < 10 — the left near-axis): 5e-ii (A) with dist ≥ 1/8 ✓. And ψ((1−s)/2): re((1−s)/2) = (1−re s)/2 ≥ (1+5/2)/2 = 7/4 ≥ ... hmm (B) needs re ≥ 2: (1−re s)/2 with re s < −5/2: (1−re s)/2 > (1+5/2)/2 = 1.75 — NOT ≥ 2 always! For re s ∈ (−5, −5/2): (1−re s)/2 ∈ (1.75, 3): below 2. Hmm — 5e-ii (B) needs re w ≥ 2. For re w ∈ [1.75, 2): use... the digamma recurrence ψ(w) = ψ(w+1) − 1/w: ψ((1−s)/2) = ψ((1−s)/2+1) − 1/((1−s)/2): re((1−s)/2+1) = (3−re s)/2 ≥ 2.75 ≥ 2 ✓ (B) applies with the shift: ‖ψ(w)‖ ≤ ‖ψ(w+1)‖ + 1/‖w‖ ≤ 20·log(2+‖w+1‖) + 1/1.75-ish. Or just use (A) for the whole ψ((1−s)/2)?? (A) is for re ≤ 2 with dist(w,−ℕ) ≥ c: re((1−s)/2) ≥ 1.75 — could apply (A) with c = 1: dist((1−s)/2, −ℕ) ≥ 1.75 ≥ 1 ✓ (re ≥ 1.75 ⟹ distance to −ℕ ≥ 1.75). Hmm (A) gives ‖ψ‖ ≤ (46+2/c) + 23·log(2+‖w‖) = 48 + 23·log(...). Uniform: for ψ((1−s)/2) use (A) with c = 1: ≤ 48 + 23·log(2+(R+1)/2) = O(log R) ✓ no recurrence needed. But wait — (A)'s hypothesis: re w ≤ 2: re((1−s)/2) ≥ 1.75 could EXCEED 2 (re s < −3: (1−s)/2's re > 2). Then use (B) (re ≥ 2). Split: re((1−s)/2) ≤ 2 vs ≥ 2: (A) with c = 1 hmm — (A) needs re ≤ 2 AND dist ≥ c: for re ≤ 2: dist ≥ re ≥ 1.75 ≥ 1 ✓; for re ≥ 2: (B) with |im| ≤ 5: |im((1−s)/2)| = |im s|/2: in case (iii), |im s| can be ≥ 10 (the left-strip)! Then |im((1−s)/2)| ≥ 5: (B) needs |im| ≤ 5?? Let me check 5e-ii (B)'s signature: `norm_digamma_le_of_two_le_re` — from STATE: \"(B): ‖ψ‖ ≤ 20 log(2+‖w‖), re ≥ 2\" — the journal-030 design says \"right arc via 5e-ii (B) (re ≥ 2, |im| ≤ 5)\". So (B) has an |im| ≤ 5 hypothesis?! For |im((1−s)/2)| ≥ 5: use 5d's norm_digamma_sub_log (|im| ≥ 2): ‖ψ−log‖ ≤ 3: ‖ψ‖ ≤ ‖log w‖+3. So ψ((1−s)/2): |im| ≥ 5: sub-log bound; |im| < 5: re ≥ 2: (B); re ∈ [1.75, 2]: (A) c = 1. Ugh — three sub-cases but each simple. OR unify: for ANY w with re w ≥ 1.75: ‖ψ(w)‖ ≤ 48 + 23·log(2+‖w‖)?? — hmm (A) requires re ≤ 2. For re > 2 with |im| ≥ 5 the sub-log bound ≤ log‖w‖ + π + 3 ≤ 48+23·log(2+‖w‖) ✓ (log‖w‖ ≤ log(2+‖w‖)·... log(2+‖w‖) ≥ log 2 > 0: π+3 ≤ 7 ≤ 48 ✓ and log‖w‖ ≤ 23·log(2+‖w‖) ✓). For re > 2 with |im| < 5: (B): 20·log(2+‖w‖) ≤ 48+23·log(2+‖w‖) ✓. For re ∈ [1.75, 2]: (A) c = 1: (46+2) + 23·log(2+‖w‖) = 48+23·log(2+‖w‖) ✓ EXACT. So uniform: re w ≥ 1.75 ⟹ ‖ψ(w)‖ ≤ 48 + 23·log(2+‖w‖). A small lemma `digamma_right_le` combining the three. ✓\n\n  Similarly for ψ(s/2) (re(s/2) < −5/4): sub-cases on |im(s/2)|: ≥ 5: sub-log: ‖ψ‖ ≤ log‖s/2‖ + π + 3; < 5: (A) c = 1/8: 62 + 23·log(2+‖s/2‖). Uniform: ‖ψ(s/2)‖ ≤ 62 + 23·log(2+‖s/2‖) (sub-log ≤ log‖s/2‖+π+3 ≤ 23·log(2+‖s/2‖) + 62 ✓ since π+3 ≤ 7 ≤ 62 and log‖s/2‖ ≤ 23·log(2+‖s/2‖) ✓ — wait log‖s/2‖ vs 23·log(2+‖s/2‖): log(2+x) ≥ log x hmm x = ‖s/2‖: log(2+x) ≥ log x ✓ so log x ≤ log(2+x) ≤ 23·log(2+x) ✓.)\n\n  So: case (iii) bracket: ‖logDeriv ΓR s + logDeriv ΓR(1−s)‖ ≤ log π + ½(‖ψ(s/2)‖ + ‖ψ((1−s)/2)‖) ≤ log π + ½(62 + 23·log(2+‖s/2‖)) + ½(48 + 23·log(2+‖(1−s)/2‖)) ≤ 2 + 55 + 12·log(2+R/2) + 12·log(2+(R+1)/2)·... ≤ 57 + 24·L-ish.\n\n  And case (ii) the near-sum — for re s ∈ [−5/2, 2] (with |im s| ≥ 10 automatic): the capstones have the near-sum Σ_{ρ ∈ nearZeros t} (zeroMult ρ)/(s−ρ) — need the EXACT statements of the 5c/5d capstones. Let me look at LiDisc.lean's capstone and LiReflect.lean's.\n\nAlso for case (ii)'s elem ψ(s/2)/2: |im(s/2)| ≥ 5 ✓ sub-log: ‖ψ(s/2)‖ ≤ ‖log(s/2)‖ + 3 ≤ log(R/2) + π + 3.\n\nAnd case (i) (re ≥ 2) elem ψ(s/2): re(s/2) ≥ 1: hmm — (B) needs re ≥ 2: re(s/2) ∈ [1, ...): |im(s/2)| ≤ 5 (case (i) includes both |im| ≤ 10-ish... case (i) is re s ≥ 2 with ANY im: |im(s/2)| arbitrary! For |im(s/2)| ≥ 2: sub-log bound (|im w| ≥ 2 ✓). For |im(s/2)| < 2: re(s/2) ≥ 1: (A) with c = 1: dist(s/2, −ℕ) ≥ 1 (re ≥ 1) ⟹ 48+23·log(2+‖s/2‖) ✓. Uniform: ‖ψ(s/2)‖ ≤ 48 + 23·log(2+R/2)·... sub-log: ‖ψ‖ ≤ log‖s/2‖+π+3 ≤ 48+23·log(2+‖s/2‖) ✓ covered. So for ALL s on the circle: ‖ψ(s/2)‖ ≤ 62 + 23·log(2+R/2) UNIFORMLY (the max of the three: 48, 62, sub-log-absorbed) — a single elem bound! ‖ψ(s/2)/2‖ ≤ 31 + 12·log(2+R/2) ≤ 31 + 12·L.\n\nOK — so the digamma-right lemma `digamma_right_le`: for re w ≥ 1.75: ‖ψ w‖ ≤ 48 + 23·log(2+‖w‖). Via: |im w| ≥ 5: sub-log; else re ≥ 2: (B); else (A) c = 1.\n\nNow — let me check the exact signatures I need. Let me look at:\n1. LiDisc.lean capstone `logDeriv_riemannZeta_sub_nearZeros_le` — the nearZeros def + the exact statement.\n2. LiReflect.lean: `logDeriv_riemannZeta_sub_nearZeros_le_left`, `logDeriv_zeta_fe`, `norm_digamma_sub_log_le_of_two_le_abs_im`, the norm-log lemma (‖log w‖ ≤ log‖w‖ + π).\n3. LiDigammaLeft.lean: `norm_digamma_le_of_two_le_re` (B), `norm_digamma_le_of_dist_nat` (A), `logDeriv_Gammaℝ_eq` (G).\n4. LiFEntire.lean: Fexpr's exact definition.\n\nLet me grep those.","signature":""},{"type":"text","text":"Continuing with session 033: **ii′-5e-v-c** — the logDeriv/elem assembly ⟹ ‖Fexpr‖ ≤ C·(log R)³. STATE.md's NEXT ACTION is fresh in context (I wrote it at yesterday's closure). First, pull the exact signatures of the 5c/5d/5e-ii capstones I'll assemble."},{"type":"tool_use","id":"Grep_142","name":"Grep","input":{"pattern":"(theorem logDeriv_riemannZeta_sub_nearZeros_le|def nearZeros|theorem logDeriv_zeta_fe|theorem norm_digamma_sub_log_le_of_two_le_abs_im|theorem logDeriv_riemannZeta_sub_nearZeros_le_left)","path":"D:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1","output_mode":"content","-n":true,"-A":12},"extra_content":null}]