← Session 28 — ii′-5e: partial-fraction identity (zero series + F entire)
thinking (4345 chars)
`LocalCount.ofWindowCount` produces a `LocalCount (fun ρ => im) (fun ρ => mult) A₀` — a structure with `one_le` and `window t s hs : (∑ over s with im in (t, t+1]) ≤ A₀·log(|t|+3)`. That's the window-count packaged. And `ZeroConfig.N`, `Z.window`, `Z.finite_window` — the ZeroConfig API.
For my purposes, the Ncount bridges I already built (Ncount_window_le + Ncount_le_of_interval_gen) suffice for the window counts. The remaining heavy piece is the dyadic TAIL sum.
Let me now think about the tail bound with fresh eyes and pick the ABSOLUTE simplest sufficient form:
I need: ∑'_{ρ : ‖ρ‖ > 2R} (zeroMult ρ : ℝ)/(1 + ρ.im²) ≤ (something → o(1/R) is enough — say ≤ C·A₀·log R/R).
Cleanest available primitive: the dyadic shell sum over ℕ-indexed shells. For j : ℕ, shell S_j := {ρ : 2^j·X < |im ρ| ≤ 2^{j+1}·X} where X := 2R−1 (so ‖ρ‖ > 2R ⟹ |im| > X). Then:
∑'_{‖ρ‖>2R} m/(1+γ²) ≤ Σ_j (Σ_{ρ ∈ S_j} m)·(1/(1 + (2^j X)²))
≤ Σ_j [2·Ncount-window count of S_j]·1/(4^j X²)
≤ Σ_j 2·A₀·(2^{j+1}X + 1 - 2^j X + 1)·log(3·(2^{j+1}X) + 5)·...
via Ncount_le_of_interval_gen on [2^j X, 2^{j+1} X] and [−2^{j+1} X, −2^j X]: each ≤ A₀·(2^j X + 1)·log(3·2^{j+1}X + 5): two sides: 2A₀(2^j X+1)log(3·2^{j+1}X+5).
So the total ≤ Σ_{j=0}^∞ 2A₀(2^j X+1)log(3·2^{j+1}X+5)/(1+4^jX²) ≤ Σ_j 2A₀(2^jX+1)·log(3·2^{j+1}X+5)/(4^jX²).
Now bound the summand crudely for X ≥ 2:
- 2^j X + 1 ≤ 2^{j+1} X (1 ≤ 2^j X ⟺ 2^j X ≥ 1 ✓ X ≥ 2).
- log(3·2^{j+1}X + 5) ≤ log(2^{j+4}X) (3·2^{j+1}X+5 ≤ 2^{j+4}X ⟺ 3·2^{j+1}X + 5 ≤ 16·2^j X ⟺ 5 ≤ 4·2^j X ✓ (2^j X ≥ 2)) = (j+4)·log 2 + log X.
- So summand ≤ 2A₀·2^{j+1}X·((j+4)log 2 + log X)/(4^j X²) = (4A₀/X)·((j+4)·log 2 + log X)/2^j.
- Σ_j ((j+4)log 2 + log X)/2^j = log 2·Σ (j+4)/2^j + log X·Σ 1/2^j = log 2·(2 + 8) + 2 log X = 10 log 2 + 2 log X.
Total ≤ (4A₀/X)·(10 log 2 + 2 log X) ≤ (4A₀/X)·(15 + 2 log X) (log 2 ≤ 1: Real.log_two_lt... log 2 < 1: from log_two_gt_d9 (0.6931 < log 2 < ...): there's `Real.log_two_lt_d9`? or log 2 < 1 ⟺ 2 < e ✓ Real.exp_one_gt_d9/lt... fine).
For X ≥ e^{7.5} ≈ 1800: 15 ≤ 2 log X ⟹ ≤ (4A₀/X)·4 log X = 16 A₀ log X / X. With X = 2R−1 ≥ 32000: ✓. So:
`zero_tail_inv_sq_le (hX : 4 ≤ X)`: ∑'_{|γ| > X} m/(1+γ²) ≤ 16·A₀·log X / X — modulo the dyadic machinery.
The dyadic machinery in Lean for THIS: the tsum over the subtype {‖ρ‖ > 2R... |γ| > X} decomposed by the shell-map j(ρ) := ⌊log₂(|γ|/X)⌋₊ — group by fiber — like the Zeta23 proof's `Finset.sum_fiberwise_of_maps_to` — but for TSUMS (infinite). The infinite version: `tsum_fiberwise`? For nonneg: there's `Summable.tsum_eq_tsum_fiberwise`? or the ℝ≥0∞ free version. Hmm.
Actually — here's a cleaner trick for the tail, avoiding fiberwise decomposition of the infinite sum: bound the tail by the DIRECT comparison with a summable dyadic-indexed majorant via a per-term assignment: for each zero with |γ| > X, define j(ρ) := Nat.log 2 ⌊|γ|/X⌋₊ (the dyadic class, ≥ 0): then 1/(1+γ²) ≤ 1/(4^{j} X²)·... and m/(1+γ²) ≤ Σ_j' m·(1/(4^{j'}X²))·[j' = j(ρ)] — as functions of ρ: m/(1+γ²) ≤ (the majorant M ρ := m·2/(4^{j(ρ)}X²) — with 1/(1+γ²) ≤ 1/γ² ≤ 1/(2^j X)²·2?? |γ| > 2^j X ⟹ 1/γ² < 1/(4^j X²)... and 1/(1+γ²) ≤ 1/γ² < 1/(4^jX²)·... so M ρ := m/(4^{j(ρ)} X²)·2 — hmm the pointwise ≤ : m/(1+γ²) ≤ m/γ² ≤ m/(4^{j(ρ)}X²) (since |γ| > 2^{j(ρ)}X ✓ by Nat.log definition: 2^{j} ≤ |γ|/X ⟹ 2^j X ≤ |γ| ✓). So ∑'_{tail} m/(1+γ²) ≤ ∑'_{tail} m/(4^{j(ρ)} X²)·... and ∑'_{tail} m/(4^{j(ρ)}X²) = (1/X²)·∑' m/4^{j(ρ)} = (1/X²)·Σ_j (count of fiber j)/4^j — STILL the fiber decomposition of an infinite sum. The fiber decomposition: ∑'_{ρ : tail} m/4^{j(ρ)} = ∑'_{j : ℕ} Σ_{ρ : tail, j(ρ) = j} m/4^j — this IS `Summable.tsum_eq_tsum_fiberwise`?? or the sigma form `tsum_sigma'`? For nonneg real functions: `tsum_fiberwise_of_...`? There IS `Summable.tsum_fiberwise`? Let me check: I recall `Summable.tsum_eq_tsum_fiberwise`? hmm. The ℝ≥0∞ route is the robust one: in ℝ≥0∞, `ENNReal.tsum_comm` and fiberwise are FREE (no summability side conditions): ∑' in ℝ≥0∞ over the tail-subtype = ∑' over j of the fiber sums (ENNReal.tsum_fiberwise? — there's `ENNReal.tsum_eq_tsum_sigma_fiberwise`? or `tsum_sigma`...). The ℝ≥0∞ fiberwise: `ENNReal.tsum_fiberwise (f : β → ℝ≥0∞) (g : β → γ)` : ∑' x, f x = ∑' c : γ, ∑' x : g ⁻¹' {c}, f x — does that exist? Let me check.
This is a LOT of plumbing whichever way. Let me look for tsum_fiberwise in this Mathlib.
The tail needs a fiberwise tsum decomposition — checking the available API.
tool: Bash
input
{
"command": "cd D:/Python/Quantum/zeta-23-lean/.lake/packages/mathlib && grep -rn \"tsum_fiberwise\\|tsum_eq_tsum_sigma\\|tsum_sigma\" Mathlib/Topology/Algebra/InfiniteSum/ -r --include=*.lean | grep \"theorem\\|lemma\" | head -8",
"description": "tsum_fiberwise/sigma API"
}
raw content_json (database row)
[{"type":"thinking","thinking":"`LocalCount.ofWindowCount` produces a `LocalCount (fun ρ => im) (fun ρ => mult) A₀` — a structure with `one_le` and `window t s hs : (∑ over s with im in (t, t+1]) ≤ A₀·log(|t|+3)`. That's the window-count packaged. And `ZeroConfig.N`, `Z.window`, `Z.finite_window` — the ZeroConfig API.\n\nFor my purposes, the Ncount bridges I already built (Ncount_window_le + Ncount_le_of_interval_gen) suffice for the window counts. The remaining heavy piece is the dyadic TAIL sum. \n\nLet me now think about the tail bound with fresh eyes and pick the ABSOLUTE simplest sufficient form:\n\nI need: ∑'_{ρ : ‖ρ‖ > 2R} (zeroMult ρ : ℝ)/(1 + ρ.im²) ≤ (something → o(1/R) is enough — say ≤ C·A₀·log R/R).\n\nCleanest available primitive: the dyadic shell sum over ℕ-indexed shells. For j : ℕ, shell S_j := {ρ : 2^j·X < |im ρ| ≤ 2^{j+1}·X} where X := 2R−1 (so ‖ρ‖ > 2R ⟹ |im| > X). Then:\n∑'_{‖ρ‖>2R} m/(1+γ²) ≤ Σ_j (Σ_{ρ ∈ S_j} m)·(1/(1 + (2^j X)²))\n≤ Σ_j [2·Ncount-window count of S_j]·1/(4^j X²)\n≤ Σ_j 2·A₀·(2^{j+1}X + 1 - 2^j X + 1)·log(3·(2^{j+1}X) + 5)·... \n\nvia Ncount_le_of_interval_gen on [2^j X, 2^{j+1} X] and [−2^{j+1} X, −2^j X]: each ≤ A₀·(2^j X + 1)·log(3·2^{j+1}X + 5): two sides: 2A₀(2^j X+1)log(3·2^{j+1}X+5).\n\nSo the total ≤ Σ_{j=0}^∞ 2A₀(2^j X+1)log(3·2^{j+1}X+5)/(1+4^jX²) ≤ Σ_j 2A₀(2^jX+1)·log(3·2^{j+1}X+5)/(4^jX²).\n\nNow bound the summand crudely for X ≥ 2: \n- 2^j X + 1 ≤ 2^{j+1} X (1 ≤ 2^j X ⟺ 2^j X ≥ 1 ✓ X ≥ 2).\n- log(3·2^{j+1}X + 5) ≤ log(2^{j+4}X) (3·2^{j+1}X+5 ≤ 2^{j+4}X ⟺ 3·2^{j+1}X + 5 ≤ 16·2^j X ⟺ 5 ≤ 4·2^j X ✓ (2^j X ≥ 2)) = (j+4)·log 2 + log X.\n- So summand ≤ 2A₀·2^{j+1}X·((j+4)log 2 + log X)/(4^j X²) = (4A₀/X)·((j+4)·log 2 + log X)/2^j.\n- Σ_j ((j+4)log 2 + log X)/2^j = log 2·Σ (j+4)/2^j + log X·Σ 1/2^j = log 2·(2 + 8) + 2 log X = 10 log 2 + 2 log X.\n\nTotal ≤ (4A₀/X)·(10 log 2 + 2 log X) ≤ (4A₀/X)·(15 + 2 log X) (log 2 ≤ 1: Real.log_two_lt... log 2 < 1: from log_two_gt_d9 (0.6931 < log 2 < ...): there's `Real.log_two_lt_d9`? or log 2 < 1 ⟺ 2 < e ✓ Real.exp_one_gt_d9/lt... fine).\n\nFor X ≥ e^{7.5} ≈ 1800: 15 ≤ 2 log X ⟹ ≤ (4A₀/X)·4 log X = 16 A₀ log X / X. With X = 2R−1 ≥ 32000: ✓. So:\n\n`zero_tail_inv_sq_le (hX : 4 ≤ X)`: ∑'_{|γ| > X} m/(1+γ²) ≤ 16·A₀·log X / X — modulo the dyadic machinery.\n\nThe dyadic machinery in Lean for THIS: the tsum over the subtype {‖ρ‖ > 2R... |γ| > X} decomposed by the shell-map j(ρ) := ⌊log₂(|γ|/X)⌋₊ — group by fiber — like the Zeta23 proof's `Finset.sum_fiberwise_of_maps_to` — but for TSUMS (infinite). The infinite version: `tsum_fiberwise`? For nonneg: there's `Summable.tsum_eq_tsum_fiberwise`? or the ℝ≥0∞ free version. Hmm.\n\nActually — here's a cleaner trick for the tail, avoiding fiberwise decomposition of the infinite sum: bound the tail by the DIRECT comparison with a summable dyadic-indexed majorant via a per-term assignment: for each zero with |γ| > X, define j(ρ) := Nat.log 2 ⌊|γ|/X⌋₊ (the dyadic class, ≥ 0): then 1/(1+γ²) ≤ 1/(4^{j} X²)·... and m/(1+γ²) ≤ Σ_j' m·(1/(4^{j'}X²))·[j' = j(ρ)] — as functions of ρ: m/(1+γ²) ≤ (the majorant M ρ := m·2/(4^{j(ρ)}X²) — with 1/(1+γ²) ≤ 1/γ² ≤ 1/(2^j X)²·2?? |γ| > 2^j X ⟹ 1/γ² < 1/(4^j X²)... and 1/(1+γ²) ≤ 1/γ² < 1/(4^jX²)·... so M ρ := m/(4^{j(ρ)} X²)·2 — hmm the pointwise ≤ : m/(1+γ²) ≤ m/γ² ≤ m/(4^{j(ρ)}X²) (since |γ| > 2^{j(ρ)}X ✓ by Nat.log definition: 2^{j} ≤ |γ|/X ⟹ 2^j X ≤ |γ| ✓). So ∑'_{tail} m/(1+γ²) ≤ ∑'_{tail} m/(4^{j(ρ)} X²)·... and ∑'_{tail} m/(4^{j(ρ)}X²) = (1/X²)·∑' m/4^{j(ρ)} = (1/X²)·Σ_j (count of fiber j)/4^j — STILL the fiber decomposition of an infinite sum. The fiber decomposition: ∑'_{ρ : tail} m/4^{j(ρ)} = ∑'_{j : ℕ} Σ_{ρ : tail, j(ρ) = j} m/4^j — this IS `Summable.tsum_eq_tsum_fiberwise`?? or the sigma form `tsum_sigma'`? For nonneg real functions: `tsum_fiberwise_of_...`? There IS `Summable.tsum_fiberwise`? Let me check: I recall `Summable.tsum_eq_tsum_fiberwise`? hmm. The ℝ≥0∞ route is the robust one: in ℝ≥0∞, `ENNReal.tsum_comm` and fiberwise are FREE (no summability side conditions): ∑' in ℝ≥0∞ over the tail-subtype = ∑' over j of the fiber sums (ENNReal.tsum_fiberwise? — there's `ENNReal.tsum_eq_tsum_sigma_fiberwise`? or `tsum_sigma`...). The ℝ≥0∞ fiberwise: `ENNReal.tsum_fiberwise (f : β → ℝ≥0∞) (g : β → γ)` : ∑' x, f x = ∑' c : γ, ∑' x : g ⁻¹' {c}, f x — does that exist? Let me check.\n\nThis is a LOT of plumbing whichever way. Let me look for tsum_fiberwise in this Mathlib.","signature":""},{"type":"text","text":"The tail needs a fiberwise tsum decomposition — checking the available API."},{"type":"tool_use","id":"Bash_337","name":"Bash","input":{"command":"cd D:/Python/Quantum/zeta-23-lean/.lake/packages/mathlib && grep -rn \"tsum_fiberwise\\|tsum_eq_tsum_sigma\\|tsum_sigma\" Mathlib/Topology/Algebra/InfiniteSum/ -r --include=*.lean | grep \"theorem\\|lemma\" | head -8","description":"tsum_fiberwise/sigma API"},"extra_content":null}]