Current task: —

Updated 08-22-2026

D-067 — ii′-5 design: the R-bound in Lean (route b″, Stirling-free)

Date: 2026-08-22 | Session: 022 | Task: 5.1 tier ii′-5 (D-064 §4 R3) Status: DESIGN COMPLETE (inventory verified live against the vendored Mathlib + Zeta23). Implementation sub-stages ii′-5a..e below.

0. Target and context

Tier-ii′ goal (D-064 §5 graph [R3]): formalize the R-bound input to the ii′-6 assembly — D-056's Theorem R:

R(s) := ζ′/ζ(s) − Σ_{|γ−t|<1} mult(ρ)/(s−ρ), |R(s)| ≤ A·log(|t|+2) + B₀ (A = 10.5, B₀ = 48; σ ∈ [−5/2, 3], |t| ≥ 10)

D-056's pen-and-paper proof uses the ξ Hadamard partial fractions — RULED OUT for Lean (D-066: no Weierstrass/order theory in Mathlib). D-064's prescription: the Davenport Ch.-15 LOCAL route (disc + Borel–Carathéodory). This design pins the exact route, geometry, and constants, and — critically — ELIMINATES the two feared builds:

1. Geometry and the key obstruction

The disc argument needs |ζ| polynomially bounded on a disc covering both the application region and the near zeros. Zeros ρ = β+iγ with |γ−t| < 1 sit at distance up to √(c²+1) from any center c+it (β → 0⁺), and √(c²+1) > c ALWAYS — so every covering disc dips left of σ = 0, where the Dirichlet series and Zeta23's ZetaUpperBnd (σ ≥ 1−A/log|t| only, FromPNTPlus/ZetaBounds.lean:1402) are useless, and the FE bound would need Γ's vertical decay (§0, avoided). Resolution: keep the dip shallow (σ ≥ −1/2) and bound |ζ| there by ONE extra Euler–Maclaurin level (§2).

Chosen geometry (right region). Center s₀ = 2+it, outer radius R = 5/2 (disc ⊆ {σ ≥ −1/2}), zero-collection radius r_c = 2.3 (all |γ−t|<1 zeros: |ρ−s₀| ≤ √5 ≈ 2.236 < 2.3; clearance on the outer circle ≥ 0.2), application radius r_a = 3/2 (covers σ ∈ [1/2, 7/2] — the range the FE-reflection needs, §3).

