Current task: —

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

#1524 assistant 2026-08-23 16:59:16.374 UTC · 2112→3913 tok open ⤢
thinking (8846 chars)
Key statements: - `ZeroCountProp : Prop := ∀ t : ℝ, 2 ≤ t → (Nat.card (zeroWindow t) : ℝ) ≤ C0hat (t + 1)` — hypothesis to be taken. - `C0hat t` — defined in LiSkeleton (D-056 §2's honest majorant: 2.9 + 0.433·log(t+2) + 0.886·log log(t+2)-ish per the unfold). - `zeroWindow a := {ρ | IsNontrivialZero ρ ∧ a ≤ ρ.im ∧ ρ.im ≤ a+1}`. - `nearZeros t := (zeroDiscFinset t).filter (|ρ.im − t| < 1)` — nontrivial zeros with ordinate within 1 of t (in the disc... zeroDiscFinset covers the disc — the filter keeps |im−t|<1). - `logDeriv_riemannZeta_sub_nearZeros_le` (5c): σ ∈ [1/2, 7/2], |t| ≥ 10 (t = s.im), ζ s ≠ 0: ‖logDeriv ζ s − Σ_{nearZeros t} m/(s−ρ)‖ ≤ 100000 (log|t|)². NO perimeter hypothesis (Jensen). - `_left` (5d): σ ∈ [−5/2, 1/2], |t| ≥ 10: ≤ 200000 (log|t|)². Note the 5c/5d bounds include the NEAR SUM — on the circle the near-sum terms need the γ-gap: for s on the circle with im s = t (|t| ≥ 10) and ρ ∈ nearZeros t (|γ−t| < 1): |s−ρ| ≥ |t−γ|... wait ‖s−ρ‖ ≥ |s.im − ρ.im| = |t − γ| — and the γ-gap gives |R − γ| clearance, not |t − γ|. Hmm: t = im s with |s| = R: |t| ∈ [√(R² − 49/4)... for the strip arcs: re ∈ [−5/2, 7/2]: |t| = √(R² − re²) ∈ [√(R²−12.25), R] ⊂ [R − 13/R, R]-ish. So | |t| − R | ≤ 13/R (small for large R). For ρ ∈ nearZeros t: |γ − t| < 1: |γ| ∈ (|t|−1, |t|+1) ⊆ (R − 13/R − 1, R + 1 + ...) — so γ within ~1+13/R of R — the circle's clearance applies (|R − γ| < 1 case... wait need |R − γ| < 1: |R − γ| ≤ |R − |t|| + ||t| − γ| ≤ 13/R + 1 — that's > 1! The clearance's "far" case is 1 ≤ |ρ.im − R| — for zeros with |R−γ| ∈ [1, 1+13/R] the clearance gives only |t−γ| ≥ ... hmm. Hold on — re-read the gap statement: `(1/(16·C0hat(4k+9/2))) ≤ |ρ.im − R| ∨ 1 ≤ |ρ.im − R|`. So either the fine clearance holds OR the coarse 1-clearance. For the near sum I need |t − γ| bounded BELOW. |t − γ| ≥ | |R − γ| − |R − |t|| |: with |R − |t|| ≤ 13/R (R ≥ 14 say): - If fine case: |R − γ| ≥ 1/(16Ĉ₀) ⟹ |t−γ| ≥ 1/(16Ĉ₀) − 13/R ≥ 1/(32Ĉ₀) for R ≥ 13·32·Ĉ₀ = 416·Ĉ₀. Ĉ₀(4k+9/2) ≍ 2.9 + 0.433 log(4k+6.5) + 0.886 log log(...): for k large 416·Ĉ₀ ≈ 416·(3+0.5·log k) vs R ≈ 4k: holds when 4k ≥ 416·(3+0.5 log k) ⟺ k ≳ 400-ish. Take k ≥ 500 explicit. - If coarse case: |R − γ| ≥ 1 ⟹ |t − γ| ≥ 1 − 13/R ≥ 1/2 (R ≥ 26) ✓. So every zero in the near sum has |s−ρ| ≥ |t−γ| ≥ min(1/2, 1/(32Ĉ₀)) = 1/(32Ĉ₀) (Ĉ₀ ≥ 2 ⟹ 1/(32Ĉ₀) ≤ 1/64 < 1/2 ✓). And the nearZeros count: |nearZeros t| ≤ card of zeros with |γ − t| < 1 ⊆ two unit windows [t−1, t] ∪ [t, t+1] — hmm zeroWindow is [a, a+1] closed-closed; |γ−t| < 1 ⟹ γ ∈ (t−1, t+1) ⊆ [t−1, t] ∪ [t, t+1] ✓; each ≤ Ĉ₀(t+1) (needs t ≥ 2 ✓ from |t| ≥ 10) ⟹ count ≤ Ĉ₀(t) + Ĉ₀(t+1) ≤ 2Ĉ₀(R+2)... C0hat_mono. So near-sum ≤ 2Ĉ₀(R+2)·(32Ĉ₀(4k+9/2))·(max mult? no — mult included: the near sum has m_ρ per zero — the COUNT is of zeros with multiplicity? zeroWindow is a SET of zeros (no multiplicity); the near sum Σ m_ρ/(s−ρ): Σ m_ρ ≤ max mult × count... no — multiplicities: Σ_{ρ ∈ window} m_ρ vs card(window): the perimeter counts the CARD of the zero SET (without multiplicity!). Hmm — Trudgian's N(T) counts WITH multiplicity. The perimeter `ZeroCountProp` counts Nat.card of the SET — for the near sum Σ m_ρ·(1/|s−ρ|) ≤ (Σ m_ρ)·(32Ĉ₀) — and Σ m_ρ over the window vs card: if multiplicities are bounded... they're not a priori! Hmm. Wait — but does 5e-i/ii′-4 handle multiplicity? The pigeonhole used the set card ✓ fine for the GAP. For the SUM I need mult-weighted: Σ_{ρ ∈ W} m_ρ ≤ ? — with multiplicity counting... Trudgian N(T) counts with multiplicity so the honest perimeter would be the mult-weighted count — but ZeroCountProp as defined uses Nat.card (no mult). Hmm — but is mult bounded in a window? Not a priori (could have a high-multiple zero). BUT: the JENSEN count (5c's scaledZeta_jensen_count) counts WITH multiplicity (analyticOrderNatAt sums)! scaledZeta_jensen_count : Σ over the disc of orders ≤ log((9/4)|t|²)/log(33/32) — that's mult-weighted ✓. So for the near-sum I should use the JENSEN count (mult-weighted, unconditional) rather than the perimeter set-card. The nearZeros t ⊆ zeroDiscFinset t: Σ_{ρ ∈ nearZeros t} m_ρ ≤ Σ_{disc} m_ρ ≤ log((9/4)t²)/log(33/32) ≤ 33·(log(9/4) + 2 log|t|) ≤ C·log|t| for |t| ≥ 10 ✓ — all from 5c's `scaledZeta_jensen_count` (unconditional!). Let me check its exact statement. So the near-sum bound: ‖Σ_{ρ∈nearZeros t} m_ρ/(s−ρ)‖ ≤ Σ m_ρ·32Ĉ₀ ≤ 32Ĉ₀(4k+9/2)·(Jensen count ≤ C log R) = O(Ĉ₀·log R) = O((log R)²) ✓ (Ĉ₀ itself O(log R)). Hmm wait — but nearZeros t's zeros are within the disc at 2+it radius 5/2 — the Jensen count for THAT disc (5c's count is exactly for that disc ✓ via the scaled function on the unit disc). ✓. So near-sum: Σ m/|s−ρ| ≤ 32·Ĉ₀(4k+9/2)·(33·log((9/4)|t|²))-ish — with |t| ≤ R: O(log R · (log R + log log R)) = O((log R)²) ✓. Then logDeriv ζ on the strip arcs: ‖logDeriv ζ‖ ≤ ‖logDeriv ζ − nearsum‖ + ‖nearsum‖ ≤ 200000(log|t|)² + O((log R)²) = O((log R)²) ✓. For the RIGHT near-axis arc (re ≥ √(R²−100), i.e. re ≥ 2 when R ≥ 11): Dirichlet: need a Lean bound ‖logDeriv ζ s‖ ≤ C for re s ≥ 2. What's available? Let me search Zeta23 for LSeries/vonMangoldt logDeriv bounds. From session 019 inventory: "LSeries vonMangoldt ✓". Is there a ready `‖−ζ′/ζ s‖ ≤ ...` for re ≥ 2? Probably not packaged — need: −ζ′/ζ s = LSeries vonMangoldt s for re > 1 (Mathlib: `LSeries_vonMangoldt_eq`? there's `riemannZeta_neg_logDeriv...`? hmm — Mathlib has `LSeries vonMangoldt s = -ζ'(s)/ζ(s)` for 1 < re: `LSeries_vonMangoldt_eq_neg_logDeriv`? something like that). Then ‖LSeries Λ s‖ ≤ Σ Λ(n) n^{−re} ≤ Σ Λ(n) n^{−2} = −ζ′/ζ(2) ≈ 0.57: the absSummable machinery: `LSeries.absSummable` + norm-of-tsum ≤ tsum-of-norm... LSeries is a tsum over ℕ: ‖LSeries Λ s‖ ≤ ∑' n, ‖Λ(n) n^{−s}‖ ≤ ∑' n, Λ(n)/n² = (the value at 2) — `LSeries.norm_le`? There might be `LSeries.le_...`. Hmm. This could be a mini-build (~100 lines). Let me check what Mathlib/Zeta23 have: `LSeries.norm_le_of_bounded`? or via `tsum_le_tsum`... Actually maybe simplest: LSeries abscissa stuff: `LSeries.absSummable_of...` and the pointwise norm bound by the value at the real point: there's a standard lemma `LSeries.norm_le_...`? Let me grep Zeta23 for vonMangoldt bounds. For the LEFT near-axis arc (re ≤ −√(R²−100)): FE-reflect pointwise (5d's logDeriv_zeta_fe): logDeriv ζ s = −logDeriv ζ(1−s) − [logDeriv ΓR s + logDeriv ΓR(1−s)]: re(1−s) ≥ 11-ish ⟹ ‖logDeriv ζ(1−s)‖ ≤ C (Dirichlet ✓ same lemma); logDeriv ΓR(1−s): (1−s)/2: re ≥ 5.5, |im| ≤ 5: via the pointwise identity (needs building — the "im ≠ 0" issue) + 5e-ii (B): ‖ψ‖ ≤ 20 log(2+‖w‖) ✓ O(log R); logDeriv ΓR(s): s/2: re ≤ −5, |im| ≤ 5: 5e-ii (A) with dist(s/2, −ℕ) ≥ 1/8 — the dist condition: |s/2 + n| for n : ℕ: re(s/2) ∈ [−R/2, −5]: |s/2 + n| ≥ |re(s/2) + n|·... for n with |n − |re(s/2)|| ≥ ... the integer nearest to |re(s/2)|: dist(|re(s/2)|, ℤ): |re s| = √(R² − t²) with |t| ≤ 10: |re s| ∈ [√(R²−100), R]: and R/2 has dist(R/2, ℤ) ≥ 1/4: |re s|/2 ∈ [√(R²−100)/2, R/2] ⊆ [R/2 − 26/R, R/2] (since √(R²−100) ≥ R − 50/R... (R − √(R²−100)) = 100/(R+√) ≤ 50/R, halved 25/R... so |re(s/2)| ∈ [R/2 − 25/R, R/2]). dist to ℤ: the nearest integer to R/2 is at distance d ≥ 1/4; points of the interval [R/2−25/R, R/2] are within 25/R of R/2 ⟹ their distance to that integer ∈ [d − 25/R, d + 25/R] ⊇ [1/4 − 25/R, ...] ≥ 1/8 for R ≥ 200 (25/R ≤ 1/8 ⟺ R ≥ 200 ✓ k ≥ 49). And OTHER integers are ≥ 3/4−... away: ≥ 1 − 1/4 − 25/R ≥ 1/2 ✓. So dist(s/2, −ℕ) = dist(|re(s/2)|, ℕ)... careful: s/2 = x + iy with x ∈ [−R/2, −5], |y| ≤ 5: |s/2 + n|² = (x+n)² + y² ≥ (x+n)²: |x + n| = |n − |x|| ≥ dist(|x|, ℤ)·... for n ≥ 0: |x+n| = | |x| − n | ≥ dist(|x|, ℤ) ≥ 1/8 ✓ (for the nearest) and for non-nearest ≥ (1 − 1/4) − 25/R ≥ 1/2 ✓ ≥ 1/8 ✓. So dist ≥ 1/8 ⟹ (A): ‖ψ(s/2)‖ ≤ (46 + 16) + 23·log(2 + ‖s/2‖) = O(log R) ✓. But wait — (A) is `norm_digamma_le_of_dist_nat : re w ≤ 2 → dist(w, −ℕ) ≥ c → ‖ψ(w)‖ ≤ (46 + 2/c) + 23 log(2+‖w‖)` — check its exact dist statement form (dist(w, −ℕ) as `Metric.infDist`? or ∀ n, c ≤ ‖w + n‖?). Let me check LiDigammaLeft's exact statements for (A), (B), (G). Also for logDeriv ΓR at the arc points: need the pointwise identity logDeriv ΓR s = −(log π)/2 + ½ψ(s/2) — the (G) in 5e-ii is `logDeriv_Gammaℝ_eq` for im ≠ 0. For the arc (|im s| < 10) the real point s = −R (im = 0) is included — handle via the closure/continuity extension trick OR build the pointwise identity. Let me check what 5d's `logDeriv_Gammaℝ_shift` looks like — maybe it gives the identity at real points too. From STATE: "the ΓR +4 shift `logDeriv_Gammaℝ_shift` (Gammaℝ_def + Gamma_add_one twice + exp-form cpow arithmetic)". Let me check its statement — if it gives the identity for ALL points avoiding poles (incl. real), I can adapt. OK let me read the exact statements: LiDigammaLeft (A)(B)(G), LiReflect logDeriv_Gammaℝ_shift + logDeriv_zeta_fe + norm_digamma_sub_log, LiDisc scaledZeta_jensen_count.
Now the exact statements of the digamma bounds, the FE identity, and the Jensen count.
tool: Bash
input
{
  "command": "cd D:/Python/Quantum/research/lean/NguyenRH1/NguyenRH1 && grep -n -B3 -A7 \"theorem norm_digamma_le_of_dist_nat\\|theorem norm_digamma_le_of_two_le_re\\|theorem logDeriv_Gamma\u211d_eq\\|lemma logDeriv_Gamma\u211d_eq\" LiDigammaLeft.lean | head -40 && echo ==== && grep -n -B2 -A8 \"theorem logDeriv_zeta_fe\\|lemma logDeriv_zeta_fe\\|theorem logDeriv_Gamma\u211d_shift\\|norm_digamma_sub_log_le_of_two_le_abs_im\\|theorem scaledZeta_jensen_count\" LiReflect.lean LiDisc.lean | head -50",
  "description": "Exact statements of digamma bounds, FE identity, Jensen count"
}
raw content_json (database row)
[{"type":"thinking","thinking":"Key statements:\n- `ZeroCountProp : Prop := ∀ t : ℝ, 2 ≤ t → (Nat.card (zeroWindow t) : ℝ) ≤ C0hat (t + 1)` — hypothesis to be taken.\n- `C0hat t` — defined in LiSkeleton (D-056 §2's honest majorant: 2.9 + 0.433·log(t+2) + 0.886·log log(t+2)-ish per the unfold). \n- `zeroWindow a := {ρ | IsNontrivialZero ρ ∧ a ≤ ρ.im ∧ ρ.im ≤ a+1}`.\n- `nearZeros t := (zeroDiscFinset t).filter (|ρ.im − t| < 1)` — nontrivial zeros with ordinate within 1 of t (in the disc... zeroDiscFinset covers the disc — the filter keeps |im−t|<1).\n- `logDeriv_riemannZeta_sub_nearZeros_le` (5c): σ ∈ [1/2, 7/2], |t| ≥ 10 (t = s.im), ζ s ≠ 0: ‖logDeriv ζ s − Σ_{nearZeros t} m/(s−ρ)‖ ≤ 100000 (log|t|)². NO perimeter hypothesis (Jensen).\n- `_left` (5d): σ ∈ [−5/2, 1/2], |t| ≥ 10: ≤ 200000 (log|t|)².\n\nNote the 5c/5d bounds include the NEAR SUM — on the circle the near-sum terms need the γ-gap: for s on the circle with im s = t (|t| ≥ 10) and ρ ∈ nearZeros t (|γ−t| < 1): |s−ρ| ≥ |t−γ|... wait ‖s−ρ‖ ≥ |s.im − ρ.im| = |t − γ| — and the γ-gap gives |R − γ| clearance, not |t − γ|. Hmm: t = im s with |s| = R: |t| ∈ [√(R² − 49/4)... for the strip arcs: re ∈ [−5/2, 7/2]: |t| = √(R² − re²) ∈ [√(R²−12.25), R] ⊂ [R − 13/R, R]-ish. So | |t| − R | ≤ 13/R (small for large R). For ρ ∈ nearZeros t: |γ − t| < 1: |γ| ∈ (|t|−1, |t|+1) ⊆ (R − 13/R − 1, R + 1 + ...) — so γ within ~1+13/R of R — the circle's clearance applies (|R − γ| < 1 case... wait need |R − γ| < 1: |R − γ| ≤ |R − |t|| + ||t| − γ| ≤ 13/R + 1 — that's > 1! The clearance's \"far\" case is 1 ≤ |ρ.im − R| — for zeros with |R−γ| ∈ [1, 1+13/R] the clearance gives only |t−γ| ≥ ... hmm.\n\nHold on — re-read the gap statement: `(1/(16·C0hat(4k+9/2))) ≤ |ρ.im − R| ∨ 1 ≤ |ρ.im − R|`. So either the fine clearance holds OR the coarse 1-clearance. For the near sum I need |t − γ| bounded BELOW. |t − γ| ≥ | |R − γ| − |R − |t|| |: with |R − |t|| ≤ 13/R (R ≥ 14 say): \n- If fine case: |R − γ| ≥ 1/(16Ĉ₀) ⟹ |t−γ| ≥ 1/(16Ĉ₀) − 13/R ≥ 1/(32Ĉ₀) for R ≥ 13·32·Ĉ₀ = 416·Ĉ₀. Ĉ₀(4k+9/2) ≍ 2.9 + 0.433 log(4k+6.5) + 0.886 log log(...): for k large 416·Ĉ₀ ≈ 416·(3+0.5·log k) vs R ≈ 4k: holds when 4k ≥ 416·(3+0.5 log k) ⟺ k ≳ 400-ish. Take k ≥ 500 explicit.\n- If coarse case: |R − γ| ≥ 1 ⟹ |t − γ| ≥ 1 − 13/R ≥ 1/2 (R ≥ 26) ✓.\nSo every zero in the near sum has |s−ρ| ≥ |t−γ| ≥ min(1/2, 1/(32Ĉ₀)) = 1/(32Ĉ₀) (Ĉ₀ ≥ 2 ⟹ 1/(32Ĉ₀) ≤ 1/64 < 1/2 ✓). And the nearZeros count: |nearZeros t| ≤ card of zeros with |γ − t| < 1 ⊆ two unit windows [t−1, t] ∪ [t, t+1] — hmm zeroWindow is [a, a+1] closed-closed; |γ−t| < 1 ⟹ γ ∈ (t−1, t+1) ⊆ [t−1, t] ∪ [t, t+1] ✓; each ≤ Ĉ₀(t+1) (needs t ≥ 2 ✓ from |t| ≥ 10) ⟹ count ≤ Ĉ₀(t) + Ĉ₀(t+1) ≤ 2Ĉ₀(R+2)... C0hat_mono. So near-sum ≤ 2Ĉ₀(R+2)·(32Ĉ₀(4k+9/2))·(max mult? no — mult included: the near sum has m_ρ per zero — the COUNT is of zeros with multiplicity? zeroWindow is a SET of zeros (no multiplicity); the near sum Σ m_ρ/(s−ρ): Σ m_ρ ≤ max mult × count... no — multiplicities: Σ_{ρ ∈ window} m_ρ vs card(window): the perimeter counts the CARD of the zero SET (without multiplicity!). Hmm — Trudgian's N(T) counts WITH multiplicity. The perimeter `ZeroCountProp` counts Nat.card of the SET — for the near sum Σ m_ρ·(1/|s−ρ|) ≤ (Σ m_ρ)·(32Ĉ₀) — and Σ m_ρ over the window vs card: if multiplicities are bounded... they're not a priori! Hmm. Wait — but does 5e-i/ii′-4 handle multiplicity? The pigeonhole used the set card ✓ fine for the GAP. For the SUM I need mult-weighted: Σ_{ρ ∈ W} m_ρ ≤ ? — with multiplicity counting... Trudgian N(T) counts with multiplicity so the honest perimeter would be the mult-weighted count — but ZeroCountProp as defined uses Nat.card (no mult). Hmm — but is mult bounded in a window? Not a priori (could have a high-multiple zero). BUT: the JENSEN count (5c's scaledZeta_jensen_count) counts WITH multiplicity (analyticOrderNatAt sums)! scaledZeta_jensen_count : Σ over the disc of orders ≤ log((9/4)|t|²)/log(33/32) — that's mult-weighted ✓. So for the near-sum I should use the JENSEN count (mult-weighted, unconditional) rather than the perimeter set-card. The nearZeros t ⊆ zeroDiscFinset t: Σ_{ρ ∈ nearZeros t} m_ρ ≤ Σ_{disc} m_ρ ≤ log((9/4)t²)/log(33/32) ≤ 33·(log(9/4) + 2 log|t|) ≤ C·log|t| for |t| ≥ 10 ✓ — all from 5c's `scaledZeta_jensen_count` (unconditional!). Let me check its exact statement.\n\nSo the near-sum bound: ‖Σ_{ρ∈nearZeros t} m_ρ/(s−ρ)‖ ≤ Σ m_ρ·32Ĉ₀ ≤ 32Ĉ₀(4k+9/2)·(Jensen count ≤ C log R) = O(Ĉ₀·log R) = O((log R)²) ✓ (Ĉ₀ itself O(log R)).\n\nHmm wait — but nearZeros t's zeros are within the disc at 2+it radius 5/2 — the Jensen count for THAT disc (5c's count is exactly for that disc ✓ via the scaled function on the unit disc). ✓.\n\nSo near-sum: Σ m/|s−ρ| ≤ 32·Ĉ₀(4k+9/2)·(33·log((9/4)|t|²))-ish — with |t| ≤ R: O(log R · (log R + log log R)) = O((log R)²) ✓.\n\nThen logDeriv ζ on the strip arcs: ‖logDeriv ζ‖ ≤ ‖logDeriv ζ − nearsum‖ + ‖nearsum‖ ≤ 200000(log|t|)² + O((log R)²) = O((log R)²) ✓.\n\nFor the RIGHT near-axis arc (re ≥ √(R²−100), i.e. re ≥ 2 when R ≥ 11): Dirichlet: need a Lean bound ‖logDeriv ζ s‖ ≤ C for re s ≥ 2. What's available? Let me search Zeta23 for LSeries/vonMangoldt logDeriv bounds. From session 019 inventory: \"LSeries vonMangoldt ✓\". Is there a ready `‖−ζ′/ζ s‖ ≤ ...` for re ≥ 2? Probably not packaged — need: −ζ′/ζ s = LSeries vonMangoldt s for re > 1 (Mathlib: `LSeries_vonMangoldt_eq`? there's `riemannZeta_neg_logDeriv...`? hmm — Mathlib has `LSeries vonMangoldt s = -ζ'(s)/ζ(s)` for 1 < re: `LSeries_vonMangoldt_eq_neg_logDeriv`? something like that). Then ‖LSeries Λ s‖ ≤ Σ Λ(n) n^{−re} ≤ Σ Λ(n) n^{−2} = −ζ′/ζ(2) ≈ 0.57: the absSummable machinery: `LSeries.absSummable` + norm-of-tsum ≤ tsum-of-norm... LSeries is a tsum over ℕ: ‖LSeries Λ s‖ ≤ ∑' n, ‖Λ(n) n^{−s}‖ ≤ ∑' n, Λ(n)/n² = (the value at 2) — `LSeries.norm_le`? There might be `LSeries.le_...`. Hmm. This could be a mini-build (~100 lines). Let me check what Mathlib/Zeta23 have: `LSeries.norm_le_of_bounded`? or via `tsum_le_tsum`... Actually maybe simplest: LSeries abscissa stuff: `LSeries.absSummable_of...` and the pointwise norm bound by the value at the real point: there's a standard lemma `LSeries.norm_le_...`? Let me grep Zeta23 for vonMangoldt bounds.\n\nFor the LEFT near-axis arc (re ≤ −√(R²−100)): FE-reflect pointwise (5d's logDeriv_zeta_fe): logDeriv ζ s = −logDeriv ζ(1−s) − [logDeriv ΓR s + logDeriv ΓR(1−s)]: re(1−s) ≥ 11-ish ⟹ ‖logDeriv ζ(1−s)‖ ≤ C (Dirichlet ✓ same lemma); logDeriv ΓR(1−s): (1−s)/2: re ≥ 5.5, |im| ≤ 5: via the pointwise identity (needs building — the \"im ≠ 0\" issue) + 5e-ii (B): ‖ψ‖ ≤ 20 log(2+‖w‖) ✓ O(log R); logDeriv ΓR(s): s/2: re ≤ −5, |im| ≤ 5: 5e-ii (A) with dist(s/2, −ℕ) ≥ 1/8 — the dist condition: |s/2 + n| for n : ℕ: re(s/2) ∈ [−R/2, −5]: |s/2 + n| ≥ |re(s/2) + n|·... for n with |n − |re(s/2)|| ≥ ... the integer nearest to |re(s/2)|: dist(|re(s/2)|, ℤ): |re s| = √(R² − t²) with |t| ≤ 10: |re s| ∈ [√(R²−100), R]: and R/2 has dist(R/2, ℤ) ≥ 1/4: |re s|/2 ∈ [√(R²−100)/2, R/2] ⊆ [R/2 − 26/R, R/2] (since √(R²−100) ≥ R − 50/R... (R − √(R²−100)) = 100/(R+√) ≤ 50/R, halved 25/R... so |re(s/2)| ∈ [R/2 − 25/R, R/2]). dist to ℤ: the nearest integer to R/2 is at distance d ≥ 1/4; points of the interval [R/2−25/R, R/2] are within 25/R of R/2 ⟹ their distance to that integer ∈ [d − 25/R, d + 25/R] ⊇ [1/4 − 25/R, ...] ≥ 1/8 for R ≥ 200 (25/R ≤ 1/8 ⟺ R ≥ 200 ✓ k ≥ 49). And OTHER integers are ≥ 3/4−... away: ≥ 1 − 1/4 − 25/R ≥ 1/2 ✓. So dist(s/2, −ℕ) = dist(|re(s/2)|, ℕ)... careful: s/2 = x + iy with x ∈ [−R/2, −5], |y| ≤ 5: |s/2 + n|² = (x+n)² + y² ≥ (x+n)²: |x + n| = |n − |x|| ≥ dist(|x|, ℤ)·... for n ≥ 0: |x+n| = | |x| − n | ≥ dist(|x|, ℤ) ≥ 1/8 ✓ (for the nearest) and for non-nearest ≥ (1 − 1/4) − 25/R ≥ 1/2 ✓ ≥ 1/8 ✓. So dist ≥ 1/8 ⟹ (A): ‖ψ(s/2)‖ ≤ (46 + 16) + 23·log(2 + ‖s/2‖) = O(log R) ✓.\n\nBut wait — (A) is `norm_digamma_le_of_dist_nat : re w ≤ 2 → dist(w, −ℕ) ≥ c → ‖ψ(w)‖ ≤ (46 + 2/c) + 23 log(2+‖w‖)` — check its exact dist statement form (dist(w, −ℕ) as `Metric.infDist`? or ∀ n, c ≤ ‖w + n‖?). Let me check LiDigammaLeft's exact statements for (A), (B), (G).\n\nAlso for logDeriv ΓR at the arc points: need the pointwise identity logDeriv ΓR s = −(log π)/2 + ½ψ(s/2) — the (G) in 5e-ii is `logDeriv_Gammaℝ_eq` for im ≠ 0. For the arc (|im s| < 10) the real point s = −R (im = 0) is included — handle via the closure/continuity extension trick OR build the pointwise identity. Let me check what 5d's `logDeriv_Gammaℝ_shift` looks like — maybe it gives the identity at real points too. From STATE: \"the ΓR +4 shift `logDeriv_Gammaℝ_shift` (Gammaℝ_def + Gamma_add_one twice + exp-form cpow arithmetic)\". Let me check its statement — if it gives the identity for ALL points avoiding poles (incl. real), I can adapt.\n\nOK let me read the exact statements: LiDigammaLeft (A)(B)(G), LiReflect logDeriv_Gammaℝ_shift + logDeriv_zeta_fe + norm_digamma_sub_log, LiDisc scaledZeta_jensen_count.","signature":""},{"type":"text","text":"Now the exact statements of the digamma bounds, the FE identity, and the Jensen count."},{"type":"tool_use","id":"Bash_238","name":"Bash","input":{"command":"cd D:/Python/Quantum/research/lean/NguyenRH1/NguyenRH1 && grep -n -B3 -A7 \"theorem norm_digamma_le_of_dist_nat\\|theorem norm_digamma_le_of_two_le_re\\|theorem logDeriv_Gammaℝ_eq\\|lemma logDeriv_Gammaℝ_eq\" LiDigammaLeft.lean | head -40 && echo ==== && grep -n -B2 -A8 \"theorem logDeriv_zeta_fe\\|lemma logDeriv_zeta_fe\\|theorem logDeriv_Gammaℝ_shift\\|norm_digamma_sub_log_le_of_two_le_abs_im\\|theorem scaledZeta_jensen_count\" LiReflect.lean LiDisc.lean | head -50","description":"Exact statements of digamma bounds, FE identity, Jensen count"},"extra_content":null}]