← Session 28 — ii′-5e: partial-fraction identity (zero series + F entire)
thinking (11758 chars)
Only the ℝ≥0∞ `ENNReal.tsum_fiberwise` exists (plus LSeries/Convolution has one for its own purposes). So the ℝ≥0∞ route it is. Let me now write the tail bound.
**Design of `zero_tail_inv_sq_le`**:
Statement: for X ≥ 4 (say):
∑' ρ : {ρ : ℂ // IsNontrivialZero ρ ∧ X < |ρ.im|}, (zeroMult ρ : ℝ)/(1 + ρ.im^2) ≤ 40 * A0count * Real.log X / X·...
hmm wait — the subtype-of-subtype. Let me define the tail subtype: `Ztail X := {ρ : {ρ : ℂ // IsNontrivialZero ρ} // X < |(ρ : ℂ).im|}` — a subtype of the zero subtype. Or directly `{ρ : ℂ // IsNontrivialZero ρ ∧ X < |ρ.im|}` — a subtype of ℂ with the conjunction — cleaner for the fiberwise.
The summand f(ρ) := (zeroMult ρ : ℝ)/(1 + ρ.im²) — wait, in the conjunction-subtype, zeroMult ρ means zeroMult (ρ : ℂ) ✓.
The plan:
1. The tsum over the tail-subtype T_X. To bound it, map each term to ℝ≥0∞ and use tsum_fiberwise over j(ρ) := Nat.log 2 ⌊|ρ.im| / X⌋₊ — hmm, ⌊|γ|/X⌋₊ : ℕ and Nat.log 2 of it. For |γ| > X: ⌊|γ|/X⌋₊ ≥ 1: j = Nat.log 2 of that. Nat.log 2 n : the largest j with 2^j ≤ n. So 2^{j(ρ)} ≤ ⌊|γ|/X⌋₊ ≤ |γ|/X ⟹ 2^{j(ρ)}·X ≤ |γ| ✓ and 2^{j(ρ)+1} > ... ✓. So the fiber j has |γ| ∈ (2^j X, 2^{j+1} X] ✓ (with the nat-log rounding: |γ|/X < 2^{j+1}·... Nat.log: 2^{Nat.log 2 n} ≤ n < 2^{Nat.log 2 n + 1} for n ≥ 1 ✓ `Nat.pow_log_le_self` and `Nat.lt_pow_succ_log_self`).
2. ENNReal.tsum_fiberwise: ∑'_{ρ : T} ofReal(f ρ) = ∑'_{j : ℕ} ∑'_{ρ : T, j(ρ) = j} ofReal(f ρ).
Hmm — ENNReal.tsum_fiberwise's form: ∑' x, ∑' b : g ⁻¹' {x}, f b = ∑' i, f i — the fiber is the PREIMAGE subtype g⁻¹'{x} — a subtype of T. So ∑'_{T} f = ∑'_{j} ∑'_{fiber j} f. ✓.
3. Fiber bound: for ρ in fiber j: f ρ = m/(1+γ²) ≤ m·2/(4^j X²)·... need 1+γ² ≥ 4^j X²/2: |γ| > 2^j X ⟹ γ² > 4^j X² ⟹ 1+γ² > 4^j X² ✓ (so 1/(1+γ²) < 1/(4^j X²) ✓ even simpler — no factor 2). So ∑'_{fiber j} ofReal(m/(1+γ²)) ≤ ofReal(Σ_{fiber j} m)·ofReal(1/(4^jX²))-ish — in ℝ≥0∞: ∑' ofReal(m·c) = ofReal(Σ m·c)... the fiber is FINITE (zeros with |γ| ≤ 2^{j+1}X: finite via zerosIn_finite ✓) — so the fiber tsum = a finset sum ✓ (tsum_eq_sum for the finite subtype: `tsum_fintype`? a finite subtype has a Fintype: ∑' = Finset.sum via `tsum_fintype` ✓).
4. The fiber count: Σ_{ρ ∈ fiber j} m_ρ ≤ Ncount(2^j X, 2^{j+1}X] + Ncount(−2^{j+1}X, −2^j X] ≤ 2·A₀·(2^jX+1)·log(3·2^{j+1}X+5) (Ncount_le_of_interval_gen ×2; the max|a||b| = 2^{j+1}X ✓ both intervals; for the negative side: a = −2^{j+1}X, b = −2^j X: max|a||b| = 2^{j+1}X ✓ same bound ✓). The fiber {2^j X < |γ| ≤ 2^{j+1}X} ⊆ zerosIn (2^j X) (2^{j+1} X) ∪ zerosIn (−2^{j+1}X)(−2^j X): the fiber's finset sum ≤ the sum of the two interval sums: subset-monotonicity through the toFinset forms... the fiber (a Finset of subtype elements) vs the zerosIn sets (sets of ℂ): the bridges again (image + injective) — the banked pattern.
5. The dyadic sum: ∑'_{j : ℕ} 2A₀(2^jX+1)log(3·2^{j+1}X+5)/(4^jX²) ≤ ... — bound the summand by (4A₀/X)·((j+4)log2 + log X + 3-ish)/2^j... let me redo the constant cleanly for X ≥ 4:
- 2^j X + 1 ≤ 2^{j+1} X (1 ≤ 2^j X ⟺ X ≥ 2^{-j} ✓ since X ≥ 4).
- 3·2^{j+1}X + 5 ≤ 2^{j+4}·X ⟺ 6·2^j X + 5 ≤ 16·2^j X ⟺ 5 ≤ 10·2^j X ⟸ 10·2 = 20 ≥ 5 ✓ (X ≥ 4 ⟹ 10·2^j·X ≥ 80 ≥ 5 ✓ wait 10·2^j·X ≥ 10·4 = 40 ≥ 5 ✓).
- log(2^{j+4} X) = (j+4)·log 2 + log X (Real.log (2^{j+4} X) = log(2^{j+4}) + log X = (j+4) log 2 + log X: `Real.log_pow`/`Real.log_mul` (2^{j+4} > 0, X > 0) ✓).
- summand ≤ 2A₀·(2^{j+1}X)·((j+4)log2 + log X)/(4^j X²) = (4A₀/X)·2^j·((j+4)log2 + log X)/4^j = (4A₀/X)·((j+4)log2 + log X)/2^j.
- ∑' j : ℕ, ((j+4)·log2 + log X)/2^j = log2·(Σ j/2^j + 4·Σ 1/2^j) + log X·Σ 1/2^j = log2·(2 + 8) + 2 log X = 10 log 2 + 2 log X.
- So total ≤ (4A₀/X)·(10 log 2 + 2 log X) ≤ (4A₀/X)·(10 + 2 log X)·(log 2 ≤ 1: Real.log_two_lt_d9?? hmm — log 2 < 1: `Real.log_two_lt_one`? or from exp: log 2 < 1 ⟺ 2 < e: `Real.exp_one_gt_d9`?? The LiDigammaLeft used `Real.log_two_gt_d9` (log 2 > 0.6931...). For the upper: log 2 < 1 ⟸ 2 < e (Real.exp_one_gt... e > 2: from Real.exp_one_lt_d9 : exp 1 < 2.718281829?? no that's the upper: Real.exp_one_lt_d9 : exp 1 < 2.718281828459046? whatever — there are both bounds: exp_one_gt_d9 and exp_one_lt_d9 ✓): log 2 < 1 via Real.log_lt... `Real.log_two_lt_one`? check at build.
- 10 + 2 log X ≤ 10 log X for X ≥ e^5 ≈ 148 (log X ≥ 5 ⟹ 10 ≤ 2 log X ⟹ 10 + 2log X ≤ 4 log X·... 10 + 2logX ≤ 4 log X ⟺ 10 ≤ 2 log X ⟺ log X ≥ 5 ✓): so ≤ (4A₀/X)·4·log X = 16 A₀ log X / X for X ≥ e^5. Take X ≥ 4 anyway and keep the (10 + 2 log X) form? Simplify: state the lemma for X ≥ 4 with the bound (4A₀/X)·(10 + 2 log X) ≤ ... let me just state: ≤ 16·A0count·Real.log X / X for X ≥ 200 (e^5 = 148.4: X ≥ 200 ⟹ log X ≥ 5.3 ≥ 5 ✓ — provable: log 200 ≥ 5 ⟺ 200 ≥ e^5: e^5 = (e)⁵ ≤ 2.718281829^5: 2.71828^5 = 148.4 ≤ 200 ✓ norm_num chain with exp_one_lt_d9 ✓).
So `zero_tail_inv_sq_le {X : ℝ} (hX : 200 ≤ X)`: ∑' ρ : T_X, m/(1+γ²) ≤ 16·A0count·Real.log X / X.
The summability of the tail summand (needed to even STATE the tsum's value... no — tsum is defined regardless (0 if not summable) — but for the bound to be MEANINGFUL I need the tail summable (else the tsum is junk 0 and the ≤ could be vacuously... no wait: if not summable the tsum = 0 ≤ anything — the STATEMENT would be vacuously-true-but-useless. The tail IS summable (it's a sub-sum of the convergent zero_sum_inv_sq) — I need summability for the proof steps (tsum_congr etc.) anyway. The tail summand on T_X: summable from zero_sum_inv_sq via subtype restriction: the tail subtype's tsum ≤ the full: via `Summable.subtype`?? — doesn't exist (checked session 030). The indicator route: ∑'_{T_X} f = ∑'_{Z} (T_X.indicator f)?? hmm — f on the subtype-of-subtype vs the zero subtype: the tail T_X = {ρ : Z // X < |ρ.1.im|}: ∑'_{T_X} g = ∑'_{Z} (fun ρ => if X < |ρ.im| then g ⟨ρ, ...⟩ else 0)... — the if-form: summable via of_norm_bounded (the full zero_sum_inv_sq majorant ✓). Then the tail tsum := the if-form tsum on Z — DEFINE the tail sum that way from the start to avoid subtype-of-subtype pain:
`tailInvSq X := ∑' ρ : {ρ : ℂ // IsNontrivialZero ρ}, if X < |ρ.im| then (zeroMult ρ : ℝ)/(1 + ρ.im^2) else 0`
Summable (of_norm_bounded vs the ii′-1a/5e-iii dominator: the summand ≤ m/(1+γ²) pointwise (if-zero ≤) ✓ and zero_sum_inv_sq gives Σ m/(1+‖γ‖²)... — the summand has 1/(1+ρ.im²) vs the dominator's 1/(1+normSq(gammaOf ρ)): normSq(γ) = im² + (1/2−re)² ≥ im² ⟹ 1/(1+normSq γ) ≤ 1/(1+im²)?? NO — normSq γ ≥ im² ⟹ 1+normSq ≥ 1+im² ⟹ 1/(1+normSq) ≤ 1/(1+im²) — so the zero_sum_inv_sq summand m/(1+normSqγ) ≤ m/(1+im²) — my tail summand m/(1+im²) is BIGGER — can't dominate by the convergent one in that direction!! The convergent sum is m/(1+‖γ‖²) with ‖γ‖² = im² + (1/2−re)² — and 1/(1+im²) ≤ 2/(1+‖γ‖²)?? 1+‖γ‖² = 1+im²+(1/2−re)² ≤ 1+im²+1/4 ≤ 2(1+im²)?? 1+im²+1/4 ≤ 2+2im² ⟺ 0 ≤ 1+im² ✓ — YES: 1+‖γ‖² ≤ 2(1+im²) ⟹ 1/(1+im²) ≤ 2/(1+‖γ‖²) ✓. So m/(1+im²) ≤ 2m/(1+‖γ‖²) ✓ summable by zero_sum_inv_sq.mul_left 2 ✓.
So define tailInvSq with the if-form, summable ✓. The fiberwise: on the ZERO subtype (not sub-subtype) with the if-summand — the fiber j(ρ) := Nat.log 2 ⌊|(ρ:ℂ).im| / X⌋₊ for all ρ in Z (junk for |γ| ≤ X — those have summand 0 anyway).
Hmm — the ENNReal.tsum_fiberwise applies to a function on the WHOLE type: ∑'_{x} f x = ∑'_{j} ∑'_{fiber j} f: with f := ofReal ∘ (if-form): ∑'_{Z} f = ∑'_{j} ∑'_{Z, j(ρ)=j} f. The fiber for j with 2^j X ≤ ... — the fibers for j ≥ 1 contain the |γ| > X zeros; fiber 0 contains |γ| ∈ (0, X]-ish (j = 0 ⟺ ⌊|γ|/X⌋ < 2 ⟺ |γ| < 2X-ish) — those contribute 0 via the if (|γ| ≤ X ⟹ 0)... wait fiber 0: Nat.log 2 ⌊|γ|/X⌋ = 0 ⟺ ⌊|γ|/X⌋ < 2 ⟺ |γ| < 2X (roughly): includes zeros with |γ| ∈ (X, 2X) whose if-value is NONZERO (|γ| > X)!! So fiber 0 has nonzero contributions — the fiber-0 sum needs bounding too: fiber 0 zeros have |γ| ∈ (X, 2X): count ≤ Ncount windows ≍ A₀ X log X: term 1/(1+γ²) ≤ 1/X²: fiber-0 ≤ 2A₀·(2X)·log(6X+5)/X² ≍ 4A₀ log X/X ✓ same order — just include j = 0 in the dyadic sum with the right count: fiber j for j ≥ 0: |γ| ∈ (2^j X, 2^{j+1} X]·... wait j = 0: |γ| ∈ (X·2⁰= X·... Nat.log 2 n = 0 ⟺ n < 2: ⌊|γ|/X⌋ ∈ {0, 1} ⟺ |γ| < 2X: and n ≥ 1 ⟺ |γ| ≥ X: so fiber 0 = {|γ| < 2X} — includes |γ| ≤ X (if-value 0) and (X, 2X). So fiber 0's nonzero part is (X, 2X) ✓ — and 2^0 X = X ✓ so the formula |γ| ∈ (2^j X, 2^{j+1}X] holds for j = 0 too (with the lower part ≤ X contributing 0 — fine for an UPPER bound). And 2^{j+1} > ⌊|γ|/X⌋₊ ⟹ |γ| < 2^{j+1}X·... |γ|/X < ⌊|γ|/X⌋₊ + 1 ≤ 2^{j+1}: hmm Nat.lt_pow_succ_log_self : n < 2^(Nat.log 2 n + 1) for n ≠ 0: ⌊|γ|/X⌋ < 2^{j+1} ⟹ |γ|/X < ⌊⌋+1 ≤ 2^{j+1} (since ⌊⌋ < 2^{j+1} ⟹ ⌊⌋+1 ≤ 2^{j+1} ✓): |γ| < 2^{j+1} X ✓. And Nat.pow_log_le_self (n ≠ 0): 2^j ≤ ⌊|γ|/X⌋ ≤ |γ|/X ⟹ 2^j X ≤ |γ| ✓ (for n ≠ 0 i.e. |γ| ≥ X; for |γ| < X the if is 0 ✓ no bound needed).
So fiber j (j ≥ 0): zeros with 2^j X ≤ |γ| < 2^{j+1} X (plus the |γ| < X junk-zero ones): Σ_{fiber j} f ≤ (count of {|γ| < 2^{j+1}X}... no wait — the fiber has |γ| ≥ 2^j X — count of the fiber ≤ count of {2^j X ≤ |γ| ≤ 2^{j+1}X} ≤ 2·A₀(2^{j+1}X − 2^j X + 1)·log(3·2^{j+1}X + 5) = 2A₀(2^j X + 1)·log(...) ✓ (Ncount_le_of_interval_gen each side: (2^j X, 2^{j+1}X] has b−a = 2^j X ✓ ≤ A₀(2^jX+1)·log(3·2^{j+1}X+5)... wait the interval form: Ncount a b ≤ A₀(b−a+1)·log(3·max|a||b|+5): a = 2^j X, b = 2^{j+1}X: b−a = 2^j X ✓ max = b = 2^{j+1}X ✓ ✓; negative side same ✓).
The per-term bound in fiber j: 1/(1+γ²) ≤ 1/(4^j X²) (from |γ| ≥ 2^j X ✓). So fiber sum ≤ 2A₀(2^jX+1)log(3·2^{j+1}X+5)/(4^jX²) ✓ matches my earlier analysis.
Then the total ∑'_{Z} f = Σ'_j (fiber j sum): BUT — ENNReal.tsum_fiberwise gives ∑'_{j} ∑'_{fiber} f = ∑'_{Z} f — the fibers cover ALL of Z (including |γ| ≤ X with f = 0 ✓ harmless for the upper bound ✓).
Then bound ∑'_{j} (fiber bound_j): in ℝ≥0∞: ∑'_{j} ofReal(F_j) ≤ ofReal(∑'_j F_j)?? — need F_j summable over j and the ofReal-tsum comparison: `ENNReal.ofReal_tsum_of_nonneg`? there's `ENNReal.ofReal_tsum_of_nonneg (hf : ∀ i, 0 ≤ f i) (hf' : Summable f) : ofReal(∑' f) = ∑' ofReal ∘ f`? — direction: I have ∑'_{j} ofReal(F_j) ≤ ofReal(C): prove via: ∑' ofReal(F_j) = ofReal(∑' F_j) (needs Summable F and nonneg ✓) ≤ ofReal(C) (ofReal_le_ofReal of the real bound) ✓. So I need the REAL dyadic sum ∑'_{j : ℕ} F_j ≤ C with F_j := 2A₀(2^jX+1)log(3·2^{j+1}X+5)/(4^jX²) — the real summability + bound of F_j — via the closed-form Σ (j+4)log2+log X)/2^j = 10 log 2 + 2 log X: needs the real tsults: ∑' j/2^j = 2 and ∑' 1/2^j = 2: `tsum_geometric_two`? hmm: ∑' (1/2)^j = 2: `tsum_geometric_two`? or tsum_geometric_of_lt_one. And ∑' j·(1/2)^j = 2: `tsum_coe_mul_geometric_of_lt_one : ∑' n, n·r^n = r/(1−r)²`? — for r = 1/2: (1/2)/(1/4) = 2 ✓ — check the name at build.
Then the ofReal comparisons: F_j ≥ 0 ✓; the fiber bound: ∑'_{fiber j} ofReal(f) ≤ ofReal(F_j): from the real finset bound (fiber finite): the fiber tsum (ofReal(m/(1+γ²))) — the fiber is a finite subtype: tsum = sum (`tsum_fintype` — the fiber subtype is a Fintype? finite subtype of Z — yes via zerosIn_finite: the fiber = {ρ : Z | j(ρ) = j} ⊆ {‖ρ‖ ≤ 2^{j+1}X + 1} finite (5e-iii's finite_subtype_norm_lt) ⟹ Fintype via Set.Finite.fintype ✓) — ∑'_{fiber} ofReal(f) = ofReal(Σ_{fiber finset} f) (`tsum_fintype` + ofReal_sum ✓) ≤ ofReal(F_j) (the real bound) ✓.
The ℝ→ℝ≥0∞ plumbing at the top: ∑'_{Z} ofReal(f) vs ofReal(∑'_{Z} f): `ENNReal.ofReal_tsum_of_nonneg (hf : ∀ i, 0 ≤ f i) (hs : Summable f) : ENNReal.ofReal (∑' i, f i) = ∑' i, ENNReal.ofReal (f i)` ✓ exists I believe. Then: I want the REAL bound: ofReal(∑' f) = ∑' ofReal(f) ≤ ofReal(C) ⟹ ∑' f ≤ C (ofReal_le_ofReal_iff ✓).
OK — this is the full plan. ~200-250 lines. Let me also pre-check names: Nat.pow_log_le_self, Nat.lt_pow_succ_log_self, tsum_fintype, ENNReal.ofReal_tsum_of_nonneg, tsum_geometric forms, Real.log_two_lt_one-ish. Let me probe them all at once.
Only the ℝ≥0∞ fiberwise exists. Probing the remaining names for the tail bound in one shot.
tool: Bash
input
{
"command": "cd D:/Python/Quantum/research/lean/NguyenRH1 && cat > Probe.lean << 'EOF'\nimport Mathlib\nopen Complex Filter Topology Finset Real\n#check @Nat.pow_log_le_self\n#check @Nat.lt_pow_succ_log_self\n#check @tsum_fintype\n#check @ENNReal.ofReal_tsum_of_nonneg\n#check @tsum_geometric_two\n#check @tsum_geometric_of_lt_one\n#check @tsum_coe_mul_geometric_of_lt_one\n#check @ENNReal.ofReal_le_ofReal_iff\n#check @ENNReal.ofReal_sum\n#check @Set.Finite.fintype\nEOF\nexport PATH=\"$HOME/.elan/bin:$PATH\" && lake env lean Probe.lean 2>&1 | head -30",
"description": "Probe tail-bound API names",
"timeout": 300000
}
raw content_json (database row)
[{"type":"thinking","thinking":"Only the ℝ≥0∞ `ENNReal.tsum_fiberwise` exists (plus LSeries/Convolution has one for its own purposes). So the ℝ≥0∞ route it is. Let me now write the tail bound.\n\n**Design of `zero_tail_inv_sq_le`**:\n\nStatement: for X ≥ 4 (say):\n∑' ρ : {ρ : ℂ // IsNontrivialZero ρ ∧ X < |ρ.im|}, (zeroMult ρ : ℝ)/(1 + ρ.im^2) ≤ 40 * A0count * Real.log X / X·...\n\nhmm wait — the subtype-of-subtype. Let me define the tail subtype: `Ztail X := {ρ : {ρ : ℂ // IsNontrivialZero ρ} // X < |(ρ : ℂ).im|}` — a subtype of the zero subtype. Or directly `{ρ : ℂ // IsNontrivialZero ρ ∧ X < |ρ.im|}` — a subtype of ℂ with the conjunction — cleaner for the fiberwise.\n\nThe summand f(ρ) := (zeroMult ρ : ℝ)/(1 + ρ.im²) — wait, in the conjunction-subtype, zeroMult ρ means zeroMult (ρ : ℂ) ✓.\n\nThe plan:\n1. The tsum over the tail-subtype T_X. To bound it, map each term to ℝ≥0∞ and use tsum_fiberwise over j(ρ) := Nat.log 2 ⌊|ρ.im| / X⌋₊ — hmm, ⌊|γ|/X⌋₊ : ℕ and Nat.log 2 of it. For |γ| > X: ⌊|γ|/X⌋₊ ≥ 1: j = Nat.log 2 of that. Nat.log 2 n : the largest j with 2^j ≤ n. So 2^{j(ρ)} ≤ ⌊|γ|/X⌋₊ ≤ |γ|/X ⟹ 2^{j(ρ)}·X ≤ |γ| ✓ and 2^{j(ρ)+1} > ... ✓. So the fiber j has |γ| ∈ (2^j X, 2^{j+1} X] ✓ (with the nat-log rounding: |γ|/X < 2^{j+1}·... Nat.log: 2^{Nat.log 2 n} ≤ n < 2^{Nat.log 2 n + 1} for n ≥ 1 ✓ `Nat.pow_log_le_self` and `Nat.lt_pow_succ_log_self`).\n\n2. ENNReal.tsum_fiberwise: ∑'_{ρ : T} ofReal(f ρ) = ∑'_{j : ℕ} ∑'_{ρ : T, j(ρ) = j} ofReal(f ρ).\n\nHmm — ENNReal.tsum_fiberwise's form: ∑' x, ∑' b : g ⁻¹' {x}, f b = ∑' i, f i — the fiber is the PREIMAGE subtype g⁻¹'{x} — a subtype of T. So ∑'_{T} f = ∑'_{j} ∑'_{fiber j} f. ✓.\n\n3. Fiber bound: for ρ in fiber j: f ρ = m/(1+γ²) ≤ m·2/(4^j X²)·... need 1+γ² ≥ 4^j X²/2: |γ| > 2^j X ⟹ γ² > 4^j X² ⟹ 1+γ² > 4^j X² ✓ (so 1/(1+γ²) < 1/(4^j X²) ✓ even simpler — no factor 2). So ∑'_{fiber j} ofReal(m/(1+γ²)) ≤ ofReal(Σ_{fiber j} m)·ofReal(1/(4^jX²))-ish — in ℝ≥0∞: ∑' ofReal(m·c) = ofReal(Σ m·c)... the fiber is FINITE (zeros with |γ| ≤ 2^{j+1}X: finite via zerosIn_finite ✓) — so the fiber tsum = a finset sum ✓ (tsum_eq_sum for the finite subtype: `tsum_fintype`? a finite subtype has a Fintype: ∑' = Finset.sum via `tsum_fintype` ✓).\n\n4. The fiber count: Σ_{ρ ∈ fiber j} m_ρ ≤ Ncount(2^j X, 2^{j+1}X] + Ncount(−2^{j+1}X, −2^j X] ≤ 2·A₀·(2^jX+1)·log(3·2^{j+1}X+5) (Ncount_le_of_interval_gen ×2; the max|a||b| = 2^{j+1}X ✓ both intervals; for the negative side: a = −2^{j+1}X, b = −2^j X: max|a||b| = 2^{j+1}X ✓ same bound ✓). The fiber {2^j X < |γ| ≤ 2^{j+1}X} ⊆ zerosIn (2^j X) (2^{j+1} X) ∪ zerosIn (−2^{j+1}X)(−2^j X): the fiber's finset sum ≤ the sum of the two interval sums: subset-monotonicity through the toFinset forms... the fiber (a Finset of subtype elements) vs the zerosIn sets (sets of ℂ): the bridges again (image + injective) — the banked pattern.\n\n5. The dyadic sum: ∑'_{j : ℕ} 2A₀(2^jX+1)log(3·2^{j+1}X+5)/(4^jX²) ≤ ... — bound the summand by (4A₀/X)·((j+4)log2 + log X + 3-ish)/2^j... let me redo the constant cleanly for X ≥ 4:\n - 2^j X + 1 ≤ 2^{j+1} X (1 ≤ 2^j X ⟺ X ≥ 2^{-j} ✓ since X ≥ 4).\n - 3·2^{j+1}X + 5 ≤ 2^{j+4}·X ⟺ 6·2^j X + 5 ≤ 16·2^j X ⟺ 5 ≤ 10·2^j X ⟸ 10·2 = 20 ≥ 5 ✓ (X ≥ 4 ⟹ 10·2^j·X ≥ 80 ≥ 5 ✓ wait 10·2^j·X ≥ 10·4 = 40 ≥ 5 ✓).\n - log(2^{j+4} X) = (j+4)·log 2 + log X (Real.log (2^{j+4} X) = log(2^{j+4}) + log X = (j+4) log 2 + log X: `Real.log_pow`/`Real.log_mul` (2^{j+4} > 0, X > 0) ✓).\n - summand ≤ 2A₀·(2^{j+1}X)·((j+4)log2 + log X)/(4^j X²) = (4A₀/X)·2^j·((j+4)log2 + log X)/4^j = (4A₀/X)·((j+4)log2 + log X)/2^j.\n - ∑' j : ℕ, ((j+4)·log2 + log X)/2^j = log2·(Σ j/2^j + 4·Σ 1/2^j) + log X·Σ 1/2^j = log2·(2 + 8) + 2 log X = 10 log 2 + 2 log X.\n - So total ≤ (4A₀/X)·(10 log 2 + 2 log X) ≤ (4A₀/X)·(10 + 2 log X)·(log 2 ≤ 1: Real.log_two_lt_d9?? hmm — log 2 < 1: `Real.log_two_lt_one`? or from exp: log 2 < 1 ⟺ 2 < e: `Real.exp_one_gt_d9`?? The LiDigammaLeft used `Real.log_two_gt_d9` (log 2 > 0.6931...). For the upper: log 2 < 1 ⟸ 2 < e (Real.exp_one_gt... e > 2: from Real.exp_one_lt_d9 : exp 1 < 2.718281829?? no that's the upper: Real.exp_one_lt_d9 : exp 1 < 2.718281828459046? whatever — there are both bounds: exp_one_gt_d9 and exp_one_lt_d9 ✓): log 2 < 1 via Real.log_lt... `Real.log_two_lt_one`? check at build.\n - 10 + 2 log X ≤ 10 log X for X ≥ e^5 ≈ 148 (log X ≥ 5 ⟹ 10 ≤ 2 log X ⟹ 10 + 2log X ≤ 4 log X·... 10 + 2logX ≤ 4 log X ⟺ 10 ≤ 2 log X ⟺ log X ≥ 5 ✓): so ≤ (4A₀/X)·4·log X = 16 A₀ log X / X for X ≥ e^5. Take X ≥ 4 anyway and keep the (10 + 2 log X) form? Simplify: state the lemma for X ≥ 4 with the bound (4A₀/X)·(10 + 2 log X) ≤ ... let me just state: ≤ 16·A0count·Real.log X / X for X ≥ 200 (e^5 = 148.4: X ≥ 200 ⟹ log X ≥ 5.3 ≥ 5 ✓ — provable: log 200 ≥ 5 ⟺ 200 ≥ e^5: e^5 = (e)⁵ ≤ 2.718281829^5: 2.71828^5 = 148.4 ≤ 200 ✓ norm_num chain with exp_one_lt_d9 ✓).\n\nSo `zero_tail_inv_sq_le {X : ℝ} (hX : 200 ≤ X)`: ∑' ρ : T_X, m/(1+γ²) ≤ 16·A0count·Real.log X / X.\n\nThe summability of the tail summand (needed to even STATE the tsum's value... no — tsum is defined regardless (0 if not summable) — but for the bound to be MEANINGFUL I need the tail summable (else the tsum is junk 0 and the ≤ could be vacuously... no wait: if not summable the tsum = 0 ≤ anything — the STATEMENT would be vacuously-true-but-useless. The tail IS summable (it's a sub-sum of the convergent zero_sum_inv_sq) — I need summability for the proof steps (tsum_congr etc.) anyway. The tail summand on T_X: summable from zero_sum_inv_sq via subtype restriction: the tail subtype's tsum ≤ the full: via `Summable.subtype`?? — doesn't exist (checked session 030). The indicator route: ∑'_{T_X} f = ∑'_{Z} (T_X.indicator f)?? hmm — f on the subtype-of-subtype vs the zero subtype: the tail T_X = {ρ : Z // X < |ρ.1.im|}: ∑'_{T_X} g = ∑'_{Z} (fun ρ => if X < |ρ.im| then g ⟨ρ, ...⟩ else 0)... — the if-form: summable via of_norm_bounded (the full zero_sum_inv_sq majorant ✓). Then the tail tsum := the if-form tsum on Z — DEFINE the tail sum that way from the start to avoid subtype-of-subtype pain:\n\n`tailInvSq X := ∑' ρ : {ρ : ℂ // IsNontrivialZero ρ}, if X < |ρ.im| then (zeroMult ρ : ℝ)/(1 + ρ.im^2) else 0`\n\nSummable (of_norm_bounded vs the ii′-1a/5e-iii dominator: the summand ≤ m/(1+γ²) pointwise (if-zero ≤) ✓ and zero_sum_inv_sq gives Σ m/(1+‖γ‖²)... — the summand has 1/(1+ρ.im²) vs the dominator's 1/(1+normSq(gammaOf ρ)): normSq(γ) = im² + (1/2−re)² ≥ im² ⟹ 1/(1+normSq γ) ≤ 1/(1+im²)?? NO — normSq γ ≥ im² ⟹ 1+normSq ≥ 1+im² ⟹ 1/(1+normSq) ≤ 1/(1+im²) — so the zero_sum_inv_sq summand m/(1+normSqγ) ≤ m/(1+im²) — my tail summand m/(1+im²) is BIGGER — can't dominate by the convergent one in that direction!! The convergent sum is m/(1+‖γ‖²) with ‖γ‖² = im² + (1/2−re)² — and 1/(1+im²) ≤ 2/(1+‖γ‖²)?? 1+‖γ‖² = 1+im²+(1/2−re)² ≤ 1+im²+1/4 ≤ 2(1+im²)?? 1+im²+1/4 ≤ 2+2im² ⟺ 0 ≤ 1+im² ✓ — YES: 1+‖γ‖² ≤ 2(1+im²) ⟹ 1/(1+im²) ≤ 2/(1+‖γ‖²) ✓. So m/(1+im²) ≤ 2m/(1+‖γ‖²) ✓ summable by zero_sum_inv_sq.mul_left 2 ✓.\n\nSo define tailInvSq with the if-form, summable ✓. The fiberwise: on the ZERO subtype (not sub-subtype) with the if-summand — the fiber j(ρ) := Nat.log 2 ⌊|(ρ:ℂ).im| / X⌋₊ for all ρ in Z (junk for |γ| ≤ X — those have summand 0 anyway).\n\nHmm — the ENNReal.tsum_fiberwise applies to a function on the WHOLE type: ∑'_{x} f x = ∑'_{j} ∑'_{fiber j} f: with f := ofReal ∘ (if-form): ∑'_{Z} f = ∑'_{j} ∑'_{Z, j(ρ)=j} f. The fiber for j with 2^j X ≤ ... — the fibers for j ≥ 1 contain the |γ| > X zeros; fiber 0 contains |γ| ∈ (0, X]-ish (j = 0 ⟺ ⌊|γ|/X⌋ < 2 ⟺ |γ| < 2X-ish) — those contribute 0 via the if (|γ| ≤ X ⟹ 0)... wait fiber 0: Nat.log 2 ⌊|γ|/X⌋ = 0 ⟺ ⌊|γ|/X⌋ < 2 ⟺ |γ| < 2X (roughly): includes zeros with |γ| ∈ (X, 2X) whose if-value is NONZERO (|γ| > X)!! So fiber 0 has nonzero contributions — the fiber-0 sum needs bounding too: fiber 0 zeros have |γ| ∈ (X, 2X): count ≤ Ncount windows ≍ A₀ X log X: term 1/(1+γ²) ≤ 1/X²: fiber-0 ≤ 2A₀·(2X)·log(6X+5)/X² ≍ 4A₀ log X/X ✓ same order — just include j = 0 in the dyadic sum with the right count: fiber j for j ≥ 0: |γ| ∈ (2^j X, 2^{j+1} X]·... wait j = 0: |γ| ∈ (X·2⁰= X·... Nat.log 2 n = 0 ⟺ n < 2: ⌊|γ|/X⌋ ∈ {0, 1} ⟺ |γ| < 2X: and n ≥ 1 ⟺ |γ| ≥ X: so fiber 0 = {|γ| < 2X} — includes |γ| ≤ X (if-value 0) and (X, 2X). So fiber 0's nonzero part is (X, 2X) ✓ — and 2^0 X = X ✓ so the formula |γ| ∈ (2^j X, 2^{j+1}X] holds for j = 0 too (with the lower part ≤ X contributing 0 — fine for an UPPER bound). And 2^{j+1} > ⌊|γ|/X⌋₊ ⟹ |γ| < 2^{j+1}X·... |γ|/X < ⌊|γ|/X⌋₊ + 1 ≤ 2^{j+1}: hmm Nat.lt_pow_succ_log_self : n < 2^(Nat.log 2 n + 1) for n ≠ 0: ⌊|γ|/X⌋ < 2^{j+1} ⟹ |γ|/X < ⌊⌋+1 ≤ 2^{j+1} (since ⌊⌋ < 2^{j+1} ⟹ ⌊⌋+1 ≤ 2^{j+1} ✓): |γ| < 2^{j+1} X ✓. And Nat.pow_log_le_self (n ≠ 0): 2^j ≤ ⌊|γ|/X⌋ ≤ |γ|/X ⟹ 2^j X ≤ |γ| ✓ (for n ≠ 0 i.e. |γ| ≥ X; for |γ| < X the if is 0 ✓ no bound needed).\n\nSo fiber j (j ≥ 0): zeros with 2^j X ≤ |γ| < 2^{j+1} X (plus the |γ| < X junk-zero ones): Σ_{fiber j} f ≤ (count of {|γ| < 2^{j+1}X}... no wait — the fiber has |γ| ≥ 2^j X — count of the fiber ≤ count of {2^j X ≤ |γ| ≤ 2^{j+1}X} ≤ 2·A₀(2^{j+1}X − 2^j X + 1)·log(3·2^{j+1}X + 5) = 2A₀(2^j X + 1)·log(...) ✓ (Ncount_le_of_interval_gen each side: (2^j X, 2^{j+1}X] has b−a = 2^j X ✓ ≤ A₀(2^jX+1)·log(3·2^{j+1}X+5)... wait the interval form: Ncount a b ≤ A₀(b−a+1)·log(3·max|a||b|+5): a = 2^j X, b = 2^{j+1}X: b−a = 2^j X ✓ max = b = 2^{j+1}X ✓ ✓; negative side same ✓).\n\nThe per-term bound in fiber j: 1/(1+γ²) ≤ 1/(4^j X²) (from |γ| ≥ 2^j X ✓). So fiber sum ≤ 2A₀(2^jX+1)log(3·2^{j+1}X+5)/(4^jX²) ✓ matches my earlier analysis.\n\nThen the total ∑'_{Z} f = Σ'_j (fiber j sum): BUT — ENNReal.tsum_fiberwise gives ∑'_{j} ∑'_{fiber} f = ∑'_{Z} f — the fibers cover ALL of Z (including |γ| ≤ X with f = 0 ✓ harmless for the upper bound ✓).\n\nThen bound ∑'_{j} (fiber bound_j): in ℝ≥0∞: ∑'_{j} ofReal(F_j) ≤ ofReal(∑'_j F_j)?? — need F_j summable over j and the ofReal-tsum comparison: `ENNReal.ofReal_tsum_of_nonneg`? there's `ENNReal.ofReal_tsum_of_nonneg (hf : ∀ i, 0 ≤ f i) (hf' : Summable f) : ofReal(∑' f) = ∑' ofReal ∘ f`? — direction: I have ∑'_{j} ofReal(F_j) ≤ ofReal(C): prove via: ∑' ofReal(F_j) = ofReal(∑' F_j) (needs Summable F and nonneg ✓) ≤ ofReal(C) (ofReal_le_ofReal of the real bound) ✓. So I need the REAL dyadic sum ∑'_{j : ℕ} F_j ≤ C with F_j := 2A₀(2^jX+1)log(3·2^{j+1}X+5)/(4^jX²) — the real summability + bound of F_j — via the closed-form Σ (j+4)log2+log X)/2^j = 10 log 2 + 2 log X: needs the real tsults: ∑' j/2^j = 2 and ∑' 1/2^j = 2: `tsum_geometric_two`? hmm: ∑' (1/2)^j = 2: `tsum_geometric_two`? or tsum_geometric_of_lt_one. And ∑' j·(1/2)^j = 2: `tsum_coe_mul_geometric_of_lt_one : ∑' n, n·r^n = r/(1−r)²`? — for r = 1/2: (1/2)/(1/4) = 2 ✓ — check the name at build.\n\nThen the ofReal comparisons: F_j ≥ 0 ✓; the fiber bound: ∑'_{fiber j} ofReal(f) ≤ ofReal(F_j): from the real finset bound (fiber finite): the fiber tsum (ofReal(m/(1+γ²))) — the fiber is a finite subtype: tsum = sum (`tsum_fintype` — the fiber subtype is a Fintype? finite subtype of Z — yes via zerosIn_finite: the fiber = {ρ : Z | j(ρ) = j} ⊆ {‖ρ‖ ≤ 2^{j+1}X + 1} finite (5e-iii's finite_subtype_norm_lt) ⟹ Fintype via Set.Finite.fintype ✓) — ∑'_{fiber} ofReal(f) = ofReal(Σ_{fiber finset} f) (`tsum_fintype` + ofReal_sum ✓) ≤ ofReal(F_j) (the real bound) ✓.\n\nThe ℝ→ℝ≥0∞ plumbing at the top: ∑'_{Z} ofReal(f) vs ofReal(∑'_{Z} f): `ENNReal.ofReal_tsum_of_nonneg (hf : ∀ i, 0 ≤ f i) (hs : Summable f) : ENNReal.ofReal (∑' i, f i) = ∑' i, ENNReal.ofReal (f i)` ✓ exists I believe. Then: I want the REAL bound: ofReal(∑' f) = ∑' ofReal(f) ≤ ofReal(C) ⟹ ∑' f ≤ C (ofReal_le_ofReal_iff ✓).\n\nOK — this is the full plan. ~200-250 lines. Let me also pre-check names: Nat.pow_log_le_self, Nat.lt_pow_succ_log_self, tsum_fintype, ENNReal.ofReal_tsum_of_nonneg, tsum_geometric forms, Real.log_two_lt_one-ish. Let me probe them all at once.","signature":""},{"type":"text","text":"Only the ℝ≥0∞ fiberwise exists. Probing the remaining names for the tail bound in one shot."},{"type":"tool_use","id":"Bash_351","name":"Bash","input":{"command":"cd D:/Python/Quantum/research/lean/NguyenRH1 && cat > Probe.lean << 'EOF'\nimport Mathlib\nopen Complex Filter Topology Finset Real\n#check @Nat.pow_log_le_self\n#check @Nat.lt_pow_succ_log_self\n#check @tsum_fintype\n#check @ENNReal.ofReal_tsum_of_nonneg\n#check @tsum_geometric_two\n#check @tsum_geometric_of_lt_one\n#check @tsum_coe_mul_geometric_of_lt_one\n#check @ENNReal.ofReal_le_ofReal_iff\n#check @ENNReal.ofReal_sum\n#check @Set.Finite.fintype\nEOF\nexport PATH=\"$HOME/.elan/bin:$PATH\" && lake env lean Probe.lean 2>&1 | head -30","description":"Probe tail-bound API names","timeout":300000},"extra_content":null}]