Lean statement shape (target): for s = σ+it, σ ∈ [−5/2, 3], |t| ≥ 10, riemannZeta s ≠ 0: ‖logDeriv riemannZeta s − Σ_{ρ ∈ nearZeros t} (zeroMult ρ)/(s−ρ)‖ ≤ 10.5 * Real.log (|t|+2) + 48 with nearZeros t the finset of nontrivial zeros in the open window (finiteness: ii′-4's zerosIn_finite pattern; the mult-weighted count bound via the perimeter or ZerosBound — pinned at implementation).

2. The |ζ| polynomial bound on σ ≥ −1/2 (NEW BUILD, ~1 session)

One extra Euler–Maclaurin level over Zeta23's existing B₁ machinery:

ζ(s) = 1/2 + 1/(s−1) + s(s+1)·∫₁^∞ B̃₂(x)·x^{−s−2} dx (re s > −1, s ≠ 1)

with B̃₂(x) = ∫₀ˣ B̃₁, periodic, B̃₂(0) = 0, |B̃₂| ≤ 1/8 (B̃₂(x) = ((x−⌊x⌋)²−(x−⌊x⌋))/2 on each period). Derivation: Zeta23 has riemannZeta0 N s = riemannZeta s (re s > 0, Zeta0EqZeta) with the B₁-integral; IBP once (per unit interval + telescope; B̃₂ continuous so the boundary terms at integers vanish; tail converges for re s > −1); extend to −1 < re s ≤ 0 by the identity principle (both sides analytic there; agree on re s > 0). Then on the disc B(2+it, 5/2):

|ζ(s)| ≤ 1/2 + 1/|s−1| + |s||s+1|/(8(σ+1)) ≤ C(1+|t|)² (σ ≥ −1/2).

Pieces in Zeta23/FromPNTPlus: EulerMaclaurin.lean (B1, abs_B1_le_half, integral_deriv_mul_add_const IBP helper), ZetaBounds.lean (Zeta0EqZeta, integrability lemmas). New: B̃₂ def + properties + the IBP step + the identity-principle extension.

3. The two-half plan

Right half: σ ∈ [1/2, 7/2], |t| ≥ 10 (the Davenport disc, ~1–1.5 sess)

On B(2+it, 5/2):

  1. |ζ| ≤ C(1+|t|)² (§2).
  2. Collect the zeros {ρₖ} of ζ in B(s₀, 2.3) with multiplicities mₖ = analyticOrderNatAt ζ ρₖ (= zeroMult); count-with-multiplicity ≤ 3·C0hat(t+3)-style bound (three unit windows of ii′-4's ZeroCountProp; mult ≤ count via the window bound applied to multiplicities — or ZerosBound/Jensen; pin at implementation). g(s) := ζ(s)/∏ₖ(s−ρₖ)^{mₖ} — analytic, NONVANISHING on B(s₀, 2.3+); the removal analyticity via Zeta23 ZeroFactorization (StrongPNTPrefix.lean:214) or direct order arguments.
  3. Outer circle: |g| ≤ C(1+|t|)²/(0.2)^m ⟹ log|g| ≤ A′log|t| + B′.
  4. Center: |ζ(2+it)| ≥ 1/ζ(2) (via 1/ζ = Σμ(n)n^{−s}, ‖1/ζ‖ ≤ ζ(2) — Mathlib LSeries moebius; name check at build time) and ∏|s₀−ρₖ| ≤ 2.3^m ⟹ −log|g(s₀)| ≤ C′log|t|.
  5. LogOfAnalyticFunction (StrongPNTPrefix:124): J_g analytic, J_g(s₀) = 0 (after the 0-centered translation), deriv J_g = g′/g, and Re J_g = log|g| − log|g(s₀)| ≤ M := (A′+C′)log|t| + B″.
  6. BorelCaratheodoryDeriv (StrongPNTPrefix:108): ‖deriv J_g‖ ≤ 16M R²/(R−r_a)³ = 100M on B(s₀, 3/2).
  7. deriv J_g = ζ′/ζ − Σₖ mₖ/(s−ρₖ) (logDeriv quotient/product rules). R(s) = (log g)′(s) + Σ_{collected, |γ−t|≥1} mₖ/(s−ρₖ); extras: each |s−ρₖ| ≥ |t−γₖ| ≥ 1 ⟹ |extras| ≤ count ≤ C₀-bound.

Left half: σ ∈ [−5/2, 1/2], |t| ≥ 10 (FE-reflection, ~0.5 sess)

Via Λ = ΓR·ζ (Zeta23 RvM.completedRiemannZeta_eq_Gammaℝ_mul, valid since ΓR(s) ≠ 0 off {−2n} and s ≠ 0) and Λ(1−s) = Λ(s) (completedRiemannZeta_one_sub):

ζ′/ζ(s) = −ζ′/ζ(1−s) − [ΓR′/ΓR(1−s) + ΓR′/ΓR(s)].

Under riemannZeta s ≠ 0 also ζ(1−s) ≠ 0 (Λ-vanishing ⟺ IsNontrivialZero, completedRiemannZeta_eq_zero_iff, + the FE). Substituting R(1−s):

R(s) = −R(1−s) − [ΓR′/ΓR(1−s) + ΓR′/ΓR(s)] + [Σ_{|γ−t|<1} m/(s−ρ)] − [Σ_{|γ′+t|<1} m′/(1−s−ρ′)]

and the two sums CANCEL EXACTLY: zeros with γ′ near −t are ρ′ = 1−ρ with γ near t (FE symmetry), multiplicities match (mult_reflect — Zeta23 seam), and 1/(1−s−(1−ρ)) = −1/(s−ρ).

The ΓR-bracket: ΓR′/ΓR(w) = −(log π)/2 + ½ψ(w/2) (Zeta23 RvM.logDeriv_Gammaℝ — exists, used in XiPrime/ZeroCount/Y.lean). Both digamma arguments have positive real part:

So |R(s)| ≤ |R(1−s)| + C·log|t| + O(1), and the right-half bound closes it. NOTE: this also SUBSUMES D-056's Lemma D (the digamma remainder) — never needed separately; digamma_stirling is strictly stronger.

Constants fold (~0.25 sess, with E-support if wanted)

Trace the constants through §2–§3 to the A = 10.5, B₀ = 48 form (the paper's values; the Lean proof can carry its own traced constants — they only need to fit under Bn FAlt in ii′-6, which has huge slack — D-056 §3 sensitivity: 26×). Decision at build time: match D-056's numbers or take the natural traced ones (must stay ≤ paper claims).

4. Inventory of existing machinery (all verified live, session 022)

Mathlib: Complex.borelCaratheodory (unused — Zeta23's derivative version is the one), completedRiemannZeta_one_sub, riemannZeta_ne_zero_of_one_lt_re, digamma_apply_add_one, riemannZeta_neg_two_mul_nat_add_one, LSeries vonMangoldt/moebius. Zeta23: FromPNTPlus/StrongPNTPrefix.lean — BorelCaratheodoryDeriv (‖deriv f‖ ≤ 16MR²/(R−r)³), LogOfAnalyticFunction (J_B with Re J_B = log‖B‖−log‖B(0)‖, deriv J_B = B′/B), ZeroFactorization, ZerosBound; FromPNTPlus/ZetaBounds.lean — Zeta0EqZeta (B₁-level ζ rep, re > 0), ZetaUpperBnd; GammaFacts/StirlingVert.lean — digamma_stirling; GammaFacts/Series.lean — digamma series + Weierstrass for 1/Γ (unused); RvM/CountByIntegral.lean — completedRiemannZeta_eq_Gammaℝ_mul, completedRiemannZeta_eq_zero_iff; XiPrime/ZeroCount/Y.lean — norm_digamma_le (‖ψ(w)‖ ≤ ‖w‖+8), RvM.logDeriv_Gammaℝ. ii′-4 (this project): ZeroCountProp, zeroWindow_finite, zeroMult_neg_two, two_le_C0hat.

5. Sub-stage plan (SUPERSEDED by §6 — see the route revision)

# Content Depends Est.
ii′-5a this design doc — done (session 022)
ii′-5b B̃₂ + IBP level-2 ζ rep + ζ ≤ C(1+
ii′-5c right-half Davenport disc (g, J_g, BC, R-bound σ∈[1/2,7/2]) 5b, ii′-4 ~1–1.5 sess
ii′-5d FE-reflection to σ∈[−5/2,1/2] + digamma bracket 5c ~0.5 sess
ii′-5e constants fold to A = 10.5, B₀ = 48 + audit 5d ~0.25 sess

Risks: (a) the B̃₂ IBP is fiddly but elementary (mitigation: per-interval work is exactly EulerMaclaurin.lean's pattern); (b) the mult-weighted zero count may want a Jensen detour (ZerosBound exists); (c) logDeriv product-rule glue for the quotient g — standard.

6. ROUTE REVISION (session 022/023, constant accounting)

Discovery: the direct disc bound CANNOT deliver the target constants. The assembly's marginTilde/Hhat (LiSkeleton) have A = 10.5, B₀ = 48 as LITERALS inside already-proved, freeze-protected lemmas (marginTilde_convex, the LiBasePoints certifications, sessions 011–012). So the Lean R-bound theorem must land at A ≤ 10.5, B₀ ≤ 48 pointwise. But the disc route's final log-coefficient is (M's log-coefficient) × (the Borel–Carathéodory derivative factor): M ≈ 2.7·log|t| (log|g| ≤ 2log|t| + (log 5)·Σmₖ with the tight mult-weighted C₀-count) and StrongPNTPrefix's BorelCaratheodoryDeriv gives ‖(log g)′‖ ≤ 16MR²/(R−r)³ = 100·M at R = 5/2, r = 3/2 ⟹ A ≈ 270. Even the classically sharp form 2R/(R−r)² = 5 gives A ≈ 13.5, and minimizing 16R²/(R−1.5)³ over R (paying extra EM levels for the deeper left dip, M-coeff ~ R−1.3) has infimum 16. Every disc-only variant overshoots 10.5. (The disc route remains correct as a bound, just with unusable constants.)

Revised plan (two stages). The loose disc bound is the GROWTH INPUT for the partial-fraction identity; the tight R-bound is D-056's analysis of the identity:

Total revised estimate for ii′-5: ~4 sessions (was 2–3). The loose disc constants never propagate — only the identity passes to 5f.

What 5f needs that 5c already provides: NOTHING of its constants — 5c's role is purely existential growth. This is the sense in which the user-flagged concern ("constants must survive the whole chain") is resolved: they do, because the chain is re-routed through the identity where the tight constants live.