Current task: —

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

#1590 assistant 2026-08-23 20:41:30.198 UTC · 810→7857 tok open ⤢
thinking (16877 chars)
Now the main series circle bound `seriesFun_norm_le_gapCircle`. Let me design its structure concretely. **Statement**: ```lean theorem seriesFun_norm_le_gapCircle (hZC : ZeroCountProp) {k : ℕ} (hk : 4000 ≤ k) {R : ℝ} (hRlo : 4 * (k : ℝ) + 5 / 2 ≤ R) (hRhi : R ≤ 4 * (k : ℝ) + 3) (hR4 : ∀ m : ℤ, 1 / 4 ≤ |R / 2 - (m : ℝ)|) (hgap : ∀ ρ : ℂ, IsNontrivialZero ρ → (1 / (16 * C0hat (4 * (k : ℝ) + 9 / 2))) ≤ |ρ.im - R| ∨ 1 ≤ |ρ.im - R|) {s : ℂ} (hs : ‖s‖ = R) : ‖seriesFun s‖ ≤ (some explicit C) * (Real.log R)^2 + lowZeroConst ``` The proof structure: 1. ‖seriesFun s‖ ≤ ∑' ρ, ‖seriesTerm s ρ‖ = ∑' ρ, (zeroMult ρ : ℝ)·R/(‖ρ‖·‖s−ρ‖) — via norm_tsum_le_tsum_norm (seriesSummable s).norm and the per-term identity ‖seriesTerm s ρ‖ = m·R/(‖ρ‖·‖s−ρ‖) — from one_div_sub_add_one_div: 1/(s−ρ)+1/ρ = s/(ρ(s−ρ)): needs ρ ≠ 0 (re > 0 ✓) and s ≠ ρ (on the circle s is not a zero — s with ‖s‖ = R ≥ 16000 and ζ s = 0 would be a zero with huge norm — possible a priori! A nontrivial zero ON the circle? The γ-gap prevents zeros with |γ| near R... a zero with ‖ρ‖ = R exactly: |γ| ≤ R and... hmm — the circle |s| = R could contain a zero with small |γ| and re ≈ ±R?? re ∈ (0,1) for nontrivial zeros — a zero on the circle has re ∈ (0,1) and |im| ≈ R — the γ-gap: |im − R| ≥ clearance ⟹ im ≠ R... but the zero with im ≈ √(R²−0.25) ≈ R − 0.125/R — |im − R| ≈ 0.125/R — is that ≥ the clearance 1/(16Ĉ₀)? 1/(16·Ĉ₀) ≈ 1/(16·9) ≈ 0.007 vs 0.125/R ≈ 0.000008 — NO — so a zero could sit at 0.5 + i√(R²−0.25) with |im − R| tiny?? wait — the γ-gap says every zero has |im − R| ≥ 1/(16Ĉ₀) OR ≥ 1... im = √(R²−0.25) = R−δ with δ ≈ 1/(8R) < 1: so the fine clearance must hold: |im − R| = δ ≥ 1/(16Ĉ₀): 1/(8R) ≥ 1/(16Ĉ₀) ⟺ 2Ĉ₀ ≥ R·... 2·Ĉ₀(4k+9/2) vs R = 4k+2.5-ish: Ĉ₀ ≍ 9 vs 2·9 = 18 vs R ≥ 16000 — FAILS: 1/(8R) < 1/(16Ĉ₀) ⟹ the zero CAN'T be at im = √(R²−0.25)?? Let me redo: is there a zero ON the circle |s| = R with re ∈ (0,1)? Its im: |im| = √(R²−re²) ∈ (R−1, R] — so |im − R| < 1 (the fine case) ⟹ need |im−R| ≥ 1/(16Ĉ₀): R − √(R²−re²) ≥ 1/(16Ĉ₀) ⟺ re²/(R+√(R²−re²)) ≥ 1/(16Ĉ₀) ⟸ re²/(2R) ≥ 1/(16Ĉ₀) ⟺ 8Ĉ₀·re² ≥ R — FALSE (re ≤ 1, 8Ĉ₀ ≈ 72 < R). So a zero with re² < R/(8Ĉ₀) ≈ 200-ish would violate the fine clearance — i.e. zeros on the circle must have re² ≥ R/(8Ĉ₀) ≈ 200 — re ≥ 14 — but re < 1 (nontrivial) — CONTRADICTION ⟹ NO nontrivial zero lies on the circle ✓. Good — so s ≠ ρ always on the circle (ζ s ≠ 0: s has ‖s‖ = R: ζ s = 0 ⟹ s nontrivial (re ≥ 1 excluded since re ≤ 1... wait re s could be ≥ 1 on the right near-axis: re s ≥ 1 with ζ s = 0 impossible (nonvanishing) ✓; re ≤ 1: nontrivial or trivial: trivial −2n: |−2n| = 2n = R: excluded by dist(R/2, ℤ) ≥ 1/4 (R/2 not an integer ⟹ R ≠ 2n ✓); nontrivial: just shown impossible ✓). So ζ s ≠ 0 on the circle ✓ (needed for s ≠ ρ per term). Hmm wait — actually for the term algebra 1/(s−ρ)+1/ρ = s/(ρ(s−ρ)) I need s ≠ ρ — since ζ s ≠ 0 and ζ ρ = 0 ⟹ s ≠ ρ ✓. 2. The split: ∑' ρ, g ρ (g := the norm-form) via tsum_split_finset at F := {ρ : Z | ‖ρ‖ ≤ 2R} (finite via finite_subtype_norm_lt (2R+1)): = Σ_{ρ ∈ F} g ρ + ∑'_{ρ ∉ F} g ρ. 3. The tail: ∑'_{∉F} g ρ ≤ ∑'_{∉F} (17R/6)·m/(1+γ²) [per-term: ‖s−ρ‖ ≥ ‖ρ‖−R ≥ ‖ρ‖/2 (‖ρ‖ > 2R) ⟹ g = m·R/(‖ρ‖‖s−ρ‖) ≤ m·R/(‖ρ‖·‖ρ‖/2) = 2Rm/‖ρ‖² ≤ 2Rm·(17/12)/(1+‖γ‖²)·... wait — 1/‖ρ‖² vs 1/(1+γ²): 1+γ² = 1+im² ≤ 1+‖ρ‖² (im² ≤ ‖ρ‖²) — hmm 1+γ² ≤ 1+‖ρ‖² ⟹ 1/(1+γ²) ≥ 1/(1+‖ρ‖²) — wrong direction. Use the 5e-iii comparison: 1+‖γ‖² ≤ (17/12)‖ρ‖² for ‖ρ‖ ≥ 2 (one_add_normSq_gammaOf_le — wait that gives 1+‖γ‖² ≤ (17/12)‖ρ‖² ⟹ 1/‖ρ‖² ≤ (17/12)/(1+‖γ‖²) ✓ THE RIGHT DIRECTION ✓): so 2R/‖ρ‖² ≤ 2R·(17/12)/(1+‖γ‖²) = (17R/6)/(1+‖γ‖²) ✓. So tail ≤ (17R/6)·∑'_{∉F} m/(1+‖γ‖²) — and m/(1+‖γ‖²) ≤ m/(1+γ²)·... hmm — the tail bound zero_tail_inv_sq_le is about 1/(1+im²) = 1/(1+γ²) (γ = im directly, not the gammaOf!). Let me align: zero_tail_inv_sq_le's tailTerm has 1/(1 + im²). And the dominator here is 1/(1+normSq(gammaOf ρ)) with normSq(gammaOf ρ) = im² + (1/2−re)². The relation: 1/(1+normSq γ) ≤ 1/(1+im²)?? normSq γ ≥ im² ⟹ 1+normSq ≥ 1+im² ⟹ 1/(1+normSq) ≤ 1/(1+im²) ✓. So ∑'_{∉F} m/(1+normSq γ) ≤ ∑'_{∉F} m/(1+im²) ≤ ∑'_{Z} (if 2R < |im| then m/(1+im²) else 0)... wait the tailTerm X has if X < |im|: my ∉F set is ‖ρ‖ > 2R ⟹ |im| ≥ ‖ρ‖ − 1 > 2R − 1: so ∑'_{∉F} m/(1+im²) ≤ tailSum at X := 2R−1 (the if-members: ∉F ⟹ |im| > 2R−1 ⟹ tailTerm (2R−1) = the value): ∑'_{∉F} m/(1+im²) = ∑'_{Z} (if 2R<|im| then... restricted)... — the bridge: ∑'_{∉F} m/(1+im²) ≤ ∑'_{Z} tailTerm (2R−1) — via tsum_split_finset's complement form: the complement tsum ∑'_{∉F} g ρ = ∑'_{Z} (if ρ ∈ F then 0 else g ρ) ✓ (tsum_split_finset) — and pointwise (if ρ ∈ F then 0 else m/(1+im²)) ≤ tailTerm (2R−1) ρ: for ρ ∈ F: 0 ≤ tailTerm ✓; for ρ ∉ F: ‖ρ‖ > 2R ⟹ |im| > 2R−1 ⟹ tailTerm = m/(1+im²) ✓ equal. So ∑'_{∉F} ≤ tailSum (2R−1) ≤ 16A₀ log(2R−1)/(2R−1) (zero_tail_inv_sq_le, 2R−1 ≥ 200 ✓ R ≥ 16000). And (17R/6)·16A₀ log(2R−1)/(2R−1) ≤ (17R/6)·16A₀·log(2R)/(R/2)·... 2R−1 ≥ 3R/2 (R ≥ 2): log(2R−1)/(2R−1) ≤ log(2R)/(3R/2) ≤ (2/3)·(log 2 + log R)/(R)·... ≤ (2/3)·2·log R/R (log 2 ≤ log R ✓): so the tail ≤ (17R/6)·16A₀·(2/3)·2 logR/R = (17·16·4/18)·A₀ log R = ~30 A₀ log R ✓ — O(A₀ log R) ✓ fine. The tail-vs-tailTerm bridge: tailTerm (2R−1) vs m/(1+normSq γ): normSq γ ≥ im² gives 1/(1+normSq) ≤ 1/(1+im²): so ∑'_{∉F} m/(1+normSqγ) ≤ ∑'_{∉F} m/(1+im²) ≤ tailSum ✓. Wait — I have ∑'_{∉F} (17R/6)·m/(1+‖γ‖²) = (17R/6)·∑'_{∉F} m/(1+‖γ‖²) — and ∑'_{∉F} m/(1+‖γ‖²) ≤ ∑'_{∉F} m/(1+im²) ✓ (pointwise, both summable via of_norm_bounded vs the if-forms — the if-complement forms — both summable (of_norm_bounded the dominators ✓)... the comparison ∑' ≤ ∑' needs both summable: complement-form summable from tsum_split_finset's h2-style ✓; tailTerm summable ✓). 4. The finite part Σ_{F} g: split F by filters into: - low: ‖ρ‖ ≤ 3 (g ≤ m·(1 + 1/‖ρ‖)·... : term m·R/(‖ρ‖‖s−ρ‖): ‖s−ρ‖ ≥ R−3 ≥ R/2: ≤ 2m/‖ρ‖... hmm — for the LOW set I defined lowZeroConst := Σ m·(1+1/‖ρ‖): the term m·R/(‖ρ‖‖s−ρ‖) ≤ m·R/(‖ρ‖·(R−3)) ≤ m·(2/‖ρ‖) (R/(R−3) ≤ 2 ⟺ R ≥ 6 ✓): so low sum ≤ 2·Σ m/‖ρ‖ ≤ 2·lowZeroConst?? — lowZeroConst has (1 + 1/‖ρ‖) per term ≥ 1/‖ρ‖ ✓: 2·Σ m/‖ρ‖ ≤ 2·Σ m(1+1/‖ρ‖) = 2·lowZeroConst ✓. - inner: 3 < ‖ρ‖ ≤ R−2: g ≤ m·2/‖ρ‖ (‖s−ρ‖ ≥ R−‖ρ‖ ≥ 2... wait ‖s−ρ‖ ≥ |R − ‖ρ‖| = R−‖ρ‖ ≥ 2 ⟹ g ≤ m·R/(‖ρ‖·2)·... hmm R/(R−‖ρ‖) varies: for ‖ρ‖ ≤ R/2: R−‖ρ‖ ≥ R/2 ⟹ g ≤ 2m/‖ρ‖ ✓; for R/2 < ‖ρ‖ ≤ R−2: g ≤ m·R/(‖ρ‖·(R−‖ρ‖)) ≤ m·2/(R−‖ρ‖) (R/‖ρ‖ ≤ 2) — dyadic in d = R−‖ρ‖. - critical: R−2 < ‖ρ‖ < R+2: the γ-gap (strip) or re-split (near-axis). - upper: R+2 ≤ ‖ρ‖ ≤ 2R: g ≤ m·R/(‖ρ‖(‖ρ‖−R)) ≤ m/(‖ρ‖−R)·(R/(R+2) ≤ 1) — dyadic in e = ‖ρ‖−R. Each dyadic band: count via windows + the geometric/harmonic sum. The dyadic decompositions are finset sums over j (J := ⌈log₂ R⌉₊ shells) — each shell's count via Ncount_le_of_interval_gen and term bound — the j-sum bounded by closed forms (Σ 1 = J, Σ j = J²/2...). This is the big assembly — ~400 lines. Given the session's length, let me checkpoint here mentally and decide: I've completed the tail bound (committed). The main series bound is the next sub-stage. Given how long each lemma takes with the elaboration fights, the main series bound is realistically another full session of work, and 5e-v-c/d beyond that. PACING: the session has been very productive (tail bound complete). Per the sub-stage rule, I could continue, but the realistic remaining budget suggests wrapping session 031's Lean work at this clean point OR continuing one more chunk. The user said "let's start" for session 031 — they want maximal progress. Let me continue with the main series bound — I'll write it in pieces. Actually, let me reconsider the main bound's architecture to minimize the shell plumbing. Instead of FOUR shell families with separate dyadic analyses, organize as: Σ_F g = Σ over the F-finset — split via Finset.filter into the 4 bands (low/inner/critical/upper) — finset splits are FREE (Finset.filter + sum unions). Then each band's bound: - low: ≤ 2·lowZeroConst ✓ (direct). - inner (3 < ‖ρ‖ ≤ R−2): the dyadic in d := R−‖ρ‖: hmm — actually simpler: for the inner band use ‖s−ρ‖ ≥ R − ‖ρ‖ and split inner into inner-low (‖ρ‖ ≤ R/2: ‖s−ρ‖ ≥ R/2 ⟹ g ≤ 2m/‖ρ‖) and inner-high (R/2 < ‖ρ‖ ≤ R−2: g ≤ 2m/(R−‖ρ‖)): - inner-low: Σ ≤ Σ_{3<‖ρ‖≤R/2} 2m/‖ρ‖ ≤ 2·(Σ over dyadic j: count(2^j < ‖ρ‖ ≤ 2^{j+1})·2^{-j}·... hmm 2m/‖ρ‖ ≤ 2m/2^j for ‖ρ‖ > 2^j: shell {2^j < ‖ρ‖ ≤ 2^{j+1}}: ≤ count·2/2^j: count of {‖ρ‖ ≤ 2^{j+1}}: |γ| ≤ 2^{j+1}: windows: Ncount(−2^{j+1}, 2^{j+1}] ≤ A₀(2^{j+2}+1)·log(3·2^{j+1}+5) ≍ A₀·2^j·j: shell ≤ 2/2^j·A₀·2^{j+2}·(j+4)·... ≍ 16A₀(j+4): sum over j ≤ log₂(R/2) ≈ J: ≍ 16A₀·(J+5)²/2 = O(A₀(log R)²) ✓. The per-shell count bound: count of {2^j < ‖ρ‖ ≤ 2^{j+1}} ≤ count of {|γ| ≤ 2^{j+1}} (since |γ| ≤ ‖ρ‖) ≤ Ncount(−2^{j+1}, 2^{j+1}]·... Ncount a b with a = −2^{j+1}, b = 2^{j+1}: Ncount_le_of_interval_gen: ≤ A₀(2^{j+2}+1)·log(3·2^{j+1}+5) ✓. Hmm wait — but the shell {2^j < ‖ρ‖ ≤ 2^{j+1}} ⊆ {|γ| ≤ 2^{j+1}} ✓ and the sum over the shell of m ≤ the ordinate-set's count — the bridge via the toFinset subsets (banked pattern). OK — you know, this is all clear; it's just long. Let me power through and write the main series bound. I'll write it as ONE big lemma with the internal band splits. Given the session length, let me write it efficiently and compile. Actually — let me reconsider scope ONE more time. The full series bound with 4 bands + tail is ~500 lines. The remaining 5e-v-c (logDeriv assembly ~250) + 5e-v-d (squeeze + capstone ~200). Total ~950 lines more for 5e-v. This is 2 sessions of work realistically. Since I've already committed good progress this session (the tail bound — the analytically hardest new piece), let me consider whether to continue now or close. The user's directive pattern: they say "let's start"/"continue" and I work until a natural boundary. The natural boundary HERE is a bit ragged (mid-5e-v-b). But the sub-stage rule says break into clean committed states — and I have one (tail bound committed). The session has been long. Let me push forward with the main series bound — write it in chunks with compiles. If it gets through, great; if I hit a stopping point mid-way, everything is committed. Let me write the main series bound lemma. To manage the complexity, I'll structure it as: ```lean /-- The series circle bound: on the 5e-i γ-gap circle |s| = R (k ≥ 4000), ‖seriesFun s‖ ≤ C·(log R)² + 2·lowZeroConst. -/ theorem seriesFun_norm_le_gapCircle (hZC : ZeroCountProp) {k : ℕ} (hk : 4000 ≤ k) {R : ℝ} (hRlo : 4 * (k : ℝ) + 5 / 2 ≤ R) (hRhi : R ≤ 4 * (k : ℝ) + 3) (hgap : ∀ ρ : ℂ, IsNontrivialZero ρ → 1 / (16 * C0hat (4 * (k : ℝ) + 9 / 2)) ≤ |ρ.im - R| ∨ 1 ≤ |ρ.im - R|) {s : ℂ} (hs : ‖s‖ = R) : ‖seriesFun s‖ ≤ 500 * A0count * (Real.log R)^2 + 2 * lowZeroConst := by ``` Structure: 1. ‖seriesFun s‖ ≤ ∑' ρ, g ρ with g ρ := m·R/(‖ρ‖·‖s−ρ‖) — the per-term identity via one_div_sub_add_one_div (needs s ≠ ρ: from ζ s ≠ 0 — prove: ζ s = 0 on the circle impossible: re ≥ 1: nonvanishing; re ≤ 1: nontrivial or trivial: trivial: |−2n| = R impossible (dist(R/2,ℤ) ≥ 1/4 ⟹ R ≠ 2n: |R/2 − n| ≥ 1/4 > 0 ⟹ R/2 ≠ n ⟹ R ≠ 2n ✓); nontrivial: the γ-gap: zeros with |im−R| ≥ 1/(16Ĉ₀) ∨ ≥ 1: s nontrivial would have |im s| = √(R²−re²): |im s − R| = R − √(R²−re²) ≤ re²/(2R)·2 ≤ 1/R < 1/(16Ĉ₀)·... need R − √(R²−re²) < 1/(16Ĉ₀) for the contradiction: R − √(R²−re²) = re²/(R+√(...)) ≤ 1/(2R)·... ≤ 1/(2R)·2 = 1/R: 1/R < 1/(16Ĉ₀) ⟺ 16Ĉ₀ < R: Ĉ₀(4k+9/2) ≤ 9.36-ish (k ≥ 4000: 4k+9/2 ≤ 4k+4.5 ≤ R+2: Ĉ₀ mono: Ĉ₀(R+2)... hmm the numerics: Ĉ₀(4k+9/2) ≤ 9.36 needs 4k+9/2 ≤ 16006 ⟸ k ≤ 4000!! — the numerics were for k = 4000 exactly; for k > 4000 Ĉ₀ GROWS (log) — 16·Ĉ₀(4k+9/2) < R = 4k+2.5-ish needs Ĉ₀(4k+4.5) < (4k+2.5)/16 = k/4-ish: Ĉ₀ ≍ log: for k = 4000: 9.36 < 250 ✓; the growth: need 16·Ĉ₀(4k+4.5) < 4k+2 for ALL k ≥ 4000: Ĉ₀(x) = 2.9 + 0.433·log(x+2) + 0.886·log log(x+2) (roughly): 16·Ĉ₀(4k+4.5) vs 4k: at k = 4000: 16·9.36 = 150 < 16002 ✓ with the ratio growing (log vs linear) — provable uniformly: log(4k+6.5) ≤ log(4k+6.5) and 16·(2.9 + 0.433 L + 0.886 L') vs 4k with L = log(4k+6.5) ≤ 4k+6.5 — the linear-in-Ĉ₀ bound: 16·Ĉ₀ ≤ 16·(2.9 + 0.433·(4k+6.5)... no log ≤ linear is too lossy. Use log x ≤ 2√x...: 16·(2.9 + 0.433·2√x + 0.886·2·x^{1/4}) vs 4k+2 ≈ x: with x = 4k+6.5 ≥ 16006: 16·(2.9 + 0.866·√16006 + 1.772·(16006)^{1/4}) = 16·(2.9 + 0.866·126.5 + 1.772·11.25) = 16·(2.9+109.6+19.9) = 16·132.4 = 2118 < 16002 ✓ — and for larger k the gap widens ✓ — but a UNIFORM proof for all k ≥ 4000 needs log x ≤ 2√x and x^{1/4} bounds with a one-point verification + monotonicity of the ratio (x vs √x: for x ≥ 16006: 16·(2.9 + 0.866√x + 1.772·x^{1/4}) ≤ x ⟸ at x = 16006: 2118 ≤ 16002 ✓ and the function x ↦ x − 16·(0.866√x + ...) increasing for x ≥ 16006 (derivative 1 − 16·(0.433/√x + ...) > 0 ✓) — the monotonicity argument in Lean: messy. ALTERNATIVE: just require k ≥ 4000 AND verify the bound at the needed x via: 16·Ĉ₀(x) ≤ x−4 for x ≥ 16006: Ĉ₀(x) ≤ 2.9 + 0.433·log(x+2) + 0.886·log log(x+2): log(x+2) ≤ x+2: Ĉ₀ ≤ 2.9 + 0.433(x+2) + 0.886(x+2)·... no. Hmm — use: log(x+2) ≤ (x+2)^{1/8}·8 (log y ≤ 8y^{1/8}?? log y ≤ y^r/r: r = 1/8: 8(x+2)^{1/8}·... 8·(16008)^{1/8} = 8·3.36 = 26.9 — vs log(16008) = 9.68 ✓ but 26.9 > 9.68 LOSSY: 16·(2.9 + 0.433·26.9 + 0.886·log(26.9))·... log log(x+2) ≤ log(26.9) = 3.29: 16·(2.9 + 11.6 + 2.9) = 16·17.4 = 279 < 16002 ✓✓ — and uniform: 16·(2.9 + 0.433·8(x+2)^{1/8} + 0.886·log(8(x+2)^{1/8}))·... this is spiraling. STOP — the k ≥ 4000 threshold numerics are a side-quest. SIMPLIFY: the γ-gap's fine clearance is only needed for the CRITICAL BAND of the series bound AND the near-sum of 5c/5d — and there, what I need is: |t − γ| ≥ 1/(32Ĉ₀) for zeros with |γ| near R and |t| ≈ R. The condition: 13/R ≤ 1/(32Ĉ₀) ⟺ R ≥ 416·Ĉ₀(4k+9/2). INSTEAD of a uniform-in-k proof, note: Ĉ₀(4k+9/2) ≤ Ĉ₀(4k+3+2)·... — actually simpler: since Ĉ₀(x) = C₀ + c₁ log(x+2) + c₂ log log(x+2) with explicit constants, the ratio 416·Ĉ₀(4k+9/2)/k → 0 — prove `Tendsto (fun k => 416 * C0hat (4*k + 9/2) / k) atTop (𝓝 0)`?? — a tendsto argument then "eventually ≤" gives ∃ K₀ — but I need an EXPLICIT K₀ for the Lean theorem statement... OR: state the circle bound lemma with the hypothesis `416 * C0hat (4k+9/2) ≤ 4*k+2` (or the R-form) as an explicit side condition, and separately prove `∀ k ≥ 4000, that holds` via a monotonicity argument ONCE. Hmm. You know what — I'm now 2+ hours into this session's work (3 commits). This is the right place to pause and checkpoint the DESIGN, then continue fresh. The remaining pieces: the main series bound (~400 lines with the k≥4000 numerics), the logDeriv assembly, the squeeze, the capstone. Let me bank the progress: commit (done — f984afc), update STATE.md with the precise next steps, and continue. Actually no — let me keep working; the state is clean and committed. Let me write the main series bound. To manage the threshold issue cleanly, I'll state the lemma with explicit side conditions on R and Ĉ₀ that are checkable, and discharge the k ≥ 4000 numerics via a single `C0hat_bound_aux` lemma: ∀ k ≥ 4000, 32·Ĉ₀(4k+9/2)·13 ≤ 4k+2 — hmm the numerics: need Ĉ₀(4k+9/2) ≤ (4k+2)/416 — for k = 4000: Ĉ₀(16004.5) ≤ 9.36 ≤ 38.5 ✓ HUGE slack — and the growth: Ĉ₀(x) ≤ (x)/416−... ⟸ log-ish vs linear: for x ≥ 16004: Ĉ₀(x) ≤ 9.36 + 0.433·(log(x+2) − log 16006) + 0.886·(log log(x+2) − log log 16006) — the increments: log(x+2) − log 16006 = log((x+2)/16006) ≤ (x+2)/16006 − 1 ≤ (x−16004)/16006: so Ĉ₀(x) ≤ 9.36 + (0.433 + 0.886/9.68)·(x−16004)/16006·... (log log increment: log log(x+2) − log log 16006 ≤ (log(x+2) − log 16006)/log 16006 ≤ (x−16004)/(16006·9.68)): ≤ 9.36 + 0.53·(x−16004)/16006: want ≤ (4k+2)/416 with x = 4k+4.5: 4k+2 = x−2.5: need 9.36 + 0.53(x−16004)/16006 ≤ (x−2.5)/416: at x = 16004: 9.36 ≤ 16001.5/416 = 38.5 ✓; the RHS slope 1/416 = 0.0024 vs LHS slope 0.53/16006 = 0.000033 ✓ RHS grows 73× faster ⟹ holds ∀ x ≥ 16004 ✓ — provable via: (x−2.5)/416 − 9.36 ≥ 0.53(x−16004)/16006: at x = 16004: 29.1 ≥ 0 ✓; both linear: compare slopes ✓ — linear algebra after the log bounds. The log-increment bound log(x+2) − log 16006 ≤ (x−16004)/16006: log(a) − log(b) = log(a/b) ≤ a/b − 1 (log_le_sub_one... log(a/b) ≤ a/b − 1 ✓ Real.log_le_sub_one_of_pos ✓ banked) = (a−b)/b = (x−16004)/16006 ✓. And log log increment similarly (log log(x+2) − log log 16006 = log(log(x+2)/log 16006) ≤ log(x+2)/log 16006 − 1 ≤ ((x−16004)/16006 + 1... ·... messy but all explicit rational arithmetic + log_le_sub_one. ~80 lines. OK. This is all doable but it's a LOT. The session is very long already. Let me make the call: I'll write the session-031 work as far as the tail bound (committed), update STATE.md to point at the main series bound as the next action with the threshold-numerics plan, write the journal, and close the session cleanly. The next session continues with the main series bound.
The tail bound is committed (`f984afc`). The main series bound is a large block — let me checkpoint the session cleanly with the state recorded, since the next chunk (main series bound + assembly + squeeze) is substantial fresh work.
tool: Edit ok
input
{
  "file_path": "D:\\Python\\Quantum\\STATE.md",
  "old_string": "# STATE.md \u2014 NGUYEN-RH-1 RESUME POINT\n# \u2b50 READ THIS FIRST at the start of every session.\nLast updated: 2026-08-23 | Session 030 COMPLETE \u2014 **ii\u2032-5e-v-a +\n5e-v-b chunk 1 COMPLETE** (LiCircleBound.lean: the count bridges\nA0count/Ncount windows + the Dirichlet bound + the tsum-split\nmachinery + lowZeroConst; clean elaboration; NOT yet root-imported \u2014\nthe file is mid-sub-stage; journal-030 has the full remaining design).\nTIER ii\u2032 in progress (user decision: option (a) \u2014 close SfBoundProp\nin Lean BEFORE submission; Paper A frozen/submittable throughout).",
  "new_string": "# STATE.md \u2014 NGUYEN-RH-1 RESUME POINT\n# \u2b50 READ THIS FIRST at the start of every session.\nLast updated: 2026-08-23 | Session 031 COMPLETE \u2014 **ii\u2032-5e-v-b chunk 2\nCOMPLETE** (the far-tail bound `zero_tail_inv_sq_le`: \u03a3_{|\u03b3|>X}\nm/(1+\u03b3\u00b2) \u2264 16\u00b7A0count\u00b7log X / X for X \u2265 200, via the dyadic fiber\nmachine + ENNReal.tsum_fiberwise; LiCircleBound.lean now ~830 lines,\nclean elaboration, not yet root-imported).\nTIER ii\u2032 in progress (user decision: option (a) \u2014 close SfBoundProp\nin Lean BEFORE submission; Paper A frozen/submittable throughout)."
}
result 2026-08-23 20:41:30Z → 2026-08-23 20:41:30Z
{
  "filePath": "D:\\Python\\Quantum\\STATE.md",
  "oldString": "# STATE.md \u2014 NGUYEN-RH-1 RESUME POINT\n# \u2b50 READ THIS FIRST at the start of every session.\nLast updated: 2026-08-23 | Session 030 COMPLETE \u2014 **ii\u2032-5e-v-a +\n5e-v-b chunk 1 COMPLETE** (LiCircleBound.lean: the count bridges\nA0count/Ncount windows + the Dirichlet bound + the tsum-split\nmachinery + lowZeroConst; clean elaboration; NOT yet root-imported \u2014\nthe file is mid-sub-stage; journal-030 has the full remaining design).\nTIER ii\u2032 in progress (user decision: option (a) \u2014 close SfBoundProp\nin Lean BEFORE submission; Paper A frozen/submittable throughout).",
  "newString": "# STATE.md \u2014 NGUYEN-RH-1 RESUME POINT\n# \u2b50 READ THIS FIRST at the start of every session.\nLast updated: 2026-08-23 | Session 031 COMPLETE \u2014 **ii\u2032-5e-v-b chunk 2\nCOMPLETE** (the far-tail bound `zero_tail_inv_sq_le`: \u03a3_{|\u03b3|>X}\nm/(1+\u03b3\u00b2) \u2264 16\u00b7A0count\u00b7log X / X for X \u2265 200, via the dyadic fiber\nmachine + ENNReal.tsum_fiberwise; LiCircleBound.lean now ~830 lines,\nclean elaboration, not yet root-imported).\nTIER ii\u2032 in progress (user decision: option (a) \u2014 close SfBoundProp\nin Lean BEFORE submission; Paper A frozen/submittable throughout).",
  "originalFile": "# STATE.md \u2014 NGUYEN-RH-1 RESUME POINT\n# \u2b50 READ THIS FIRST at the start of every session.\nLast updated: 2026-08-23 | Session 030 COMPLETE \u2014 **ii\u2032-5e-v-a +\n5e-v-b chunk 1 COMPLETE** (LiCircleBound.lean: the count bridges\nA0count/Ncount windows + the Dirichlet bound + the tsum-split\nmachinery + lowZeroConst; clean elaboration; NOT yet root-imported \u2014\nthe file is mid-sub-stage; journal-030 has the full remaining design).\nTIER ii\u2032 in progress (user decision: option (a) \u2014 close SfBoundProp\nin Lean BEFORE submission; Paper A frozen/submittable throughout).\nDONE: ii\u2032-0 (D-064 design + liCoeff defect + crux Sf = Res\u2081 found),\nii\u2032-1a (liCoeff defect REPAIRED), ii\u2032-1b (R1 residue machinery:\nrectInt'_Jlag), ii\u2032-2 (elementary swaps), ii\u2032-3-DESIGN (D-066, \u03b24),\nii\u2032-3a (pieces A+B: LiZetaCoeff, LiArchimedean, LiDigamma), ii\u2032-4\n(LiContour.lean: L3 exists_zero_avoiding_T + L1 kernel bounds +\nzeroMult_neg_two), ii\u2032-5a (D-067 design), ii\u2032-5b (LiRBound.lean:\nlevel-2 \u03b6 representation + norm_riemannZeta_le_disc \u2016\u03b6\u2016 \u2264 (3/4)|t|\u00b2),\nii\u2032-5c (LiDisc.lean: the loose disc R-bound \u2264 100000\u00b7(log|t|)\u00b2 on\n\u03c3 \u2208 [1/2, 7/2] via R-gap + Blaschke + BC, Jensen count, NO perimeter),\n**ii\u2032-5d COMPLETE** (session 025, LiReflect.lean, ~640 lines, 26\ndecls): the FE logDeriv identity `logDeriv_zeta_fe` (logDeriv \u03b6 s =\n\u2212logDeriv \u03b6(1\u2212s) \u2212 [logDeriv \u0393R s + logDeriv \u0393R(1\u2212s)] at good points);\nthe EXACT zero-sum cancellation `sum_nearZeros_neg_reflect`\n(nearZeros(\u2212t) = image under \u03c1 \u21a6 1\u2212\u03c1, zeroMult invariant by\nanalyticOrderAt_zeta_one_sub, 1\u2212s\u2212(1\u2212\u03c1) = \u2212(s\u2212\u03c1)); the \u0393R-bracket\n\u2264 4(log|t|)\u00b2 (the +4 \u0393R shift `logDeriv_Gamma\u211d_shift` putting both\ndigamma arguments in re > 0 + StirlingVert digamma_stirling); capstone\n**logDeriv_riemannZeta_sub_nearZeros_le_left**: the loose R-bound\n\u2264 200000\u00b7(log|t|)\u00b2 on \u03c3 \u2208 [\u22125/2, 1/2], |t| \u2265 10; PLUS the 5e input\n**norm_digamma_sub_log_le_of_two_le_abs_im**: \u2016\u03c8(w) \u2212 log w\u2016 \u2264 3 for\n2 \u2264 |im w| (digamma_add_natCast shift + first-order EM comparison\n+ arctan-FTC integral bound \u2014 UNIFORM in the chain length).\nAll axiom-audited (26 decls, audit-session025-axioms.txt): 3 standard\naxioms only.\n**ii\u2032-5e-0 + DESIGN COMPLETE** (session 026): LiTrivialZeros.lean \u2014\n`gamma_mul_prod` (product-form \u0393 recurrence) + the `HfunT n` cofactor\n(analytic + nonzero at \u22122n) + **zeroMult_neg_two_mul**: zeroMult(\u22122n)\n= 1 for ALL n \u2265 1 (8 decls, audit-session026-axioms.txt clean); build\nGREEN (8762 jobs, root-imported). D-068 (5e design): F entire via\nprincipal-part splits (no removable-singularity theorem, no Hadamard);\nTWO CORRECTIONS to D-067 \u00a76 \u2014 (C1) the circle series bound is\nO((log R)\u00b3) via the RADIAL split (\u03b3-gap only in the critical annulus\n[R\u00b12]; the naive split gives O(R log R) \u2014 fatal), (C2) the near-axis\nleft-plane digamma bound is a SEPARATE build (recurrence + separated\nreciprocal sum \u03a3 1/|w+j| \u2264 C\u00b7log(m+1), dist(w,\u2212\u2115) \u2265 1/4).\n**ii\u2032-5e-i COMPLETE** (session 027, commit e28eff6): LiGapCircles.lean\n\u2014 `exists_gapCircle_radius`: R \u2208 [4k+5/2, 4k+3] with dist(R/2,\u2124) \u2265 1/4\nand every zero ordinate \u2265 1 away or at clearance \u2265 1/(16\u00b7C0hat(4k+9/2))\n(the \u00d72-rescaled midpoint pigeonhole + C0hat_mono; 2 decls clean).\n**ii\u2032-5e-ii COMPLETE** (session 027, commits 0e9336e + ec13029):\nLiDigammaLeft.lean \u2014 `tsum_one_div_sub_telescope` (1/N tail);\n**norm_digamma_le_of_two_le_re** (B): \u2016\u03c8(w)\u2016 \u2264 20\u00b7log(2+\u2016w\u2016) for\nre w \u2265 2, |im w| \u2264 5 (Weierstrass split: harmonic head + telescoping\ntail; integers via digamma_natCast_eq); **digamma_recip_sum_le** (C):\n\u03a3 \u2016(w+j)\u207b\u00b9\u2016 \u2264 2/c + 2 + 2\u00b7log m for dist(w,\u2212\u2115) \u2265 c (V-split);\n**norm_digamma_le_of_dist_nat** (A): \u2016\u03c8(w)\u2016 \u2264 (46 + 2/c) + 23\u00b7log(2+\u2016w\u2016)\nfor re w \u2264 2, dist(w,\u2212\u2115) \u2265 c (recurrence to re \u2208 [3,4) via\ndigamma_add_natCast\u2032 \u2014 pole-avoidance form, covers real points);\n**logDeriv_Gamma\u211d_eq** (G): logDeriv \u0393R s = \u2212(log \u03c0)/2 + \u00bd\u03c8(s/2) for\nim s \u2260 0 (the m-fold shift + 5d's EventuallyEq machinery). Build\nGREEN (8764 jobs); 15 decls audited clean.\n**ii\u2032-5e-iii COMPLETE** (session 028, LiSeries.lean, ~600 lines, 22\ndecls, audit-session028-axioms.txt clean): `seriesTerm s \u03c1 :=\n(zeroMult \u03c1 : \u2102)\u00b7(1/(s\u2212\u03c1) + 1/\u03c1)` over the nontrivial-zero subtype;\n`seriesFun s := \u2211' \u03c1, seriesTerm s \u03c1`. (i) **seriesSummable** at EVERY\ns (unconditional; the ii\u2032-1a D-trick: tail 2\u2016s\u2016/\u2016\u03c1\u2016\u00b2 via\none_div_sub_add_one_div + one_add_normSq_gammaOf_le (1+\u2016\u03b3\u2016\u00b2 \u2264\n(17/12)\u2016\u03c1\u2016\u00b2 for \u2016\u03c1\u2016 \u2265 2), dominator (17/6)(\u2016s\u2016+1)\u00b7mult/(1+\u2016\u03b3\u2016\u00b2) via\nWeilEF.zero_sum_inv_sq zetaSeam, finite head via\nfinite_subtype_norm_lt). (ii) **seriesFun_analyticAt /\nseriesFun_analyticOnNhd** on {\u00acIsNontrivialZero}: avoiding balls by\nthe three-case split (\u03b6\u22600 continuity; \u03b6=0,s\u2080\u22601 order normal form via\nzeta_order_ne_top_of_ne; s\u2080=1 zetaA factorization) + the Weierstrass\nM-test of_norm_le_summable_eventually + the journal-020/021\nTendstoLocallyUniformlyOn\u2192differentiableOn\u2192analyticOnNhd pattern.\n(iii) **nontrivialZero_isolated** (finite unit-ball min-distance) +\n**seriesFunSub_analyticAt** (the \u03c1\u2080-term-zeroed series analytic AT\n\u03c1\u2080) + **seriesFun_sub_term** (seriesFun = seriesFunSub + the \u03c1\u2080-term\neverywhere) + capstones **seriesFun_sub_self_term_analyticAt** and\n**seriesFun_sub_polar_analyticAt** (series \u2212 mult/(s\u2212\u03c1\u2080) analytic at\n\u03c1\u2080 \u2014 the 5e-iv residue-cancellation input). Build GREEN (8765 jobs,\nLiSeries root-imported).\n**ii\u2032-5e-iv COMPLETE** (session 029, commits 58e03e2 + closure;\nLiFEntire.lean, ~1130 lines, 30 decls, audit-session029-axioms.txt\nclean): F ENTIRE. `Fexpr s := logDeriv \u03b6 s \u2212 seriesFun s + 1/s +\n1/(s\u22121) \u2212 (log \u03c0)/2 + \u03c8(s/2)/2`; `badPoint s := nontrivial \u2228 s = 0 \u2228\ns = 1 \u2228 \u2203 n \u2265 1, s = \u22122n`. Since Mathlib lacks a general removable-\nsingularity theorem and Fexpr's values at bad points are junk, the\nextension is `Gentire s := limUnder (\ud835\udcdd[\u2260] s) Fexpr`: at good points\nFexpr analytic (`Fexpr_analyticAt_of_not_bad`, via\n`zeta_zero_classification` \u2014 every zero is nontrivial/0/\u22122n) \u27f9\nGentire = Fexpr (`gentire_eq_Fexpr`, limUnder uniqueness); at bad\npoints explicit analytic witnesses with punctured agreement:\nnontrivial \u03c1\u2080 (`logDeriv_zeta_sub_mult_div_eventually` NF witness +\n5e-iii's polar subtraction), s = 1 (logDeriv zetaA), s = 0 (\u03c8(s/2)/2\n+ 1/s = \u2212\u03b3/2 + \u00bd\u00b7digammaSeriesPart(s/2), M-test on ball(0,1/2)),\ns = \u22122n (NF + `zeroMult_neg_two_mul` via new `riemannZeta_neg_two_mul`\n+ the dropped-term series `digammaSeriesPartSub`/H_n, eventually\nM-test on ball(\u2212n,1/2)). Capstone **gentire_analyticAt_and_eq**:\n(\u2200 s, AnalyticAt \u2102 Gentire s) \u2227 (\u2200 s good, Gentire s = Fexpr s).\nBuild GREEN (8766 jobs, LiFEntire root-imported).\n**ii\u2032-5e-v IN PROGRESS** (session 030, LiCircleBound.lean, commits\n5d24756 + e6a654b): \u00a70\u2013\u00a73 done \u2014 isNontrivialZero_conj; the count\nbridges (A0count from Zeta23's RvM zeta_local_zero_count \u2014 mult-\nweighted, all t, NO perimeter; Ncount_window_le / Ncount_add_of_le /\nNcount_chain_le / Ncount_le_of_interval / Ncount_le_of_interval_gen);\nnorm_logDeriv_zeta_le_dirichlet (\u2016\u03b6\u2032/\u03b6\u2016 \u2264 dirichletC2 for re \u2265 2);\ntsum_split_finset (the tsum = finset-sum + if-zeroed-tail split);\nlowZeros/lowZeroConst. Remaining (full design in journal-030):\nzero_tail_inv_sq_le (dyadic fiberwise tail) \u2192 seriesFun_norm_le_\ngapCircle (one tsum split + four shell bounds) \u2192 the logDeriv/elem\nassembly \u27f9 \u2016Fexpr\u2016 \u2264 C(log R)\u00b3 on the circles \u2192 the Schwarz squeeze\n\u27f9 the \u2203 B capstone (partialFraction_identity under ZeroCountProp).\nROUTE (D-067 \u00a76 + D-068): loose disc bound (5c \u2714) + FE-reflection\n(5d \u2714) + the digamma/circle inputs (5e-i/ii \u2714) + the series (5e-iii\n\u2714) + F entire (5e-iv \u2714) feed the partial-fraction identity (5e-v:\ncircle bound + squeeze \u27f9 capstone \u2203 B identity); tight A = 10.5,\nB\u2080 = 48 from D-056's analysis of the identity (5f).\nRemaining map: ii\u2032-5e-v \u2192 ii\u2032-5f \u2192 ii\u2032-3b (moments) \u2192 ii\u2032-3c\n(crux) \u2192 ii\u2032-6 \u2192 ii\u2032-7.\n\n## CURRENT POSITION\n\u2714 PHASE 0, 1, 4 COMPLETE. PHASE 3 (Track C): 3.1\u20133.8 CLOSED (R-004,\nfull tag). PHASE 2 (Track B): mapped to exhaustion at current\ntechnology (2.6\u20132.13). PHASE 5: 5.3 \u2714, 5.4 \u2714, 5.2 \u2714 (live);\n5.1 skeleton \u2714 + tier (i) \u2714 (session 011) + **tier (ii) STEP 1 \u2714\n(session 012)**.\n\n**Theorem status (session 012 Lean upgrade):**\n- T-1 (R-004): [PROVED-CONDITIONAL(computational RH-to-T\u2080;\n  computational finite verification)] \u2014 **Lean-verified modulo\n  SfBoundProp + the declared computational perimeter only**:\n  `lambda_pos_finite_height_verified` (LiBasePoints.lean) PROVED from\n  (hRH : RHUpTo 3\u00d710\u00b9\u00b2) (hfinite : LiVerifiedUpTo 5\u00d710\u2075)\n  (hSf : SfBoundProp). PrintAxioms = 3 standard axioms, no sorryAx.\n  The two margin evaluations are discharged by certified interval\n  bounds (margin\u0303(8\u00d710\u2074) \u2265 8001 certified / 15 764 true; margin\u0303(10\u2075)\n  \u2265 85 501 certified). LiSkeleton + LiBasePoints both sorry-free.\n- T-2 (R-003 + D-041): factorization + (\u2605) \u27fa (1.12) [PROVED modulo\n  Phase-5 formalities]; (1.12) \u27f9 spec(D) \u2282 \u211d [PROVED via Suzuki + D1];\n  \u21d0 [SKELETON L3/L4].\n- T-3 (valley, D-049 + D-058): [PROVED-CONDITIONAL(RH)].\n\n**Paper:** research/paper/paperA.tex \u2014 Paper A (finite-height Li +\nmachine-verified assembly), 8 pp, compiles clean, zero undefined refs.\npaperB.tex \u2014 spectral-line research note (skeleton, standing items in\n\u00a70), 6 pp. draft.tex \u2014 FROZEN combined archive copy (12 pp). No\nfigures yet.\n\n**Lean:** research/lean/NguyenRH1/ \u2014 full build GREEN (8766 jobs);\nLiFEntire.lean root-imported (session 029); LiCircleBound.lean\n(session 030, 5e-v IN PROGRESS \u2014 not yet root-imported). sorryAx\nremains ONLY on: R003_exact_factorization (tier iv) + 4 valley\nstatements (tier iii).\n`lambda_pos_finite_height` (tier ii step 1) PROVED with hypotheses:\n(_hRH : RHUpTo 3\u00d710\u00b9\u00b2) (hfinite : LiVerifiedUpTo 5\u00d710\u2075)\n(hbase : 0 < marginTilde FAlt 80000)\n(hbase2 : marginTilde FAlt 80000 < marginTilde FAlt 100000)\n(hSf : SfBoundProp). Key session-012 constructs: FAlt (\u03c8-clean\nTrudgian-shape majorant \u2014 true F+S_b has \u03c8 > 0 on [5.47,~16], term\ndropped, cost 0.9\u221an), Bn, Sf (= SInfty + 1 \u2212 liCoeff.re, BL Thm 2 by\nconstruction), pos_of_convex_of_two_points (secant; derivative variant\npos_of_convex_of_base also proved), FAlt_psi_neg, contDiffOn_FAlt.\n\n## ACTIVE PLAN (tier ii\u2032, per D-064 \u00a76)\nFreeze protocol in force (user directive 2026-08-21): no edits to\npaperA.tex/paperB.tex/draft.tex/references.bib until ii\u2032-7; no edits\nto existing Lean proofs except the liCoeff correctness fix (ii\u2032-1a);\ncommit at every sub-stage. Fallback integrity: D-064 \u00a78.\nSub-stage map: ii\u2032-1a liCoeff pairing fix + summability (0.5\u20131 sess)\n\u2192 ii\u2032-1b residue machinery R1 (1\u20132) \u2192 ii\u2032-2 elementary swaps R2(i)(ii)\n(1\u20132) \u2192 ii\u2032-3 (4.10) R2(iii) \u2014 EF-reuse first, Hadamard fallback (2\u20134,\nlong pole) \u2192 ii\u2032-4 L3+L1 (1) \u2192 ii\u2032-5 R-bound local route R3 (2\u20133)\n\u2192 ii\u2032-6 L0 assembly (1\u20132) \u2192 ii\u2032-7 close + audit + paper Appendix B (1).\nDeprioritized: a=13+ push; adversary-ceiling LP; T4b; \u03bb-channel\n(G-004); \u03b8-channel (dead, E-024); Paper B Task 1 (R-003 bookkeeping)\nholds as queued after ii\u2032; user read-through of paperA.pdf still open\n(nothing blocks it); repo-publication prep still open.\n\n## NEXT ACTION\nSession 031: **ii\u2032-5e-v chunk 2** \u2014 the tail bound + the main series\ncircle bound (LiCircleBound.lean \u00a74\u2013\u00a75). FULL DESIGN in journal-030\n\u00a7\"Design state\" (all API verified session 030). Summary:\n1. `zero_tail_inv_sq_le` (X \u2265 4\u00b710\u00b3): \u03a3_{|\u03b3|>X} m/(1+\u03b3\u00b2) \u2264\n   16\u00b7A0count\u00b7log X / X \u2014 via ENNReal.tsum_fiberwise (free in \u211d\u22650\u221e)\n   with the dyadic key j(\u03c1) := Nat.log 2 \u230a|\u03b3|/X\u230b, the window counts\n   (Ncount_le_of_interval_gen), and the dyadic series\n   \u03a3 (j+4)/2^j = 10 (tsum_geometric + tsum_coe_mul_geometric \u2014\n   check exact names at build time).\n2. The main bound `seriesFun_norm_le_gapCircle` (k \u2265 4000, R the 5e-i\n   radius, \u2016s\u2016 = R): ONE tsum_split_finset at F := {\u2016\u03c1\u2016 \u2264 2R}; the\n   finite part by Finset.filter into low (\u2264 lowZeroConst), inner\n   (dyadic in \u2016\u03c1\u2016 and in R\u2212\u2016\u03c1\u2016), critical (\u03b3-gap 1/(32\u0108\u2080) on strip\n   arcs |t| \u2265 10 \u2014 needs 13/R \u2264 1/(32\u0108\u2080(4k+9/2)) i.e. k \u2265 4000 with\n   the numerics in journal-030: \u0108\u2080(16006) \u2264 9.36 via log(16008) \u2264 10\n   \u27f8 2.718281828^10 \u2265 22026 \u2014 vs near-axis arcs: \u2016s\u2212\u03c1\u2016 \u2265 \u221a(R\u00b2\u2212100)\u22121\n   \u2265 R/2, no gap), upper band (dyadic in \u2016\u03c1\u2016\u2212R); the tail via chunk-2's\n   zero_tail_inv_sq_le (term \u2264 (17R/6)\u00b7m/(1+\u03b3\u00b2) by 5e-iii's (17/12)\n   comparison, \u2016s\u2212\u03c1\u2016 \u2265 \u2016\u03c1\u2016/2).\n3. THEN 5e-v-c: the logDeriv circle assembly (5c/5d near-sum \u2264\n   32\u0108\u2080\u00b72A\u2080\u00b7log(|t|+4); Dirichlet right; FE-reflect + \u0393R brackets\n   left) + elems (\u03c8(s/2)/2 per arc via 5e-ii (A)/(B) + 5d's\n   norm_digamma_sub_log; dist(s/2,\u2212\u2115) \u2265 1/8 on the left arc for\n   R \u2265 208) \u27f9 \u2016Fexpr\u2016 \u2264 C(log R)\u00b3 on the circle (\u2016Gentire\u2016 same:\n   circle points are good).\n4. THEN 5e-v-d: the squeeze via Mathlib's Schwarz\n   `Complex.dist_le_div_mul_dist_of_mapsTo_ball` on Gentire with\n   R\u2082(R_k) = C(log R_k)\u00b3 + \u2016Gentire 0\u2016 \u27f9 Gentire \u2261 Gentire 0 =: B\n   (the ratio \u2192 0 via (log R)\u00b3 \u2264 64 R^{3/4} from Real.log_le_rpow-ish)\n   \u27f9 capstone `partialFraction_identity (hZC : ZeroCountProp)`.\nTHEN ii\u2032-5f (D-056's tight analysis \u27f9 10.5/48) \u2192 ii\u2032-3b \u2192 ii\u2032-3c \u2192\nii\u2032-6 \u2192 ii\u2032-7.\nRead first: journal-030 gotchas (le_or_lt absent \u2014 use le_or_gt;\nfinsum_mem_union/finsum_mem_empty/tsum_eq_sum forms; bare\nNat.cast_nonneg needs ascription; pin Ncount_add_of_le's endpoints;\nno nested calc-:= by in deep case blocks; union membership rcases\ndirectly; positivity can't see Classical.choose defs; norm_num at\nwith norms can leak metavars; statement-level if needs [DecidableEq \u03b9];\n_root_.riemannZeta_conj for the unconditional conj) + journal-029\ngotchas.\n\n## COMPLETED (Sessions 001\u2013010)\n- [x] Phase 0, Phase 1 (Track A \u2192 monitoring mode, D-013).\n- [x] 2.6 V3 root-cause + repair (E-016b/c, D-025).\n- [x] 2.7 R-003 exact factorization (D-026, E-017/D-027, ledger #5).\n- [x] 2.8 a=12 no transition (E-018/D-028, backend v2, E-019/D-029).\n- [x] 1.6 \u03be\u2032-world saturated (E-020b/D-030); 1.7 T4b closed (D-031).\n- [x] 3.3 \u2192 G-003; 3.4 (Suzuki line spawned); 3.5 design (D-032/D-033).\n- [x] (\u2605) design (D-034/D-035); new tasks 2.9/2.10/2.11.\n- [x] 3.6 D-036 explicit contour constants (session 006 cont.9).\n- [x] 3.7 E-021 (session 007): S_\u221e exact + c\u2080, |S_f| curve, A/B\u2080\n      measured; 6-bug saga documented.\n- [x] Session 008: regroup; R7 resources atlas registered; 3.8\n      COMPLETE (D-037, E-023, R-004 ledger #6); 2.10 COMPLETE\n      (E-022/E-022b + D-040, valley observable); 2.9-D1 COMPLETE\n      (D-041); 2.11 COMPLETE (D-038); 2.12 COMPLETE (E-024 + D-042,\n      \u03b8-independence); 2.13 COMPLETE (E-025 + D-043, discretization\n      floor; quadratic locking correction).\n- [x] Session 009: PHASE 4 COMPLETE (D-052/D-053/D-054, E-027 + D-055,\n      repairs 4.5a\u2013d: D-056\u2013D-059; R-004 tag restored).\n- [x] Session 010: 5.3 paper draft complete; 5.4 honesty audit (D-060);\n      5.1/5.2 skeleton stage (D-061).\n- [x] Session 011: Lean proof tier (i) COMPLETE \u2014 sInfty_lower_bound,\n      marginTilde_convex, chain_rule_sqrt_shift PROVED (journal-011;\n      10 commits; D-061 \u00a75 updated).\n\n## OPEN CONJECTURES / THREADS\n- (\u2605) (R-003): central conjectural target (task 2.9).\n- Q-S1 (D-019 \u00a73): L\u00b2\u2192uniform lifting. Q-S2: \u210b(T_a) de Branges (2.4).\n  \u03b8(a) theory: must explain both metrics (D-028 F3) + z\u2081\u00b7a\u22484.5 law.\n- Q6 (D-001); Q14 Gutzwiller (Phase 2); T2 Christoffel/CMS (D-006).\nCLOSED: T1, T3, T4, T4b (D-031), T5 (\u2192G-001), 3.4a/b/c, 3.3 (\u2192G-003),\n2.8 (D-029), 1.6 (D-030), 1.7 (D-031), 3.5-design (D-033), (\u2605)-design\n(D-035), 3.6 (D-036), 3.7 (E-021), 3.8 (D-037/R-004), 5.3, 5.4,\n5.1-tier-(i).\n\n## BLOCKERS\n(none)\n\n## HANDOFF NOTES\n- db.py add-derivation/log-experiment use INSERT OR REPLACE keyed by\n  id \u2014 a mistyped re-register OVERWRITES the row.\n- db.py: init, log-experiment, add-result, add-derivation, add-graveyard,\n  list. add-derivation signature: positional id, --title --task\n  --status --file (NO --date flag). Session registration via direct\n  sqlite3 insert (journal_file column).\n- venv: ./.venv/Scripts/python.exe. git: git -c user.name=\"NGUYEN-RH-1\"\n  -c user.email=\"research@local\" commit (config NOT modified).\n- LONG RUNS: DETACHED + sandbox DISABLED + log file; poll. For lake:\n  SINGLE command per detached spawn; short PrintAxioms in foreground.\n- LEAN: elan 4.2.3 at ~/.elan/bin (export PATH per shell); toolchain\n  v4.33.0-rc2; zeta-23-lean fully built (9010 jobs) + cache ~7 GB;\n  NguyenRH1 at research/lean/NguyenRH1 with path requires. Iterate\n  single-file with `lake env lean NguyenRH1/LiSkeleton.lean` from the\n  package dir (elan errors \"no default toolchain\" outside it).\n- LEAN 4 gotchas (session 011, hard-won \u2014 full list in journal-011):\n  HasDerivAt.add_const adds to VALUE (use .comp for precomposition);\n  Pi.mul_apply/Pi.add_apply/Pi.sub_apply simp after .mul/.add/.sub;\n  convert leaves instance side-goals \u2192 `first | rfl | ring`;\n  field_simp often closes goals (trailing ring errors);\n  Finset.sum_image takes Set.InjOn, map = g, summand = f;\n  deriv^[2] \u2260 deriv (deriv \u00b7) syntactically (show bridges);\n  subtype coercions (m : \u211d) vs (m.1 : \u211d) can explode isDefEq \u2014 pin\n  families explicitly; -a*b vs -(a*b) breaks Real.exp_neg rewrites;\n  check norm_num digit-bounds by hand (two tight ones failed);\n  set_option maxHeartbeats goes BEFORE the doc comment;\n  iimaj_bracket_bound needs maxHeartbeats 800000.\n- flint for ALL \u03b6/Stieltjes >16 digits; mp.zetazero safe; mpmath\n  complex-\u03b6 OK to ~1e-10; mpmath zeta (integer+Hurwitz)\n  UNTRUSTWORTHY beyond ~57 digits at any dps.\n- PRECISION RULES (session 007): (1) mp.mp.dps = X BEFORE every\n  mp.mpf(string) parse; (2) long decimal constants as STRINGS;\n  (3) float64 zero ordinates insufficient for \u03c3_m; (4) Li binomial\n  truncation boundary error ~C(n,M)\u00b714^{\u2212M} peaks at M = n/15.\n- prime_backend_v2: blockwise \u039b to e\u00b2\u2074, cache E-019-backend-cache.npz;\n  monkeypatch E16.prime_sum_vec + E16._BUILD.clear().\n- Winding diagnostic: \u22654000 pts/edge near real zeros.\n- E-016/E-016b FROZEN; correct machinery: E-016c, E-017/E-018.\n- \u03b3-locking claim protocol: D-029 \u00a73.\n- Lagarias paper math/0404394 (research/paper/): \u00a75\u20136 read in full.\n- research/resources/: 43-note RH-equivalence atlas = R7.\n- E-021 caches: E-021-zeta-cache.json, E-021-zeros100-hi-cache.json,\n  E-021-zeros-cache.npy (4624 zeros float64 \u2014 P1 use ONLY).\n- E-023: E-023-assembly.csv + .json (M\u2080, N\u2080, N\u2081, margins).\n- E-027: detector stress test; zeros cache E-027-zeros-cache.npy;\n  rerun 16 s with cache (--force).\n- PAPER: build with pdflatex+bibtex in research/paper/ (MiKTeX);\n  draft.pdf is gitignored. Audit rule (D-060 \u00a75): any edit to\n  draft.tex re-opens the audit for the edited lines.\n",
  "structuredPatch": [
    {
      "oldStart": 1,
      "oldLines": 10,
      "newStart": 1,
      "newLines": 10,
      "lines": [
        " # STATE.md \u2014 NGUYEN-RH-1 RESUME POINT",
        " # \u2b50 READ THIS FIRST at the start of every session.",
        "-Last updated: 2026-08-23 | Session 030 COMPLETE \u2014 **ii\u2032-5e-v-a +",
        "-5e-v-b chunk 1 COMPLETE** (LiCircleBound.lean: the count bridges",
        "-A0count/Ncount windows + the Dirichlet bound + the tsum-split",
        "-machinery + lowZeroConst; clean elaboration; NOT yet root-imported \u2014",
        "-the file is mid-sub-stage; journal-030 has the full remaining design).",
        "+Last updated: 2026-08-23 | Session 031 COMPLETE \u2014 **ii\u2032-5e-v-b chunk 2",
        "+COMPLETE** (the far-tail bound `zero_tail_inv_sq_le`: \u03a3_{|\u03b3|>X}",
        "+m/(1+\u03b3\u00b2) \u2264 16\u00b7A0count\u00b7log X / X for X \u2265 200, via the dyadic fiber",
        "+machine + ENNReal.tsum_fiberwise; LiCircleBound.lean now ~830 lines,",
        "+clean elaboration, not yet root-imported).",
        " TIER ii\u2032 in progress (user decision: option (a) \u2014 close SfBoundProp",
        " in Lean BEFORE submission; Paper A frozen/submittable throughout).",
        " DONE: ii\u2032-0 (D-064 design + liCoeff defect + crux Sf = Res\u2081 found),"
      ]
    }
  ],
  "userModified": false,
  "replaceAll": false
}
raw content_json (database row)
[{"type":"thinking","thinking":"Now the main series circle bound `seriesFun_norm_le_gapCircle`. Let me design its structure concretely.\n\n**Statement**:\n```lean\ntheorem seriesFun_norm_le_gapCircle (hZC : ZeroCountProp) {k : ℕ} (hk : 4000 ≤ k)\n    {R : ℝ} (hRlo : 4 * (k : ℝ) + 5 / 2 ≤ R) (hRhi : R ≤ 4 * (k : ℝ) + 3)\n    (hR4 : ∀ m : ℤ, 1 / 4 ≤ |R / 2 - (m : ℝ)|)\n    (hgap : ∀ ρ : ℂ, IsNontrivialZero ρ →\n      (1 / (16 * C0hat (4 * (k : ℝ) + 9 / 2))) ≤ |ρ.im - R| ∨ 1 ≤ |ρ.im - R|)\n    {s : ℂ} (hs : ‖s‖ = R) :\n    ‖seriesFun s‖ ≤ (some explicit C) * (Real.log R)^2 + lowZeroConst\n```\n\nThe proof structure:\n1. ‖seriesFun s‖ ≤ ∑' ρ, ‖seriesTerm s ρ‖ = ∑' ρ, (zeroMult ρ : ℝ)·R/(‖ρ‖·‖s−ρ‖) — via norm_tsum_le_tsum_norm (seriesSummable s).norm and the per-term identity ‖seriesTerm s ρ‖ = m·R/(‖ρ‖·‖s−ρ‖) — from one_div_sub_add_one_div: 1/(s−ρ)+1/ρ = s/(ρ(s−ρ)): needs ρ ≠ 0 (re > 0 ✓) and s ≠ ρ (on the circle s is not a zero — s with ‖s‖ = R ≥ 16000 and ζ s = 0 would be a zero with huge norm — possible a priori! A nontrivial zero ON the circle? The γ-gap prevents zeros with |γ| near R... a zero with ‖ρ‖ = R exactly: |γ| ≤ R and... hmm — the circle |s| = R could contain a zero with small |γ| and re ≈ ±R?? re ∈ (0,1) for nontrivial zeros — a zero on the circle has re ∈ (0,1) and |im| ≈ R — the γ-gap: |im − R| ≥ clearance ⟹ im ≠ R... but the zero with im ≈ √(R²−0.25) ≈ R − 0.125/R — |im − R| ≈ 0.125/R — is that ≥ the clearance 1/(16Ĉ₀)? 1/(16·Ĉ₀) ≈ 1/(16·9) ≈ 0.007 vs 0.125/R ≈ 0.000008 — NO — so a zero could sit at 0.5 + i√(R²−0.25) with |im − R| tiny?? wait — the γ-gap says every zero has |im − R| ≥ 1/(16Ĉ₀) OR ≥ 1... im = √(R²−0.25) = R−δ with δ ≈ 1/(8R) < 1: so the fine clearance must hold: |im − R| = δ ≥ 1/(16Ĉ₀): 1/(8R) ≥ 1/(16Ĉ₀) ⟺ 2Ĉ₀ ≥ R·... 2·Ĉ₀(4k+9/2) vs R = 4k+2.5-ish: Ĉ₀ ≍ 9 vs 2·9 = 18 vs R ≥ 16000 — FAILS: 1/(8R) < 1/(16Ĉ₀) ⟹ the zero CAN'T be at im = √(R²−0.25)?? Let me redo: is there a zero ON the circle |s| = R with re ∈ (0,1)? Its im: |im| = √(R²−re²) ∈ (R−1, R] — so |im − R| < 1 (the fine case) ⟹ need |im−R| ≥ 1/(16Ĉ₀): R − √(R²−re²) ≥ 1/(16Ĉ₀) ⟺ re²/(R+√(R²−re²)) ≥ 1/(16Ĉ₀) ⟸ re²/(2R) ≥ 1/(16Ĉ₀) ⟺ 8Ĉ₀·re² ≥ R — FALSE (re ≤ 1, 8Ĉ₀ ≈ 72 < R). So a zero with re² < R/(8Ĉ₀) ≈ 200-ish would violate the fine clearance — i.e. zeros on the circle must have re² ≥ R/(8Ĉ₀) ≈ 200 — re ≥ 14 — but re < 1 (nontrivial) — CONTRADICTION ⟹ NO nontrivial zero lies on the circle ✓. Good — so s ≠ ρ always on the circle (ζ s ≠ 0: s has ‖s‖ = R: ζ s = 0 ⟹ s nontrivial (re ≥ 1 excluded since re ≤ 1... wait re s could be ≥ 1 on the right near-axis: re s ≥ 1 with ζ s = 0 impossible (nonvanishing) ✓; re ≤ 1: nontrivial or trivial: trivial −2n: |−2n| = 2n = R: excluded by dist(R/2, ℤ) ≥ 1/4 (R/2 not an integer ⟹ R ≠ 2n ✓); nontrivial: just shown impossible ✓). So ζ s ≠ 0 on the circle ✓ (needed for s ≠ ρ per term).\n\nHmm wait — actually for the term algebra 1/(s−ρ)+1/ρ = s/(ρ(s−ρ)) I need s ≠ ρ — since ζ s ≠ 0 and ζ ρ = 0 ⟹ s ≠ ρ ✓.\n\n2. The split: ∑' ρ, g ρ (g := the norm-form) via tsum_split_finset at F := {ρ : Z | ‖ρ‖ ≤ 2R} (finite via finite_subtype_norm_lt (2R+1)):\n   = Σ_{ρ ∈ F} g ρ + ∑'_{ρ ∉ F} g ρ.\n   \n3. The tail: ∑'_{∉F} g ρ ≤ ∑'_{∉F} (17R/6)·m/(1+γ²) [per-term: ‖s−ρ‖ ≥ ‖ρ‖−R ≥ ‖ρ‖/2 (‖ρ‖ > 2R) ⟹ g = m·R/(‖ρ‖‖s−ρ‖) ≤ m·R/(‖ρ‖·‖ρ‖/2) = 2Rm/‖ρ‖² ≤ 2Rm·(17/12)/(1+‖γ‖²)·... wait — 1/‖ρ‖² vs 1/(1+γ²): 1+γ² = 1+im² ≤ 1+‖ρ‖² (im² ≤ ‖ρ‖²) — hmm 1+γ² ≤ 1+‖ρ‖² ⟹ 1/(1+γ²) ≥ 1/(1+‖ρ‖²) — wrong direction. Use the 5e-iii comparison: 1+‖γ‖² ≤ (17/12)‖ρ‖² for ‖ρ‖ ≥ 2 (one_add_normSq_gammaOf_le — wait that gives 1+‖γ‖² ≤ (17/12)‖ρ‖² ⟹ 1/‖ρ‖² ≤ (17/12)/(1+‖γ‖²) ✓ THE RIGHT DIRECTION ✓): so 2R/‖ρ‖² ≤ 2R·(17/12)/(1+‖γ‖²) = (17R/6)/(1+‖γ‖²) ✓. So tail ≤ (17R/6)·∑'_{∉F} m/(1+‖γ‖²) — and m/(1+‖γ‖²) ≤ m/(1+γ²)·... hmm — the tail bound zero_tail_inv_sq_le is about 1/(1+im²) = 1/(1+γ²) (γ = im directly, not the gammaOf!). Let me align: zero_tail_inv_sq_le's tailTerm has 1/(1 + im²). And the dominator here is 1/(1+normSq(gammaOf ρ)) with normSq(gammaOf ρ) = im² + (1/2−re)². The relation: 1/(1+normSq γ) ≤ 1/(1+im²)?? normSq γ ≥ im² ⟹ 1+normSq ≥ 1+im² ⟹ 1/(1+normSq) ≤ 1/(1+im²) ✓. So ∑'_{∉F} m/(1+normSq γ) ≤ ∑'_{∉F} m/(1+im²) ≤ ∑'_{Z} (if 2R < |im| then m/(1+im²) else 0)... wait the tailTerm X has if X < |im|: my ∉F set is ‖ρ‖ > 2R ⟹ |im| ≥ ‖ρ‖ − 1 > 2R − 1: so ∑'_{∉F} m/(1+im²) ≤ tailSum at X := 2R−1 (the if-members: ∉F ⟹ |im| > 2R−1 ⟹ tailTerm (2R−1) = the value): ∑'_{∉F} m/(1+im²) = ∑'_{Z} (if 2R<|im| then... restricted)... — the bridge: ∑'_{∉F} m/(1+im²) ≤ ∑'_{Z} tailTerm (2R−1) — via tsum_split_finset's complement form: the complement tsum ∑'_{∉F} g ρ = ∑'_{Z} (if ρ ∈ F then 0 else g ρ) ✓ (tsum_split_finset) — and pointwise (if ρ ∈ F then 0 else m/(1+im²)) ≤ tailTerm (2R−1) ρ: for ρ ∈ F: 0 ≤ tailTerm ✓; for ρ ∉ F: ‖ρ‖ > 2R ⟹ |im| > 2R−1 ⟹ tailTerm = m/(1+im²) ✓ equal. So ∑'_{∉F} ≤ tailSum (2R−1) ≤ 16A₀ log(2R−1)/(2R−1) (zero_tail_inv_sq_le, 2R−1 ≥ 200 ✓ R ≥ 16000). And (17R/6)·16A₀ log(2R−1)/(2R−1) ≤ (17R/6)·16A₀·log(2R)/(R/2)·... 2R−1 ≥ 3R/2 (R ≥ 2): log(2R−1)/(2R−1) ≤ log(2R)/(3R/2) ≤ (2/3)·(log 2 + log R)/(R)·... ≤ (2/3)·2·log R/R (log 2 ≤ log R ✓): so the tail ≤ (17R/6)·16A₀·(2/3)·2 logR/R = (17·16·4/18)·A₀ log R = ~30 A₀ log R ✓ — O(A₀ log R) ✓ fine.\n\n   The tail-vs-tailTerm bridge: tailTerm (2R−1) vs m/(1+normSq γ): normSq γ ≥ im² gives 1/(1+normSq) ≤ 1/(1+im²): so ∑'_{∉F} m/(1+normSqγ) ≤ ∑'_{∉F} m/(1+im²) ≤ tailSum ✓.\n   Wait — I have ∑'_{∉F} (17R/6)·m/(1+‖γ‖²) = (17R/6)·∑'_{∉F} m/(1+‖γ‖²) — and ∑'_{∉F} m/(1+‖γ‖²) ≤ ∑'_{∉F} m/(1+im²) ✓ (pointwise, both summable via of_norm_bounded vs the if-forms — the if-complement forms — both summable (of_norm_bounded the dominators ✓)... the comparison ∑' ≤ ∑' needs both summable: complement-form summable from tsum_split_finset's h2-style ✓; tailTerm summable ✓).\n\n4. The finite part Σ_{F} g: split F by filters into:\n   - low: ‖ρ‖ ≤ 3 (g ≤ m·(1 + 1/‖ρ‖)·... : term m·R/(‖ρ‖‖s−ρ‖): ‖s−ρ‖ ≥ R−3 ≥ R/2: ≤ 2m/‖ρ‖... hmm — for the LOW set I defined lowZeroConst := Σ m·(1+1/‖ρ‖): the term m·R/(‖ρ‖‖s−ρ‖) ≤ m·R/(‖ρ‖·(R−3)) ≤ m·(2/‖ρ‖) (R/(R−3) ≤ 2 ⟺ R ≥ 6 ✓): so low sum ≤ 2·Σ m/‖ρ‖ ≤ 2·lowZeroConst?? — lowZeroConst has (1 + 1/‖ρ‖) per term ≥ 1/‖ρ‖ ✓: 2·Σ m/‖ρ‖ ≤ 2·Σ m(1+1/‖ρ‖) = 2·lowZeroConst ✓.\n   - inner: 3 < ‖ρ‖ ≤ R−2: g ≤ m·2/‖ρ‖ (‖s−ρ‖ ≥ R−‖ρ‖ ≥ 2... wait ‖s−ρ‖ ≥ |R − ‖ρ‖| = R−‖ρ‖ ≥ 2 ⟹ g ≤ m·R/(‖ρ‖·2)·... hmm R/(R−‖ρ‖) varies: for ‖ρ‖ ≤ R/2: R−‖ρ‖ ≥ R/2 ⟹ g ≤ 2m/‖ρ‖ ✓; for R/2 < ‖ρ‖ ≤ R−2: g ≤ m·R/(‖ρ‖·(R−‖ρ‖)) ≤ m·2/(R−‖ρ‖) (R/‖ρ‖ ≤ 2) — dyadic in d = R−‖ρ‖.\n   - critical: R−2 < ‖ρ‖ < R+2: the γ-gap (strip) or re-split (near-axis).\n   - upper: R+2 ≤ ‖ρ‖ ≤ 2R: g ≤ m·R/(‖ρ‖(‖ρ‖−R)) ≤ m/(‖ρ‖−R)·(R/(R+2) ≤ 1) — dyadic in e = ‖ρ‖−R.\n\nEach dyadic band: count via windows + the geometric/harmonic sum. The dyadic decompositions are finset sums over j (J := ⌈log₂ R⌉₊ shells) — each shell's count via Ncount_le_of_interval_gen and term bound — the j-sum bounded by closed forms (Σ 1 = J, Σ j = J²/2...).\n\nThis is the big assembly — ~400 lines. Given the session's length, let me checkpoint here mentally and decide: I've completed the tail bound (committed). The main series bound is the next sub-stage. Given how long each lemma takes with the elaboration fights, the main series bound is realistically another full session of work, and 5e-v-c/d beyond that.\n\nPACING: the session has been very productive (tail bound complete). Per the sub-stage rule, I could continue, but the realistic remaining budget suggests wrapping session 031's Lean work at this clean point OR continuing one more chunk. The user said \"let's start\" for session 031 — they want maximal progress. Let me continue with the main series bound — I'll write it in pieces.\n\nActually, let me reconsider the main bound's architecture to minimize the shell plumbing. Instead of FOUR shell families with separate dyadic analyses, organize as:\n\nΣ_F g = Σ over the F-finset — split via Finset.filter into the 4 bands (low/inner/critical/upper) — finset splits are FREE (Finset.filter + sum unions). Then each band's bound:\n- low: ≤ 2·lowZeroConst ✓ (direct).\n- inner (3 < ‖ρ‖ ≤ R−2): the dyadic in d := R−‖ρ‖: hmm — actually simpler: for the inner band use ‖s−ρ‖ ≥ R − ‖ρ‖ and split inner into inner-low (‖ρ‖ ≤ R/2: ‖s−ρ‖ ≥ R/2 ⟹ g ≤ 2m/‖ρ‖) and inner-high (R/2 < ‖ρ‖ ≤ R−2: g ≤ 2m/(R−‖ρ‖)): \n  - inner-low: Σ ≤ Σ_{3<‖ρ‖≤R/2} 2m/‖ρ‖ ≤ 2·(Σ over dyadic j: count(2^j < ‖ρ‖ ≤ 2^{j+1})·2^{-j}·... hmm 2m/‖ρ‖ ≤ 2m/2^j for ‖ρ‖ > 2^j: shell {2^j < ‖ρ‖ ≤ 2^{j+1}}: ≤ count·2/2^j: count of {‖ρ‖ ≤ 2^{j+1}}: |γ| ≤ 2^{j+1}: windows: Ncount(−2^{j+1}, 2^{j+1}] ≤ A₀(2^{j+2}+1)·log(3·2^{j+1}+5) ≍ A₀·2^j·j: shell ≤ 2/2^j·A₀·2^{j+2}·(j+4)·... ≍ 16A₀(j+4): sum over j ≤ log₂(R/2) ≈ J: ≍ 16A₀·(J+5)²/2 = O(A₀(log R)²) ✓.\n  \nThe per-shell count bound: count of {2^j < ‖ρ‖ ≤ 2^{j+1}} ≤ count of {|γ| ≤ 2^{j+1}} (since |γ| ≤ ‖ρ‖) ≤ Ncount(−2^{j+1}, 2^{j+1}]·... Ncount a b with a = −2^{j+1}, b = 2^{j+1}: Ncount_le_of_interval_gen: ≤ A₀(2^{j+2}+1)·log(3·2^{j+1}+5) ✓.\n\nHmm wait — but the shell {2^j < ‖ρ‖ ≤ 2^{j+1}} ⊆ {|γ| ≤ 2^{j+1}} ✓ and the sum over the shell of m ≤ the ordinate-set's count — the bridge via the toFinset subsets (banked pattern).\n\nOK — you know, this is all clear; it's just long. Let me power through and write the main series bound. I'll write it as ONE big lemma with the internal band splits. Given the session length, let me write it efficiently and compile.\n\nActually — let me reconsider scope ONE more time. The full series bound with 4 bands + tail is ~500 lines. The remaining 5e-v-c (logDeriv assembly ~250) + 5e-v-d (squeeze + capstone ~200). Total ~950 lines more for 5e-v. This is 2 sessions of work realistically. Since I've already committed good progress this session (the tail bound — the analytically hardest new piece), let me consider whether to continue now or close.\n\nThe user's directive pattern: they say \"let's start\"/\"continue\" and I work until a natural boundary. The natural boundary HERE is a bit ragged (mid-5e-v-b). But the sub-stage rule says break into clean committed states — and I have one (tail bound committed). The session has been long. Let me push forward with the main series bound — write it in chunks with compiles. If it gets through, great; if I hit a stopping point mid-way, everything is committed.\n\nLet me write the main series bound lemma. To manage the complexity, I'll structure it as:\n\n```lean\n/-- The series circle bound: on the 5e-i γ-gap circle |s| = R (k ≥ 4000),\n‖seriesFun s‖ ≤ C·(log R)² + 2·lowZeroConst. -/\ntheorem seriesFun_norm_le_gapCircle (hZC : ZeroCountProp) {k : ℕ} (hk : 4000 ≤ k)\n    {R : ℝ} (hRlo : 4 * (k : ℝ) + 5 / 2 ≤ R) (hRhi : R ≤ 4 * (k : ℝ) + 3)\n    (hgap : ∀ ρ : ℂ, IsNontrivialZero ρ →\n      1 / (16 * C0hat (4 * (k : ℝ) + 9 / 2)) ≤ |ρ.im - R| ∨ 1 ≤ |ρ.im - R|)\n    {s : ℂ} (hs : ‖s‖ = R) :\n    ‖seriesFun s‖ ≤ 500 * A0count * (Real.log R)^2 + 2 * lowZeroConst := by\n```\n\nStructure:\n1. ‖seriesFun s‖ ≤ ∑' ρ, g ρ with g ρ := m·R/(‖ρ‖·‖s−ρ‖) — the per-term identity via one_div_sub_add_one_div (needs s ≠ ρ: from ζ s ≠ 0 — prove: ζ s = 0 on the circle impossible: re ≥ 1: nonvanishing; re ≤ 1: nontrivial or trivial: trivial: |−2n| = R impossible (dist(R/2,ℤ) ≥ 1/4 ⟹ R ≠ 2n: |R/2 − n| ≥ 1/4 > 0 ⟹ R/2 ≠ n ⟹ R ≠ 2n ✓); nontrivial: the γ-gap: zeros with |im−R| ≥ 1/(16Ĉ₀) ∨ ≥ 1: s nontrivial would have |im s| = √(R²−re²): |im s − R| = R − √(R²−re²) ≤ re²/(2R)·2 ≤ 1/R < 1/(16Ĉ₀)·... need R − √(R²−re²) < 1/(16Ĉ₀) for the contradiction: R − √(R²−re²) = re²/(R+√(...)) ≤ 1/(2R)·... ≤ 1/(2R)·2 = 1/R: 1/R < 1/(16Ĉ₀) ⟺ 16Ĉ₀ < R: Ĉ₀(4k+9/2) ≤ 9.36-ish (k ≥ 4000: 4k+9/2 ≤ 4k+4.5 ≤ R+2: Ĉ₀ mono: Ĉ₀(R+2)... hmm the numerics: Ĉ₀(4k+9/2) ≤ 9.36 needs 4k+9/2 ≤ 16006 ⟸ k ≤ 4000!! — the numerics were for k = 4000 exactly; for k > 4000 Ĉ₀ GROWS (log) — 16·Ĉ₀(4k+9/2) < R = 4k+2.5-ish needs Ĉ₀(4k+4.5) < (4k+2.5)/16 = k/4-ish: Ĉ₀ ≍ log: for k = 4000: 9.36 < 250 ✓; the growth: need 16·Ĉ₀(4k+4.5) < 4k+2 for ALL k ≥ 4000: Ĉ₀(x) = 2.9 + 0.433·log(x+2) + 0.886·log log(x+2) (roughly): 16·Ĉ₀(4k+4.5) vs 4k: at k = 4000: 16·9.36 = 150 < 16002 ✓ with the ratio growing (log vs linear) — provable uniformly: log(4k+6.5) ≤ log(4k+6.5) and 16·(2.9 + 0.433 L + 0.886 L') vs 4k with L = log(4k+6.5) ≤ 4k+6.5 — the linear-in-Ĉ₀ bound: 16·Ĉ₀ ≤ 16·(2.9 + 0.433·(4k+6.5)... no log ≤ linear is too lossy. Use log x ≤ 2√x...: 16·(2.9 + 0.433·2√x + 0.886·2·x^{1/4}) vs 4k+2 ≈ x: with x = 4k+6.5 ≥ 16006: 16·(2.9 + 0.866·√16006 + 1.772·(16006)^{1/4}) = 16·(2.9 + 0.866·126.5 + 1.772·11.25) = 16·(2.9+109.6+19.9) = 16·132.4 = 2118 < 16002 ✓ — and for larger k the gap widens ✓ — but a UNIFORM proof for all k ≥ 4000 needs log x ≤ 2√x and x^{1/4} bounds with a one-point verification + monotonicity of the ratio (x vs √x: for x ≥ 16006: 16·(2.9 + 0.866√x + 1.772·x^{1/4}) ≤ x ⟸ at x = 16006: 2118 ≤ 16002 ✓ and the function x ↦ x − 16·(0.866√x + ...) increasing for x ≥ 16006 (derivative 1 − 16·(0.433/√x + ...) > 0 ✓) — the monotonicity argument in Lean: messy. ALTERNATIVE: just require k ≥ 4000 AND verify the bound at the needed x via: 16·Ĉ₀(x) ≤ x−4 for x ≥ 16006: Ĉ₀(x) ≤ 2.9 + 0.433·log(x+2) + 0.886·log log(x+2): log(x+2) ≤ x+2: Ĉ₀ ≤ 2.9 + 0.433(x+2) + 0.886(x+2)·... no. Hmm — use: log(x+2) ≤ (x+2)^{1/8}·8 (log y ≤ 8y^{1/8}?? log y ≤ y^r/r: r = 1/8: 8(x+2)^{1/8}·... 8·(16008)^{1/8} = 8·3.36 = 26.9 — vs log(16008) = 9.68 ✓ but 26.9 > 9.68 LOSSY: 16·(2.9 + 0.433·26.9 + 0.886·log(26.9))·... log log(x+2) ≤ log(26.9) = 3.29: 16·(2.9 + 11.6 + 2.9) = 16·17.4 = 279 < 16002 ✓✓ — and uniform: 16·(2.9 + 0.433·8(x+2)^{1/8} + 0.886·log(8(x+2)^{1/8}))·... this is spiraling. \n\nSTOP — the k ≥ 4000 threshold numerics are a side-quest. SIMPLIFY: the γ-gap's fine clearance is only needed for the CRITICAL BAND of the series bound AND the near-sum of 5c/5d — and there, what I need is: |t − γ| ≥ 1/(32Ĉ₀) for zeros with |γ| near R and |t| ≈ R. The condition: 13/R ≤ 1/(32Ĉ₀) ⟺ R ≥ 416·Ĉ₀(4k+9/2). INSTEAD of a uniform-in-k proof, note: Ĉ₀(4k+9/2) ≤ Ĉ₀(4k+3+2)·... — actually simpler: since Ĉ₀(x) = C₀ + c₁ log(x+2) + c₂ log log(x+2) with explicit constants, the ratio 416·Ĉ₀(4k+9/2)/k → 0 — prove `Tendsto (fun k => 416 * C0hat (4*k + 9/2) / k) atTop (𝓝 0)`?? — a tendsto argument then \"eventually ≤\" gives ∃ K₀ — but I need an EXPLICIT K₀ for the Lean theorem statement... OR: state the circle bound lemma with the hypothesis `416 * C0hat (4k+9/2) ≤ 4*k+2` (or the R-form) as an explicit side condition, and separately prove `∀ k ≥ 4000, that holds` via a monotonicity argument ONCE. Hmm.\n\nYou know what — I'm now 2+ hours into this session's work (3 commits). This is the right place to pause and checkpoint the DESIGN, then continue fresh. The remaining pieces: the main series bound (~400 lines with the k≥4000 numerics), the logDeriv assembly, the squeeze, the capstone. Let me bank the progress: commit (done — f984afc), update STATE.md with the precise next steps, and continue.\n\nActually no — let me keep working; the state is clean and committed. Let me write the main series bound. To manage the threshold issue cleanly, I'll state the lemma with explicit side conditions on R and Ĉ₀ that are checkable, and discharge the k ≥ 4000 numerics via a single `C0hat_bound_aux` lemma: ∀ k ≥ 4000, 32·Ĉ₀(4k+9/2)·13 ≤ 4k+2 — hmm the numerics: need Ĉ₀(4k+9/2) ≤ (4k+2)/416 — for k = 4000: Ĉ₀(16004.5) ≤ 9.36 ≤ 38.5 ✓ HUGE slack — and the growth: Ĉ₀(x) ≤ (x)/416−... ⟸ log-ish vs linear: for x ≥ 16004: Ĉ₀(x) ≤ 9.36 + 0.433·(log(x+2) − log 16006) + 0.886·(log log(x+2) − log log 16006) — the increments: log(x+2) − log 16006 = log((x+2)/16006) ≤ (x+2)/16006 − 1 ≤ (x−16004)/16006: so Ĉ₀(x) ≤ 9.36 + (0.433 + 0.886/9.68)·(x−16004)/16006·... (log log increment: log log(x+2) − log log 16006 ≤ (log(x+2) − log 16006)/log 16006 ≤ (x−16004)/(16006·9.68)): ≤ 9.36 + 0.53·(x−16004)/16006: want ≤ (4k+2)/416 with x = 4k+4.5: 4k+2 = x−2.5: need 9.36 + 0.53(x−16004)/16006 ≤ (x−2.5)/416: at x = 16004: 9.36 ≤ 16001.5/416 = 38.5 ✓; the RHS slope 1/416 = 0.0024 vs LHS slope 0.53/16006 = 0.000033 ✓ RHS grows 73× faster ⟹ holds ∀ x ≥ 16004 ✓ — provable via: (x−2.5)/416 − 9.36 ≥ 0.53(x−16004)/16006: at x = 16004: 29.1 ≥ 0 ✓; both linear: compare slopes ✓ — linear algebra after the log bounds. The log-increment bound log(x+2) − log 16006 ≤ (x−16004)/16006: log(a) − log(b) = log(a/b) ≤ a/b − 1 (log_le_sub_one... log(a/b) ≤ a/b − 1 ✓ Real.log_le_sub_one_of_pos ✓ banked) = (a−b)/b = (x−16004)/16006 ✓. And log log increment similarly (log log(x+2) − log log 16006 = log(log(x+2)/log 16006) ≤ log(x+2)/log 16006 − 1 ≤ ((x−16004)/16006 + 1... ·... messy but all explicit rational arithmetic + log_le_sub_one. ~80 lines.\n\nOK. This is all doable but it's a LOT. The session is very long already. Let me make the call: I'll write the session-031 work as far as the tail bound (committed), update STATE.md to point at the main series bound as the next action with the threshold-numerics plan, write the journal, and close the session cleanly. The next session continues with the main series bound.","signature":""},{"type":"text","text":"The tail bound is committed (`f984afc`). The main series bound is a large block — let me checkpoint the session cleanly with the state recorded, since the next chunk (main series bound + assembly + squeeze) is substantial fresh work."},{"type":"tool_use","id":"Edit_463","name":"Edit","input":{"file_path":"D:\\Python\\Quantum\\STATE.md","old_string":"# STATE.md — NGUYEN-RH-1 RESUME POINT\n# ⭐ READ THIS FIRST at the start of every session.\nLast updated: 2026-08-23 | Session 030 COMPLETE — **ii′-5e-v-a +\n5e-v-b chunk 1 COMPLETE** (LiCircleBound.lean: the count bridges\nA0count/Ncount windows + the Dirichlet bound + the tsum-split\nmachinery + lowZeroConst; clean elaboration; NOT yet root-imported —\nthe file is mid-sub-stage; journal-030 has the full remaining design).\nTIER ii′ in progress (user decision: option (a) — close SfBoundProp\nin Lean BEFORE submission; Paper A frozen/submittable throughout).","new_string":"# STATE.md — NGUYEN-RH-1 RESUME POINT\n# ⭐ READ THIS FIRST at the start of every session.\nLast updated: 2026-08-23 | Session 031 COMPLETE — **ii′-5e-v-b chunk 2\nCOMPLETE** (the far-tail bound `zero_tail_inv_sq_le`: Σ_{|γ|>X}\nm/(1+γ²) ≤ 16·A0count·log X / X for X ≥ 200, via the dyadic fiber\nmachine + ENNReal.tsum_fiberwise; LiCircleBound.lean now ~830 lines,\nclean elaboration, not yet root-imported).\nTIER ii′ in progress (user decision: option (a) — close SfBoundProp\nin Lean BEFORE submission; Paper A frozen/submittable throughout)."},"extra_content":null}]