← Session 31 — ii′-5f: tight R-bound 10.5/48 (piece 3 + pinch)
thinking (18062 chars)
The ENTIRE file compiles clean now — §17 complete. That precedence landmine cost several iterations, but it's banked now: **`a * b / c` parses as `(a·b)/c` — always parenthesize `c·(b/d)` when the proof uses `mul_left`/`div` forms, or isDefEq explodes trying to prove `(a·b)/c = a·(b/c)` by unfolding**.
Let me commit §17, update the todo, and record the gotcha. Then §18 (right tail) — structurally the same as §17 but with the k-bucket on x = |γ−t| and the two-regime count (k = ⌊t⌋₊ at C₀+0.55, k ≥ ⌊t⌋₊+1 at C0hat(2k+1)) — wait, actually, per my design the RIGHT tail buckets are k ≥ ⌊t⌋₊+1 > t, ALL at the C0hat(2k+1) rate, PLUS the k = ⌊t⌋₊ bucket (when t ∉ ℤ, nonempty) which folds into the MAIN bucket family (already counted — wait no). Let me re-derive:
The main finset covers far zeros with x < ⌊t⌋₊+1 (buckets k ≤ ⌊t⌋₊). The tail (ρ ∉ mainFinset, farG ρ ≠ 0) covers x ≥ ⌊t⌋₊+1: buckets k ≥ ⌊t⌋₊+1. For the RIGHT tail (γ > 2t — wait, the tail split is ρ ∉ mainFinset with farG ≠ 0 ⟹ x ≥ ⌊t⌋₊+1 > t ⟹ γ > 2t ∨ γ < 0). Right tail: γ > 2t, x = γ−t > t, buckets k = ⌊x⌋₊ ≥ ⌊t⌋₊+1 ⟹ k > t ✓ ALL tail buckets at rate C0hat(t+k+1) ≤ C0hat(2k+1) ✓. And k ≥ ⌊t⌋₊+1 ≥ 11 ✓ so the RW bricks (Σ_{k≥11}) apply ✓. The farGRight definition: if 2t < γ then farG else 0 — the tail tsum split needs: farG(if ∉ mainFinset) = farGRight + farGLeft pointwise ✓.
But wait — the mainFinset's tail-split in §18: ∑' farG = ∑_{mainFinset} farG + ∑' (if ∉ mainFinset then farG else 0). The second: for ρ ∉ mainFinset: near (farG = 0 ✓) or x ≥ ⌊t⌋₊+1. And farGRight ρ = if 2t < γ then farG else 0: for ρ ∉ mainFinset with x ≥ ⌊t⌋₊+1 > t: γ > 2t (farGRight = farG) or γ < 0 (farGLeft). And for ρ ∈ mainFinset: farGRight = if 2t < γ then farG — could be NONZERO (a main-finset zero with γ > 2t?? — main requires x < ⌊t⌋₊+1 ≤ t+1 ⟹ γ < 2t+1 — so γ > 2t possible in main if x ∈ (t, t+1): γ ∈ (2t, 2t+1), x = γ−t ∈ (t, t+1) with ⌊x⌋₊ = ⌊t⌋₊ ≤ ⌊t⌋₊ ✓ — possible!). So the split (if ∉ main then farG else 0) = farGRight + farGLeft is FALSE for those (farGRight would double-count them: they're in main AND in farGRight).
So the tail decomposition must be: farGRight := if (2t < γ AND ρ ∉ mainFinset)... or cleaner: farGRight := if ⌊t⌋₊+1 ≤ x then farG else 0 with the RIGHT-only restriction γ > t... Hmm. Let me define the tails by the x-condition + sign:
- farGRight t ρ := if (⌊t⌋₊ + 1 ≤ |ρ.1.im − t| ∧ t < ρ.1.im) then farG t ρ else 0 — zeros with x ≥ ⌊t⌋₊+1 AND γ > t (⟹ γ > 2t ✓... x > t and γ > t ⟹ γ = t+x > 2t ✓).
- farGLeft t ρ := if (⌊t⌋₊+1 ≤ |ρ.1.im − t| ∧ ρ.1.im < t) then farG t ρ else 0 — γ < t and x > t ⟹ γ < 0 ✓.
Hmm — but my §17 farGLeft used just γ < 0 (no x-condition)!! Let me check: §17's farGLeft = if γ < 0 then farG else 0 — and the tail-split in §18 will be: (if ρ ∉ mainFinset then farG else 0) = farGRight' + farGLeft' where I need the partition to be exact. For ρ ∈ mainFinset: (if ∉ main) = 0; farGRight'(with x-condition) = 0 (x < ⌊t⌋₊+1); farGLeft(γ < 0, no x-condition) = farG if γ < 0 — NONZERO for main-finset zeros with γ < 0!!! BROKEN — a main zero with γ < 0 and x < ⌊t⌋₊+1: e.g. γ = −20, t = 10: x = 30 ≥ 11 — not main. γ = −14.13, t = 14.5: x = 28.6 ≥ 15.5 — not main. Hmm — main zeros have x < ⌊t⌋₊+1 ≤ t+1: γ < 0 ⟹ x = t+|γ| < t+1 ⟹ |γ| < 1 — NoLowZeros ⟹ |γ| ≥ 14 — contradiction. So main-finset zeros with γ < 0 DON'T EXIST (|γ| ≥ 14 ⟹ x ≥ t+14 ≥ ⌊t⌋₊+1 always ⟹ not main ✓). And NoLowZeros is EXACTLY what guarantees farGLeft(γ<0) = 0 on the main finset ✓ (any γ < 0 zero has |γ| ≥ 14 ⟹ x ≥ t+14 > ⌊t⌋₊+1 ⟹ not main ✓). So the split works: for ρ ∈ mainFinset: farGLeft ρ = farG if γ < 0 — but such ρ can't be in mainFinset (proof needed in the assembly: ρ ∈ mainFinset with γ < 0 ⟹ |γ| ≥ 14 (hNLZ) ⟹ x = t+|γ| ≥ t+14 ⟹ ⌊x⌋₊ ≥ ⌊t⌋₊+14 > ⌊t⌋₊ ⟹ not main — contradiction ✓).
OK — and for the right tail, similarly: farGRight := if γ > 2t then farG else 0 (no x-condition): for ρ ∈ mainFinset with γ > 2t: x = γ−t > t: ⌊x⌋₊ ≥ ⌊t⌋₊+... x > t ⟹ ⌊x⌋₊ ≥ Nat.ceil t ≥ ... x > t ⟹ ⌊x⌋₊ > t−1 hmm: x > t ⟹ ⌊x⌋₊ ≥ ⌊t⌋₊ — could be = ⌊t⌋₊ (x ∈ (t, ⌊t⌋₊+1)) ⟹ MAIN!! So main-finset zeros with γ > 2t and x ∈ (t, ⌊t⌋₊+1) EXIST (t non-integer) — and farGRight(γ > 2t) would be nonzero on them → DOUBLE COUNT. So the right tail MUST have the x-condition: farGRight := if (2t < γ ∧ ⌊t⌋₊+1 ≤ x) then farG else 0. OR — cleaner — use x-condition for both: farGRight := if (t < γ ∧ ⌊t⌋₊+1 ≤ x)... For the right tail's fiber-count proof, the bucket k = ⌊x⌋₊ ≥ ⌊t⌋₊+1 > t — the C0hat(2k+1) rate ✓.
Hmm wait — actually, let me reconsider: does the right tail's bucket machine NEED the γ > 2t condition or can it run on x-buckets alone? The right-tail bucket k: zeros with ⌊x⌋₊ = k and γ > t (right side). The tail sum: ∑' (if ρ ∉ mainFinset then farG else 0) = ∑' farGRight + ∑' farGLeft with:
- farGRight ρ := if (⌊t⌋₊ + 1 ≤ |ρ.1.im − t| ∧ t ≤ ρ.1.im) then farG t ρ else 0
- farGLeft ρ := if ρ.1.im < 0 then farG t ρ else 0 (as in §17)
Pointwise for any ρ:
- near (x < 1): farG = 0 (if_pos near) — wait, farG itself is if-near-then-0: for near ρ, farG ρ = 0 ⟹ both tails 0-ish ✓ (the tails use farG which is 0).
- main (1 ≤ x < ⌊t⌋₊+1): (if ∉ main) = 0; farGRight: x-condition fails ⟹ 0; farGLeft: γ < 0? — impossible (hNLZ) but formally farGLeft = farG if γ < 0 — for a main zero with γ < 0: farGLeft = farG ≠ 0 — NONZERO — and (if ∉ main) = 0 — MISMATCH. So the pointwise split identity needs hNLZ to rule out main zeros with γ < 0. Since I'm assembling with hNLZ available, I can prove: ρ ∈ mainFinset ⟹ farGLeft t ρ = 0 (using hNLZ: γ < 0 ⟹ |γ| ≥ 14 ⟹ x ≥ t+14 ⟹ ⌊x⌋₊ ≥ ⌊t⌋₊+14 > ⌊t⌋₊ ⟹ ¬main — contradiction ⟹ γ ≥ 0 ⟹ farGLeft = 0 ✓).
- tail (x ≥ ⌊t⌋₊+1): (if ∉ main) = farG; farGRight: γ ≥ t? — x ≥ ⌊t⌋₊+1 > t: γ > 2t or γ < 0: if γ > 2t ≥ t ✓ farGRight = farG ✓; if γ < 0: farGLeft = farG ✓ (and farGRight: γ ≥ t fails ⟹ 0 ✓). ✓ exact partition ✓.
So the pointwise identity (with hNLZ for the main-left case):
(if ρ ∉ mainFinset then farG t ρ else 0) = farGRight t ρ + farGLeft t ρ
- ρ near: LHS = farG = 0 (near ⟹ farG = 0 by def) — wait LHS = if ∉ main then farG else 0: near zeros aren't in mainFinset (x < 1 fails the 1 ≤ x filter) ⟹ LHS = farG = 0 (near ⟹ if_pos in farG ✓ 0). RHS: farGRight (x < 1 < ⌊t⌋₊+1 ⟹ x-cond fails ⟹ 0) + farGLeft (γ < 0 ⟹ farG = 0 ✓ near; γ ≥ 0 ⟹ 0) ✓ 0 = 0+0 ✓.
- ρ main: LHS = 0; RHS = farGRight (x-cond fails) + farGLeft (0 by hNLZ-argument) = 0 ✓.
- ρ tail (x ≥ ⌊t⌋₊+1, far): LHS = farG; RHS: γ > 2t ⟹ farGRight = farG, farGLeft = 0 (γ > 0); γ < 0 ⟹ farGRight = 0, farGLeft = farG ✓.
Good. The farGLeft already exists (§17, just γ < 0 ✓). The farGLeft's assembly lemma `farGLeft_le` gives the left-tail bound ≤ 1.17288 (the 4.5·0.26064 form) ✓ — hmm wait — but the farGLeft in §17 covers ALL γ < 0 zeros — including those with x < ⌊t⌋₊+1 (not in the tail)! γ < 0 zeros: |γ| ≥ 14 ⟹ x ≥ t+14 ≥ ⌊t⌋₊+14 > ⌊t⌋₊ ⟹ ALL are tail zeros ✓ no overcount ✓✓.
For §18 (right tail), the farGRight with the x-cond: buckets k = ⌊x⌋₊ ≥ ⌊t⌋₊+1. The fiber machine on the k-map (Nat.floor |ρ.1.im − t|) — same as main's bucket map. Per-fiber count: bucket k (nonempty ⟹ k ≥ ⌊t⌋₊+1 > t): zeros with x ∈ [k, k+1), γ ≥ t (farGRight's γ-condition): γ = t+x ∈ [t+k, t+k+1) ⊆ zeroWindow (t+k) ✓ ≤ C0hat(t+k+1) via hZC (t+k ≥ 2 ✓). Then C0hat(t+k+1) ≤ C0hat(2k+1) (k > t ⟹ t+k+1 ≤ 2k+1 ⟺ t ≤ k ✓; C0hat_mono needs 1 ≤ t+k+1 ✓). Then C0hat(2k+1) ≤ the bridge form (C0hat_two_mul_add_one_le, k ≥ ⌊t⌋₊+1 ≥ 11 ✓).
Hmm wait — the per-fiber count: the fiber {⌊x⌋₊ = k} may contain zeros with γ ≥ t AND γ < t (both sides have the same |x|!). farGRight only counts γ ≥ t-side: per-fiber (with the γ ≥ t filter) ⊆ zeroWindow (t+k) ✓ single window ✓ good.
And the k < ⌊t⌋₊+1 fibers: farGRight = 0 everywhere (x-cond fails) — in the fiber-bound, the if-form majorant: F(k) = if ⌊t⌋₊+1 ≤ k then 4.5·farW k·C0hat(2k+1) else 0 — the per-fiber bound for k < ⌊t⌋₊+1: the fiber's farGRight is 0 (x-cond fails for all fiber elements: ⌊x⌋₊ = k < ⌊t⌋₊+1 ⟹ x < k+1 ≤ ⌊t⌋₊+1 ⟹ x < ⌊t⌋₊+1 ✓ fails the x-cond... wait — the x-cond is ⌊t⌋₊+1 ≤ x: x < ⌊t⌋₊+1 ⟹ fails ✓ all terms 0 ✓).
Hmm — careful: fiber k with k ≤ ⌊t⌋₊: elements have x ∈ [k, k+1) — could x ≥ ⌊t⌋₊+1? x < k+1 ≤ ⌊t⌋₊+1 ⟹ x < ⌊t⌋₊+1 ⟹ x-cond fails ✓ terms 0 ✓.
The series bound: ∑'_{k≥⌊t⌋₊+1} 4.5·farW k·C0hat(2k+1) ≤ the Tail_R = 4.5·[0.433·(0.833·W₀+W₁)+0.886·(0.3475·W₀+W₂)+2.9·W₀]. The series starts at ⌊t⌋₊+1 ≥ 11 — bound by the k ≥ 11 bricks (overestimate ✓): Σ_{k≥11} 4.5·farW k·[0.433·(log k+0.833)+0.886·(loglog k+0.3475)+2.9] ≤ 4.5·[0.433·(0.833·W₀+W₁)+0.886·(0.3475·W₀+W₂)+2.9·W₀] with farW k ≤ 1/k² (farW_le_inv_sq ✓) and the RW₀/1/2 bricks ✓.
The farGRight's per-element bound: farG ≤ 4.5·farW(⌊x⌋₊)·m (farG_le_farW_mul — already exists! needs x ≥ 1 ✓ tail zeros have x ≥ ⌊t⌋₊+1 ≥ 11 ✓).
Also the farGRight's summability + nonneg ✓ trivial.
And the per-fiber ENNReal bound + the outer assembly — clone §17's structure with the k-map.
Hmm — one more check on the per-fiber count: the fiber is {⌊|ρ.1.im − t|⌋₊ = k} — the fiber_finite: x < k+1 ⟹ |γ| ≤ t+x < t+k+1 ⟹ ball t+k+2 ✓ finite_subtype_norm_lt ✓.
And the if-form majorant for the fiberwise: F(k) = if ⌊t⌋₊+1 ≤ k then 4.5·farW k·C0hat(2k+1) else 0 — as a def farGRightMaj. The series: ∑' F = ∑'_{k≥⌊t⌋₊+1}-part — bound by the FULL k ≥ 11 series (overestimate: the k<⌊t⌋₊+1 terms are 0 ✓; the k ≥ ⌊t⌋₊+1 terms ≤ the bridge-form terms ✓ pointwise via C0hat_two_mul_add_one_le for k ≥ 11 ✓... — careful: for k ∈ [11, ⌊t⌋₊]: F(k) = 0 ≤ the bridge-form ✓; for k ≥ ⌊t⌋₊+1: F(k) = 4.5·farW k·C0hat(2k+1) ≤ 4.5·farW k·(bridge-form) ✓ and farW k ≤ 1/k² — hmm — the bridge form is per-k: 4.5·farW k·[0.433·(log k+0.833)+0.886·(loglog k+0.3475)+2.9] — vs the bricks' 4.5·[0.433·(0.833·W₀+W₁)+...]: the series Σ_{k≥11} 4.5·farW k·[0.433·(log k+0.833)+0.886·(loglog k+0.3475)+2.9] ≤ 4.5·[0.433·(0.833·Σ1/k² + Σ log k/k²) + 0.886·(0.3475·Σ1/k² + Σ loglog k/k²) + 2.9·Σ1/k²] — using farW k ≤ 1/k² pointwise ✓.
So the RIGHT series bound: Σ'_{k} farGRightMaj k ≤ Σ'_{k≥11}-bridge-form = 4.5·[0.433·(0.833·W₀+W₁)+0.886·(0.3475·W₀+W₂)+2.9·W₀]. Hmm — the farGRightMaj has the if-form (0 for k < ⌊t⌋₊+1): its tsum = ∑'_{k≥⌊t⌋₊+1} 4.5·farW k·C0hat(2k+1) — bounded by the full-bridge-series via pointwise: for ALL k: farGRightMaj k ≤ 4.5·(1/k²)·[0.433·(log k+0.833)+0.886·(loglog k+0.3475)+2.9]?? — for k < ⌊t⌋₊+1: LHS = 0 ≤ RHS ✓ (RHS nonneg for k ≥ 11; for k < 11: RHS could be... the bridge-form for k < 11: 0.433·(log k+0.833)+0.886·(loglog k+0.3475)+2.9 — for k = 0: log 0 = 0 (junk), loglog 0 = 0: 0.433·0.833+0.886·0.3475+2.9 = 0.3609+0.3079+2.9 = 3.5688 ≥ 0 ✓; k = 1: log 1 = 0: 0.3609+0.3079+2.9 ✓ nonneg ✓; k = 2..10: log k ≥ 0, loglog k ≤ 0 possibly: k = 2: loglog 2 = log 0.693 = −0.367: 0.433·(0.693+0.833)+0.886·(−0.367+0.3475)+2.9 = 0.433·1.526+0.886·(−0.0195)+2.9 = 0.6608−0.0173+2.9 = 3.5435 ≥ 0 ✓ nonneg ✓). And for k ≥ 11: LHS ≤ RHS via the bridge + farW ≤ 1/k² ✓.
So: farGRightMaj k ≤ farGRightMajCombo k := 4.5·(1/k²)·[0.433·(log k+0.833)+0.886·(loglog k+0.3475)+2.9] pointwise ∀ k, with farGRightMajCombo summable (the RW-brick families — for ALL k ≥ 0?! The bricks are Σ_{k≥11} — the full series from k = 0: the k<11 head is finite ✓ summable iff the k ≥ 11 tail is ✓ (via summable_nat_add_iff 11 ✓).
And the RW bricks are Σ over k ≥ 11 in the SHIFTED form (fun k => f (k+11)): W₀ = ∑'_{k} 1/((k:ℝ)+11)², W₁ = ∑' log(k+11)/(k+11)², W₂ = ∑' loglog(k+11)/(k+11)². The bridge-series ∑'_{k} farGRightMajCombo k = head(k<11) + ∑'_{k} farGRightMajCombo(k+11): and farGRightMajCombo(k+11) = 4.5·(1/(k+11)²)·[0.433·(log(k+11)+0.833)+0.886·(loglog(k+11)+0.3475)+2.9] — decomposes into the RW bricks ✓ (with the paren-grouping lesson learned!). The head (k ∈ range 11) is a finite sum of explicit-ish terms — must be bounded TOO!! I forgot the head in the right-tail budget!
Hmm — wait: the head Σ_{k=0}^{10} farGRightMajCombo k — for k ≥ 1: 4.5·(1/k²)·[bridge] — sizeable (k = 1: 4.5·[0.433·(0+0.833)+0.886·(0+0.3475)+2.9] = 4.5·3.5688 = 16.06!). BUT — farGRightMaj k = 0 for k < ⌊t⌋₊+1, and ⌊t⌋₊+1 ≥ 11 — so the farGRightMaj series has NO head terms (all zero for k ≤ 10)!! So the bound should be: ∑' farGRightMaj ≤ ∑'_{k≥11}-part of farGRightMajCombo — NOT the full series! Formalize: ∑' farGRightMaj = ∑' (fun k => farGRightMaj (k+11)) via: ∑' farGRightMaj = Σ_{range 11} + ∑' (k+11): the range-11 part = 0 (farGRightMaj k = 0 for k ≤ 10 since ⌊t⌋₊ ≥ 10 ⟹ ⌊t⌋₊+1 ≥ 11 > k ✓). Then ∑' (fun k => farGRightMaj (k+11)) ≤ ∑' (fun k => farGRightMajCombo (k+11)) (pointwise ✓) = the bridge-decomposition ✓.
And farGRightMajCombo's shifted summability via the RW-brick families ✓.
Also the per-fiber count subtlety: bucket k with k ≥ ⌊t⌋₊+1: C0hat(t+k+1) ≤ C0hat(2k+1) ✓ — but for k = ⌊t⌋₊+1 exactly: t+k+1 = t+⌊t⌋₊+2 vs 2k+1 = 2⌊t⌋₊+3: t+⌊t⌋₊+2 ≤ 2⌊t⌋₊+3 ⟺ t ≤ ⌊t⌋₊+1 ✓ always ✓.
OK — one more design check for the per-fiber count: bucket k's zeros with γ ≥ t (farGRight's condition t ≤ γ): the fiber-filter (γ-condition) — the farGRight's condition is (⌊t⌋₊+1 ≤ x ∧ t ≤ γ) — so the per-fiber counted set = fiber ∩ {t ≤ γ}: ⊆ zeroWindow (t+k) (γ = t+x ∈ [t+k, t+k+1) ✓ x ∈ [k, k+1) ⟹ γ ∈ [t+k, t+k+1) ✓ closed window ✓).
Hmm wait — farGRight's condition: I said (⌊t⌋₊+1 ≤ x ∧ t ≤ γ). For the pointwise split to work with farGLeft (γ < 0): the γ ≥ 0 side needs γ ≥ t? No — the tail x > t means γ > 2t or γ < 0: γ > 2t ⟹ γ > t ✓. So the right-tail zeros have γ > 2t > t ✓ — the condition t ≤ γ is fine (captures exactly the γ > 2t tail zeros since tail + γ ≥ t ⟹ γ > 2t ✓... wait: tail (x ≥ ⌊t⌋₊+1 > t) and γ ≥ t: γ = t+x > t+t = 2t ✓).
Let me now also double-check the pointwise split with farGLeft (γ < 0) and farGRight (x-cond ∧ t ≤ γ):
- ρ tail, γ < 0: farGRight: t ≤ γ fails ⟹ 0 ✓; farGLeft = farG ✓.
- ρ tail, γ ≥ 0: x > t ⟹ γ > 2t·... γ ≥ 0 and x = |t−γ| > t ⟹ γ > 2t (since γ ≥ 0: x = |t−γ| > t ⟹ γ > 2t) ✓ ⟹ γ > t ✓ farGRight = farG ✓; farGLeft = 0 ✓.
- ρ main: farGRight: x-cond fails ⟹ 0 ✓; farGLeft: γ < 0 impossible by hNLZ (proven in assembly) ⟹ 0 ✓.
- ρ near: both 0-ish ✓ (farG = 0 near).
The farGRight condition: (⌊t⌋₊+1 ≤ |ρ.1.im − t| ∧ t ≤ ρ.1.im). Hmm — for ρ with γ ≥ 0 and tail-x: γ > 2t ✓ t ≤ γ ✓.
Now — the farGRight summability/nonneg ✓. The per-element far bound: farGRight ρ ≤ 4.5·farW(⌊x⌋₊)·m (farG_le_farW_mul ✓ — needs farGRight's underlying farG and x ≥ 1: for farGRight-nonzero elements, x ≥ ⌊t⌋₊+1 ≥ 11 ≥ 1 ✓; for zero elements 0 ≤ ✓).
Per-fiber count (k ≥ ⌊t⌋₊+1 — for k < ⌊t⌋₊+1 the fiber-filtered set is EMPTY of farGRight-nonzero elements ✓ count 0):
∑_{fiber ∩ {t ≤ γ}} m ≤ C0hat(t+k+1) ≤ C0hat(2k+1) — via zeroWindow (t+k) image bridge (val-image, like main_bucket_count's right side) + C0hat_mono.
The ENNReal per-fiber bound + fiberwise assembly + series bound — clone §17's shapes (with the paren discipline for the combo-series).
Also needed: farW_le_inv_sq exists ✓ (farW k ≤ 1/k² for k ≥ 1) — for the combo-series pointwise bound farGRightMaj k ≤ 4.5·(1/k²)·[bridge] — hmm — for k = 0: farGRightMaj 0 = 0 ≤ 4.5·(1/0²)·[...] = junk 0·... — 1/0² = 1/0 = 0 in Lean's convention: 4.5·0·[...] = 0 ✓ and farGRightMaj 0 = 0 ✓ 0 ≤ 0 ✓ — wait — but for k ≥ 1: farW k ≤ 1/k² ✓. And the bridge nonneg for ALL k (shown above ✓ — need log k ≥ 0 for k ≥ 1 and the loglog-neg case for k = 2-ish — nonneg shown numerically — prove: the bridge-form B(k) = 0.433·(log k+0.833)+0.886·(loglog k+0.3475)+2.9 ≥ 0 for ALL k ∈ ℕ: cases: k = 0: B = 0.433·0.833+0.886·0.3475+2.9 ≥ 0 ✓ (log 0 = loglog 0 = 0 junk); k = 1: log 1 = 0, loglog 1 = 0 ✓ same; k ≥ 2: log k ≥ log 2 ≥ 0.693: 0.433·(0.693+0.833) = 0.6607 ≥ 0; loglog k ≥ loglog 2 = log 0.693 = −0.3665: 0.886·(−0.3665+0.3475) = −0.0168: sum = 0.6607−0.0168+2.9 = 3.5439 ≥ 0 ✓ — prove: loglog k ≥ −0.37 for k ≥ 2: log k ≥ log 2 ≥ 0.693: loglog k ≥ log 0.693 ≥ ... — need log 0.693 ≥ −0.37 ⟺ 0.693 ≥ e^{−0.37} = 0.6907: e^{−0.37} ≤ 0.6907 ⟺ e^{0.37} ≥ 1/0.6907 = 1.4478: e^{0.37} ≥ 1+0.37+0.0685+0.0084 = 1.4469·... hmm 1.4469 < 1.4478 ✗ tight!! e^{0.37} = 1.44773 — 1/0.6907 = 1.44779·... — e^{0.37} ≥ 1.44779?? e^{0.37} = 1.4477346 < 1.4478 ✗✗ FAILS. Hmm — so log 0.693 < −0.37?? log 0.693 = −0.36673: ≥ −0.37 ✓ (0.36673 < 0.37 ✓ so log 0.693 = −0.36673 ≥ −0.37 ✓). So need log 0.693 ≥ −0.37 ⟺ 0.693 ≥ e^{−0.37} = 0.690734 ✓ TRUE (0.693 > 0.690734 ✓). Certify: e^{−0.37} ≤ 0.6908: hmm — e^{−0.37} = 1/e^{0.37}: e^{0.37} ≥ 1.4477: 1/1.4477 = 0.69075 ≤ 0.6908·... — messy. SIMPLER: make the bridge-form's loglog-shift BIGGER: B(k) = 0.433·(log k+0.833)+0.886·(loglog k+0.3475)+2.9 ≥ 0.433·0.833+0.886·(loglog k+0.3475)+2.9 (k ≥ 1, log k ≥ 0) ≥ 0.3609+0.886·(−0.37+0.3475)+2.9 = 0.3609−0.0199+2.9 = 3.241 ≥ 0 — need loglog k ≥ −0.37 for ALL k ≥ 1: loglog 1 = 0 ✓; k ≥ 2: log k ≥ log 2 ≥ 0.693 (log_two_gt_d9 ✓): loglog k ≥ log 0.693: log 0.693 ≥ −0.37 ⟺ 0.693 ≥ e^{−0.37}: e^{−0.37} = 0.69073·... — certify via e^{0.37} ≥ 0.693⁻¹ = 1.44300: e^{0.37} ≥ 1.44300·... wait: 0.693 ≥ e^{−0.37} ⟺ e^{0.37} ≥ 1/0.693 = 1.443001. e^{0.37} ≥ Σ_{k<5} 0.37^k/k! = 1+0.37+0.06845+0.00844+0.00078 = 1.44767 ≥ 1.443001 ✓ EASY margin ✓. So: loglog k ≥ −0.37 for k ≥ 1 ✓ certifiable: log k ≥ 0.693 (k ≥ 2: log k ≥ log 2 ≥ 0.69314); loglog k ≥ log 0.693 (log monotone, log k ≥ 0.693 ≥ 0): log 0.693 ≥ −0.37 ⟺ 0.693 ≥ e^{−0.37} ⟺ e^{0.37} ≥ 0.693⁻¹ = 1.44300·... — e^{0.37} ≥ 1.44767 ≥ 1.44301 ✓ (0.693⁻¹ = 1.44300144·... ≤ 1.44767 ✓ norm_num on rationals ✓ — but 0.693⁻¹ = 1/0.693 — compute 1/0.693 = 1.443001443 — and e^{0.37} ≥ 1.44767 ≥ 1.44301 ⟹ e^{−0.37} = 1/e^{0.37} ≤ 1/1.44301 = 0.69300·... hmm: e^{−0.37} ≤ 1/1.44767 = 0.69076 — and we need 0.693 ≥ e^{−0.37} = 0.69076 ✓ TRUE ✓. The chain: loglog k = log(log k) ≥ log 0.693 (since log k ≥ 0.69314 ≥ 0.693) = −0.36673 ≥ −0.37 ✓ — with log 0.693 ≥ −0.37 ⟺ log 0.693 = −log(1/0.693) ≥ −0.37 ⟺ log(1/0.693) ≤ 0.37 ⟺ 1/0.693 ≤ e^{0.37}: 1.4430014 ≤ 1.44767 ✓ (e^{0.37} ≥ partial sum 1.44767 ✓).
OK — that's all provable but ANOTHER small certified-numeric sub-lemma (loglog k ≥ −0.37 for k ≥ 1). Manageable.
Whew — let me now write §18. Given the length of this session, let me also mind the pacing — commit §17 first.
Full file compiles. Committing §17, and banking the precedence gotcha.
tool: Bash
input
{
"command": "cd D:/Python/Quantum && git add research/lean/NguyenRH1/NguyenRH1/LiTightR.lean && git -c user.name=\"NGUYEN-RH-1\" -c user.email=\"research@local\" commit -m \"$(cat <<'EOF'\nSession 036 (5f-ii piece 3e-i): the left-tail machine\n\nLiTightR.lean section 17 (~450 lines): farGLeft (farG restricted to\ngamma<0), farGLeft_term_le (4.5m/(10+floor|gamma|)^2 via x = t+|gamma|),\nfarGLeft_fiber_finite, farGLeft_fiber_count (conj + zeroWindow +\nzeroMult_conj), farGLeft_fiber_le (ENNReal per-fiber), the standalone\nbrick summables, farGLeftMaj + shift bound + series bound\n(4.5[0.433(0.1942/23+0.1687)+0.886(0.0736/23+0.0621)+2.9/23]), and\nfarGLeft_le (the ENNReal fiberwise assembly). KEY GOTCHA banked:\n`a * b / c` parses as `(a*b)/c` \u2014 with mul_left-coefficient proofs the\ngoal must be written `c * (b / d)` with explicit parens, else isDefEq\nexplodes proving `(a*b)/c = a*(b/c)` by unfolding (200k+ heartbeats).\nFull file elaborates clean, zero warnings.\nEOF\n)\"",
"description": "Commit piece-3e-i sub-stage"
}
raw content_json (database row)
[{"type":"thinking","thinking":"The ENTIRE file compiles clean now — §17 complete. That precedence landmine cost several iterations, but it's banked now: **`a * b / c` parses as `(a·b)/c` — always parenthesize `c·(b/d)` when the proof uses `mul_left`/`div` forms, or isDefEq explodes trying to prove `(a·b)/c = a·(b/c)` by unfolding**.\n\nLet me commit §17, update the todo, and record the gotcha. Then §18 (right tail) — structurally the same as §17 but with the k-bucket on x = |γ−t| and the two-regime count (k = ⌊t⌋₊ at C₀+0.55, k ≥ ⌊t⌋₊+1 at C0hat(2k+1)) — wait, actually, per my design the RIGHT tail buckets are k ≥ ⌊t⌋₊+1 > t, ALL at the C0hat(2k+1) rate, PLUS the k = ⌊t⌋₊ bucket (when t ∉ ℤ, nonempty) which folds into the MAIN bucket family (already counted — wait no). Let me re-derive:\n\nThe main finset covers far zeros with x < ⌊t⌋₊+1 (buckets k ≤ ⌊t⌋₊). The tail (ρ ∉ mainFinset, farG ρ ≠ 0) covers x ≥ ⌊t⌋₊+1: buckets k ≥ ⌊t⌋₊+1. For the RIGHT tail (γ > 2t — wait, the tail split is ρ ∉ mainFinset with farG ≠ 0 ⟹ x ≥ ⌊t⌋₊+1 > t ⟹ γ > 2t ∨ γ < 0). Right tail: γ > 2t, x = γ−t > t, buckets k = ⌊x⌋₊ ≥ ⌊t⌋₊+1 ⟹ k > t ✓ ALL tail buckets at rate C0hat(t+k+1) ≤ C0hat(2k+1) ✓. And k ≥ ⌊t⌋₊+1 ≥ 11 ✓ so the RW bricks (Σ_{k≥11}) apply ✓. The farGRight definition: if 2t < γ then farG else 0 — the tail tsum split needs: farG(if ∉ mainFinset) = farGRight + farGLeft pointwise ✓.\n\nBut wait — the mainFinset's tail-split in §18: ∑' farG = ∑_{mainFinset} farG + ∑' (if ∉ mainFinset then farG else 0). The second: for ρ ∉ mainFinset: near (farG = 0 ✓) or x ≥ ⌊t⌋₊+1. And farGRight ρ = if 2t < γ then farG else 0: for ρ ∉ mainFinset with x ≥ ⌊t⌋₊+1 > t: γ > 2t (farGRight = farG) or γ < 0 (farGLeft). And for ρ ∈ mainFinset: farGRight = if 2t < γ then farG — could be NONZERO (a main-finset zero with γ > 2t?? — main requires x < ⌊t⌋₊+1 ≤ t+1 ⟹ γ < 2t+1 — so γ > 2t possible in main if x ∈ (t, t+1): γ ∈ (2t, 2t+1), x = γ−t ∈ (t, t+1) with ⌊x⌋₊ = ⌊t⌋₊ ≤ ⌊t⌋₊ ✓ — possible!). So the split (if ∉ main then farG else 0) = farGRight + farGLeft is FALSE for those (farGRight would double-count them: they're in main AND in farGRight).\n\nSo the tail decomposition must be: farGRight := if (2t < γ AND ρ ∉ mainFinset)... or cleaner: farGRight := if ⌊t⌋₊+1 ≤ x then farG else 0 with the RIGHT-only restriction γ > t... Hmm. Let me define the tails by the x-condition + sign:\n- farGRight t ρ := if (⌊t⌋₊ + 1 ≤ |ρ.1.im − t| ∧ t < ρ.1.im) then farG t ρ else 0 — zeros with x ≥ ⌊t⌋₊+1 AND γ > t (⟹ γ > 2t ✓... x > t and γ > t ⟹ γ = t+x > 2t ✓).\n- farGLeft t ρ := if (⌊t⌋₊+1 ≤ |ρ.1.im − t| ∧ ρ.1.im < t) then farG t ρ else 0 — γ < t and x > t ⟹ γ < 0 ✓.\nHmm — but my §17 farGLeft used just γ < 0 (no x-condition)!! Let me check: §17's farGLeft = if γ < 0 then farG else 0 — and the tail-split in §18 will be: (if ρ ∉ mainFinset then farG else 0) = farGRight' + farGLeft' where I need the partition to be exact. For ρ ∈ mainFinset: (if ∉ main) = 0; farGRight'(with x-condition) = 0 (x < ⌊t⌋₊+1); farGLeft(γ < 0, no x-condition) = farG if γ < 0 — NONZERO for main-finset zeros with γ < 0!!! BROKEN — a main zero with γ < 0 and x < ⌊t⌋₊+1: e.g. γ = −20, t = 10: x = 30 ≥ 11 — not main. γ = −14.13, t = 14.5: x = 28.6 ≥ 15.5 — not main. Hmm — main zeros have x < ⌊t⌋₊+1 ≤ t+1: γ < 0 ⟹ x = t+|γ| < t+1 ⟹ |γ| < 1 — NoLowZeros ⟹ |γ| ≥ 14 — contradiction. So main-finset zeros with γ < 0 DON'T EXIST (|γ| ≥ 14 ⟹ x ≥ t+14 ≥ ⌊t⌋₊+1 always ⟹ not main ✓). And NoLowZeros is EXACTLY what guarantees farGLeft(γ<0) = 0 on the main finset ✓ (any γ < 0 zero has |γ| ≥ 14 ⟹ x ≥ t+14 > ⌊t⌋₊+1 ⟹ not main ✓). So the split works: for ρ ∈ mainFinset: farGLeft ρ = farG if γ < 0 — but such ρ can't be in mainFinset (proof needed in the assembly: ρ ∈ mainFinset with γ < 0 ⟹ |γ| ≥ 14 (hNLZ) ⟹ x = t+|γ| ≥ t+14 ⟹ ⌊x⌋₊ ≥ ⌊t⌋₊+14 > ⌊t⌋₊ ⟹ not main — contradiction ✓).\n\nOK — and for the right tail, similarly: farGRight := if γ > 2t then farG else 0 (no x-condition): for ρ ∈ mainFinset with γ > 2t: x = γ−t > t: ⌊x⌋₊ ≥ ⌊t⌋₊+... x > t ⟹ ⌊x⌋₊ ≥ Nat.ceil t ≥ ... x > t ⟹ ⌊x⌋₊ > t−1 hmm: x > t ⟹ ⌊x⌋₊ ≥ ⌊t⌋₊ — could be = ⌊t⌋₊ (x ∈ (t, ⌊t⌋₊+1)) ⟹ MAIN!! So main-finset zeros with γ > 2t and x ∈ (t, ⌊t⌋₊+1) EXIST (t non-integer) — and farGRight(γ > 2t) would be nonzero on them → DOUBLE COUNT. So the right tail MUST have the x-condition: farGRight := if (2t < γ ∧ ⌊t⌋₊+1 ≤ x) then farG else 0. OR — cleaner — use x-condition for both: farGRight := if (t < γ ∧ ⌊t⌋₊+1 ≤ x)... For the right tail's fiber-count proof, the bucket k = ⌊x⌋₊ ≥ ⌊t⌋₊+1 > t — the C0hat(2k+1) rate ✓.\n\nHmm wait — actually, let me reconsider: does the right tail's bucket machine NEED the γ > 2t condition or can it run on x-buckets alone? The right-tail bucket k: zeros with ⌊x⌋₊ = k and γ > t (right side). The tail sum: ∑' (if ρ ∉ mainFinset then farG else 0) = ∑' farGRight + ∑' farGLeft with:\n- farGRight ρ := if (⌊t⌋₊ + 1 ≤ |ρ.1.im − t| ∧ t ≤ ρ.1.im) then farG t ρ else 0\n- farGLeft ρ := if ρ.1.im < 0 then farG t ρ else 0 (as in §17)\nPointwise for any ρ:\n- near (x < 1): farG = 0 (if_pos near) — wait, farG itself is if-near-then-0: for near ρ, farG ρ = 0 ⟹ both tails 0-ish ✓ (the tails use farG which is 0).\n- main (1 ≤ x < ⌊t⌋₊+1): (if ∉ main) = 0; farGRight: x-condition fails ⟹ 0; farGLeft: γ < 0? — impossible (hNLZ) but formally farGLeft = farG if γ < 0 — for a main zero with γ < 0: farGLeft = farG ≠ 0 — NONZERO — and (if ∉ main) = 0 — MISMATCH. So the pointwise split identity needs hNLZ to rule out main zeros with γ < 0. Since I'm assembling with hNLZ available, I can prove: ρ ∈ mainFinset ⟹ farGLeft t ρ = 0 (using hNLZ: γ < 0 ⟹ |γ| ≥ 14 ⟹ x ≥ t+14 ⟹ ⌊x⌋₊ ≥ ⌊t⌋₊+14 > ⌊t⌋₊ ⟹ ¬main — contradiction ⟹ γ ≥ 0 ⟹ farGLeft = 0 ✓).\n- tail (x ≥ ⌊t⌋₊+1): (if ∉ main) = farG; farGRight: γ ≥ t? — x ≥ ⌊t⌋₊+1 > t: γ > 2t or γ < 0: if γ > 2t ≥ t ✓ farGRight = farG ✓; if γ < 0: farGLeft = farG ✓ (and farGRight: γ ≥ t fails ⟹ 0 ✓). ✓ exact partition ✓.\n\nSo the pointwise identity (with hNLZ for the main-left case):\n(if ρ ∉ mainFinset then farG t ρ else 0) = farGRight t ρ + farGLeft t ρ\n- ρ near: LHS = farG = 0 (near ⟹ farG = 0 by def) — wait LHS = if ∉ main then farG else 0: near zeros aren't in mainFinset (x < 1 fails the 1 ≤ x filter) ⟹ LHS = farG = 0 (near ⟹ if_pos in farG ✓ 0). RHS: farGRight (x < 1 < ⌊t⌋₊+1 ⟹ x-cond fails ⟹ 0) + farGLeft (γ < 0 ⟹ farG = 0 ✓ near; γ ≥ 0 ⟹ 0) ✓ 0 = 0+0 ✓.\n- ρ main: LHS = 0; RHS = farGRight (x-cond fails) + farGLeft (0 by hNLZ-argument) = 0 ✓.\n- ρ tail (x ≥ ⌊t⌋₊+1, far): LHS = farG; RHS: γ > 2t ⟹ farGRight = farG, farGLeft = 0 (γ > 0); γ < 0 ⟹ farGRight = 0, farGLeft = farG ✓.\n\nGood. The farGLeft already exists (§17, just γ < 0 ✓). The farGLeft's assembly lemma `farGLeft_le` gives the left-tail bound ≤ 1.17288 (the 4.5·0.26064 form) ✓ — hmm wait — but the farGLeft in §17 covers ALL γ < 0 zeros — including those with x < ⌊t⌋₊+1 (not in the tail)! γ < 0 zeros: |γ| ≥ 14 ⟹ x ≥ t+14 ≥ ⌊t⌋₊+14 > ⌊t⌋₊ ⟹ ALL are tail zeros ✓ no overcount ✓✓.\n\nFor §18 (right tail), the farGRight with the x-cond: buckets k = ⌊x⌋₊ ≥ ⌊t⌋₊+1. The fiber machine on the k-map (Nat.floor |ρ.1.im − t|) — same as main's bucket map. Per-fiber count: bucket k (nonempty ⟹ k ≥ ⌊t⌋₊+1 > t): zeros with x ∈ [k, k+1), γ ≥ t (farGRight's γ-condition): γ = t+x ∈ [t+k, t+k+1) ⊆ zeroWindow (t+k) ✓ ≤ C0hat(t+k+1) via hZC (t+k ≥ 2 ✓). Then C0hat(t+k+1) ≤ C0hat(2k+1) (k > t ⟹ t+k+1 ≤ 2k+1 ⟺ t ≤ k ✓; C0hat_mono needs 1 ≤ t+k+1 ✓). Then C0hat(2k+1) ≤ the bridge form (C0hat_two_mul_add_one_le, k ≥ ⌊t⌋₊+1 ≥ 11 ✓).\n\nHmm wait — the per-fiber count: the fiber {⌊x⌋₊ = k} may contain zeros with γ ≥ t AND γ < t (both sides have the same |x|!). farGRight only counts γ ≥ t-side: per-fiber (with the γ ≥ t filter) ⊆ zeroWindow (t+k) ✓ single window ✓ good.\n\nAnd the k < ⌊t⌋₊+1 fibers: farGRight = 0 everywhere (x-cond fails) — in the fiber-bound, the if-form majorant: F(k) = if ⌊t⌋₊+1 ≤ k then 4.5·farW k·C0hat(2k+1) else 0 — the per-fiber bound for k < ⌊t⌋₊+1: the fiber's farGRight is 0 (x-cond fails for all fiber elements: ⌊x⌋₊ = k < ⌊t⌋₊+1 ⟹ x < k+1 ≤ ⌊t⌋₊+1 ⟹ x < ⌊t⌋₊+1 ✓ fails the x-cond... wait — the x-cond is ⌊t⌋₊+1 ≤ x: x < ⌊t⌋₊+1 ⟹ fails ✓ all terms 0 ✓).\nHmm — careful: fiber k with k ≤ ⌊t⌋₊: elements have x ∈ [k, k+1) — could x ≥ ⌊t⌋₊+1? x < k+1 ≤ ⌊t⌋₊+1 ⟹ x < ⌊t⌋₊+1 ⟹ x-cond fails ✓ terms 0 ✓.\n\nThe series bound: ∑'_{k≥⌊t⌋₊+1} 4.5·farW k·C0hat(2k+1) ≤ the Tail_R = 4.5·[0.433·(0.833·W₀+W₁)+0.886·(0.3475·W₀+W₂)+2.9·W₀]. The series starts at ⌊t⌋₊+1 ≥ 11 — bound by the k ≥ 11 bricks (overestimate ✓): Σ_{k≥11} 4.5·farW k·[0.433·(log k+0.833)+0.886·(loglog k+0.3475)+2.9] ≤ 4.5·[0.433·(0.833·W₀+W₁)+0.886·(0.3475·W₀+W₂)+2.9·W₀] with farW k ≤ 1/k² (farW_le_inv_sq ✓) and the RW₀/1/2 bricks ✓.\n\nThe farGRight's per-element bound: farG ≤ 4.5·farW(⌊x⌋₊)·m (farG_le_farW_mul — already exists! needs x ≥ 1 ✓ tail zeros have x ≥ ⌊t⌋₊+1 ≥ 11 ✓).\n\nAlso the farGRight's summability + nonneg ✓ trivial.\n\nAnd the per-fiber ENNReal bound + the outer assembly — clone §17's structure with the k-map.\n\nHmm — one more check on the per-fiber count: the fiber is {⌊|ρ.1.im − t|⌋₊ = k} — the fiber_finite: x < k+1 ⟹ |γ| ≤ t+x < t+k+1 ⟹ ball t+k+2 ✓ finite_subtype_norm_lt ✓.\n\nAnd the if-form majorant for the fiberwise: F(k) = if ⌊t⌋₊+1 ≤ k then 4.5·farW k·C0hat(2k+1) else 0 — as a def farGRightMaj. The series: ∑' F = ∑'_{k≥⌊t⌋₊+1}-part — bound by the FULL k ≥ 11 series (overestimate: the k<⌊t⌋₊+1 terms are 0 ✓; the k ≥ ⌊t⌋₊+1 terms ≤ the bridge-form terms ✓ pointwise via C0hat_two_mul_add_one_le for k ≥ 11 ✓... — careful: for k ∈ [11, ⌊t⌋₊]: F(k) = 0 ≤ the bridge-form ✓; for k ≥ ⌊t⌋₊+1: F(k) = 4.5·farW k·C0hat(2k+1) ≤ 4.5·farW k·(bridge-form) ✓ and farW k ≤ 1/k² — hmm — the bridge form is per-k: 4.5·farW k·[0.433·(log k+0.833)+0.886·(loglog k+0.3475)+2.9] — vs the bricks' 4.5·[0.433·(0.833·W₀+W₁)+...]: the series Σ_{k≥11} 4.5·farW k·[0.433·(log k+0.833)+0.886·(loglog k+0.3475)+2.9] ≤ 4.5·[0.433·(0.833·Σ1/k² + Σ log k/k²) + 0.886·(0.3475·Σ1/k² + Σ loglog k/k²) + 2.9·Σ1/k²] — using farW k ≤ 1/k² pointwise ✓.\n\nSo the RIGHT series bound: Σ'_{k} farGRightMaj k ≤ Σ'_{k≥11}-bridge-form = 4.5·[0.433·(0.833·W₀+W₁)+0.886·(0.3475·W₀+W₂)+2.9·W₀]. Hmm — the farGRightMaj has the if-form (0 for k < ⌊t⌋₊+1): its tsum = ∑'_{k≥⌊t⌋₊+1} 4.5·farW k·C0hat(2k+1) — bounded by the full-bridge-series via pointwise: for ALL k: farGRightMaj k ≤ 4.5·(1/k²)·[0.433·(log k+0.833)+0.886·(loglog k+0.3475)+2.9]?? — for k < ⌊t⌋₊+1: LHS = 0 ≤ RHS ✓ (RHS nonneg for k ≥ 11; for k < 11: RHS could be... the bridge-form for k < 11: 0.433·(log k+0.833)+0.886·(loglog k+0.3475)+2.9 — for k = 0: log 0 = 0 (junk), loglog 0 = 0: 0.433·0.833+0.886·0.3475+2.9 = 0.3609+0.3079+2.9 = 3.5688 ≥ 0 ✓; k = 1: log 1 = 0: 0.3609+0.3079+2.9 ✓ nonneg ✓; k = 2..10: log k ≥ 0, loglog k ≤ 0 possibly: k = 2: loglog 2 = log 0.693 = −0.367: 0.433·(0.693+0.833)+0.886·(−0.367+0.3475)+2.9 = 0.433·1.526+0.886·(−0.0195)+2.9 = 0.6608−0.0173+2.9 = 3.5435 ≥ 0 ✓ nonneg ✓). And for k ≥ 11: LHS ≤ RHS via the bridge + farW ≤ 1/k² ✓.\nSo: farGRightMaj k ≤ farGRightMajCombo k := 4.5·(1/k²)·[0.433·(log k+0.833)+0.886·(loglog k+0.3475)+2.9] pointwise ∀ k, with farGRightMajCombo summable (the RW-brick families — for ALL k ≥ 0?! The bricks are Σ_{k≥11} — the full series from k = 0: the k<11 head is finite ✓ summable iff the k ≥ 11 tail is ✓ (via summable_nat_add_iff 11 ✓).\n\nAnd the RW bricks are Σ over k ≥ 11 in the SHIFTED form (fun k => f (k+11)): W₀ = ∑'_{k} 1/((k:ℝ)+11)², W₁ = ∑' log(k+11)/(k+11)², W₂ = ∑' loglog(k+11)/(k+11)². The bridge-series ∑'_{k} farGRightMajCombo k = head(k<11) + ∑'_{k} farGRightMajCombo(k+11): and farGRightMajCombo(k+11) = 4.5·(1/(k+11)²)·[0.433·(log(k+11)+0.833)+0.886·(loglog(k+11)+0.3475)+2.9] — decomposes into the RW bricks ✓ (with the paren-grouping lesson learned!). The head (k ∈ range 11) is a finite sum of explicit-ish terms — must be bounded TOO!! I forgot the head in the right-tail budget!\n\nHmm — wait: the head Σ_{k=0}^{10} farGRightMajCombo k — for k ≥ 1: 4.5·(1/k²)·[bridge] — sizeable (k = 1: 4.5·[0.433·(0+0.833)+0.886·(0+0.3475)+2.9] = 4.5·3.5688 = 16.06!). BUT — farGRightMaj k = 0 for k < ⌊t⌋₊+1, and ⌊t⌋₊+1 ≥ 11 — so the farGRightMaj series has NO head terms (all zero for k ≤ 10)!! So the bound should be: ∑' farGRightMaj ≤ ∑'_{k≥11}-part of farGRightMajCombo — NOT the full series! Formalize: ∑' farGRightMaj = ∑' (fun k => farGRightMaj (k+11)) via: ∑' farGRightMaj = Σ_{range 11} + ∑' (k+11): the range-11 part = 0 (farGRightMaj k = 0 for k ≤ 10 since ⌊t⌋₊ ≥ 10 ⟹ ⌊t⌋₊+1 ≥ 11 > k ✓). Then ∑' (fun k => farGRightMaj (k+11)) ≤ ∑' (fun k => farGRightMajCombo (k+11)) (pointwise ✓) = the bridge-decomposition ✓.\n\nAnd farGRightMajCombo's shifted summability via the RW-brick families ✓.\n\nAlso the per-fiber count subtlety: bucket k with k ≥ ⌊t⌋₊+1: C0hat(t+k+1) ≤ C0hat(2k+1) ✓ — but for k = ⌊t⌋₊+1 exactly: t+k+1 = t+⌊t⌋₊+2 vs 2k+1 = 2⌊t⌋₊+3: t+⌊t⌋₊+2 ≤ 2⌊t⌋₊+3 ⟺ t ≤ ⌊t⌋₊+1 ✓ always ✓.\n\nOK — one more design check for the per-fiber count: bucket k's zeros with γ ≥ t (farGRight's condition t ≤ γ): the fiber-filter (γ-condition) — the farGRight's condition is (⌊t⌋₊+1 ≤ x ∧ t ≤ γ) — so the per-fiber counted set = fiber ∩ {t ≤ γ}: ⊆ zeroWindow (t+k) (γ = t+x ∈ [t+k, t+k+1) ✓ x ∈ [k, k+1) ⟹ γ ∈ [t+k, t+k+1) ✓ closed window ✓).\n\nHmm wait — farGRight's condition: I said (⌊t⌋₊+1 ≤ x ∧ t ≤ γ). For the pointwise split to work with farGLeft (γ < 0): the γ ≥ 0 side needs γ ≥ t? No — the tail x > t means γ > 2t or γ < 0: γ > 2t ⟹ γ > t ✓. So the right-tail zeros have γ > 2t > t ✓ — the condition t ≤ γ is fine (captures exactly the γ > 2t tail zeros since tail + γ ≥ t ⟹ γ > 2t ✓... wait: tail (x ≥ ⌊t⌋₊+1 > t) and γ ≥ t: γ = t+x > t+t = 2t ✓).\n\nLet me now also double-check the pointwise split with farGLeft (γ < 0) and farGRight (x-cond ∧ t ≤ γ):\n- ρ tail, γ < 0: farGRight: t ≤ γ fails ⟹ 0 ✓; farGLeft = farG ✓.\n- ρ tail, γ ≥ 0: x > t ⟹ γ > 2t·... γ ≥ 0 and x = |t−γ| > t ⟹ γ > 2t (since γ ≥ 0: x = |t−γ| > t ⟹ γ > 2t) ✓ ⟹ γ > t ✓ farGRight = farG ✓; farGLeft = 0 ✓.\n- ρ main: farGRight: x-cond fails ⟹ 0 ✓; farGLeft: γ < 0 impossible by hNLZ (proven in assembly) ⟹ 0 ✓.\n- ρ near: both 0-ish ✓ (farG = 0 near).\n\nThe farGRight condition: (⌊t⌋₊+1 ≤ |ρ.1.im − t| ∧ t ≤ ρ.1.im). Hmm — for ρ with γ ≥ 0 and tail-x: γ > 2t ✓ t ≤ γ ✓.\n\nNow — the farGRight summability/nonneg ✓. The per-element far bound: farGRight ρ ≤ 4.5·farW(⌊x⌋₊)·m (farG_le_farW_mul ✓ — needs farGRight's underlying farG and x ≥ 1: for farGRight-nonzero elements, x ≥ ⌊t⌋₊+1 ≥ 11 ≥ 1 ✓; for zero elements 0 ≤ ✓).\n\nPer-fiber count (k ≥ ⌊t⌋₊+1 — for k < ⌊t⌋₊+1 the fiber-filtered set is EMPTY of farGRight-nonzero elements ✓ count 0):\n∑_{fiber ∩ {t ≤ γ}} m ≤ C0hat(t+k+1) ≤ C0hat(2k+1) — via zeroWindow (t+k) image bridge (val-image, like main_bucket_count's right side) + C0hat_mono.\n\nThe ENNReal per-fiber bound + fiberwise assembly + series bound — clone §17's shapes (with the paren discipline for the combo-series).\n\nAlso needed: farW_le_inv_sq exists ✓ (farW k ≤ 1/k² for k ≥ 1) — for the combo-series pointwise bound farGRightMaj k ≤ 4.5·(1/k²)·[bridge] — hmm — for k = 0: farGRightMaj 0 = 0 ≤ 4.5·(1/0²)·[...] = junk 0·... — 1/0² = 1/0 = 0 in Lean's convention: 4.5·0·[...] = 0 ✓ and farGRightMaj 0 = 0 ✓ 0 ≤ 0 ✓ — wait — but for k ≥ 1: farW k ≤ 1/k² ✓. And the bridge nonneg for ALL k (shown above ✓ — need log k ≥ 0 for k ≥ 1 and the loglog-neg case for k = 2-ish — nonneg shown numerically — prove: the bridge-form B(k) = 0.433·(log k+0.833)+0.886·(loglog k+0.3475)+2.9 ≥ 0 for ALL k ∈ ℕ: cases: k = 0: B = 0.433·0.833+0.886·0.3475+2.9 ≥ 0 ✓ (log 0 = loglog 0 = 0 junk); k = 1: log 1 = 0, loglog 1 = 0 ✓ same; k ≥ 2: log k ≥ log 2 ≥ 0.693: 0.433·(0.693+0.833) = 0.6607 ≥ 0; loglog k ≥ loglog 2 = log 0.693 = −0.3665: 0.886·(−0.3665+0.3475) = −0.0168: sum = 0.6607−0.0168+2.9 = 3.5439 ≥ 0 ✓ — prove: loglog k ≥ −0.37 for k ≥ 2: log k ≥ log 2 ≥ 0.693: loglog k ≥ log 0.693 ≥ ... — need log 0.693 ≥ −0.37 ⟺ 0.693 ≥ e^{−0.37} = 0.6907: e^{−0.37} ≤ 0.6907 ⟺ e^{0.37} ≥ 1/0.6907 = 1.4478: e^{0.37} ≥ 1+0.37+0.0685+0.0084 = 1.4469·... hmm 1.4469 < 1.4478 ✗ tight!! e^{0.37} = 1.44773 — 1/0.6907 = 1.44779·... — e^{0.37} ≥ 1.44779?? e^{0.37} = 1.4477346 < 1.4478 ✗✗ FAILS. Hmm — so log 0.693 < −0.37?? log 0.693 = −0.36673: ≥ −0.37 ✓ (0.36673 < 0.37 ✓ so log 0.693 = −0.36673 ≥ −0.37 ✓). So need log 0.693 ≥ −0.37 ⟺ 0.693 ≥ e^{−0.37} = 0.690734 ✓ TRUE (0.693 > 0.690734 ✓). Certify: e^{−0.37} ≤ 0.6908: hmm — e^{−0.37} = 1/e^{0.37}: e^{0.37} ≥ 1.4477: 1/1.4477 = 0.69075 ≤ 0.6908·... — messy. SIMPLER: make the bridge-form's loglog-shift BIGGER: B(k) = 0.433·(log k+0.833)+0.886·(loglog k+0.3475)+2.9 ≥ 0.433·0.833+0.886·(loglog k+0.3475)+2.9 (k ≥ 1, log k ≥ 0) ≥ 0.3609+0.886·(−0.37+0.3475)+2.9 = 0.3609−0.0199+2.9 = 3.241 ≥ 0 — need loglog k ≥ −0.37 for ALL k ≥ 1: loglog 1 = 0 ✓; k ≥ 2: log k ≥ log 2 ≥ 0.693 (log_two_gt_d9 ✓): loglog k ≥ log 0.693: log 0.693 ≥ −0.37 ⟺ 0.693 ≥ e^{−0.37}: e^{−0.37} = 0.69073·... — certify via e^{0.37} ≥ 0.693⁻¹ = 1.44300: e^{0.37} ≥ 1.44300·... wait: 0.693 ≥ e^{−0.37} ⟺ e^{0.37} ≥ 1/0.693 = 1.443001. e^{0.37} ≥ Σ_{k<5} 0.37^k/k! = 1+0.37+0.06845+0.00844+0.00078 = 1.44767 ≥ 1.443001 ✓ EASY margin ✓. So: loglog k ≥ −0.37 for k ≥ 1 ✓ certifiable: log k ≥ 0.693 (k ≥ 2: log k ≥ log 2 ≥ 0.69314); loglog k ≥ log 0.693 (log monotone, log k ≥ 0.693 ≥ 0): log 0.693 ≥ −0.37 ⟺ 0.693 ≥ e^{−0.37} ⟺ e^{0.37} ≥ 0.693⁻¹ = 1.44300·... — e^{0.37} ≥ 1.44767 ≥ 1.44301 ✓ (0.693⁻¹ = 1.44300144·... ≤ 1.44767 ✓ norm_num on rationals ✓ — but 0.693⁻¹ = 1/0.693 — compute 1/0.693 = 1.443001443 — and e^{0.37} ≥ 1.44767 ≥ 1.44301 ⟹ e^{−0.37} = 1/e^{0.37} ≤ 1/1.44301 = 0.69300·... hmm: e^{−0.37} ≤ 1/1.44767 = 0.69076 — and we need 0.693 ≥ e^{−0.37} = 0.69076 ✓ TRUE ✓. The chain: loglog k = log(log k) ≥ log 0.693 (since log k ≥ 0.69314 ≥ 0.693) = −0.36673 ≥ −0.37 ✓ — with log 0.693 ≥ −0.37 ⟺ log 0.693 = −log(1/0.693) ≥ −0.37 ⟺ log(1/0.693) ≤ 0.37 ⟺ 1/0.693 ≤ e^{0.37}: 1.4430014 ≤ 1.44767 ✓ (e^{0.37} ≥ partial sum 1.44767 ✓).\n\nOK — that's all provable but ANOTHER small certified-numeric sub-lemma (loglog k ≥ −0.37 for k ≥ 1). Manageable.\n\nWhew — let me now write §18. Given the length of this session, let me also mind the pacing — commit §17 first.","signature":""},{"type":"text","text":"Full file compiles. Committing §17, and banking the precedence gotcha."},{"type":"tool_use","id":"Bash_224","name":"Bash","input":{"command":"cd D:/Python/Quantum && git add research/lean/NguyenRH1/NguyenRH1/LiTightR.lean && git -c user.name=\"NGUYEN-RH-1\" -c user.email=\"research@local\" commit -m \"$(cat <<'EOF'\nSession 036 (5f-ii piece 3e-i): the left-tail machine\n\nLiTightR.lean section 17 (~450 lines): farGLeft (farG restricted to\ngamma<0), farGLeft_term_le (4.5m/(10+floor|gamma|)^2 via x = t+|gamma|),\nfarGLeft_fiber_finite, farGLeft_fiber_count (conj + zeroWindow +\nzeroMult_conj), farGLeft_fiber_le (ENNReal per-fiber), the standalone\nbrick summables, farGLeftMaj + shift bound + series bound\n(4.5[0.433(0.1942/23+0.1687)+0.886(0.0736/23+0.0621)+2.9/23]), and\nfarGLeft_le (the ENNReal fiberwise assembly). KEY GOTCHA banked:\n`a * b / c` parses as `(a*b)/c` — with mul_left-coefficient proofs the\ngoal must be written `c * (b / d)` with explicit parens, else isDefEq\nexplodes proving `(a*b)/c = a*(b/c)` by unfolding (200k+ heartbeats).\nFull file elaborates clean, zero warnings.\nEOF\n)\"","description":"Commit piece-3e-i sub-stage"},"extra_content":null}]