Current task: —

← Session 22 — ii′-1: liCoeff pairing fix + residue machinery

#1059 assistant 2026-08-22 06:05:38.041 UTC · 690→9767 tok open ⤢
thinking (27896 chars)
Session 020 — ii′-3a piece (A): the archimedean τ-evaluation. Per STATE.md NEXT ACTION: Prove τ_j := (1/j!)·iteratedDeriv j (fun s => logDeriv Gammaℝ (1+s)) 0 = (−1)^{j+1}·lagariasA (j+1) for all j ≥ 0. Pieces: - j = 0: τ₀ = −(log π)/2 + (1/2)·digamma(1/2) = −(log 4π + γ)/2 = −a₁ via Complex.digamma_one_half. - j ≥ 1: ψ^{(j)}(1/2) = (−1)^{j+1} j! Σ_{m≥0}(m+1/2)^{−(j+1)} via the digamma series from logGammaSeq; reindex to lagariasA. Let me plan the Lean architecture for piece (A). This is the heavy one. Let me think carefully about the minimal path. **The target statement.** Define τ_j as the Taylor coefficient of ΓR′/ΓR(1+·) at 0. Actually — what does the ASSEMBLY (ii′-3c) need? The coefficient comparison: g(1+s) = 1/(1+s) + [1/s + ζ′/ζ(1+s)] + ΓR′/ΓR(1+s). So I need iteratedDeriv j (fun s => logDeriv Gammaℝ (1+s)) 0 = (−1)^{j+1} j!·a_{j+1} — as a ℂ equality. **Decompose the proof:** (A1) The Gammaℝ logDeriv split: for s near 0 (s ≠ −1... wherever analytic): logDeriv Gammaℝ (1+s) = −(log π)/2 + (1/2)·Complex.digamma ((1+s)/2). Gammaℝ w = π^{−w/2}·Γ(w/2) (Gammaℝ_def ✓). logDeriv: logDeriv (π^{−w/2} · Γ(w/2)) = logDeriv (π^{−w/2}) + logDeriv (Γ(w/2)) — needs nonvanishing: Gammaℝ(1+s) ≠ 0 near 0 ✓ (Gammaℝ 1 = 1, continuity). logDeriv (π^{−w/2}) = deriv(π^{−w/2})/π^{−w/2} = (−log π/2)·π^{−w/2}/π^{−w/2} = −(log π)/2 ✓ (deriv of π^{−w/2} = π^{−w/2}·(−log π)/2 — cpow/const-cpow derivative — `Complex.deriv_const_cpow`? — π^{−w/2} = Complex.cpow π (−w/2) = exp(log π · (−w/2)) — deriv = exp(log π·(−w/2))·(−log π/2) — chain rule — hasDerivAt_const_cpow? — there's `Complex.hasDerivAt_const_cpow...`? — I'll find it). logDeriv (Γ(w/2)) = (digamma(w/2)·(1/2)) — deriv Γ(w/2) = Γ'(w/2)·(1/2) — chain rule — then /Γ(w/2) = digamma(w/2)·(1/2) ✓. (A2) The digamma value at 1/2 (j = 0): Complex.digamma_one_half ✓. (A3) For j ≥ 1: the Taylor coefficients of s ↦ Complex.digamma ((1+s)/2) at 0 = the values digamma^{(j)}(1/2)·(1/2)^j — via comp. So I need **iteratedDeriv j Complex.digamma (1/2)** for j ≥ 1 = (−1)^{j+1} j! Σ_{m≥0} (m + 1/2)^{−(j+1)} — as a ℂ fact. (A3) is the hard part. Now — how to build the digamma series in Lean with minimal pain? **Option 1: the real logGammaSeq route.** Build ψ_real(x) := deriv (Real.log ∘ Real.Gamma) x, prove the series + termwise derivatives, then bridge complex digamma of real = ψ_real. Heavy: the real/complex bridge for digamma (Complex.Gamma ofReal = Real.Gamma — `Complex.Gamma_ofReal`? — does it exist? then digamma ↑x = deriv Gamma ↑x / Gamma ↑x — vs ψ_real x = (Real.Gamma)' x / Real.Gamma x — the derivative bridge: deriv (Gamma ∘ ofReal) x = deriv Complex.Gamma ↑x·1 — via HasDerivAt.comp with ofRealCLM ✓ pattern exists. So ψ_real(↑x) = ↑(ψ_real x) — provable. THEN the complex Taylor coefficients at 1/2: iteratedDeriv j digamma (1/2 : ℂ) — from the real-line derivatives: digamma is analytic near 1/2 (meromorphic_digamma + no pole at 1/2 ✓ — need AnalyticAt ℂ digamma (1/2) — from meromorphic + value finite... `MeromorphicAt.analyticAt`? there's a way: MeromorphicAt + order ≥ 0 ⟹ analytic? — `MeromorphicAt`... hmm — digamma analytic at 1/2: poles of digamma = poles of Gamma = nonpositive integers — 1/2 not one — analyticity at non-poles: is there `analyticAt_digamma`? probably not — derivable: digamma = logDeriv Gamma = deriv Gamma / Gamma — Gamma differentiable everywhere? Complex.Gamma is differentiable off the poles — `Complex.differentiableAt_Gamma`? — there's `differentiableAt_Gamma`? Let me check — Deriv.lean in the Gamma folder! `Mathlib/Analysis/SpecialFunctions/Gamma/Deriv.lean` — likely has differentiableAt_Gamma + deriv_Gamma lemmas ✓. So digamma analytic at 1/2 via quotient (Gamma(1/2) = √π ≠ 0 ✓ Gamma_one_half_eq ✓ saw it used in digamma_one_half's proof). Then iteratedDeriv j digamma (1/2) for j ≥ 1 — relate to real derivatives: digamma restricted to the real line near 1/2 equals ψ_real (via the ofReal bridge) — then iteratedDeriv of the complex-analytic function at a real point = the complex extension of the real iterated derivatives: hmm — this needs: digamma(↑x) = ↑(ψ_real x) for real x near 1/2, then iteratedDeriv j digamma (↑(1/2)) = iteratedDeriv j (digamma ∘ ofReal) (1/2)·... — iteratedDeriv (digamma ∘ ofReal) x = iteratedDeriv j digamma ↑x — since ofReal's derivative is 1: via iteratedDeriv_comp with ofRealCLM — is there a lemma `iteratedDeriv_comp_ofReal`? or via the CLM comp: `iteratedDeriv_comp_clm`? hmm — there might be `Complex... `? For the comp with a continuous linear map L: iteratedDeriv n (f ∘ L) x = iteratedDeriv n f (L x) when L's "derivative" is... ofRealCLM : ℝ → ℂ has derivative itself; (f∘L)'(x) = f'(Lx)∘L = f'(Lx)·1-ish. For iterated: there's a general `iteratedDeriv_comp` for CLMs? Might need a small induction. Alternatively AVOID the real/complex bridge for the derivatives: compute the complex Taylor coefficients DIRECTLY from the real series evaluated on the real line + the IDENTITY THEOREM? Hmm — no: I need the coefficients, not the function. Hmm — actually cleaner: work with the function-series identity on the complex side directly: **Option 2: build the complex digamma series directly**: for s near 1/2 (or in a half-plane), Complex.digamma(s) = −γ − 1/s + Σ_{m≥1} (1/m − 1/(s+m)) — prove THIS as a complex identity from... what seed? The complex Gamma's product isn't in Mathlib. The real logGammaSeq gives it only on the real line. To get the complex identity from the real one: both sides analytic on ℂ ∖ {0, −1, −2, ...} — the series Σ_m (1/m − 1/(s+m)) converges locally uniformly on compacts avoiding the poles (|1/m − 1/(s+m)| = |s|/(m|s+m|) ≤ C/m² on compacts ✓) — analytic by Weierstrass ✓ (TendstoLocallyUniformlyOn.differentiableOn ✓ exists). The two analytic functions agree on (0, ∞) (the real identity) ⟹ agree on the connected domain ℂ∖{nonpositive integers} (identity principle — (0,∞) has a limit point in the domain ✓). So the complex series identity follows from the real one + identity principle. THEN the Taylor coefficients at 1/2 from the complex series by termwise complex iterated derivation (each term (1/m − 1/(s+m)) is analytic; the sum converges locally uniformly; iteratedDeriv commutes with the locally uniform sum — via TendstoLocallyUniformlyOn.deriv iterates... — there's `TendstoLocallyUniformlyOn.deriv` (LocallyUniformLimit.lean line 22 ✓) — for ITERATED derivatives need the iterated version — the deriv convergence is itself locally uniform so induction works: `TendstoLocallyUniformlyOn.iteratedDeriv`? might exist or iterate the deriv one). Hmm — both options route through substantial infrastructure. Let me think about what's genuinely the MINIMAL path. **Option 3: avoid the digamma series for the function; only compute the DERIVATIVES at 1/2 via the series.** What I need: iteratedDeriv j Complex.digamma (1/2 : ℂ) for j ≥ 1. Define the candidate series function D(s) := −γ − 1/s + Σ_{m≥1}(1/m − 1/(s+m)) on a neighborhood of 1/2 (complex). Prove: (i) D is analytic near 1/2 (Weierstrass — uniform on compacts ✓); (ii) D = Complex.digamma near 1/2 — HOW? The identity needs SOME input connecting D to digamma. Via the real line: D(↑x) = ψ_real(x) for real x > 0 (the real series identity — from logGammaSeq) and digamma(↑x) = ψ_real(x) (the ofReal bridge) — so D and digamma agree on a real segment ⟹ agree near 1/2 (identity principle — needs both analytic on a connected nhd containing a real segment ✓). Then iteratedDeriv j digamma (1/2) = iteratedDeriv j D (1/2) (eventually-equal functions have equal iteratedDerivs — `Filter.EventuallyEq.iteratedDeriv`? — need: if f =ᶠ[𝓝 x] g then iteratedDeriv n f x = iteratedDeriv n g x — hmm — does that lemma exist? EventuallyEq.deriv_eq exists (used in LiResidue: h3.deriv_eq). For iterated: `Filter.EventuallyEq.iteratedDeriv_eq`? — maybe not — but deriv_eq ITERATES: iteratedDeriv n = deriv^n — an induction using EventuallyEq.deriv_eq + the eventual-eq of the derivatives (deriv of eventually-eq analytic functions are eventually equal — need the derivative of the eventual equality to hold on a nhd — `EventuallyEq.deriv_eq` gives pointwise at x; for the induction I need ∀ᶠ y, deriv f y = deriv g y — from f =ᶠ[𝓝 x] g: on the nhd where f = g, derivs agree ✓ — there's `EventuallyEq.deriv` hmm — `Filter.EventuallyEq.deriv : f =ᶠ[𝓝 x] g → deriv f =ᶠ[𝓝 x] deriv g`? I believe something like that exists (`EventuallyEq.deriv` or `.deriv_eq` variants). OK. (iii) iteratedDeriv j D (1/2) = −(the 1/s part) + Σ_m termwise-derivatives = the polygamma formula: for j ≥ 1: iteratedDeriv j (−1/s) at 1/2 = −(−1)^j j! s^{−(j+1)}|_{1/2} = −(−1)^j j! 2^{j+1} = (−1)^{j+1} j! 2^{j+1}; iteratedDeriv j (1/m − 1/(s+m)) at 1/2 = −(−1)^j j! (1/2+m)^{−(j+1)}·(−1)... let me compute: (d/ds)^j [−(s+m)^{−1}] = −(−1)^j j! (s+m)^{−(j+1)} = (−1)^{j+1} j! (s+m)^{−(j+1)}. At 1/2: (−1)^{j+1} j! (m + 1/2)^{−(j+1)} ✓. And the 1/s term: (d/ds)^j (−s^{−1}) = (−1)^{j+1} j! s^{−(j+1)} — at 1/2: (−1)^{j+1} j! 2^{j+1} = (−1)^{j+1} j! (0 + 1/2)^{−(j+1)} ✓ — so the −1/s term IS the m = 0 term ✓ — total: iteratedDeriv j D (1/2) = (−1)^{j+1} j! Σ_{m≥0} (m+1/2)^{−(j+1)} ✓✓. The termwise derivation of the sum at a single point: Σ_m f_m^{(j)}(1/2) = (Σ_m f_m)^{(j)}(1/2) — needs the series of j-th derivatives to converge and the interchange — the clean Lean tool: for the COMPLEX iterated deriv of a tsum of analytic functions converging locally uniformly — from LocallyUniformLimit.lean: TendstoLocallyUniformlyOn.deriv + iteration. The partial sums S_N(s) = Σ_{m≤N} f_m(s) → D(s) locally uniformly (Weierstrass M-test: |1/m − 1/(s+m)| ≤ C/m² on |s − 1/2| ≤ 1/4 say — |s|/(m|s+m|) ≤ (3/4)/(m·(m − 3/4))·... ≤ C/m² ✓ for m ≥ 1, |s+m| ≥ m − |s| ≥ m − 3/4 ≥ m/4 for m ≥ 1 ✓ so ≤ (3/4)/(m·m/4) = 3/m² ✓). The DERIVED series: Σ_m f_m^{(j)} — |f_m^{(j)}(s)| = j!|s+m|^{−(j+1)} ≤ j!/(m−3/4)^{j+1} ≤ C_j/m^{j+1} — summable for j ≥ 1 ✓ so the derived series also converges locally uniformly ⟹ deriv commutes with the limit — iterate j times. In Lean this is the fiddly part: the TendstoLocallyUniformlyOn of the partial sums (from the M-test bound — `tendstoLocallyUniformlyOn_...`? there's a Weierstrass M-test lemma for series: `tendstoLocallyUniformlyOn_of_...`? hmm — there's `tendstoUniformlyOn_of_...`? For series: `Summable` + uniform bound ⟹ uniform convergence of partial sums: `tendstoUniformlyOn_tsum`? I recall `tendstoUniformlyOn_tsum (hf : ∀ n, ‖f n‖ ≤ u n) (hu : Summable u) : TendstoUniformlyOn (fun t => ∑ n ∈ Finset.range t, f n) (fun x => ∑' n, f n x) atTop`? — something like `tendstoUniformlyOn_tsum` exists in Mathlib.Topology.Algebra.InfiniteSum.TsumUniformlyOn ✓ (I saw TsumUniformlyOn.lean in the file listing earlier!). And the locally version from the uniformly-on-compacts version ✓. Then `TendstoLocallyUniformlyOn.deriv` : TendstoLocallyUniformlyOn F f φ U → (∀ n, DifferentiableOn (F n) U) → ... → TendstoLocallyUniformlyOn (deriv ∘ F) (deriv f) φ U ✓ (line 114-136 area). Iterate: deriv∘F → deriv f locally uniformly, then apply again to the derivative sequence (which is again a locally-uniformly-convergent sequence of differentiable functions) — j times ⟹ iteratedDeriv. There might be a direct `TendstoLocallyUniformlyOn.iteratedDeriv`? hmm — probably not — iterate manually via induction. This is Option 3 — probably the cleanest overall. But it's still a chunk: (i) M-test uniform convergence; (ii) real identity from logGammaSeq; (iii) ofReal bridge for digamma; (iv) identity principle; (v) termwise iterated deriv; (vi) the odd-m reindexing to lagariasA; (vii) the (1+s)/2 comp and the τ assembly. Hmm — wait. Let me reconsider — is there any shortcut for (ii) (the real series identity)? I need: for real x > 0, Complex.digamma ↑x = ↑(...) — the series. From logGammaSeq: log Γ(x) = lim_n [x log n + log n! − Σ_{m=0}^n log(x+m)]. Take the REAL derivative of both sides: LHS' = ψ_real(x) := (log Γ)'(x) = Γ'(x)/Γ(x) (real). RHS' = lim_n [log n − Σ_{m=0}^n 1/(x+m)] — interchange deriv and limit: needs (a) pointwise convergence of logGammaSeq (✓ tendsto_log_gamma) and (b) locally uniform convergence of the derivative sequence D_n(x) := log n − Σ_{m=0}^n 1/(x+m). D_n(x) = [log n − H_n] + Σ_{m=1}^n (1/m − 1/(x+m)) − 1/x: the bracket → −γ; the sum converges uniformly on compact subsets of (0,∞) by M-test (|1/m − 1/(x+m)| = x/(m(x+m)) ≤ K/m² for x ≤ K); −1/x constant. So D_n → D_∞ locally uniformly where D_∞(x) = −γ − 1/x + Σ_{m≥1}(1/m − 1/(x+m)) ✓. Mathlib real-analysis lemma for deriv-of-limit: `tendsto_locally_uniform...deriv`? — for ℝ the clean tool: `hasDerivAt_of_tendsto_locally_uniformly_on`? or the FTC-free version: there's `TendstoLocallyUniformlyOn.deriv` only for ℂ (I think). For ℝ: hmm — `deriv` of a locally uniform limit of real functions with locally uniformly convergent derivatives: this is `tendstoLocallyUniformlyOn.deriv`? — complex only. For real: `hasDerivAt_of_tendstoUniformlyOn`? Let me think of the right real lemma: there's `hasDerivAt_of_tendstoLocallyUniformlyOn (hf : TendstoLocallyUniformlyOn F f ...) (hg : TendstoLocallyUniformlyOn (fun n => deriv (F n)) g ...) (hF : ∀ n, Differentiable (F n))`?? — I recall something in Mathlib.Analysis.Calculus.LogDeriv or UniformConvergenceTopology... Actually — the standard real lemma is in `Mathlib.Analysis.Calculus.UniformLimit`? hmm. There IS: `hasDerivAt_of_tendsto_locally_uniformly_on`? I'm not certain. Alternatives: prove via the FTC formulation: if f_n' → g uniformly and f_n(x₀) → y₀ then f_n → f with f' = g: Mathlib: `tendsto... uniform...deriv` — there's a theorem `uniformly_convergent_derivative`? I'll search at build time; worst case prove via the mean-value/integral route. Hmm — actually, let me check whether the series ψ(x) = −γ + Σ(1/m − 1/(x+m)) is REALLY not in Mathlib — maybe it IS there under some name (the digamma series was added to Mathlib at some point — `Complex.digamma_eq...`? or Real?). Let me grep once more, broadly, for digamma-related series/hasSum. Also reconsider: maybe there's an even more different route for the TAYLOR COEFFICIENTS of ΓR′/ΓR(1+s): via the RECURRENCE + decay: ΓR′/ΓR(1+s) = ΓR′/ΓR(1+s+N) − Σ_{j'=0}^{N−1} 1/(1+s+2j')·(1/2)... wait — Gammaℝ_add_two : Gammaℝ (s+2) = Gammaℝ s·s/2/π — so logDeriv Gammaℝ (w+2) = logDeriv Gammaℝ w + 1/w. So F(s) := ΓR′/ΓR(1+s) = F_N-ish: ΓR′/ΓR(1+s) = ΓR′/ΓR(1+s+2N) − Σ_{j'=0}^{N−1} 1/(1+s+2j')·(1)... from logDeriv Gammaℝ (w+2) = logDeriv Gammaℝ w + 1/w: with w := 1+s: ΓR′/ΓR(3+s) = ΓR′/ΓR(1+s) + 1/(1+s) — so ΓR′/ΓR(1+s) = ΓR′/ΓR(3+s) − 1/(1+s) = ΓR′/ΓR(1+s+2N) − Σ_{j'=0}^{N−1} 1/(1+s+2j'). As N → ∞: ΓR′/ΓR(1+s+2N) ~ (1/2)log((1+s+2N)/2) − (log π)/2 — GROWS like (1/2)log N — and the sum Σ 1/(1+s+2j') ~ (1/2)log N — cancel. The TAYLOR COEFFICIENTS at s = 0 of order j ≥ 1: the N-dependent pieces: iteratedDeriv j [ΓR′/ΓR(1+s+2N)] at s=0 = (ΓR′/ΓR)^{(j)}(1+2N) — if this → 0 as N → ∞ for j ≥ 1, then the j-th coefficient = lim of −Σ_{j'=0}^{N−1} (iteratedDeriv j [1/(1+s+2j')] at 0)·... = −Σ_{j'=0}^{N−1} (−1)^j j! (1+2j')^{−(j+1)} → −(−1)^j j! Σ_{j'≥0} (2j'+1)^{−(j+1)} = (−1)^{j+1} j!·lagariasA(j+1)·... wait — Σ_{j'≥0}(2j'+1)^{−(j+1)} = Σ_{m odd ≥ 1} m^{−(j+1)} = lagariasA(j+1) ✓✓ DIRECTLY (no 2^{j+1} factor — the 2's cancel: 1/(1+s+2j') has derivatives (−1)^j j!/(1+s+2j')^{j+1} — at 0: (−1)^j j!/(1+2j')^{j+1} — no powers of 2 ✓). So τ_j = −(−1)^j j! Σ_{j'≥0}(2j'+1)^{−(j+1)}·(1/j!)·... let me redo: iteratedDeriv j F 0 = −lim_N Σ_{j'=0}^{N−1} (−1)^j j! (1+2j')^{−(j+1)} + lim_N (ΓR′/ΓR)^{(j)}(1+2N) — the second limit must be 0 for j ≥ 1 — i.e. **the derivatives of ΓR′/ΓR at large real arguments tend to 0**: (ΓR′/ΓR)'(x) ~ 1/x → 0 ✓; higher: (ΓR′/ΓR)^{(j)}(x) ~ (−1)^{j+1}(j−1)!/x^j·(1/2)^j·... → 0 ✓ — needs SOME asymptotic of ψ' at infinity — ψ'(x) = 1/x + O(1/x²)... — from where? The recurrence again: (ΓR′/ΓR)'(x+2N)... circular. The decay of ψ^{(j)} at ∞ is EXACTLY the kind of fact needing the series or Stirling. Hmm — but WAIT: the decay of the first derivative ψ'(x) → 0 might be directly available: ψ'(x) = trigamma — for real x: ψ'(x) = Σ_{m≥0} 1/(x+m)² — the series AGAIN. OK the series is unavoidable — every route needs some form of the digamma series/asymptotics, and the logGammaSeq route gives it most directly for real x. Fine. So the work plan for piece (A) stands. Let me now carefully scope the sub-lemmas: File `LiArchimedean.lean`: Part 1 — the real digamma series: - Define `digammaRealSeq (x : ℝ) (n : ℕ) : ℝ := Real.log n − ∑ m ∈ Finset.range (n+1), 1/(x + m)` (the deriv of logGammaSeq). - Lemma A: TendstoLocallyUniformlyOn (digammaRealSeq ·) D∞ (Ioi 0)?? hmm — what domain: for x ∈ compact ⊆ (0,∞)... Let me target: TendstoLocallyUniformlyOn (fun n x => Real.log n − Σ_{m=0}^n 1/(x+m)) (fun x => −γ − 1/x + Σ_{m≥1}(1/m − 1/(x+m))) atTop (Ioi 0)?? The cleanest: split digammaRealSeq x n = (log n − H_n) + Σ_{m=1}^n (1/m − 1/(x+m)) − 1/x: - log n − H_n → −γ: eulerMascheroniConstant's definition! `Real.eulerMascheroniConstant` is DEFINED as the limit of harmonic-minus-log — there's a lemma `Real.tendsto_harmonic_sub_log...`? — the constant is DEFINED via `Tendsto (fun n => harmonic n − log n) atTop (𝓝 eulerMascheroniConstant)`? — `Real.tendsto_harmonic_sub_log`? — I recall eulerMascheroniConstant is defined as lim (H_n − log n) and the tendsto lemma is `Real.tendsto_harmonic_sub_log` or the definition itself `Real.eulerMascheroniConstant_def`? — need to check the exact form: I believe `Real.harmonic_sub_log_tendsto...`? There's `Real.tendsto_harmonic_sub_log : Tendsto (fun n => harmonic n − log n) atTop (𝓝 eulerMascheroniConstant)`? something like that — grep. - Σ_{m=1}^n (1/m − 1/(x+m)) → tsum locally uniformly: Weierstrass M-test on compacts: for x ∈ Icc a b ⊆ (0,∞): |1/m − 1/(x+m)| = x/(m(x+m)) ≤ b/(m·m) = b/m² ✓ Summable (b/m²) ✓ — `tendstoUniformlyOn_tsum`-type lemma on Icc a b, then locally uniform on (0,∞) via compacts. - Then the deriv-limit interchange: ψ_real := deriv (Real.log ∘ Real.Gamma)... — hmm — actually what I really need is not ψ_real per se but the relation: deriv (Real.log ∘ Real.Gamma) x = D∞(x) for x > 0. Via: logGammaSeq x n → log Γ(x) (tendsto_log_gamma ✓) + digammaRealSeq x n = deriv (logGammaSeq · n) x → D∞ locally uniformly + the deriv-interchange lemma ⟹ deriv (log Γ) x = D∞(x). The interchange lemma for real: let me find it — search for "tendsto_deriv" / "hasDerivAt_of_tendsto" in Mathlib. Hmm — actually for the interchange maybe easier: the uniform-limit-of-derivatives theorem for real functions: I recall `TendstoLocallyUniformly.deriv`? or in Mathlib/Analysis/Calculus/UniformLimit.lean? or LocallyUniform? For real there's: `hasDerivAt_of_tendsto_locally_uniformly_on`? — not sure. There IS the sequence-derivative theorem via `uniform` convergence: Let me grep for the real version. Part 2 — iterated derivatives of D∞: D∞^{(j)}(x) = (−1)^{j+1} j! Σ_{m≥0} (x+m)^{−(j+1)} for j ≥ 1, x > 0. Via the termwise deriv of the series — again deriv-interchange per derivative order — INDUCTION on j using the same interchange lemma (each derived series M-testable: |d/dx (1/m − 1/(x+m))|^{(j)} = j!/(x+m)^{j+1} ≤ j!/m^{j+1} ✓ summable for j ≥ 1 ✓). Wait — careful: the series Σ_{m≥1}(1/m − 1/(x+m)) has j-th deriv Σ_{m≥1} (−1)^{j+1} j!/(x+m)^{j+1} and the −1/x term's j-th deriv (−1)^{j+1}j!/x^{j+1} — combine to Σ_{m≥0} ✓. For j = 1: D∞'(x) = 1/x² + Σ_{m≥1} 1/(x+m)² = Σ_{m≥0}(x+m)^{−2} ✓. Part 3 — the complex bridge: Complex.digamma(↑x) = ↑(D∞(x))?? — hmm — actually let me reconsider: what I need at the END is iteratedDeriv j (fun s : ℂ => logDeriv Gammaℝ (1+s)) 0 for j ≥ 1. Path: (i) logDeriv Gammaℝ (1+s) = −(log π)/2 + (1/2)·digamma((1+s)/2) for s near 0 (the split). (ii) iteratedDeriv j of that at 0 = (1/2)·iteratedDeriv j (digamma ∘ ((1+·)/2)) 0 = (1/2)·(1/2)^j·iteratedDeriv j digamma (1/2)·... — comp with the affine map s ↦ (1+s)/2 — iteratedDeriv_comp for affine maps: there should be something (iteratedDeriv_comp_add_const ✓ exists + iteratedDeriv_comp_const_mul? — `iteratedDeriv_comp_const_mul`? hmm — for f(c·x): iteratedDeriv n (f ∘ (·*c)) x = c^n · iteratedDeriv n f (cx) — name? `iteratedDeriv_comp_mul_const`? I'll find/derive via iteratedDeriv_comp_smul or the CLM comp). (iii) iteratedDeriv j Complex.digamma (1/2 : ℂ) for j ≥ 1: from the complex series function D(s) := −γ − 1/s + Σ_{m≥1}(1/m − 1/(s+m)) analytic near 1/2 with D = digamma near 1/2 (identity principle from the real line agreement: D(↑x) = digamma(↑x) for real x > 0 — via D∞ = D∘ofReal (the real series = the complex series restricted ✓ by ofReal-tsum compatibility — `Complex.ofReal_tsum`? `Complex.re_tsum`? — the tsum of real-cast terms = cast of the real tsum: `Complex.ofReal_tsum`? there's `Complex.tsum_ofReal`? — `map_tsum` with the ofReal CLM: `Complex.ofRealCLM.map_tsum`? — `ContinuousLinearMap.map_tsum`? — exists: `map_tsum (f : ContinuousLinearMap) (hf : Summable g) : f (∑' g) = ∑' (f ∘ g)` ✓ something like that) — and digamma(↑x) = ↑(D∞(x)) via the ψ_real bridge: digamma(↑x) = deriv Gamma(↑x)/Gamma(↑x) = ↑(Γ'(x)/Γ(x)) = ↑(D∞ x) — needs Complex.Gamma ↑x = ↑(Real.Gamma x) (`Complex.Gamma_ofReal`? — hmm — does that exist? — there's `Complex.Gamma_ofReal`? I recall `Complex.Gamma_ofReal : Complex.Gamma ↑r = ↑(Real.Gamma r)`? — hmm — or `Complex.ofReal_Gamma`? check at build) + the derivative bridge deriv (Gamma∘ofReal) x = deriv Complex.Gamma ↑x (ofRealCLM comp) + Real.Gamma'... — the real Gamma derivative: `Real.deriv_Gamma`? Real.Gamma differentiable: `Real.differentiable_Gamma`? exists probably; and Real.Gamma' x = (Complex deriv)... — this bridge: Complex.Gamma(↑x) = ↑(Real.Gamma x) — differentiate both sides: deriv Complex.Gamma ↑x · (ofReal' x = 1) = ↑(Real.Gamma' x)?? — hmm — the real derivative of Real.Gamma vs complex: deriv (fun x : ℝ => Complex.Gamma ↑x) x = ↑(deriv Real.Gamma x)? — via ofReal-commutation with deriv: deriv (↑ ∘ g) x = ↑(deriv g x) (`Complex.deriv_ofReal`? `ofReal_deriv`? — `Complex.deriv_ofReal`? there might be — or via ofRealCLM.comp ✓). Then the identity principle: D and digamma analytic on a connected neighborhood of the real segment (0, ∞)-ish minus poles — take the domain U := ℂ ∖ {0, −1, −2, ...}?? — for the identity principle I need a connected open set where BOTH are analytic, containing points of (0,∞)... — take a ball around 1/2 of radius < 1/2 — avoids all nonpositive integers ✓: D analytic on it (Weierstrass ✓), digamma analytic on it (no poles: poles at nonpositive integers ✓) — agreement on (1/4, 3/4) real segment — has a limit point in the ball ✓ — `AnalyticOnNhd.eq_on_of_preconnected_of_eventuallyEq`? or the freq-accumulate form: `AnalyticOnNhd.eq_of_frequently_eq`? — there's `AnalyticOnNhd.eq_of_preconnected_of_frequently_eq`? hmm — the identity principle in Mathlib: `AnalyticOnNhd.eq_of_preconnected_of_mem_nhds`? Let me find the right form: something like: if f g analytic on preconnected open U, z₀ ∈ U, and f =ᶠ[𝓝[≠] z₀]... no — the strong form: f = g on a set with an accumulation point in U ⟹ f = g on U: `AnalyticOnNhd.eq_of_preconnected_of_frequently_eq`? I'll find it. (iv) iteratedDeriv j D (1/2) = the series of termwise iterated derivs — the locally-uniform-sum-of-iterated-derivs — via TendstoLocallyUniformlyOn.deriv iterated (or a direct iterated version if it exists). Hmm — OR avoid the identity-principle dance: compute iteratedDeriv j digamma (1/2:ℂ) from the REAL derivatives directly: digamma analytic near 1/2; the real restriction digamma∘ofReal = ofReal ∘ D∞ near 1/2; then iteratedDeriv j digamma (1/2:ℂ) = iteratedDeriv j (digamma∘ofReal) (1/2) [comp with ofReal — deriv 1] = iteratedDeriv j (ofReal ∘ D∞) (1/2) = ofReal(iteratedDeriv j D∞ (1/2)) — the first equality: iteratedDeriv of f∘ofReal at x = iteratedDeriv of f at ↑x — via the CLM comp lemma (ofRealCLM has derivative 1 as ℝ→ℂ map... wait ofRealCLM : ℝ →L[ℝ] ℂ — as a CLM its "derivative" is itself; (f∘L)'(x) = f'(Lx) ∘ L — for iterated: iteratedDeriv n (f ∘ L) x = (iteratedDeriv n f (Lx)) ∘ L^... — there's `ContinuousLinearMap.iteratedDeriv_comp`? — `iteratedDeriv_comp_clm`? I recall `iteratedDeriv_comp` for CLMs: `L.iteratedDeriv_comp (hf : ContDiff) ... : iteratedDeriv n (f ∘ L) x = L (iteratedDeriv n f (L x))`? something like `ContinuousLinearMap.iteratedDeriv_comp`? hmm — there's `iteratedDeriv_comp` hmm. For ofRealCLM specifically: ofRealCLM (c) = ↑c — so iteratedDeriv n (f ∘ ofRealCLM) x = ↑(iteratedDeriv n f ↑x)?? direction... I want iteratedDeriv n digamma (↑x) — from digamma ∘ ofReal = ofReal ∘ D∞: iteratedDeriv n (digamma ∘ ofReal) x = iteratedDeriv n (ofReal ∘ D∞) x = ↑(iteratedDeriv n D∞ x) (the ofReal pulls out since it's linear — via the same CLM lemma on the other side) and iteratedDeriv n (digamma ∘ ofReal) x = iteratedDeriv n digamma (↑x) — IF the CLM lemma gives that (L = ofRealCLM, whose "multiplier" is 1): the general CLM comp: iteratedDeriv n (f ∘ L) x = iteratedFDeriv... — for SCALAR L := ofRealCLM — the n-th derivative of f∘L is (iteratedDeriv n f (L x)) · (L 1)^n-ish = same ✓. So iteratedDeriv n (digamma ∘ ofReal) x = iteratedDeriv n digamma (↑x)·(ofRealCLM 1)^n = iteratedDeriv n digamma ↑x·1^n = itself ✓. The lemma name: I recall `ContinuousLinearMap.iteratedDeriv_comp`? or `iteratedDeriv_comp_clm`? — hmm — there's `iteratedFDeriv...` — for iteratedDeriv (1-dim) there should be a comp-with-CLM lemma: `ContinuousLinearMap.iteratedDeriv_comp (L : E →L[𝕜] F) (h : ContDiff) : iteratedDeriv n (f ∘ L) x = L (iteratedDeriv n f (L x))`?? — hmm no — that's wrong for n ≥ 2 (chain rule has L^n factors... no wait — for LINEAR L: (f∘L)'' = (f''∘L)·L² — as iteratedDeriv (scalar 1-dim domain): iteratedDeriv n (f∘L) x = (iteratedDeriv n f (Lx))·(L 1)^n — since L is linear = multiplication by L 1 (in 1-dim over the field... for CLM ℝ→ℂ: L x = x•(L 1) — L 1 = 1 for ofRealCLM ✓). The relevant Mathlib lemma: `iteratedDeriv_comp_clm`? hmm — let me search for "iteratedDeriv.*comp" in Mathlib at build time. OK — this piece (A) is genuinely ~1.5 sessions of careful Lean. Given it's 22:30 already, let me scope THIS session's work to setting up the architecture + the easy parts, and be careful. Actually — let me reconsider the size: maybe I should split piece (A) into two sub-parts: (A-i) The j = 0 case (τ₀ = −a₁) — SMALL (digamma_one_half + the split) — doable now. (A-ii) The j ≥ 1 cases — the digamma series — bigger. And for (A-ii), let me think ONE more time about whether there's a shortcut via what Mathlib has for HURWITZ zeta. The τ_j for j ≥ 1 could alternatively be extracted from hurwitzZeta values: ψ^{(j)}(1/2) = (−1)^{j+1} j! ζ(j+1, 1/2) — Mathlib's hurwitzZeta: does Mathlib have the polygamma–Hurwitz relation?? `iteratedDeriv... hurwitzZeta`? — there might be `Complex.deriv_hurwitzZeta`? hmm. Or the series ζ(s, 1/2) = Σ (m+1/2)^{−s} — Mathlib defines hurwitzZetaEven via the integral/completed forms — the plain series form `hurwitzZeta s a = Σ' 1/(n+a)^s` for re s > 1 — `hurwitzZeta_eq_tsum`? probably exists for re > 1. But the VALUES ζ(j+1, 1/2) as sums — the series is the DEFINITION essentially — the identity ζ(j+1, 1/2) = (2^{j+1}−1)ζ(j+1) — hmm — and then I'd need ζ(j+1) = the odd-m... no wait — the ODD-m series is what lagariasA encodes — Σ_{m odd} m^{−(j+1)} = (1−2^{−(j+1)})ζ(j+1) — the identity Σ odd = (1−2^{−s})ζ(s): Σ even = 2^{−s}ζ(s) — needs the full ζ series = Mathlib `riemannZeta_eq_tsum_...` (saw `zeta_eq_tsum_one_div_nat_add_one_cpow` ✓ in the RiemannZeta.lean docs) + even/odd split (the even part = 2^{−s}ζ(s) via reindex n ↦ 2n — a tsum manipulation ✓). So actually the odd-zeta identity is a tsum manipulation from the series forms — moderate. But the polygamma↔Hurwitz link (ψ^{(j)}(1/2) = (−1)^{j+1}j!ζ(j+1,1/2)) is NOT in Mathlib either way. The series route remains. Let me check two names before writing: (1) the real deriv-limit interchange lemma; (2) `Complex.Gamma_ofReal`-ish; (3) the harmonic-minus-log tendsto lemma name.
Session 020 — ii′-3a piece (A). First, checking the three infrastructure names that determine the architecture: the real deriv-limit interchange, the ofReal Gamma bridge, and the harmonic/log limit.
tool: Bash
input
{
  "command": "cd \"D:/Python/Quantum/zeta-23-lean/.lake/packages/mathlib\" && grep -rn \"tendsto_harmonic_sub_log\\|eulerMascheroniConstant\" Mathlib/Analysis/SpecialFunctions/Gamma/BohrMollerup.lean Mathlib/NumberTheory/Harmonic/*.lean 2>/dev/null | grep \"theorem\\|lemma\\|def\\|Tendsto\" | head -8; echo ===GAMMAOFREAL===; grep -rn \"Gamma_ofReal\\|ofReal_Gamma\\|Gamma.*ofReal\" Mathlib/Analysis/SpecialFunctions/Gamma/Basic.lean Mathlib/Analysis/SpecialFunctions/Complex/*.lean 2>/dev/null | head -5",
  "description": "Check harmonic-log limit and Gamma ofReal names"
}
raw content_json (database row)
[{"type":"thinking","thinking":"Session 020 — ii′-3a piece (A): the archimedean τ-evaluation. Per STATE.md NEXT ACTION:\n\nProve τ_j := (1/j!)·iteratedDeriv j (fun s => logDeriv Gammaℝ (1+s)) 0 = (−1)^{j+1}·lagariasA (j+1) for all j ≥ 0.\n\nPieces:\n- j = 0: τ₀ = −(log π)/2 + (1/2)·digamma(1/2) = −(log 4π + γ)/2 = −a₁ via Complex.digamma_one_half.\n- j ≥ 1: ψ^{(j)}(1/2) = (−1)^{j+1} j! Σ_{m≥0}(m+1/2)^{−(j+1)} via the digamma series from logGammaSeq; reindex to lagariasA.\n\nLet me plan the Lean architecture for piece (A). This is the heavy one. Let me think carefully about the minimal path.\n\n**The target statement.** Define τ_j as the Taylor coefficient of ΓR′/ΓR(1+·) at 0. Actually — what does the ASSEMBLY (ii′-3c) need? The coefficient comparison: g(1+s) = 1/(1+s) + [1/s + ζ′/ζ(1+s)] + ΓR′/ΓR(1+s). So I need iteratedDeriv j (fun s => logDeriv Gammaℝ (1+s)) 0 = (−1)^{j+1} j!·a_{j+1} — as a ℂ equality.\n\n**Decompose the proof:**\n\n(A1) The Gammaℝ logDeriv split: for s near 0 (s ≠ −1... wherever analytic): logDeriv Gammaℝ (1+s) = −(log π)/2 + (1/2)·Complex.digamma ((1+s)/2).\n  Gammaℝ w = π^{−w/2}·Γ(w/2) (Gammaℝ_def ✓). logDeriv: logDeriv (π^{−w/2} · Γ(w/2)) = logDeriv (π^{−w/2}) + logDeriv (Γ(w/2)) — needs nonvanishing: Gammaℝ(1+s) ≠ 0 near 0 ✓ (Gammaℝ 1 = 1, continuity). logDeriv (π^{−w/2}) = deriv(π^{−w/2})/π^{−w/2} = (−log π/2)·π^{−w/2}/π^{−w/2} = −(log π)/2 ✓ (deriv of π^{−w/2} = π^{−w/2}·(−log π)/2 — cpow/const-cpow derivative — `Complex.deriv_const_cpow`? — π^{−w/2} = Complex.cpow π (−w/2) = exp(log π · (−w/2)) — deriv = exp(log π·(−w/2))·(−log π/2) — chain rule — hasDerivAt_const_cpow? — there's `Complex.hasDerivAt_const_cpow...`? — I'll find it). logDeriv (Γ(w/2)) = (digamma(w/2)·(1/2)) — deriv Γ(w/2) = Γ'(w/2)·(1/2) — chain rule — then /Γ(w/2) = digamma(w/2)·(1/2) ✓.\n\n(A2) The digamma value at 1/2 (j = 0): Complex.digamma_one_half ✓.\n\n(A3) For j ≥ 1: the Taylor coefficients of s ↦ Complex.digamma ((1+s)/2) at 0 = the values digamma^{(j)}(1/2)·(1/2)^j — via comp. So I need **iteratedDeriv j Complex.digamma (1/2)** for j ≥ 1 = (−1)^{j+1} j! Σ_{m≥0} (m + 1/2)^{−(j+1)} — as a ℂ fact.\n\n(A3) is the hard part. Now — how to build the digamma series in Lean with minimal pain?\n\n**Option 1: the real logGammaSeq route.** Build ψ_real(x) := deriv (Real.log ∘ Real.Gamma) x, prove the series + termwise derivatives, then bridge complex digamma of real = ψ_real. Heavy: the real/complex bridge for digamma (Complex.Gamma ofReal = Real.Gamma — `Complex.Gamma_ofReal`? — does it exist? then digamma ↑x = deriv Gamma ↑x / Gamma ↑x — vs ψ_real x = (Real.Gamma)' x / Real.Gamma x — the derivative bridge: deriv (Gamma ∘ ofReal) x = deriv Complex.Gamma ↑x·1 — via HasDerivAt.comp with ofRealCLM ✓ pattern exists. So ψ_real(↑x) = ↑(ψ_real x) — provable. THEN the complex Taylor coefficients at 1/2: iteratedDeriv j digamma (1/2 : ℂ) — from the real-line derivatives: digamma is analytic near 1/2 (meromorphic_digamma + no pole at 1/2 ✓ — need AnalyticAt ℂ digamma (1/2) — from meromorphic + value finite... `MeromorphicAt.analyticAt`? there's a way: MeromorphicAt + order ≥ 0 ⟹ analytic? — `MeromorphicAt`... hmm — digamma analytic at 1/2: poles of digamma = poles of Gamma = nonpositive integers — 1/2 not one — analyticity at non-poles: is there `analyticAt_digamma`? probably not — derivable: digamma = logDeriv Gamma = deriv Gamma / Gamma — Gamma differentiable everywhere? Complex.Gamma is differentiable off the poles — `Complex.differentiableAt_Gamma`? — there's `differentiableAt_Gamma`? Let me check — Deriv.lean in the Gamma folder! `Mathlib/Analysis/SpecialFunctions/Gamma/Deriv.lean` — likely has differentiableAt_Gamma + deriv_Gamma lemmas ✓. So digamma analytic at 1/2 via quotient (Gamma(1/2) = √π ≠ 0 ✓ Gamma_one_half_eq ✓ saw it used in digamma_one_half's proof).\n  Then iteratedDeriv j digamma (1/2) for j ≥ 1 — relate to real derivatives: digamma restricted to the real line near 1/2 equals ψ_real (via the ofReal bridge) — then iteratedDeriv of the complex-analytic function at a real point = the complex extension of the real iterated derivatives: hmm — this needs: digamma(↑x) = ↑(ψ_real x) for real x near 1/2, then iteratedDeriv j digamma (↑(1/2)) = iteratedDeriv j (digamma ∘ ofReal) (1/2)·... — iteratedDeriv (digamma ∘ ofReal) x = iteratedDeriv j digamma ↑x — since ofReal's derivative is 1: via iteratedDeriv_comp with ofRealCLM — is there a lemma `iteratedDeriv_comp_ofReal`? or via the CLM comp: `iteratedDeriv_comp_clm`? hmm — there might be `Complex... `? For the comp with a continuous linear map L: iteratedDeriv n (f ∘ L) x = iteratedDeriv n f (L x) when L's \"derivative\" is... ofRealCLM : ℝ → ℂ has derivative itself; (f∘L)'(x) = f'(Lx)∘L = f'(Lx)·1-ish. For iterated: there's a general `iteratedDeriv_comp` for CLMs? Might need a small induction. Alternatively AVOID the real/complex bridge for the derivatives: compute the complex Taylor coefficients DIRECTLY from the real series evaluated on the real line + the IDENTITY THEOREM? Hmm — no: I need the coefficients, not the function.\n\n  Hmm — actually cleaner: work with the function-series identity on the complex side directly:\n  **Option 2: build the complex digamma series directly**: for s near 1/2 (or in a half-plane), Complex.digamma(s) = −γ − 1/s + Σ_{m≥1} (1/m − 1/(s+m)) — prove THIS as a complex identity from... what seed? The complex Gamma's product isn't in Mathlib. The real logGammaSeq gives it only on the real line. To get the complex identity from the real one: both sides analytic on ℂ ∖ {0, −1, −2, ...} — the series Σ_m (1/m − 1/(s+m)) converges locally uniformly on compacts avoiding the poles (|1/m − 1/(s+m)| = |s|/(m|s+m|) ≤ C/m² on compacts ✓) — analytic by Weierstrass ✓ (TendstoLocallyUniformlyOn.differentiableOn ✓ exists). The two analytic functions agree on (0, ∞) (the real identity) ⟹ agree on the connected domain ℂ∖{nonpositive integers} (identity principle — (0,∞) has a limit point in the domain ✓). So the complex series identity follows from the real one + identity principle. THEN the Taylor coefficients at 1/2 from the complex series by termwise complex iterated derivation (each term (1/m − 1/(s+m)) is analytic; the sum converges locally uniformly; iteratedDeriv commutes with the locally uniform sum — via TendstoLocallyUniformlyOn.deriv iterates... — there's `TendstoLocallyUniformlyOn.deriv` (LocallyUniformLimit.lean line 22 ✓) — for ITERATED derivatives need the iterated version — the deriv convergence is itself locally uniform so induction works: `TendstoLocallyUniformlyOn.iteratedDeriv`? might exist or iterate the deriv one).\n\n  Hmm — both options route through substantial infrastructure. Let me think about what's genuinely the MINIMAL path.\n\n  **Option 3: avoid the digamma series for the function; only compute the DERIVATIVES at 1/2 via the series.** What I need: iteratedDeriv j Complex.digamma (1/2 : ℂ) for j ≥ 1. Define the candidate series function D(s) := −γ − 1/s + Σ_{m≥1}(1/m − 1/(s+m)) on a neighborhood of 1/2 (complex). Prove: (i) D is analytic near 1/2 (Weierstrass — uniform on compacts ✓); (ii) D = Complex.digamma near 1/2 — HOW? The identity needs SOME input connecting D to digamma. Via the real line: D(↑x) = ψ_real(x) for real x > 0 (the real series identity — from logGammaSeq) and digamma(↑x) = ψ_real(x) (the ofReal bridge) — so D and digamma agree on a real segment ⟹ agree near 1/2 (identity principle — needs both analytic on a connected nhd containing a real segment ✓). Then iteratedDeriv j digamma (1/2) = iteratedDeriv j D (1/2) (eventually-equal functions have equal iteratedDerivs — `Filter.EventuallyEq.iteratedDeriv`? — need: if f =ᶠ[𝓝 x] g then iteratedDeriv n f x = iteratedDeriv n g x — hmm — does that lemma exist? EventuallyEq.deriv_eq exists (used in LiResidue: h3.deriv_eq). For iterated: `Filter.EventuallyEq.iteratedDeriv_eq`? — maybe not — but deriv_eq ITERATES: iteratedDeriv n = deriv^n — an induction using EventuallyEq.deriv_eq + the eventual-eq of the derivatives (deriv of eventually-eq analytic functions are eventually equal — need the derivative of the eventual equality to hold on a nhd — `EventuallyEq.deriv_eq` gives pointwise at x; for the induction I need ∀ᶠ y, deriv f y = deriv g y — from f =ᶠ[𝓝 x] g: on the nhd where f = g, derivs agree ✓ — there's `EventuallyEq.deriv` hmm — `Filter.EventuallyEq.deriv : f =ᶠ[𝓝 x] g → deriv f =ᶠ[𝓝 x] deriv g`? I believe something like that exists (`EventuallyEq.deriv` or `.deriv_eq` variants). OK.\n  (iii) iteratedDeriv j D (1/2) = −(the 1/s part) + Σ_m termwise-derivatives = the polygamma formula: for j ≥ 1: iteratedDeriv j (−1/s) at 1/2 = −(−1)^j j! s^{−(j+1)}|_{1/2} = −(−1)^j j! 2^{j+1} = (−1)^{j+1} j! 2^{j+1}; iteratedDeriv j (1/m − 1/(s+m)) at 1/2 = −(−1)^j j! (1/2+m)^{−(j+1)}·(−1)... let me compute: (d/ds)^j [−(s+m)^{−1}] = −(−1)^j j! (s+m)^{−(j+1)} = (−1)^{j+1} j! (s+m)^{−(j+1)}. At 1/2: (−1)^{j+1} j! (m + 1/2)^{−(j+1)} ✓. And the 1/s term: (d/ds)^j (−s^{−1}) = (−1)^{j+1} j! s^{−(j+1)} — at 1/2: (−1)^{j+1} j! 2^{j+1} = (−1)^{j+1} j! (0 + 1/2)^{−(j+1)} ✓ — so the −1/s term IS the m = 0 term ✓ — total: iteratedDeriv j D (1/2) = (−1)^{j+1} j! Σ_{m≥0} (m+1/2)^{−(j+1)} ✓✓.\n  The termwise derivation of the sum at a single point: Σ_m f_m^{(j)}(1/2) = (Σ_m f_m)^{(j)}(1/2) — needs the series of j-th derivatives to converge and the interchange — the clean Lean tool: for the COMPLEX iterated deriv of a tsum of analytic functions converging locally uniformly — from LocallyUniformLimit.lean: TendstoLocallyUniformlyOn.deriv + iteration. The partial sums S_N(s) = Σ_{m≤N} f_m(s) → D(s) locally uniformly (Weierstrass M-test: |1/m − 1/(s+m)| ≤ C/m² on |s − 1/2| ≤ 1/4 say — |s|/(m|s+m|) ≤ (3/4)/(m·(m − 3/4))·... ≤ C/m² ✓ for m ≥ 1, |s+m| ≥ m − |s| ≥ m − 3/4 ≥ m/4 for m ≥ 1 ✓ so ≤ (3/4)/(m·m/4) = 3/m² ✓). The DERIVED series: Σ_m f_m^{(j)} — |f_m^{(j)}(s)| = j!|s+m|^{−(j+1)} ≤ j!/(m−3/4)^{j+1} ≤ C_j/m^{j+1} — summable for j ≥ 1 ✓ so the derived series also converges locally uniformly ⟹ deriv commutes with the limit — iterate j times. In Lean this is the fiddly part: the TendstoLocallyUniformlyOn of the partial sums (from the M-test bound — `tendstoLocallyUniformlyOn_...`? there's a Weierstrass M-test lemma for series: `tendstoLocallyUniformlyOn_of_...`? hmm — there's `tendstoUniformlyOn_of_...`? For series: `Summable` + uniform bound ⟹ uniform convergence of partial sums: `tendstoUniformlyOn_tsum`? I recall `tendstoUniformlyOn_tsum (hf : ∀ n, ‖f n‖ ≤ u n) (hu : Summable u) : TendstoUniformlyOn (fun t => ∑ n ∈ Finset.range t, f n) (fun x => ∑' n, f n x) atTop`? — something like `tendstoUniformlyOn_tsum` exists in Mathlib.Topology.Algebra.InfiniteSum.TsumUniformlyOn ✓ (I saw TsumUniformlyOn.lean in the file listing earlier!). And the locally version from the uniformly-on-compacts version ✓. Then `TendstoLocallyUniformlyOn.deriv` : TendstoLocallyUniformlyOn F f φ U → (∀ n, DifferentiableOn (F n) U) → ... → TendstoLocallyUniformlyOn (deriv ∘ F) (deriv f) φ U ✓ (line 114-136 area). Iterate: deriv∘F → deriv f locally uniformly, then apply again to the derivative sequence (which is again a locally-uniformly-convergent sequence of differentiable functions) — j times ⟹ iteratedDeriv. There might be a direct `TendstoLocallyUniformlyOn.iteratedDeriv`? hmm — probably not — iterate manually via induction.\n\nThis is Option 3 — probably the cleanest overall. But it's still a chunk: (i) M-test uniform convergence; (ii) real identity from logGammaSeq; (iii) ofReal bridge for digamma; (iv) identity principle; (v) termwise iterated deriv; (vi) the odd-m reindexing to lagariasA; (vii) the (1+s)/2 comp and the τ assembly.\n\nHmm — wait. Let me reconsider — is there any shortcut for (ii) (the real series identity)? I need: for real x > 0, Complex.digamma ↑x = ↑(...) — the series. From logGammaSeq: log Γ(x) = lim_n [x log n + log n! − Σ_{m=0}^n log(x+m)]. Take the REAL derivative of both sides: LHS' = ψ_real(x) := (log Γ)'(x) = Γ'(x)/Γ(x) (real). RHS' = lim_n [log n − Σ_{m=0}^n 1/(x+m)] — interchange deriv and limit: needs (a) pointwise convergence of logGammaSeq (✓ tendsto_log_gamma) and (b) locally uniform convergence of the derivative sequence D_n(x) := log n − Σ_{m=0}^n 1/(x+m). D_n(x) = [log n − H_n] + Σ_{m=1}^n (1/m − 1/(x+m)) − 1/x: the bracket → −γ; the sum converges uniformly on compact subsets of (0,∞) by M-test (|1/m − 1/(x+m)| = x/(m(x+m)) ≤ K/m² for x ≤ K); −1/x constant. So D_n → D_∞ locally uniformly where D_∞(x) = −γ − 1/x + Σ_{m≥1}(1/m − 1/(x+m)) ✓. Mathlib real-analysis lemma for deriv-of-limit: `tendsto_locally_uniform...deriv`? — for ℝ the clean tool: `hasDerivAt_of_tendsto_locally_uniformly_on`? or the FTC-free version: there's `TendstoLocallyUniformlyOn.deriv` only for ℂ (I think). For ℝ: hmm — `deriv` of a locally uniform limit of real functions with locally uniformly convergent derivatives: this is `tendstoLocallyUniformlyOn.deriv`? — complex only. For real: `hasDerivAt_of_tendstoUniformlyOn`? Let me think of the right real lemma: there's `hasDerivAt_of_tendstoLocallyUniformlyOn (hf : TendstoLocallyUniformlyOn F f ...) (hg : TendstoLocallyUniformlyOn (fun n => deriv (F n)) g ...) (hF : ∀ n, Differentiable (F n))`?? — I recall something in Mathlib.Analysis.Calculus.LogDeriv or UniformConvergenceTopology... Actually — the standard real lemma is in `Mathlib.Analysis.Calculus.UniformLimit`? hmm. There IS: `hasDerivAt_of_tendsto_locally_uniformly_on`? I'm not certain. Alternatives: prove via the FTC formulation: if f_n' → g uniformly and f_n(x₀) → y₀ then f_n → f with f' = g: Mathlib: `tendsto... uniform...deriv` — there's a theorem `uniformly_convergent_derivative`? I'll search at build time; worst case prove via the mean-value/integral route.\n\nHmm — actually, let me check whether the series ψ(x) = −γ + Σ(1/m − 1/(x+m)) is REALLY not in Mathlib — maybe it IS there under some name (the digamma series was added to Mathlib at some point — `Complex.digamma_eq...`? or Real?). Let me grep once more, broadly, for digamma-related series/hasSum.\n\nAlso reconsider: maybe there's an even more different route for the TAYLOR COEFFICIENTS of ΓR′/ΓR(1+s): via the RECURRENCE + decay: ΓR′/ΓR(1+s) = ΓR′/ΓR(1+s+N) − Σ_{j'=0}^{N−1} 1/(1+s+2j')·(1/2)... wait — Gammaℝ_add_two : Gammaℝ (s+2) = Gammaℝ s·s/2/π — so logDeriv Gammaℝ (w+2) = logDeriv Gammaℝ w + 1/w. So F(s) := ΓR′/ΓR(1+s) = F_N-ish: ΓR′/ΓR(1+s) = ΓR′/ΓR(1+s+2N) − Σ_{j'=0}^{N−1} 1/(1+s+2j')·(1)... from logDeriv Gammaℝ (w+2) = logDeriv Gammaℝ w + 1/w: with w := 1+s: ΓR′/ΓR(3+s) = ΓR′/ΓR(1+s) + 1/(1+s) — so ΓR′/ΓR(1+s) = ΓR′/ΓR(3+s) − 1/(1+s) = ΓR′/ΓR(1+s+2N) − Σ_{j'=0}^{N−1} 1/(1+s+2j'). As N → ∞: ΓR′/ΓR(1+s+2N) ~ (1/2)log((1+s+2N)/2) − (log π)/2 — GROWS like (1/2)log N — and the sum Σ 1/(1+s+2j') ~ (1/2)log N — cancel. The TAYLOR COEFFICIENTS at s = 0 of order j ≥ 1: the N-dependent pieces: iteratedDeriv j [ΓR′/ΓR(1+s+2N)] at s=0 = (ΓR′/ΓR)^{(j)}(1+2N) — if this → 0 as N → ∞ for j ≥ 1, then the j-th coefficient = lim of −Σ_{j'=0}^{N−1} (iteratedDeriv j [1/(1+s+2j')] at 0)·... = −Σ_{j'=0}^{N−1} (−1)^j j! (1+2j')^{−(j+1)} → −(−1)^j j! Σ_{j'≥0} (2j'+1)^{−(j+1)} = (−1)^{j+1} j!·lagariasA(j+1)·... wait — Σ_{j'≥0}(2j'+1)^{−(j+1)} = Σ_{m odd ≥ 1} m^{−(j+1)} = lagariasA(j+1) ✓✓ DIRECTLY (no 2^{j+1} factor — the 2's cancel: 1/(1+s+2j') has derivatives (−1)^j j!/(1+s+2j')^{j+1} — at 0: (−1)^j j!/(1+2j')^{j+1} — no powers of 2 ✓). So τ_j = −(−1)^j j! Σ_{j'≥0}(2j'+1)^{−(j+1)}·(1/j!)·... let me redo: iteratedDeriv j F 0 = −lim_N Σ_{j'=0}^{N−1} (−1)^j j! (1+2j')^{−(j+1)} + lim_N (ΓR′/ΓR)^{(j)}(1+2N) — the second limit must be 0 for j ≥ 1 — i.e. **the derivatives of ΓR′/ΓR at large real arguments tend to 0**: (ΓR′/ΓR)'(x) ~ 1/x → 0 ✓; higher: (ΓR′/ΓR)^{(j)}(x) ~ (−1)^{j+1}(j−1)!/x^j·(1/2)^j·... → 0 ✓ — needs SOME asymptotic of ψ' at infinity — ψ'(x) = 1/x + O(1/x²)... — from where? The recurrence again: (ΓR′/ΓR)'(x+2N)... circular. The decay of ψ^{(j)} at ∞ is EXACTLY the kind of fact needing the series or Stirling. Hmm — but WAIT: the decay of the first derivative ψ'(x) → 0 might be directly available: ψ'(x) = trigamma — for real x: ψ'(x) = Σ_{m≥0} 1/(x+m)² — the series AGAIN. OK the series is unavoidable — every route needs some form of the digamma series/asymptotics, and the logGammaSeq route gives it most directly for real x. Fine.\n\nSo the work plan for piece (A) stands. Let me now carefully scope the sub-lemmas:\n\nFile `LiArchimedean.lean`:\n\nPart 1 — the real digamma series:\n- Define `digammaRealSeq (x : ℝ) (n : ℕ) : ℝ := Real.log n − ∑ m ∈ Finset.range (n+1), 1/(x + m)` (the deriv of logGammaSeq).\n- Lemma A: TendstoLocallyUniformlyOn (digammaRealSeq ·) D∞ (Ioi 0)?? hmm — what domain: for x ∈ compact ⊆ (0,∞)... Let me target: TendstoLocallyUniformlyOn (fun n x => Real.log n − Σ_{m=0}^n 1/(x+m)) (fun x => −γ − 1/x + Σ_{m≥1}(1/m − 1/(x+m))) atTop (Ioi 0)?? The cleanest: split digammaRealSeq x n = (log n − H_n) + Σ_{m=1}^n (1/m − 1/(x+m)) − 1/x:\n  - log n − H_n → −γ: eulerMascheroniConstant's definition! `Real.eulerMascheroniConstant` is DEFINED as the limit of harmonic-minus-log — there's a lemma `Real.tendsto_harmonic_sub_log...`? — the constant is DEFINED via `Tendsto (fun n => harmonic n − log n) atTop (𝓝 eulerMascheroniConstant)`? — `Real.tendsto_harmonic_sub_log`? — I recall eulerMascheroniConstant is defined as lim (H_n − log n) and the tendsto lemma is `Real.tendsto_harmonic_sub_log` or the definition itself `Real.eulerMascheroniConstant_def`? — need to check the exact form: I believe `Real.harmonic_sub_log_tendsto...`? There's `Real.tendsto_harmonic_sub_log : Tendsto (fun n => harmonic n − log n) atTop (𝓝 eulerMascheroniConstant)`? something like that — grep.\n  - Σ_{m=1}^n (1/m − 1/(x+m)) → tsum locally uniformly: Weierstrass M-test on compacts: for x ∈ Icc a b ⊆ (0,∞): |1/m − 1/(x+m)| = x/(m(x+m)) ≤ b/(m·m) = b/m² ✓ Summable (b/m²) ✓ — `tendstoUniformlyOn_tsum`-type lemma on Icc a b, then locally uniform on (0,∞) via compacts.\n- Then the deriv-limit interchange: ψ_real := deriv (Real.log ∘ Real.Gamma)... — hmm — actually what I really need is not ψ_real per se but the relation: deriv (Real.log ∘ Real.Gamma) x = D∞(x) for x > 0. Via: logGammaSeq x n → log Γ(x) (tendsto_log_gamma ✓) + digammaRealSeq x n = deriv (logGammaSeq · n) x → D∞ locally uniformly + the deriv-interchange lemma ⟹ deriv (log Γ) x = D∞(x). The interchange lemma for real: let me find it — search for \"tendsto_deriv\" / \"hasDerivAt_of_tendsto\" in Mathlib.\n\nHmm — actually for the interchange maybe easier: the uniform-limit-of-derivatives theorem for real functions: I recall `TendstoLocallyUniformly.deriv`? or in Mathlib/Analysis/Calculus/UniformLimit.lean? or LocallyUniform? For real there's: `hasDerivAt_of_tendsto_locally_uniformly_on`? — not sure. There IS the sequence-derivative theorem via `uniform` convergence: Let me grep for the real version.\n\nPart 2 — iterated derivatives of D∞: D∞^{(j)}(x) = (−1)^{j+1} j! Σ_{m≥0} (x+m)^{−(j+1)} for j ≥ 1, x > 0. Via the termwise deriv of the series — again deriv-interchange per derivative order — INDUCTION on j using the same interchange lemma (each derived series M-testable: |d/dx (1/m − 1/(x+m))|^{(j)} = j!/(x+m)^{j+1} ≤ j!/m^{j+1} ✓ summable for j ≥ 1 ✓). Wait — careful: the series Σ_{m≥1}(1/m − 1/(x+m)) has j-th deriv Σ_{m≥1} (−1)^{j+1} j!/(x+m)^{j+1} and the −1/x term's j-th deriv (−1)^{j+1}j!/x^{j+1} — combine to Σ_{m≥0} ✓. For j = 1: D∞'(x) = 1/x² + Σ_{m≥1} 1/(x+m)² = Σ_{m≥0}(x+m)^{−2} ✓.\n\nPart 3 — the complex bridge: Complex.digamma(↑x) = ↑(D∞(x))?? — hmm — actually let me reconsider: what I need at the END is iteratedDeriv j (fun s : ℂ => logDeriv Gammaℝ (1+s)) 0 for j ≥ 1. Path: \n  (i) logDeriv Gammaℝ (1+s) = −(log π)/2 + (1/2)·digamma((1+s)/2) for s near 0 (the split).\n  (ii) iteratedDeriv j of that at 0 = (1/2)·iteratedDeriv j (digamma ∘ ((1+·)/2)) 0 = (1/2)·(1/2)^j·iteratedDeriv j digamma (1/2)·... — comp with the affine map s ↦ (1+s)/2 — iteratedDeriv_comp for affine maps: there should be something (iteratedDeriv_comp_add_const ✓ exists + iteratedDeriv_comp_const_mul? — `iteratedDeriv_comp_const_mul`? hmm — for f(c·x): iteratedDeriv n (f ∘ (·*c)) x = c^n · iteratedDeriv n f (cx) — name? `iteratedDeriv_comp_mul_const`? I'll find/derive via iteratedDeriv_comp_smul or the CLM comp).\n  (iii) iteratedDeriv j Complex.digamma (1/2 : ℂ) for j ≥ 1: from the complex series function D(s) := −γ − 1/s + Σ_{m≥1}(1/m − 1/(s+m)) analytic near 1/2 with D = digamma near 1/2 (identity principle from the real line agreement: D(↑x) = digamma(↑x) for real x > 0 — via D∞ = D∘ofReal (the real series = the complex series restricted ✓ by ofReal-tsum compatibility — `Complex.ofReal_tsum`? `Complex.re_tsum`? — the tsum of real-cast terms = cast of the real tsum: `Complex.ofReal_tsum`? there's `Complex.tsum_ofReal`? — `map_tsum` with the ofReal CLM: `Complex.ofRealCLM.map_tsum`? — `ContinuousLinearMap.map_tsum`? — exists: `map_tsum (f : ContinuousLinearMap) (hf : Summable g) : f (∑' g) = ∑' (f ∘ g)` ✓ something like that) — and digamma(↑x) = ↑(D∞(x)) via the ψ_real bridge: digamma(↑x) = deriv Gamma(↑x)/Gamma(↑x) = ↑(Γ'(x)/Γ(x)) = ↑(D∞ x) — needs Complex.Gamma ↑x = ↑(Real.Gamma x) (`Complex.Gamma_ofReal`? — hmm — does that exist? — there's `Complex.Gamma_ofReal`? I recall `Complex.Gamma_ofReal : Complex.Gamma ↑r = ↑(Real.Gamma r)`? — hmm — or `Complex.ofReal_Gamma`? check at build) + the derivative bridge deriv (Gamma∘ofReal) x = deriv Complex.Gamma ↑x (ofRealCLM comp) + Real.Gamma'... — the real Gamma derivative: `Real.deriv_Gamma`? Real.Gamma differentiable: `Real.differentiable_Gamma`? exists probably; and Real.Gamma' x = (Complex deriv)... — this bridge: Complex.Gamma(↑x) = ↑(Real.Gamma x) — differentiate both sides: deriv Complex.Gamma ↑x · (ofReal' x = 1) = ↑(Real.Gamma' x)?? — hmm — the real derivative of Real.Gamma vs complex: deriv (fun x : ℝ => Complex.Gamma ↑x) x = ↑(deriv Real.Gamma x)? — via ofReal-commutation with deriv: deriv (↑ ∘ g) x = ↑(deriv g x) (`Complex.deriv_ofReal`? `ofReal_deriv`? — `Complex.deriv_ofReal`? there might be — or via ofRealCLM.comp ✓).\n  Then the identity principle: D and digamma analytic on a connected neighborhood of the real segment (0, ∞)-ish minus poles — take the domain U := ℂ ∖ {0, −1, −2, ...}?? — for the identity principle I need a connected open set where BOTH are analytic, containing points of (0,∞)... — take a ball around 1/2 of radius < 1/2 — avoids all nonpositive integers ✓: D analytic on it (Weierstrass ✓), digamma analytic on it (no poles: poles at nonpositive integers ✓) — agreement on (1/4, 3/4) real segment — has a limit point in the ball ✓ — `AnalyticOnNhd.eq_on_of_preconnected_of_eventuallyEq`? or the freq-accumulate form: `AnalyticOnNhd.eq_of_frequently_eq`? — there's `AnalyticOnNhd.eq_of_preconnected_of_frequently_eq`? hmm — the identity principle in Mathlib: `AnalyticOnNhd.eq_of_preconnected_of_mem_nhds`? Let me find the right form: something like: if f g analytic on preconnected open U, z₀ ∈ U, and f =ᶠ[𝓝[≠] z₀]... no — the strong form: f = g on a set with an accumulation point in U ⟹ f = g on U: `AnalyticOnNhd.eq_of_preconnected_of_frequently_eq`? I'll find it.\n  (iv) iteratedDeriv j D (1/2) = the series of termwise iterated derivs — the locally-uniform-sum-of-iterated-derivs — via TendstoLocallyUniformlyOn.deriv iterated (or a direct iterated version if it exists).\n  \n  Hmm — OR avoid the identity-principle dance: compute iteratedDeriv j digamma (1/2:ℂ) from the REAL derivatives directly: digamma analytic near 1/2; the real restriction digamma∘ofReal = ofReal ∘ D∞ near 1/2; then iteratedDeriv j digamma (1/2:ℂ) = iteratedDeriv j (digamma∘ofReal) (1/2) [comp with ofReal — deriv 1] = iteratedDeriv j (ofReal ∘ D∞) (1/2) = ofReal(iteratedDeriv j D∞ (1/2)) — the first equality: iteratedDeriv of f∘ofReal at x = iteratedDeriv of f at ↑x — via the CLM comp lemma (ofRealCLM has derivative 1 as ℝ→ℂ map... wait ofRealCLM : ℝ →L[ℝ] ℂ — as a CLM its \"derivative\" is itself; (f∘L)'(x) = f'(Lx) ∘ L — for iterated: iteratedDeriv n (f ∘ L) x = (iteratedDeriv n f (Lx)) ∘ L^... — there's `ContinuousLinearMap.iteratedDeriv_comp`? — `iteratedDeriv_comp_clm`? I recall `iteratedDeriv_comp` for CLMs: `L.iteratedDeriv_comp (hf : ContDiff) ... : iteratedDeriv n (f ∘ L) x = L (iteratedDeriv n f (L x))`? something like `ContinuousLinearMap.iteratedDeriv_comp`? hmm — there's `iteratedDeriv_comp` hmm. For ofRealCLM specifically: ofRealCLM (c) = ↑c — so iteratedDeriv n (f ∘ ofRealCLM) x = ↑(iteratedDeriv n f ↑x)?? direction... I want iteratedDeriv n digamma (↑x) — from digamma ∘ ofReal = ofReal ∘ D∞: iteratedDeriv n (digamma ∘ ofReal) x = iteratedDeriv n (ofReal ∘ D∞) x = ↑(iteratedDeriv n D∞ x) (the ofReal pulls out since it's linear — via the same CLM lemma on the other side) and iteratedDeriv n (digamma ∘ ofReal) x = iteratedDeriv n digamma (↑x) — IF the CLM lemma gives that (L = ofRealCLM, whose \"multiplier\" is 1): the general CLM comp: iteratedDeriv n (f ∘ L) x = iteratedFDeriv... — for SCALAR L := ofRealCLM — the n-th derivative of f∘L is (iteratedDeriv n f (L x)) · (L 1)^n-ish = same ✓. So iteratedDeriv n (digamma ∘ ofReal) x = iteratedDeriv n digamma (↑x)·(ofRealCLM 1)^n = iteratedDeriv n digamma ↑x·1^n = itself ✓. The lemma name: I recall `ContinuousLinearMap.iteratedDeriv_comp`? or `iteratedDeriv_comp_clm`? — hmm — there's `iteratedFDeriv...` — for iteratedDeriv (1-dim) there should be a comp-with-CLM lemma: `ContinuousLinearMap.iteratedDeriv_comp (L : E →L[𝕜] F) (h : ContDiff) : iteratedDeriv n (f ∘ L) x = L (iteratedDeriv n f (L x))`?? — hmm no — that's wrong for n ≥ 2 (chain rule has L^n factors... no wait — for LINEAR L: (f∘L)'' = (f''∘L)·L² — as iteratedDeriv (scalar 1-dim domain): iteratedDeriv n (f∘L) x = (iteratedDeriv n f (Lx))·(L 1)^n — since L is linear = multiplication by L 1 (in 1-dim over the field... for CLM ℝ→ℂ: L x = x•(L 1) — L 1 = 1 for ofRealCLM ✓). The relevant Mathlib lemma: `iteratedDeriv_comp_clm`? hmm — let me search for \"iteratedDeriv.*comp\" in Mathlib at build time.\n\nOK — this piece (A) is genuinely ~1.5 sessions of careful Lean. Given it's 22:30 already, let me scope THIS session's work to setting up the architecture + the easy parts, and be careful. Actually — let me reconsider the size: maybe I should split piece (A) into two sub-parts:\n\n(A-i) The j = 0 case (τ₀ = −a₁) — SMALL (digamma_one_half + the split) — doable now.\n(A-ii) The j ≥ 1 cases — the digamma series — bigger.\n\nAnd for (A-ii), let me think ONE more time about whether there's a shortcut via what Mathlib has for HURWITZ zeta. The τ_j for j ≥ 1 could alternatively be extracted from hurwitzZeta values: ψ^{(j)}(1/2) = (−1)^{j+1} j! ζ(j+1, 1/2) — Mathlib's hurwitzZeta: does Mathlib have the polygamma–Hurwitz relation?? `iteratedDeriv... hurwitzZeta`? — there might be `Complex.deriv_hurwitzZeta`? hmm. Or the series ζ(s, 1/2) = Σ (m+1/2)^{−s} — Mathlib defines hurwitzZetaEven via the integral/completed forms — the plain series form `hurwitzZeta s a = Σ' 1/(n+a)^s` for re s > 1 — `hurwitzZeta_eq_tsum`? probably exists for re > 1. But the VALUES ζ(j+1, 1/2) as sums — the series is the DEFINITION essentially — the identity ζ(j+1, 1/2) = (2^{j+1}−1)ζ(j+1) — hmm — and then I'd need ζ(j+1) = the odd-m... no wait — the ODD-m series is what lagariasA encodes — Σ_{m odd} m^{−(j+1)} = (1−2^{−(j+1)})ζ(j+1) — the identity Σ odd = (1−2^{−s})ζ(s): Σ even = 2^{−s}ζ(s) — needs the full ζ series = Mathlib `riemannZeta_eq_tsum_...` (saw `zeta_eq_tsum_one_div_nat_add_one_cpow` ✓ in the RiemannZeta.lean docs) + even/odd split (the even part = 2^{−s}ζ(s) via reindex n ↦ 2n — a tsum manipulation ✓). So actually the odd-zeta identity is a tsum manipulation from the series forms — moderate.\n\nBut the polygamma↔Hurwitz link (ψ^{(j)}(1/2) = (−1)^{j+1}j!ζ(j+1,1/2)) is NOT in Mathlib either way. The series route remains.\n\nLet me check two names before writing: (1) the real deriv-limit interchange lemma; (2) `Complex.Gamma_ofReal`-ish; (3) the harmonic-minus-log tendsto lemma name.","signature":""},{"type":"text","text":"Session 020 — ii′-3a piece (A). First, checking the three infrastructure names that determine the architecture: the real deriv-limit interchange, the ofReal Gamma bridge, and the harmonic/log limit."},{"type":"tool_use","id":"Bash_249","name":"Bash","input":{"command":"cd \"D:/Python/Quantum/zeta-23-lean/.lake/packages/mathlib\" && grep -rn \"tendsto_harmonic_sub_log\\|eulerMascheroniConstant\" Mathlib/Analysis/SpecialFunctions/Gamma/BohrMollerup.lean Mathlib/NumberTheory/Harmonic/*.lean 2>/dev/null | grep \"theorem\\|lemma\\|def\\|Tendsto\" | head -8; echo ===GAMMAOFREAL===; grep -rn \"Gamma_ofReal\\|ofReal_Gamma\\|Gamma.*ofReal\" Mathlib/Analysis/SpecialFunctions/Gamma/Basic.lean Mathlib/Analysis/SpecialFunctions/Complex/*.lean 2>/dev/null | head -5","description":"Check harmonic-log limit and Gamma ofReal names"},"extra_content":null}]