← Session 22 — ii′-1: liCoeff pairing fix + residue machinery
thinking (15782 chars)
Now I have the exact conventions:
**D-037 §3 (R2(ii) target):** Lagarias (4.11): S_∞(n) = Σ_{j=1}^n (−1)^j C(n,j) a_j with
- a₁ = (log 4π + γ)/2 [= lagariasA1 in Lean ✓]
- a_j = (1−2^{−j})ζ(j) = Σ_{m odd ≥ 1} m^{−j} (j ≥ 2)
And the double-sum swap: S_∞(n) = (1−a₁)n − 1 + Σ_{m odd ≥ 3} h⁺(m), h⁺(m) = (1−1/m)ⁿ − 1 + n/m — which is EXACTLY the Lean SInfty definition!
So the Lean `SInfty n` = (1 − lagariasA1)·n − 1 + tsum over {m odd, 3 ≤ m} of (1−1/m)^n − 1 + n/m ✓ matches the swapped form. The R2(ii) task: prove
SInfty n = Σ_{j=1}^n (−1)^j C(n,j)·a_j [in ℝ]
where a₁ = lagariasA1 = (log 4π + γ)/2, a_j = (1−2^{−j})ζ(j) for j ≥ 2.
WAIT — careful with the sign convention. D-064 says: "(ii) S_∞(n) = Σ_j C(n,j)τ_{j−1} — identity between the Lean SInfty odd-m tsum and the binomial/τ form (Lagarias (4.11) ↔ (4.7)...)". And the crux bookkeeping (D-064 §2): "S_∞ + 1 − λ_n = Σ_j C(n,j)[τ_{j−1} + (−1)ʲσ_j] + 1 = Σ_j C(n,j)[c_{j−1} + (−1)ʲ] + 1 = Res₁(n) + (−1) + 1". Hmm — with τ_{j−1} = c_{j−1} + (−1)^{j−1}σ_j − (−1)^{j−1}...
Hold on, let me recheck the exact (4.10): D-064 §4 R2(iii): "(4.10) itself: τ_j = c_j + (−1)ʲσ_{j+1} − (−1)ʲ for all j ≥ 0." Hmm — with a-sign: τ_j vs a_j: D-037's a_j convention: S_∞ = Σ_j (−1)^j C(n,j) a_j. And D-064's: S_∞ = Σ_j C(n,j) τ_{j−1}. So τ_{j−1} = (−1)^j a_j, i.e., τ_k = (−1)^{k+1} a_{k+1}. Lagarias's actual τ_j: τ_j := Σ_{m=0}^∞ ... I recall τ_j = Σ_m (−1)^... The relationship between D-064's τ_j and D-037's a_j: τ_{j−1} = (−1)^j a_j ✓.
So for ii′-2, the two targets in Lean:
**(i) liCoeff n = Σ_{j=1}^n (−1)^{j+1} C(n,j)·σ_j** where σ_j := paired zero power sum Σ_ρ mult·Re(ρ^{−j})... as a ℂ identity: liCoeff n = Σ_j (−1)^{j+1} C(n,j)·σ_j with σ_j := ∑' ρ, (zeroMult ρ:ℂ)/2·((1/ρ)^j + (1/conj ρ)^j). Hmm — actually liSummand uses (1 − 1/ρ)^n with 1/ρ — expansion: 1 − (1−1/ρ)ⁿ = Σ_{j=1}^n (−1)^{j+1} C(n,j) (1/ρ)^j ✓ (binomial: (1−x)ⁿ = Σ_j C(n,j)(−x)^j = 1 + Σ_{j≥1} C(n,j)(−1)^j x^j; 1 − (1−x)ⁿ = −Σ_{j≥1} C(n,j)(−1)^j x^j = Σ_{j≥1} (−1)^{j+1} C(n,j) x^j ✓ with x = 1/ρ).
So liSummand n ρ = (mult/2)·Σ_{j=1}^n (−1)^{j+1}C(n,j)((1/ρ)^j + (1/ρ̄)^j). Then liCoeff = tsum of that = Σ_j (−1)^{j+1}C(n,j)·σ_j with σ_j := ∑' ρ, (mult/2)((1/ρ)^j + (1/ρ̄)^j) — swap via tsum_sum (needs each slice summable: for j ≥ 1: |(1/ρ)^j + (1/ρ̄)^j| ≤ 2/|ρ|^j ≤ 2/|ρ| (for j ≥ 1)... hmm need summability — for j ≥ 2: 2/|ρ|² comparison with zero_sum_inv_sq ✓; for j = 1: (1/ρ + 1/ρ̄) = 2Re(1/ρ) = 2Re(ρ̄)/|ρ|²... 1/ρ = ρ̄/|ρ|² so 1/ρ + 1/ρ̄ = (ρ̄ + ρ)/|ρ|² = 2Re(ρ)/|ρ|² — with 0 < Re ρ < 1: |2Re ρ|/|ρ|² ≤ 2/|ρ|² ✓ comparison again ✓. So each j-slice summable (j = 1 via the Re ρ ∈ (0,1) bound; j ≥ 2 via |ρ|^{−j} ≤ |ρ|^{−2} for |ρ| ≥ 1 ✓ zeros have |ρ| ≥ 14 > 1 — hmm need |ρ| ≥ 1: IsNontrivialZero has 0 < re < 1 and ζ ρ = 0 — |ρ| ≥ |Im ρ| ≥ 14 (first zero)? Proving |ρ| ≥ 1 from IsNontrivialZero: hmm — actually easier: |ρ|² = re² + im² — is there a lower bound? For the comparison I want mult/|ρ|^j ≤ mult/|ρ|²·something for j ≥ 2: |ρ|^{−j} ≤ |ρ|^{−2} iff |ρ| ≥ 1. Hmm. Alternatively bound directly by mult·C/(1+‖γ‖²)-style as in liSummand_norm_le: they used normSq_gammaOf and 1+‖γ‖². gammaOf ρ = im ρ presumably. The Zeta23 zero_sum_inv_sq : Summable (fun ρ => mult/(1+‖γ_ρ‖²))? — from ii′-1a: "Zeta23 zero_sum_inv_sq comparison" — Summable fun ρ => (zeroMult ρ : ℝ)/(1 + Complex.normSq (gammaOf ρ)) — something like that.
For the j-slices: |(1/ρ)^j + (1/ρ̄)^j|·mult/2 ≤ mult/|ρ|^j. Need ≤ C·mult/(1+‖γ‖²)? For j ≥ 2 and j = 1 (via Re bound):
- j = 1: |1/ρ + 1/ρ̄|/2 = |Re ρ|/|ρ|² ≤ 1/|ρ|² (Re ≤ 1). And 1/|ρ|² vs 1/(1+γ²): |ρ|² = re² + γ² ≥ γ²; 1+γ² ≤ ... need |ρ|² ≤ C(1+γ²)?? NO — need 1/|ρ|² ≤ C/(1+γ²) ⟺ 1+γ² ≤ C|ρ|² = C(re²+γ²): with re ∈ (0,1): 1+γ² vs C(re²+γ²): take C = 2: 1+γ² ≤ 2re² + 2γ² ⟺ 1 ≤ 2re² + γ² — NOT true for small γ and small re! Hmm — zeros with |γ| < 1? Nontrivial zeros have |γ| ≥ 14.13 (first zero) — but proving that in Lean... hmm. Is there a zero-free region near the real axis in the strip that's IN Lean? Zeta23: IsNontrivialZero requires im ≠ 0? From the def: `IsNontrivialZero (ρ : ℂ) : Prop := riemannZeta ρ = 0 ∧ 0 < ρ.re ∧ ρ.re < 1` — no im ≠ 0! Wait — real zeros in (0,1)? ζ has no real zeros in (0,1) (ζ(0) = −1/2, ζ(s) < 0 for 0 ≤ s < 1...). Hmm — but the DEF doesn't exclude im = 0 a priori; the PROP is still correct because ζ ≠ 0 on (0,1) — a theorem, not part of the def.
For the comparison at j=1, I need 1/|ρ|² ≤ C/(1+γ²) uniformly over nontrivial zeros. Since re² ≤ 1: |ρ|² = re² + γ² ≤ 1 + γ² — so |ρ|² ≤ 1+γ² ⟹ 1/(1+γ²) ≤ 1/|ρ|² — WRONG DIRECTION. I need: 1/|ρ|² ≤ C/(1+γ²): from |ρ|² ≥ γ²: 1/|ρ|² ≤ 1/γ² — blows up at γ = 0... but are there zeros with small γ? If all nontrivial zeros have |γ| ≥ 14, then |ρ|² ≥ re² + γ² ≥ γ² ≥ ... 1+γ² ≤ (1/196+1)... hmm: 1+γ² ≤ (1+14²)/14²·γ²... For |γ| ≥ 14: 1 + γ² ≤ γ²(1 + 1/196) ≤ 2γ² ≤ 2|ρ|² ⟹ 1/|ρ|² ≤ 2/(1+γ²) ✓. So I need |Im ρ| ≥ 14 or similar lower bound — IS that available in Lean/Zeta23?? Zeta23 has RvM and zero-free... The first-zero-height is computational (not a theorem in Lean).
Hmm wait — how did ii′-1a's liSummand_norm_le handle this? Their bound: (9/2)n²·mult/(1+‖γ_ρ‖²) for 2n ≤ ‖ρ‖ (only large zeros!) and the finite ball {‖ρ‖ < 2n} handled separately via IsCompact.inter_riemannZetaZeros_finite (finiteness of zeros in a ball — from compactness+discreteness, no height needed). And liSummable used a modified dominator D with the finite-ball adjustment. So the small-zero issue was handled by finiteness, not by a height bound.
For MY j-slice summability: σ_j-slice summand: (mult/2)((1/ρ)^j + (1/ρ̄)^j). Bound: |…| ≤ mult/|ρ|^j. For j ≥ 1 fixed, is mult/|ρ|^j summable over zeros? |ρ|^{-j} ≤ |ρ|^{-1} for j ≥ 1 (|ρ| ≥ 1?) — again the |ρ| ≥ 1 issue. Hmm.
Alternative approach — sidestep: DON'T prove each slice summable separately; instead do the swap with the PAIRED j=1 structure. Note the paired j-slice: (mult/2)((1/ρ)^j + (1/ρ̄)^j) = mult·Re((1/ρ)^j). For j = 1: mult·Re(1/ρ) = mult·Re(ρ̄)/|ρ|² = mult·re/|ρ|² with 0 < re < 1: ≤ mult/|ρ|². For j ≥ 2: ≤ mult/|ρ|^j ≤ mult/|ρ|² IF |ρ| ≥ 1.
So everything reduces to mult/|ρ|² summability + |ρ| ≥ 1 for zeros...
Hmm wait — is mult/|ρ|² summable IN LEAN already? ii′-1a: "normSq_gammaOf_le_mul_norm_sq (9/4)" — a lemma normSq γ ≤ (9/4)‖ρ‖²?? and then liSummand_norm_le (9/2)n²·mult/(1+‖γ‖²) — wait the dominator is mult/(1+‖γ‖²) with gammaOf — and they related 1/‖ρ‖² to 1/(1+‖γ‖²) via (9/4): 1+‖γ‖² ≤ (9/4)‖ρ‖²?? That needs re ≤ 1: 1+γ² vs (9/4)(re²+γ²)... For zeros: is 1+γ² ≤ (9/4)|ρ|² TRUE for all zeros?? At a zero with tiny re and γ: 1 ≤ (9/4)γ² — needs γ ≥ 2/3. Hmm — but liSummand_norm_le has hypothesis 2n ≤ ‖ρ‖ — for n ≥ 1, ‖ρ‖ ≥ 2 — and then 1+γ² ≤ 1+|ρ|² ≤ |ρ|²/4+|ρ|²... 1 ≤ |ρ|²/4 for |ρ| ≥ 2 ✓ so 1+γ² ≤ 1+|ρ|² ≤ (5/4)|ρ|² ≤ ... they used (9/4): normSq_gammaOf_le_mul_norm_sq : 1 + normSq (gammaOf ρ) ≤ (9/4)‖ρ‖² for ‖ρ‖ ≥ 2 presumably. And zero_sum_inv_sq : Summable (fun ρ => mult/(1+normSq γ)). So mult/|ρ|² ≤ (9/4)mult/(1+γ²) for |ρ| ≥ 2 ✓ summable over the cofinite part; the finite ball separately. That's exactly ii′-1a's structure.
So for the j-slices: each slice (j ≥ 1) has |summand| ≤ mult/|ρ|^j... hmm for j ≥ 2, |ρ|^{-j} ≤ |ρ|^{-2} requires |ρ| ≥ 1 — still the issue. For |ρ| ≥ 2 (cofinite region): |ρ|^{-j} ≤ |ρ|^{-2}·2^{-(j-2)} ≤ |ρ|^{-2} ✓ fine. The finite ball {‖ρ‖ < 2}: finite (IsCompact.inter_riemannZetaZeros_finite) ✓ handle separately.
Alternatively — CLEANER: prove ONE summability lemma: for each j ≥ 1, Summable (sigmaSlice j) where sigmaSlice j ρ := (zeroMult ρ:ℂ)/2 * ((1/ρ)^j + (1/star ρ)^j), via:
- |sigmaSlice j ρ| ≤ mult·(1/|ρ|^j) [triangle + |star ρ| = |ρ|].
- For j = 1: use the paired structure: sigmaSlice 1 ρ = mult·re(ρ)/|ρ|² — hmm but I want a NORM bound: |sigmaSlice 1 ρ| = mult·|Re ρ|/|ρ|² ≤ mult/|ρ|² (0 < Re ρ < 1 — need re ≤ 1 ✓ IsNontrivialZero.re_lt_one or similar accessor).
- For j ≥ 2: |sigmaSlice j ρ| ≤ mult/|ρ|^j; and for ‖ρ‖ ≥ 2: ≤ mult/|ρ|² (since |ρ|^{j} ≥ |ρ|²·2^{j−2} ≥ |ρ|²... wait |ρ|^j ≥ |ρ|² iff |ρ| ≥ 1 — for ‖ρ‖ ≥ 2 ✓).
- So ALL slices j ≥ 1: |sigmaSlice j ρ| ≤ mult/|ρ|² for ‖ρ‖ ≥ 2 (for j = 1 via re ≤ 1; for j ≥ 2 via monotonicity), and mult/|ρ|² ≤ (9/4)mult/(1+γ²) for ‖ρ‖ ≥ 2 (the ii′-1a lemma).
- Finite ball {‖ρ‖ < 2} finite ✓.
- Conclude Summable via the same modified-dominator argument as liSummable.
Hmm — this is basically re-running the ii′-1a summability proof structure per slice. Can I REUSE liSummable more directly? Alternative unified approach: note sigmaSlice j's bound can also be derived as: |sigmaSlice j ρ| ≤ mult/|ρ|² for ALL zeros (not just ‖ρ‖ ≥ 2) IF |ρ| ≥ 1 for all zeros and re ≤ 1... the |ρ| ≥ 1 issue again for the finite ball. Since the finite ball is handled by finiteness anyway, the uniform bound only needs ‖ρ‖ ≥ 2.
Actually — wait. Let me look at exactly how liSummable was structured, to mimic. From the grep: liSummable (n : ℕ) : Summable (liSummand n):
- n = 0: liSummand 0 = 0 function ✓.
- n ≥ 1: hbase : Summable (fun ρ => (9/2)(n:ℝ)²·(mult/(1+normSq γ))) from zero_sum_inv_sq (mul by const); D := modified dominator (liSummand norm inside ball {¬ 2n ≤ ‖ρ‖}, dominator outside); hfin : {ρ | ¬(2n ≤ ‖ρ‖)}.Finite via closedBall ⋂ zeros finite; hE : Summable (D − base) via sum of finite support...; combine.
For sigmaSlice j (j ≥ 1): same skeleton with the bound |sigmaSlice j ρ| ≤ (9/4)mult/(1+γ²) for ‖ρ‖ ≥ 2:
|sigmaSlice j ρ| ≤ mult·|ρ|^{-j} (j≥2) or mult·re/|ρ|² (j=1) ≤ mult/|ρ|² (‖ρ‖ ≥ 2 ⟹ |ρ|^{-j} ≤ |ρ|^{-2}) and mult/|ρ|² ≤ (9/4)·mult/(1+γ²) via normSq_gammaOf_le_mul_norm_sq (check its exact statement — need to read it).
Let me read the ii′-1a summability section of LiSkeleton (lines ~230-360) to get all the helper lemmas and their exact forms.
Also for R2(i) the swap: liCoeff n = ∑' ρ, liSummand n ρ where liSummand n ρ = (mult/2)·[(1−(1−1/ρ)ⁿ) + (1−(1−1/ρ̄)ⁿ)]. Expand each: 1 − (1−x)ⁿ = Σ_{j=1}^n (−1)^{j+1}C(n,j)x^j — polynomial identity (commutative ring, binomial theorem). In Lean: `add_pow` / `Commute.add_pow`? (1 + (−x))ⁿ = Σ_j C(n,j)(−x)^j — Mathlib: `add_pow : (a + b)^n = Σ k in range(n+1), a^k*b^{n−k}*C(n,k)`? The form: add_pow a b n : (a+b)^n = Σ k, C(n,k)·a^k·b^{n−k} — one of the orders. Then 1 − (1−x)ⁿ = 1 − Σ_{k=0}^n C(n,k)(−x)^k = −Σ_{k=1}^n C(n,k)(−x)^k (the k=0 term cancels the 1) = Σ_{k=1}^n (−1)^{k+1}C(n,k)x^k.
So liSummand n ρ = (mult/2)·Σ_{j∈Icc 1 n} (−1)^{j+1}C(n,j)((1/ρ)^j + (1/ρ̄)^j) = Σ_j (−1)^{j+1}C(n,j)·sigmaSlice j ρ where sigmaSlice j ρ := (mult/2)((1/ρ)^j + (1/ρ̄)^j).
Then liCoeff n = ∑' ρ, Σ_j [slice] = Σ_j ∑' ρ [slice] (tsum_sum — needs each slice summable ✓) = Σ_j (−1)^{j+1}C(n,j)·σ_j with σ_j := ∑' ρ, sigmaSlice j ρ.
tsum_sum signature: `tsum_sum (hf : ∀ i ∈ s, Summable (f i)) : ∑' b, ∑ i ∈ s, f i b = ∑ i ∈ s, ∑' b, f i b`? I recall `tsum_sum : (∀ i ∈ s, Summable (f i)) → ∑' (b), ∑ i ∈ s, f i b = ∑ i ∈ s, ∑' b, f i b` ✓ (Mathlib.Topology.Algebra.InfiniteSum — `tsum_sum`).
The per-slice binomial: liSummand n ρ = Σ_{j ∈ Icc 1 n} (−1)^{j+1}C(n,j)·sigmaSlice j ρ — via Finset.sum_congr after expanding both powers. The algebra: (mult/2)·[(1−(1−x)ⁿ) + (1−(1−y)ⁿ)] with x = 1/ρ, y = 1/ρ̄: = (mult/2)·[Σ_j c_j x^j + Σ_j c_j y^j] = Σ_j c_j·(mult/2)(x^j + y^j) ✓ where c_j := (−1)^{j+1}C(n,j). Ring/Finset manipulation.
So define:
```lean
def sigmaSlice (j : ℕ) (ρ : {ρ : ℂ // IsNontrivialZero ρ}) : ℂ :=
(zeroMult ρ : ℂ) / 2 * ((1 / (ρ : ℂ)) ^ j + (1 / ((starRingEnd ℂ) (ρ : ℂ))) ^ j)
def sigmaP (j : ℕ) : ℂ := ∑' ρ : {ρ : ℂ // IsNontrivialZero ρ}, sigmaSlice j ρ
```
Theorem R2(i): `liCoeff_eq_sum_sigma (n : ℕ) : liCoeff n = ∑ j ∈ Finset.Icc 1 n, ((-1:ℂ))^(j+1) * (n.choose j : ℂ) * sigmaP j`.
Hmm wait — sign form: (−1)^{j+1} — in Lean: ((-1:ℂ)^(j+1)) * (n.choose j : ℂ) * sigmaP j.
Steps:
1. summable_sigmaSlice (j : ℕ) (hj : 1 ≤ j) : Summable (sigmaSlice j) — the main analytic work (mirror liSummable).
2. liSummand_eq_sum : liSummand n ρ = ∑ j ∈ Finset.Icc 1 n, ((-1:ℂ))^(j+1) * (n.choose j : ℂ) * sigmaSlice j ρ — binomial identity.
3. liCoeff_eq_sum_sigma : unfold liCoeff, rw liSummand_eq_sum (tsum_congr), then tsum_sum (needs each slice summable — with the coefficient multipliers: Summable (fun ρ => c_j·sigmaSlice j ρ) from summable_sigmaSlice.mul_left? Summable.mul_left : Summable f → Summable (fun x => c * f x)? hmm — `Summable.const_mul` : Summable f → Summable (fun b => c * f b) ✓).
For step 2's algebra:
liSummand n ρ = (mult/2)·[(1−(1−x)ⁿ) + (1−(1−y)ⁿ)]
1 − (1−x)ⁿ : (1−x)ⁿ = ((1) + (−x))ⁿ = Σ_{k=0}^n C(n,k)·1^{n−k}·(−x)^k (add_pow) = Σ_{k=0}^n C(n,k)(−x)^k = 1 + Σ_{k=1}^n C(n,k)(−1)^k x^k.
So 1 − (1−x)ⁿ = Σ_{k=1}^n −C(n,k)(−1)^k x^k = Σ_{k=1}^n (−1)^{k+1}C(n,k) x^k.
In Lean:
```lean
lemma one_sub_one_sub_pow (n : ℕ) (x : ℂ) :
1 - (1 - x) ^ n = ∑ k ∈ Finset.Icc 1 n, (-1 : ℂ) ^ (k + 1) * (n.choose k : ℂ) * x ^ k
```
Proof: (1−x)^n = (1 + (−x))^n = Σ_{k ∈ range(n+1)} C(n,k)·1^{n−k}·(−x)^k [add_pow] — Mathlib add_pow : (a + b)^n = ∑ k ∈ Finset.range (n+1), a ^ k * b ^ (n - k) * C n k? Let me recall the exact form: `add_pow (a b : R) (n : ℕ) : (a + b) ^ n = ∑ k ∈ Finset.range (n + 1), a ^ k * b ^ (n - k) * ↑(Nat.choose n k)` — something like that (order of a^k b^{n−k} vs b^k a^{n−k} varies by version). Then manipulate. Alternatively use `Commute.add_pow`... The standard: add_pow a b n : (a + b)^n = ∑ k in range(n+1), a^k * b^(n−k) * C(n,k) — I'll adapt at compile.
Then 1 − (1−x)^n = 1 − Σ_{k=0}^n ... = −Σ_{k=1}^n C(n,k)(−x)^k·1^{n−k} = Σ_{k=1}^n (−1)^{k+1}C(n,k) x^k — algebra with (−x)^k = (−1)^k x^k: neg_pow... (−x)^k = (−1)^k·x^k (neg_pow : (−a)^n = (−1)^n·a^n ✓ Mathlib `neg_pow`).
The sum splitting: Σ_{range(n+1)} = k=0 term + Σ_{Icc 1 n}: range(n+1) = {0} ∪ Icc 1 n — Finset.sum_range_succ? range(n+1) = insert 0 (Icc 1 n)? There's `Finset.sum_range_succ` (peels the TOP) and for the bottom: Finset.sum_eq_sum... There's a lemma range(n+1) = {0} ∪ Icc 1 n? Use `Finset.sum_Icc_eq_sum_range`? or convert Icc 1 n → range: `Finset.sum_Icc_eq_sum_range : ∑ i ∈ Icc m n, f i = ∑ i ∈ range (n+1−m), f (i+m)`? hmm. Alternatively state the target sum over range n with k+1 indexing... Let me just do the algebra with sum manipulation:
1 − (1−x)^n = −((1−x)^n − 1) = −(Σ_{k ∈ range(n+1)} C(n,k)(−x)^k − 1).
Σ_{k ∈ range(n+1)} C(n,k)(−x)^k = C(n,0)(−x)^0 + Σ_{k ∈ range n} C(n,k+1)(−x)^{k+1} [sum_range_succ'] = 1 + Σ_{k ∈ range n} C(n,k+1)(−x)^{k+1}.
So 1−(1−x)^n = −Σ_{k∈range n} C(n,k+1)(−x)^{k+1} = Σ_{k∈range n} C(n,k+1)(−1)^{k+2}x^{k+1}·(−1)... let me just carefully: −C(n,k+1)(−x)^{k+1} = −C(n,k+1)(−1)^{k+1}x^{k+1} = C(n,k+1)(−1)^{k+2}... hmm (−1)·(−1)^{k+1} = (−1)^{k+2} = (−1)^k. So term = C(n,k+1)(−1)^k x^{k+1}. With j := k+1 ∈ Icc 1 n: C(n,j)(−1)^{j−1}x^j = C(n,j)(−1)^{j+1}x^j ((−1)^{j−1} = (−1)^{j+1} since j−1 and j+1 same parity: (−1)^{j+1} = (−1)^{j−1}·(−1)² = (−1)^{j−1} ✓).
`Finset.sum_range_succ' : ∑ k ∈ range (n+1), f k = f 0 + ∑ k ∈ range n, f (k+1)` ✓ exists.
So: 1 − (1−x)^n = Σ_{k ∈ range n} C(n,k+1)(−1)^k x^{k+1} — then convert range n sum to Icc 1 n: `Finset.sum_Icc_eq_sum_range : ∑ i ∈ Icc m n, f i = ∑ k ∈ range (n + 1 − m), f (k + m)` — with m = 1: ∑_{Icc 1 n} f = ∑_{k ∈ range n} f(k+1) ✓. So stating the lemma with range n might be cleaner:
1 − (1−x)^n = ∑ k ∈ Finset.range n, (n.choose (k+1) : ℂ) * (-1)^k * x^(k+1)? Hmm — but the FINAL theorem wants Icc 1 n with (−1)^{j+1}C(n,j). Let me match D-064's form: λ_n = Σ_{j=1}^n (−1)^{j+1}C(n,j)σ_j — Icc 1 n, coefficient (−1)^{j+1}C(n,j).
(−1)^{j+1}C(n,j)x^j at j = k+1: (−1)^{k+2}C(n,k+1)x^{k+1} = (−1)^k C(n,k+1)x^{k+1} ✓ consistent.
OK — the precise manipulations I'll work out at the Lean level.
For step 1 (summability of sigmaSlice j), mirror liSummable. Let me read the full liSummable proof + helpers (liSummand_norm_le, normSq_gammaOf_le_mul_norm_sq) to copy the structure.
Let me read LiSkeleton lines 230-360.
I have the targets. Let me read the ii′-1a summability machinery to mirror it for the σ-slices.
tool: Read
input
{
"file_path": "D:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiSkeleton.lean",
"offset": 200,
"limit": 175
}
raw content_json (database row)
[{"type":"thinking","thinking":"Now I have the exact conventions:\n\n**D-037 §3 (R2(ii) target):** Lagarias (4.11): S_∞(n) = Σ_{j=1}^n (−1)^j C(n,j) a_j with\n- a₁ = (log 4π + γ)/2 [= lagariasA1 in Lean ✓]\n- a_j = (1−2^{−j})ζ(j) = Σ_{m odd ≥ 1} m^{−j} (j ≥ 2)\n\nAnd the double-sum swap: S_∞(n) = (1−a₁)n − 1 + Σ_{m odd ≥ 3} h⁺(m), h⁺(m) = (1−1/m)ⁿ − 1 + n/m — which is EXACTLY the Lean SInfty definition!\n\nSo the Lean `SInfty n` = (1 − lagariasA1)·n − 1 + tsum over {m odd, 3 ≤ m} of (1−1/m)^n − 1 + n/m ✓ matches the swapped form. The R2(ii) task: prove\n\n SInfty n = Σ_{j=1}^n (−1)^j C(n,j)·a_j [in ℝ]\n\nwhere a₁ = lagariasA1 = (log 4π + γ)/2, a_j = (1−2^{−j})ζ(j) for j ≥ 2.\n\nWAIT — careful with the sign convention. D-064 says: \"(ii) S_∞(n) = Σ_j C(n,j)τ_{j−1} — identity between the Lean SInfty odd-m tsum and the binomial/τ form (Lagarias (4.11) ↔ (4.7)...)\". And the crux bookkeeping (D-064 §2): \"S_∞ + 1 − λ_n = Σ_j C(n,j)[τ_{j−1} + (−1)ʲσ_j] + 1 = Σ_j C(n,j)[c_{j−1} + (−1)ʲ] + 1 = Res₁(n) + (−1) + 1\". Hmm — with τ_{j−1} = c_{j−1} + (−1)^{j−1}σ_j − (−1)^{j−1}... \n\nHold on, let me recheck the exact (4.10): D-064 §4 R2(iii): \"(4.10) itself: τ_j = c_j + (−1)ʲσ_{j+1} − (−1)ʲ for all j ≥ 0.\" Hmm — with a-sign: τ_j vs a_j: D-037's a_j convention: S_∞ = Σ_j (−1)^j C(n,j) a_j. And D-064's: S_∞ = Σ_j C(n,j) τ_{j−1}. So τ_{j−1} = (−1)^j a_j, i.e., τ_k = (−1)^{k+1} a_{k+1}. Lagarias's actual τ_j: τ_j := Σ_{m=0}^∞ ... I recall τ_j = Σ_m (−1)^... The relationship between D-064's τ_j and D-037's a_j: τ_{j−1} = (−1)^j a_j ✓.\n\nSo for ii′-2, the two targets in Lean:\n\n**(i) liCoeff n = Σ_{j=1}^n (−1)^{j+1} C(n,j)·σ_j** where σ_j := paired zero power sum Σ_ρ mult·Re(ρ^{−j})... as a ℂ identity: liCoeff n = Σ_j (−1)^{j+1} C(n,j)·σ_j with σ_j := ∑' ρ, (zeroMult ρ:ℂ)/2·((1/ρ)^j + (1/conj ρ)^j). Hmm — actually liSummand uses (1 − 1/ρ)^n with 1/ρ — expansion: 1 − (1−1/ρ)ⁿ = Σ_{j=1}^n (−1)^{j+1} C(n,j) (1/ρ)^j ✓ (binomial: (1−x)ⁿ = Σ_j C(n,j)(−x)^j = 1 + Σ_{j≥1} C(n,j)(−1)^j x^j; 1 − (1−x)ⁿ = −Σ_{j≥1} C(n,j)(−1)^j x^j = Σ_{j≥1} (−1)^{j+1} C(n,j) x^j ✓ with x = 1/ρ).\n\nSo liSummand n ρ = (mult/2)·Σ_{j=1}^n (−1)^{j+1}C(n,j)((1/ρ)^j + (1/ρ̄)^j). Then liCoeff = tsum of that = Σ_j (−1)^{j+1}C(n,j)·σ_j with σ_j := ∑' ρ, (mult/2)((1/ρ)^j + (1/ρ̄)^j) — swap via tsum_sum (needs each slice summable: for j ≥ 1: |(1/ρ)^j + (1/ρ̄)^j| ≤ 2/|ρ|^j ≤ 2/|ρ| (for j ≥ 1)... hmm need summability — for j ≥ 2: 2/|ρ|² comparison with zero_sum_inv_sq ✓; for j = 1: (1/ρ + 1/ρ̄) = 2Re(1/ρ) = 2Re(ρ̄)/|ρ|²... 1/ρ = ρ̄/|ρ|² so 1/ρ + 1/ρ̄ = (ρ̄ + ρ)/|ρ|² = 2Re(ρ)/|ρ|² — with 0 < Re ρ < 1: |2Re ρ|/|ρ|² ≤ 2/|ρ|² ✓ comparison again ✓. So each j-slice summable (j = 1 via the Re ρ ∈ (0,1) bound; j ≥ 2 via |ρ|^{−j} ≤ |ρ|^{−2} for |ρ| ≥ 1 ✓ zeros have |ρ| ≥ 14 > 1 — hmm need |ρ| ≥ 1: IsNontrivialZero has 0 < re < 1 and ζ ρ = 0 — |ρ| ≥ |Im ρ| ≥ 14 (first zero)? Proving |ρ| ≥ 1 from IsNontrivialZero: hmm — actually easier: |ρ|² = re² + im² — is there a lower bound? For the comparison I want mult/|ρ|^j ≤ mult/|ρ|²·something for j ≥ 2: |ρ|^{−j} ≤ |ρ|^{−2} iff |ρ| ≥ 1. Hmm. Alternatively bound directly by mult·C/(1+‖γ‖²)-style as in liSummand_norm_le: they used normSq_gammaOf and 1+‖γ‖². gammaOf ρ = im ρ presumably. The Zeta23 zero_sum_inv_sq : Summable (fun ρ => mult/(1+‖γ_ρ‖²))? — from ii′-1a: \"Zeta23 zero_sum_inv_sq comparison\" — Summable fun ρ => (zeroMult ρ : ℝ)/(1 + Complex.normSq (gammaOf ρ)) — something like that.\n\nFor the j-slices: |(1/ρ)^j + (1/ρ̄)^j|·mult/2 ≤ mult/|ρ|^j. Need ≤ C·mult/(1+‖γ‖²)? For j ≥ 2 and j = 1 (via Re bound): \n- j = 1: |1/ρ + 1/ρ̄|/2 = |Re ρ|/|ρ|² ≤ 1/|ρ|² (Re ≤ 1). And 1/|ρ|² vs 1/(1+γ²): |ρ|² = re² + γ² ≥ γ²; 1+γ² ≤ ... need |ρ|² ≤ C(1+γ²)?? NO — need 1/|ρ|² ≤ C/(1+γ²) ⟺ 1+γ² ≤ C|ρ|² = C(re²+γ²): with re ∈ (0,1): 1+γ² vs C(re²+γ²): take C = 2: 1+γ² ≤ 2re² + 2γ² ⟺ 1 ≤ 2re² + γ² — NOT true for small γ and small re! Hmm — zeros with |γ| < 1? Nontrivial zeros have |γ| ≥ 14.13 (first zero) — but proving that in Lean... hmm. Is there a zero-free region near the real axis in the strip that's IN Lean? Zeta23: IsNontrivialZero requires im ≠ 0? From the def: `IsNontrivialZero (ρ : ℂ) : Prop := riemannZeta ρ = 0 ∧ 0 < ρ.re ∧ ρ.re < 1` — no im ≠ 0! Wait — real zeros in (0,1)? ζ has no real zeros in (0,1) (ζ(0) = −1/2, ζ(s) < 0 for 0 ≤ s < 1...). Hmm — but the DEF doesn't exclude im = 0 a priori; the PROP is still correct because ζ ≠ 0 on (0,1) — a theorem, not part of the def.\n\nFor the comparison at j=1, I need 1/|ρ|² ≤ C/(1+γ²) uniformly over nontrivial zeros. Since re² ≤ 1: |ρ|² = re² + γ² ≤ 1 + γ² — so |ρ|² ≤ 1+γ² ⟹ 1/(1+γ²) ≤ 1/|ρ|² — WRONG DIRECTION. I need: 1/|ρ|² ≤ C/(1+γ²): from |ρ|² ≥ γ²: 1/|ρ|² ≤ 1/γ² — blows up at γ = 0... but are there zeros with small γ? If all nontrivial zeros have |γ| ≥ 14, then |ρ|² ≥ re² + γ² ≥ γ² ≥ ... 1+γ² ≤ (1/196+1)... hmm: 1+γ² ≤ (1+14²)/14²·γ²... For |γ| ≥ 14: 1 + γ² ≤ γ²(1 + 1/196) ≤ 2γ² ≤ 2|ρ|² ⟹ 1/|ρ|² ≤ 2/(1+γ²) ✓. So I need |Im ρ| ≥ 14 or similar lower bound — IS that available in Lean/Zeta23?? Zeta23 has RvM and zero-free... The first-zero-height is computational (not a theorem in Lean).\n\nHmm wait — how did ii′-1a's liSummand_norm_le handle this? Their bound: (9/2)n²·mult/(1+‖γ_ρ‖²) for 2n ≤ ‖ρ‖ (only large zeros!) and the finite ball {‖ρ‖ < 2n} handled separately via IsCompact.inter_riemannZetaZeros_finite (finiteness of zeros in a ball — from compactness+discreteness, no height needed). And liSummable used a modified dominator D with the finite-ball adjustment. So the small-zero issue was handled by finiteness, not by a height bound.\n\nFor MY j-slice summability: σ_j-slice summand: (mult/2)((1/ρ)^j + (1/ρ̄)^j). Bound: |…| ≤ mult/|ρ|^j. For j ≥ 1 fixed, is mult/|ρ|^j summable over zeros? |ρ|^{-j} ≤ |ρ|^{-1} for j ≥ 1 (|ρ| ≥ 1?) — again the |ρ| ≥ 1 issue. Hmm.\n\nAlternative approach — sidestep: DON'T prove each slice summable separately; instead do the swap with the PAIRED j=1 structure. Note the paired j-slice: (mult/2)((1/ρ)^j + (1/ρ̄)^j) = mult·Re((1/ρ)^j). For j = 1: mult·Re(1/ρ) = mult·Re(ρ̄)/|ρ|² = mult·re/|ρ|² with 0 < re < 1: ≤ mult/|ρ|². For j ≥ 2: ≤ mult/|ρ|^j ≤ mult/|ρ|² IF |ρ| ≥ 1.\n\nSo everything reduces to mult/|ρ|² summability + |ρ| ≥ 1 for zeros... \n\nHmm wait — is mult/|ρ|² summable IN LEAN already? ii′-1a: \"normSq_gammaOf_le_mul_norm_sq (9/4)\" — a lemma normSq γ ≤ (9/4)‖ρ‖²?? and then liSummand_norm_le (9/2)n²·mult/(1+‖γ‖²) — wait the dominator is mult/(1+‖γ‖²) with gammaOf — and they related 1/‖ρ‖² to 1/(1+‖γ‖²) via (9/4): 1+‖γ‖² ≤ (9/4)‖ρ‖²?? That needs re ≤ 1: 1+γ² vs (9/4)(re²+γ²)... For zeros: is 1+γ² ≤ (9/4)|ρ|² TRUE for all zeros?? At a zero with tiny re and γ: 1 ≤ (9/4)γ² — needs γ ≥ 2/3. Hmm — but liSummand_norm_le has hypothesis 2n ≤ ‖ρ‖ — for n ≥ 1, ‖ρ‖ ≥ 2 — and then 1+γ² ≤ 1+|ρ|² ≤ |ρ|²/4+|ρ|²... 1 ≤ |ρ|²/4 for |ρ| ≥ 2 ✓ so 1+γ² ≤ 1+|ρ|² ≤ (5/4)|ρ|² ≤ ... they used (9/4): normSq_gammaOf_le_mul_norm_sq : 1 + normSq (gammaOf ρ) ≤ (9/4)‖ρ‖² for ‖ρ‖ ≥ 2 presumably. And zero_sum_inv_sq : Summable (fun ρ => mult/(1+normSq γ)). So mult/|ρ|² ≤ (9/4)mult/(1+γ²) for |ρ| ≥ 2 ✓ summable over the cofinite part; the finite ball separately. That's exactly ii′-1a's structure.\n\nSo for the j-slices: each slice (j ≥ 1) has |summand| ≤ mult/|ρ|^j... hmm for j ≥ 2, |ρ|^{-j} ≤ |ρ|^{-2} requires |ρ| ≥ 1 — still the issue. For |ρ| ≥ 2 (cofinite region): |ρ|^{-j} ≤ |ρ|^{-2}·2^{-(j-2)} ≤ |ρ|^{-2} ✓ fine. The finite ball {‖ρ‖ < 2}: finite (IsCompact.inter_riemannZetaZeros_finite) ✓ handle separately.\n\nAlternatively — CLEANER: prove ONE summability lemma: for each j ≥ 1, Summable (sigmaSlice j) where sigmaSlice j ρ := (zeroMult ρ:ℂ)/2 * ((1/ρ)^j + (1/star ρ)^j), via:\n- |sigmaSlice j ρ| ≤ mult·(1/|ρ|^j) [triangle + |star ρ| = |ρ|].\n- For j = 1: use the paired structure: sigmaSlice 1 ρ = mult·re(ρ)/|ρ|² — hmm but I want a NORM bound: |sigmaSlice 1 ρ| = mult·|Re ρ|/|ρ|² ≤ mult/|ρ|² (0 < Re ρ < 1 — need re ≤ 1 ✓ IsNontrivialZero.re_lt_one or similar accessor).\n- For j ≥ 2: |sigmaSlice j ρ| ≤ mult/|ρ|^j; and for ‖ρ‖ ≥ 2: ≤ mult/|ρ|² (since |ρ|^{j} ≥ |ρ|²·2^{j−2} ≥ |ρ|²... wait |ρ|^j ≥ |ρ|² iff |ρ| ≥ 1 — for ‖ρ‖ ≥ 2 ✓).\n- So ALL slices j ≥ 1: |sigmaSlice j ρ| ≤ mult/|ρ|² for ‖ρ‖ ≥ 2 (for j = 1 via re ≤ 1; for j ≥ 2 via monotonicity), and mult/|ρ|² ≤ (9/4)mult/(1+γ²) for ‖ρ‖ ≥ 2 (the ii′-1a lemma).\n- Finite ball {‖ρ‖ < 2} finite ✓.\n- Conclude Summable via the same modified-dominator argument as liSummable.\n\nHmm — this is basically re-running the ii′-1a summability proof structure per slice. Can I REUSE liSummable more directly? Alternative unified approach: note sigmaSlice j's bound can also be derived as: |sigmaSlice j ρ| ≤ mult/|ρ|² for ALL zeros (not just ‖ρ‖ ≥ 2) IF |ρ| ≥ 1 for all zeros and re ≤ 1... the |ρ| ≥ 1 issue again for the finite ball. Since the finite ball is handled by finiteness anyway, the uniform bound only needs ‖ρ‖ ≥ 2.\n\nActually — wait. Let me look at exactly how liSummable was structured, to mimic. From the grep: liSummable (n : ℕ) : Summable (liSummand n):\n- n = 0: liSummand 0 = 0 function ✓.\n- n ≥ 1: hbase : Summable (fun ρ => (9/2)(n:ℝ)²·(mult/(1+normSq γ))) from zero_sum_inv_sq (mul by const); D := modified dominator (liSummand norm inside ball {¬ 2n ≤ ‖ρ‖}, dominator outside); hfin : {ρ | ¬(2n ≤ ‖ρ‖)}.Finite via closedBall ⋂ zeros finite; hE : Summable (D − base) via sum of finite support...; combine.\n\nFor sigmaSlice j (j ≥ 1): same skeleton with the bound |sigmaSlice j ρ| ≤ (9/4)mult/(1+γ²) for ‖ρ‖ ≥ 2:\n|sigmaSlice j ρ| ≤ mult·|ρ|^{-j} (j≥2) or mult·re/|ρ|² (j=1) ≤ mult/|ρ|² (‖ρ‖ ≥ 2 ⟹ |ρ|^{-j} ≤ |ρ|^{-2}) and mult/|ρ|² ≤ (9/4)·mult/(1+γ²) via normSq_gammaOf_le_mul_norm_sq (check its exact statement — need to read it).\n\nLet me read the ii′-1a summability section of LiSkeleton (lines ~230-360) to get all the helper lemmas and their exact forms.\n\nAlso for R2(i) the swap: liCoeff n = ∑' ρ, liSummand n ρ where liSummand n ρ = (mult/2)·[(1−(1−1/ρ)ⁿ) + (1−(1−1/ρ̄)ⁿ)]. Expand each: 1 − (1−x)ⁿ = Σ_{j=1}^n (−1)^{j+1}C(n,j)x^j — polynomial identity (commutative ring, binomial theorem). In Lean: `add_pow` / `Commute.add_pow`? (1 + (−x))ⁿ = Σ_j C(n,j)(−x)^j — Mathlib: `add_pow : (a + b)^n = Σ k in range(n+1), a^k*b^{n−k}*C(n,k)`? The form: add_pow a b n : (a+b)^n = Σ k, C(n,k)·a^k·b^{n−k} — one of the orders. Then 1 − (1−x)ⁿ = 1 − Σ_{k=0}^n C(n,k)(−x)^k = −Σ_{k=1}^n C(n,k)(−x)^k (the k=0 term cancels the 1) = Σ_{k=1}^n (−1)^{k+1}C(n,k)x^k.\n\nSo liSummand n ρ = (mult/2)·Σ_{j∈Icc 1 n} (−1)^{j+1}C(n,j)((1/ρ)^j + (1/ρ̄)^j) = Σ_j (−1)^{j+1}C(n,j)·sigmaSlice j ρ where sigmaSlice j ρ := (mult/2)((1/ρ)^j + (1/ρ̄)^j).\n\nThen liCoeff n = ∑' ρ, Σ_j [slice] = Σ_j ∑' ρ [slice] (tsum_sum — needs each slice summable ✓) = Σ_j (−1)^{j+1}C(n,j)·σ_j with σ_j := ∑' ρ, sigmaSlice j ρ.\n\ntsum_sum signature: `tsum_sum (hf : ∀ i ∈ s, Summable (f i)) : ∑' b, ∑ i ∈ s, f i b = ∑ i ∈ s, ∑' b, f i b`? I recall `tsum_sum : (∀ i ∈ s, Summable (f i)) → ∑' (b), ∑ i ∈ s, f i b = ∑ i ∈ s, ∑' b, f i b` ✓ (Mathlib.Topology.Algebra.InfiniteSum — `tsum_sum`).\n\nThe per-slice binomial: liSummand n ρ = Σ_{j ∈ Icc 1 n} (−1)^{j+1}C(n,j)·sigmaSlice j ρ — via Finset.sum_congr after expanding both powers. The algebra: (mult/2)·[(1−(1−x)ⁿ) + (1−(1−y)ⁿ)] with x = 1/ρ, y = 1/ρ̄: = (mult/2)·[Σ_j c_j x^j + Σ_j c_j y^j] = Σ_j c_j·(mult/2)(x^j + y^j) ✓ where c_j := (−1)^{j+1}C(n,j). Ring/Finset manipulation.\n\nSo define:\n```lean\ndef sigmaSlice (j : ℕ) (ρ : {ρ : ℂ // IsNontrivialZero ρ}) : ℂ :=\n (zeroMult ρ : ℂ) / 2 * ((1 / (ρ : ℂ)) ^ j + (1 / ((starRingEnd ℂ) (ρ : ℂ))) ^ j)\n\ndef sigmaP (j : ℕ) : ℂ := ∑' ρ : {ρ : ℂ // IsNontrivialZero ρ}, sigmaSlice j ρ\n```\n\nTheorem R2(i): `liCoeff_eq_sum_sigma (n : ℕ) : liCoeff n = ∑ j ∈ Finset.Icc 1 n, ((-1:ℂ))^(j+1) * (n.choose j : ℂ) * sigmaP j`.\n\nHmm wait — sign form: (−1)^{j+1} — in Lean: ((-1:ℂ)^(j+1)) * (n.choose j : ℂ) * sigmaP j.\n\nSteps:\n1. summable_sigmaSlice (j : ℕ) (hj : 1 ≤ j) : Summable (sigmaSlice j) — the main analytic work (mirror liSummable).\n2. liSummand_eq_sum : liSummand n ρ = ∑ j ∈ Finset.Icc 1 n, ((-1:ℂ))^(j+1) * (n.choose j : ℂ) * sigmaSlice j ρ — binomial identity.\n3. liCoeff_eq_sum_sigma : unfold liCoeff, rw liSummand_eq_sum (tsum_congr), then tsum_sum (needs each slice summable — with the coefficient multipliers: Summable (fun ρ => c_j·sigmaSlice j ρ) from summable_sigmaSlice.mul_left? Summable.mul_left : Summable f → Summable (fun x => c * f x)? hmm — `Summable.const_mul` : Summable f → Summable (fun b => c * f b) ✓).\n\nFor step 2's algebra:\nliSummand n ρ = (mult/2)·[(1−(1−x)ⁿ) + (1−(1−y)ⁿ)]\n1 − (1−x)ⁿ : (1−x)ⁿ = ((1) + (−x))ⁿ = Σ_{k=0}^n C(n,k)·1^{n−k}·(−x)^k (add_pow) = Σ_{k=0}^n C(n,k)(−x)^k = 1 + Σ_{k=1}^n C(n,k)(−1)^k x^k.\nSo 1 − (1−x)ⁿ = Σ_{k=1}^n −C(n,k)(−1)^k x^k = Σ_{k=1}^n (−1)^{k+1}C(n,k) x^k.\n\nIn Lean: \n```lean\nlemma one_sub_one_sub_pow (n : ℕ) (x : ℂ) :\n 1 - (1 - x) ^ n = ∑ k ∈ Finset.Icc 1 n, (-1 : ℂ) ^ (k + 1) * (n.choose k : ℂ) * x ^ k\n```\nProof: (1−x)^n = (1 + (−x))^n = Σ_{k ∈ range(n+1)} C(n,k)·1^{n−k}·(−x)^k [add_pow] — Mathlib add_pow : (a + b)^n = ∑ k ∈ Finset.range (n+1), a ^ k * b ^ (n - k) * C n k? Let me recall the exact form: `add_pow (a b : R) (n : ℕ) : (a + b) ^ n = ∑ k ∈ Finset.range (n + 1), a ^ k * b ^ (n - k) * ↑(Nat.choose n k)` — something like that (order of a^k b^{n−k} vs b^k a^{n−k} varies by version). Then manipulate. Alternatively use `Commute.add_pow`... The standard: add_pow a b n : (a + b)^n = ∑ k in range(n+1), a^k * b^(n−k) * C(n,k) — I'll adapt at compile.\n\nThen 1 − (1−x)^n = 1 − Σ_{k=0}^n ... = −Σ_{k=1}^n C(n,k)(−x)^k·1^{n−k} = Σ_{k=1}^n (−1)^{k+1}C(n,k) x^k — algebra with (−x)^k = (−1)^k x^k: neg_pow... (−x)^k = (−1)^k·x^k (neg_pow : (−a)^n = (−1)^n·a^n ✓ Mathlib `neg_pow`).\n\nThe sum splitting: Σ_{range(n+1)} = k=0 term + Σ_{Icc 1 n}: range(n+1) = {0} ∪ Icc 1 n — Finset.sum_range_succ? range(n+1) = insert 0 (Icc 1 n)? There's `Finset.sum_range_succ` (peels the TOP) and for the bottom: Finset.sum_eq_sum... There's a lemma range(n+1) = {0} ∪ Icc 1 n? Use `Finset.sum_Icc_eq_sum_range`? or convert Icc 1 n → range: `Finset.sum_Icc_eq_sum_range : ∑ i ∈ Icc m n, f i = ∑ i ∈ range (n+1−m), f (i+m)`? hmm. Alternatively state the target sum over range n with k+1 indexing... Let me just do the algebra with sum manipulation: \n\n1 − (1−x)^n = −((1−x)^n − 1) = −(Σ_{k ∈ range(n+1)} C(n,k)(−x)^k − 1).\nΣ_{k ∈ range(n+1)} C(n,k)(−x)^k = C(n,0)(−x)^0 + Σ_{k ∈ range n} C(n,k+1)(−x)^{k+1} [sum_range_succ'] = 1 + Σ_{k ∈ range n} C(n,k+1)(−x)^{k+1}.\nSo 1−(1−x)^n = −Σ_{k∈range n} C(n,k+1)(−x)^{k+1} = Σ_{k∈range n} C(n,k+1)(−1)^{k+2}x^{k+1}·(−1)... let me just carefully: −C(n,k+1)(−x)^{k+1} = −C(n,k+1)(−1)^{k+1}x^{k+1} = C(n,k+1)(−1)^{k+2}... hmm (−1)·(−1)^{k+1} = (−1)^{k+2} = (−1)^k. So term = C(n,k+1)(−1)^k x^{k+1}. With j := k+1 ∈ Icc 1 n: C(n,j)(−1)^{j−1}x^j = C(n,j)(−1)^{j+1}x^j ((−1)^{j−1} = (−1)^{j+1} since j−1 and j+1 same parity: (−1)^{j+1} = (−1)^{j−1}·(−1)² = (−1)^{j−1} ✓).\n\n`Finset.sum_range_succ' : ∑ k ∈ range (n+1), f k = f 0 + ∑ k ∈ range n, f (k+1)` ✓ exists.\n\nSo: 1 − (1−x)^n = Σ_{k ∈ range n} C(n,k+1)(−1)^k x^{k+1} — then convert range n sum to Icc 1 n: `Finset.sum_Icc_eq_sum_range : ∑ i ∈ Icc m n, f i = ∑ k ∈ range (n + 1 − m), f (k + m)` — with m = 1: ∑_{Icc 1 n} f = ∑_{k ∈ range n} f(k+1) ✓. So stating the lemma with range n might be cleaner:\n\n1 − (1−x)^n = ∑ k ∈ Finset.range n, (n.choose (k+1) : ℂ) * (-1)^k * x^(k+1)? Hmm — but the FINAL theorem wants Icc 1 n with (−1)^{j+1}C(n,j). Let me match D-064's form: λ_n = Σ_{j=1}^n (−1)^{j+1}C(n,j)σ_j — Icc 1 n, coefficient (−1)^{j+1}C(n,j). \n\n(−1)^{j+1}C(n,j)x^j at j = k+1: (−1)^{k+2}C(n,k+1)x^{k+1} = (−1)^k C(n,k+1)x^{k+1} ✓ consistent.\n\nOK — the precise manipulations I'll work out at the Lean level.\n\nFor step 1 (summability of sigmaSlice j), mirror liSummable. Let me read the full liSummable proof + helpers (liSummand_norm_le, normSq_gammaOf_le_mul_norm_sq) to copy the structure.\n\nLet me read LiSkeleton lines 230-360.","signature":""},{"type":"text","text":"I have the targets. Let me read the ii′-1a summability machinery to mirror it for the σ-slices."},{"type":"tool_use","id":"Read_80","name":"Read","input":{"file_path":"D:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiSkeleton.lean","offset":200,"limit":175},"extra_content":null}]