← Session 32 — ii′-3b start: capstone axiom audit + moments
thinking (9117 chars)
Everything's mapped. The re/conj tsum bridges aren't used in the project yet, so I'll need to find them in Mathlib. Standard names:
- `Complex.ofReal_tsum`? or generic `ofReal_tsum` — in Mathlib it's `ofReal_tsum` (Mathlib.Analysis.RCLike?). Actually I recall: `RCLike.ofReal_tsum`? Hmm. There's `Complex.ofReal_tsum : ↑(∑' i, f i) = ∑' i, ↑(f i)` — let me search Mathlib quickly.
- re: `Complex.reCLM` exists (used LiRBound:471 as ℂ →ₗ[ℝ] ℝ — that's reLM? it says Complex.reCLM : ℂ →ₗ[ℝ] ℝ — a LINEAR map, not CLM). For map_tsum: `ContinuousLinearMap.map_tsum`? Hmm — reCLM as →ₗ needs continuity wrapped. There's `Complex.reCLM : ℂ →L[ℝ] ℝ`?? The LiRBound usage shows `Complex.reCLM : ℂ →ₗ[ℝ] ℝ` (linear). For tsum: use `ContinuousLinearMap.map_tsum` with... or simpler: HasSum-based: `(Summable.hasSum hf).map`?
Actually the cleanest: `Summable.map_tsum`? Let me just probe Mathlib. Standard: `ContinuousLinearMap.map_tsum (hf : Summable f) : φ (∑' i, f i) = ∑' i, φ (f i)`? Hmm I believe it's `(φ : F →L[𝕜] G).map_tsum : φ (∑' i, f i) = ∑' i, φ (f i)` requiring Summable f. And Complex.reCLM might be both — in Mathlib, `Complex.reCLM : ℂ →L[ℝ] ℝ` IS a continuous linear map ("CLM"). The LiRBound usage wrote (Complex.reCLM : ℂ →ₗ[ℝ] ℝ) — coercing CLM to LM. OK so Complex.reCLM is →L ✓.
For conj: `Complex.conjLIE : ℂ ≃L[ℝ] ℂ`? or conjCLE. `starRingEnd ℂ` is a ring equiv + continuous. For the conj-of-tsum: I'll actually AVOID needing conj-of-tsum entirely by the double-sum trick (sigmaP k = ½(S + S) with the second S reindexed). Let me re-examine: sigmaP k = ∑' ρ (mult/2)((1/ρ)^k + (1/conjρ)^k). Write as (1/2)·[∑ mult(1/ρ)^k + ∑ mult(1/conjρ)^k]? Careful: ∑' ρ (mult/2)(A_ρ + B_ρ) = (1/2)∑' (mult·A_ρ + mult·B_ρ) [tsum const mul] = (1/2)[∑ mult A + ∑ mult B] [tsum_add — needs both summable ✓]. Then ∑ mult B = ∑ mult A via conjEquiv (per-term: mult(conjρ)·(1/conj(conjρ))^k = mult(ρ)(1/ρ)^k — zeroMult_conj + conj conj ✓). So sigmaP k = (1/2)(S + S) = S where S = ∑' mult(1/ρ)^k. NO conj-of-tsum or re bridges! ✓✓
And for k=1 step (e) I needed ∑' mult·(w.re:ℂ) = ∑' mult·w (the conj-reality of S'). Avoid re bridges here too:
2·sigmaP 1 = ∑' mult·((1/ρ).re + (1/(1−ρ)).re : ℂ)... hmm this has .re inside. Alternative k=1 path avoiding .re entirely:
sigmaP 1 = ∑' ρ (mult/2)(1/ρ + 1/conjρ) = (1/2)[∑ mult/ρ?? — NOT summable. Dead end (that's why the design used re).
Alternative: express via T = ∑' mult/(ρ(1−ρ)) directly: per term: (mult/2)(1/ρ + 1/conjρ) vs (mult/2)(1/ρ + 1/(1−ρ)) = mult/(2ρ(1−ρ)) ✓ summable. So if I can show ∑' ρ (mult/2)(1/ρ + 1/conjρ) = ∑' ρ (mult/2)(1/ρ + 1/(1−ρ)), i.e. ∑' ρ mult·(1/conjρ − 1/(1−ρ)) = 0?? Hmm: 1/conjρ − 1/(1−ρ): not obviously summable either (each ~1/γ). But the DIFFERENCE: 1/conjρ − 1/(1−ρ) = (1−ρ−conjρ)/(conjρ(1−ρ)) = (1−2re)/(conjρ(1−ρ)) — O(1/γ²) ✓ SUMMABLE! And its tsum: reindex by the COMPOSED equiv ρ ↦ conj(1−ρ)?? hmm: consider S'' := ∑' ρ mult·(1/conjρ − 1/(1−ρ)). Under conjEquiv: ∑' ρ mult·(1/ρ − 1/(1−conjρ)); under oneSubEquiv applied to that: ... hmm messy.
Cleaner: 2·sigmaP 1 − T = ∑' ρ mult·[(1/ρ + 1/conjρ) − (1/ρ + 1/(1−ρ))] = ∑' ρ mult·[1/conjρ − 1/(1−ρ)] (tsum_sub: needs both summable — sigmaP 1 summable ✓ sigmaSlice_summable; T-family summable ✓). Then ∑' ρ mult·[1/conjρ − 1/(1−ρ)] = 0 by... reindex via conjEquiv: ↦ ∑' ρ mult·[1/ρ − 1/(1−conjρ)] =: U. Reindex via oneSubEquiv: ↦ ∑' ρ mult·[1/(1−ρ) − 1/conjρ] = −(original). So the original = U = −original ⟹ original = 0 ✓!! And each reindex is valid since the family is summable (O(1/γ²): |1−2re| ≤ 1, |conjρ(1−ρ)| = ‖ρ‖‖1−ρ‖ — via the AM-GM split 1/(‖ρ‖‖1−ρ‖) ≤ ½(‖ρ‖⁻² + ‖1−ρ‖⁻²) ✓ summable).
Wait — check the reindex computations carefully:
V := ∑' ρ, mult(ρ)·[1/conjρ − 1/(1−ρ)].
(i) conjEquiv e₁ (ρ ↦ conjρ): ∑' ρ, f ρ = ∑' ρ, f (e₁ ρ) where f(e₁ ρ) = mult(conjρ)·[1/conj(conjρ) − 1/(1−conjρ)] = mult(ρ)·[1/ρ − 1/(1−conjρ)] (zeroMult_conj, conj conj). So V = ∑' ρ mult·[1/ρ − 1/(1−conjρ)].
(ii) oneSubEquiv e₂ (ρ ↦ 1−ρ): V = ∑' ρ, mult(1−ρ)·[1/(1−ρ) − 1/(1−conj(1−ρ))] = ∑' ρ, mult(ρ)·[1/(1−ρ) − 1/conjρ] (zeroMult_one_sub; 1−conj(1−ρ) = 1−(1−conjρ) = conjρ). = −V's summand... the summand is mult·[1/(1−ρ) − 1/conjρ] = −mult·[1/conjρ − 1/(1−ρ)] ✓ so V = ∑' (−(that)) = −V ⟹ V = 0 ✓ (tsum_neg).
Great — V = 0 with only equiv reindexes, no re/conj-of-tsum bridges anywhere.
Then: 2·sigmaP 1 = T (from V = 0: 2·sigmaP 1 − T = V·... wait: 2·sigmaP 1 = ∑' mult(1/ρ + 1/conjρ); T = ∑' mult(1/ρ + 1/(1−ρ)); 2·sigmaP 1 − T = V ✓ = 0 ⟹ 2·sigmaP 1 = T).
And T = seriesFun 1 − seriesFun 0 = seriesFun 1 (seriesFun 0 = 0; seriesFun 1 = T by tsum_congr per-term ✓).
sigmaP 1 = T/2 = seriesFun 1/2 = (gFun 1 − B)/2 where gFun 1 = B + seriesFun 1 (§3 continuity).
gFun 1 = −gFun 0 (FE) and gFun 0 = B (§3) ⟹ seriesFun 1 = −2B ⟹ sigmaP 1 = −B = −gFun 0. ✓✓ NO re bridges AT ALL.
For k ≥ 2, step (f) per-term at 0 and (g): ∑' ρ, mult·(−1)^{k−1}(k−1)!·(0−ρ)^{−k} = −(k−1)!·sigmaP k:
per-term: mult·(−1)^{k−1}(k−1)!·(−ρ)^{−k} = −(k−1)!·mult·ρ^{−k}·[sign check]: (−ρ)^{−k} = (−1)^k·ρ^{−k} (zpow of neg: (−ρ)^{m:ℤ}: use `neg_zpow`: (−a)^(n:ℤ) = (−1)^n·a^n — hmm `neg_zpow` signature: for monoid with... it exists: neg_zpow (a : G) (n : ℤ) : (-a)^n = (-1)^n * a^n? For n negative, (−1)^n = ((−1)^{|n|})^{±1} = (−1)^{|n|} since −1 self-inverse ✓. In ℂ: (−1)^(−k:ℤ) = ((−1)^k)⁻¹ = (−1)^k ✓.) So term = mult·(k−1)!·(−1)^{k−1}·(−1)^k·ρ^{−k} = −mult·(k−1)!·ρ^{−k} ((−1)^{2k−1} = −1 ✓ pow_add/neg_one_pow...).
Then ∑' = −(k−1)!·∑' mult·ρ^{−k} [tsum of −(k−1)!·(mult·ρ^{−k}): Summable.mul_left → tsum_mul_left: ∑' (c·f) = c·∑' f ✓] = −(k−1)!·sigmaP k [via the ½(S+S) lemma ✓].
Everything avoids re/conj-of-tsum. The only tsum utilities: tsum_add, tsum_sub, tsum_mul_left (const), tsum_congr, tsum_zero, tsum_neg, Equiv.tsum_eq, Summable.of_norm_bounded/of_norm, Summable.mul_left, Equiv.summable_iff.
One more check — the M-test dominator summability for the derivative families: dominator family u ρ := mult(ρ)·C_j/‖ρ‖²... wait actually SummableLocallyUniformlyOn_of_locally_bounded wants a summable ℝ-family bounding ‖term‖. I'll prove `summable_mult_div_normSq : Summable (fun ρ => (zeroMult ρ : ℝ)/‖(ρ:ℂ)‖^2)` once (comparison (9/4)·mult/(1+γ²) + zero_sum_inv_sq — the sigmaSlice_summable pattern at LiSwaps:213-216 shows the base: (WeilEF.zero_sum_inv_sq zetaSeam).mul_left (9/4)). Then everything else mul_left's constants. And for the ‖ρ‖ ≥ δ₀ lower bound: exists_ball_avoid_nontrivialZeros 0 (not IsNontrivialZero 0 — re 0 > 0 fails: ¬ IsNontrivialZero 0: h.2.1 : 0 < (0:ℂ).re = 0 contradiction ✓).
Also `summable_mult_inv_pow (k ≥ 2)`: ‖mult·(1/ρ)^k‖ = mult·‖ρ‖^{−k} ≤ mult·δ₀^{2−k}·‖ρ‖^{−2}: since ‖ρ‖ ≥ δ₀ > 0: ‖ρ‖^{2−k} ≤ δ₀^{2−k} (k ≥ 2, pow_le_pow_of_nonpos?? for real: ‖ρ‖^{−(k−2)} ≤ δ₀^{−(k−2)} via one_div_le_one_div_of_le / pow_le_pow_left₀ on inverses ✓). ✓
For the k=1 summability lemmas:
- `summable_mult_wTerm` : Summable (fun ρ => (zeroMult ρ:ℂ)·(1/((ρ:ℂ)·(1−(ρ:ℂ))))): ‖·‖ = mult/(‖ρ‖‖1−ρ‖) ≤ (mult/2)(‖ρ‖⁻²+‖1−ρ‖⁻²): AM-GM: 1/(ab) ≤ (a⁻²+b⁻²)/2 ✓; summability of the two: first ✓ (summable_mult_div_normSq); second: Summable (fun ρ => mult/‖1−ρ‖²) via oneSubEquiv transfer: Equiv.summable_iff: Summable (f ∘ e₂) ⟺ Summable f with f σ = mult(σ)/‖σ‖²: (f∘e₂) ρ = mult(1−ρ)/‖1−ρ‖² = mult(ρ)/‖1−ρ‖² (zeroMult_one_sub ✓). ✓
- `summable_mult_vTerm` : Summable (fun ρ => (zeroMult ρ:ℂ)·(1/conjρ − 1/(1−ρ))): norm ≤ mult·|1−2re|/(‖ρ‖‖1−ρ‖) ≤ mult/(‖ρ‖‖1−ρ‖) — via the field identity 1/conjρ − 1/(1−ρ) = (1−ρ−conjρ)/(conjρ(1−ρ)) and |1−ρ−conjρ| = |1−2re| ≤ 1... 1−ρ−conjρ = 1−2re(ρ) ✓ (re conj = re). |1−2re| ≤ 1 since re ∈ (0,1) ✓. Then the AM-GM dominator ✓.
OK — design is complete and tight. Estimated file ~700–1000 lines. Sub-chunks:
- §0 header + imports.
- §1 xiL + basic facts (differentiable, xiL_eq, xiL_zero/one, xiL_one_sub, xiL_ne_zero) + isNontrivialZero_one_sub + conjEquiv/oneSubEquiv.
- §2 gFun_eq (the B + seriesFun identity at good points).
- §3 values at 0,1: seriesFun_zero, seriesFun_one, gFun_zero, gFun_one, gFun_FE (gFun 1 = −gFun 0).
- §4 summability lemmas + the reindex lemmas (sigmaP_eq_unpaired for k≥2, sigmaP_one_eq_half_T).
- §5 the zpow derivative lemma + per-term derivatives + M-test + termwise iteratedDeriv at 0 (k ≥ 2 main).
- §6 capstone unified.
Now — IMPORTANT process point: per §8.4/8.5, commit at sub-stage boundaries; write artifacts immediately. I'll iterate the file with `lake env lean NguyenRH1/LiMoments.lean` (needs the imports' oleans — LiTightR olean exists? STATE says build green 8762 jobs WITH LiTightR not root-imported — but the audits ran on it, so `lake build NguyenRH1.LiTightR` was run and its olean exists ✓).
Also per the todo: mark task 1 complete, task 2 (scope) — essentially done now (this design). Let me record the design as a short derivation note? The route change should be documented (D-070) — I'll do that at closure, but actually per "save artifacts IMMEDIATELY" I could write the design note now. I'll fold it into the closure journal + D-070. Actually — the design IS substantial (route change from D-066's contour plan). Write D-070 NOW (short), then implement.
Update todos and go.
Design is complete and tight. Key findings from the API sweep:
- **No re/conj-of-tsum bridges needed anywhere**: the k≥2 case reduces to sigmaP k = ½(S+S) via the conj-equiv reindex; the k=1 case to V = ∑' mult·(1/conjρ − 1/(1−ρ)) = 0 via the *composed* conj/reflect reindexes (V = −V), with the mixed terms O(1/γ²) hence absolutely summable
- **xiL entire closed form**: xiL(s) := (s(s−1)/2)·Λ₀(s) − (s−1)/2 + s/2 via Mathlib's `completedRiemannZeta_eq` (Λ₀ entire) — sidesteps removable-singularity proofs; xiL(0) = xiL(1) = 1/2 for free
- All reindex machinery exists: `isNontrivialZero_conj`, `zeroMult_conj` (LiTightR), `zeroMult_one_sub` (LiReflect), `zeta_reflect_zero` (Zeta23)
- The termwise-iterated-deriv pattern (`iteratedDerivWithin_tsum` + `SummableLocallyUniformlyOn_of_locally_bounded`) clones from LiDigamma §7–8
Let me file the route-change design note (D-070) first, then implement.
tool: TodoWrite ok
input
{
"todos": [
{
"content": "Read D-066 design + journal-035/036 gotchas",
"status": "completed",
"activeForm": "Reading D-066 design + banked gotchas"
},
{
"content": "Scope ii\u2032-3b: exact statement + proof skeleton of the contour moments",
"status": "completed",
"activeForm": "Scoping ii\u2032-3b moment theorem"
},
{
"content": "File D-070 route-change design note",
"status": "in_progress",
"activeForm": "Filing D-070 route-change note"
},
{
"content": "LiMoments \u00a71: xiL + equivs + basic facts",
"status": "pending",
"activeForm": "Building LiMoments \u00a71 (xiL)"
},
{
"content": "LiMoments \u00a72: gFun = B + seriesFun at good points",
"status": "pending",
"activeForm": "Building LiMoments \u00a72 (gFun identity)"
},
{
"content": "LiMoments \u00a73: values at 0,1 + FE sign",
"status": "pending",
"activeForm": "Building LiMoments \u00a73 (evaluations)"
},
{
"content": "LiMoments \u00a74: summability + reindex lemmas (k=1)",
"status": "pending",
"activeForm": "Building LiMoments \u00a74 (k=1 rearrangement)"
},
{
"content": "LiMoments \u00a75: termwise iterated deriv at 0 (k\u22652)",
"status": "pending",
"activeForm": "Building LiMoments \u00a75 (k\u22652 termwise)"
},
{
"content": "LiMoments \u00a76: unified capstone sigmaP_eq",
"status": "pending",
"activeForm": "Building LiMoments \u00a76 (capstone)"
},
{
"content": "Axiom audit + full build green + root import",
"status": "pending",
"activeForm": "Running axiom audit + full build"
},
{
"content": "Session-037 archive closure (journal, db, STATE, commit)",
"status": "pending",
"activeForm": "Closing session 037 archive"
}
]
}
result 2026-08-24 23:11:49Z → 2026-08-24 23:11:49Z
{
"oldTodos": [
"content='Read D-066 design + journal-035/036 gotchas' status='in_progress' active_form='Reading D-066 design + banked gotchas'",
"content='Scope ii\u2032-3b: exact statement + proof skeleton of the contour moments' status='pending' active_form='Scoping ii\u2032-3b moment theorem'",
"content='Implement ii\u2032-3b in Lean' status='pending' active_form='Implementing ii\u2032-3b in Lean'",
"content='Axiom audit + full build green' status='pending' active_form='Running axiom audit + full build'",
"content='Session-037 archive closure (journal, db, STATE, commit)' status='pending' active_form='Closing session 037 archive'"
],
"newTodos": [
"content='Read D-066 design + journal-035/036 gotchas' status='completed' active_form='Reading D-066 design + banked gotchas'",
"content='Scope ii\u2032-3b: exact statement + proof skeleton of the contour moments' status='completed' active_form='Scoping ii\u2032-3b moment theorem'",
"content='File D-070 route-change design note' status='in_progress' active_form='Filing D-070 route-change note'",
"content='LiMoments \u00a71: xiL + equivs + basic facts' status='pending' active_form='Building LiMoments \u00a71 (xiL)'",
"content='LiMoments \u00a72: gFun = B + seriesFun at good points' status='pending' active_form='Building LiMoments \u00a72 (gFun identity)'",
"content='LiMoments \u00a73: values at 0,1 + FE sign' status='pending' active_form='Building LiMoments \u00a73 (evaluations)'",
"content='LiMoments \u00a74: summability + reindex lemmas (k=1)' status='pending' active_form='Building LiMoments \u00a74 (k=1 rearrangement)'",
"content='LiMoments \u00a75: termwise iterated deriv at 0 (k\u22652)' status='pending' active_form='Building LiMoments \u00a75 (k\u22652 termwise)'",
"content='LiMoments \u00a76: unified capstone sigmaP_eq' status='pending' active_form='Building LiMoments \u00a76 (capstone)'",
"content='Axiom audit + full build green + root import' status='pending' active_form='Running axiom audit + full build'",
"content='Session-037 archive closure (journal, db, STATE, commit)' status='pending' active_form='Closing session 037 archive'"
],
"cleared": false
}
raw content_json (database row)
[{"type":"thinking","thinking":"Everything's mapped. The re/conj tsum bridges aren't used in the project yet, so I'll need to find them in Mathlib. Standard names:\n- `Complex.ofReal_tsum`? or generic `ofReal_tsum` — in Mathlib it's `ofReal_tsum` (Mathlib.Analysis.RCLike?). Actually I recall: `RCLike.ofReal_tsum`? Hmm. There's `Complex.ofReal_tsum : ↑(∑' i, f i) = ∑' i, ↑(f i)` — let me search Mathlib quickly.\n- re: `Complex.reCLM` exists (used LiRBound:471 as ℂ →ₗ[ℝ] ℝ — that's reLM? it says Complex.reCLM : ℂ →ₗ[ℝ] ℝ — a LINEAR map, not CLM). For map_tsum: `ContinuousLinearMap.map_tsum`? Hmm — reCLM as →ₗ needs continuity wrapped. There's `Complex.reCLM : ℂ →L[ℝ] ℝ`?? The LiRBound usage shows `Complex.reCLM : ℂ →ₗ[ℝ] ℝ` (linear). For tsum: use `ContinuousLinearMap.map_tsum` with... or simpler: HasSum-based: `(Summable.hasSum hf).map`? \n\nActually the cleanest: `Summable.map_tsum`? Let me just probe Mathlib. Standard: `ContinuousLinearMap.map_tsum (hf : Summable f) : φ (∑' i, f i) = ∑' i, φ (f i)`? Hmm I believe it's `(φ : F →L[𝕜] G).map_tsum : φ (∑' i, f i) = ∑' i, φ (f i)` requiring Summable f. And Complex.reCLM might be both — in Mathlib, `Complex.reCLM : ℂ →L[ℝ] ℝ` IS a continuous linear map (\"CLM\"). The LiRBound usage wrote (Complex.reCLM : ℂ →ₗ[ℝ] ℝ) — coercing CLM to LM. OK so Complex.reCLM is →L ✓.\n\nFor conj: `Complex.conjLIE : ℂ ≃L[ℝ] ℂ`? or conjCLE. `starRingEnd ℂ` is a ring equiv + continuous. For the conj-of-tsum: I'll actually AVOID needing conj-of-tsum entirely by the double-sum trick (sigmaP k = ½(S + S) with the second S reindexed). Let me re-examine: sigmaP k = ∑' ρ (mult/2)((1/ρ)^k + (1/conjρ)^k). Write as (1/2)·[∑ mult(1/ρ)^k + ∑ mult(1/conjρ)^k]? Careful: ∑' ρ (mult/2)(A_ρ + B_ρ) = (1/2)∑' (mult·A_ρ + mult·B_ρ) [tsum const mul] = (1/2)[∑ mult A + ∑ mult B] [tsum_add — needs both summable ✓]. Then ∑ mult B = ∑ mult A via conjEquiv (per-term: mult(conjρ)·(1/conj(conjρ))^k = mult(ρ)(1/ρ)^k — zeroMult_conj + conj conj ✓). So sigmaP k = (1/2)(S + S) = S where S = ∑' mult(1/ρ)^k. NO conj-of-tsum or re bridges! ✓✓ \n\nAnd for k=1 step (e) I needed ∑' mult·(w.re:ℂ) = ∑' mult·w (the conj-reality of S'). Avoid re bridges here too: \n2·sigmaP 1 = ∑' mult·((1/ρ).re + (1/(1−ρ)).re : ℂ)... hmm this has .re inside. Alternative k=1 path avoiding .re entirely:\n\nsigmaP 1 = ∑' ρ (mult/2)(1/ρ + 1/conjρ) = (1/2)[∑ mult/ρ?? — NOT summable. Dead end (that's why the design used re). \n\nAlternative: express via T = ∑' mult/(ρ(1−ρ)) directly: per term: (mult/2)(1/ρ + 1/conjρ) vs (mult/2)(1/ρ + 1/(1−ρ)) = mult/(2ρ(1−ρ)) ✓ summable. So if I can show ∑' ρ (mult/2)(1/ρ + 1/conjρ) = ∑' ρ (mult/2)(1/ρ + 1/(1−ρ)), i.e. ∑' ρ mult·(1/conjρ − 1/(1−ρ)) = 0?? Hmm: 1/conjρ − 1/(1−ρ): not obviously summable either (each ~1/γ). But the DIFFERENCE: 1/conjρ − 1/(1−ρ) = (1−ρ−conjρ)/(conjρ(1−ρ)) = (1−2re)/(conjρ(1−ρ)) — O(1/γ²) ✓ SUMMABLE! And its tsum: reindex by the COMPOSED equiv ρ ↦ conj(1−ρ)?? hmm: consider S'' := ∑' ρ mult·(1/conjρ − 1/(1−ρ)). Under conjEquiv: ∑' ρ mult·(1/ρ − 1/(1−conjρ)); under oneSubEquiv applied to that: ... hmm messy. \n\nCleaner: 2·sigmaP 1 − T = ∑' ρ mult·[(1/ρ + 1/conjρ) − (1/ρ + 1/(1−ρ))] = ∑' ρ mult·[1/conjρ − 1/(1−ρ)] (tsum_sub: needs both summable — sigmaP 1 summable ✓ sigmaSlice_summable; T-family summable ✓). Then ∑' ρ mult·[1/conjρ − 1/(1−ρ)] = 0 by... reindex via conjEquiv: ↦ ∑' ρ mult·[1/ρ − 1/(1−conjρ)] =: U. Reindex via oneSubEquiv: ↦ ∑' ρ mult·[1/(1−ρ) − 1/conjρ] = −(original). So the original = U = −original ⟹ original = 0 ✓!! And each reindex is valid since the family is summable (O(1/γ²): |1−2re| ≤ 1, |conjρ(1−ρ)| = ‖ρ‖‖1−ρ‖ — via the AM-GM split 1/(‖ρ‖‖1−ρ‖) ≤ ½(‖ρ‖⁻² + ‖1−ρ‖⁻²) ✓ summable). \n\nWait — check the reindex computations carefully:\nV := ∑' ρ, mult(ρ)·[1/conjρ − 1/(1−ρ)].\n(i) conjEquiv e₁ (ρ ↦ conjρ): ∑' ρ, f ρ = ∑' ρ, f (e₁ ρ) where f(e₁ ρ) = mult(conjρ)·[1/conj(conjρ) − 1/(1−conjρ)] = mult(ρ)·[1/ρ − 1/(1−conjρ)] (zeroMult_conj, conj conj). So V = ∑' ρ mult·[1/ρ − 1/(1−conjρ)].\n(ii) oneSubEquiv e₂ (ρ ↦ 1−ρ): V = ∑' ρ, mult(1−ρ)·[1/(1−ρ) − 1/(1−conj(1−ρ))] = ∑' ρ, mult(ρ)·[1/(1−ρ) − 1/conjρ] (zeroMult_one_sub; 1−conj(1−ρ) = 1−(1−conjρ) = conjρ). = −V's summand... the summand is mult·[1/(1−ρ) − 1/conjρ] = −mult·[1/conjρ − 1/(1−ρ)] ✓ so V = ∑' (−(that)) = −V ⟹ V = 0 ✓ (tsum_neg).\nGreat — V = 0 with only equiv reindexes, no re/conj-of-tsum bridges anywhere. \n\nThen: 2·sigmaP 1 = T (from V = 0: 2·sigmaP 1 − T = V·... wait: 2·sigmaP 1 = ∑' mult(1/ρ + 1/conjρ); T = ∑' mult(1/ρ + 1/(1−ρ)); 2·sigmaP 1 − T = V ✓ = 0 ⟹ 2·sigmaP 1 = T).\nAnd T = seriesFun 1 − seriesFun 0 = seriesFun 1 (seriesFun 0 = 0; seriesFun 1 = T by tsum_congr per-term ✓).\nsigmaP 1 = T/2 = seriesFun 1/2 = (gFun 1 − B)/2 where gFun 1 = B + seriesFun 1 (§3 continuity).\ngFun 1 = −gFun 0 (FE) and gFun 0 = B (§3) ⟹ seriesFun 1 = −2B ⟹ sigmaP 1 = −B = −gFun 0. ✓✓ NO re bridges AT ALL. \n\nFor k ≥ 2, step (f) per-term at 0 and (g): ∑' ρ, mult·(−1)^{k−1}(k−1)!·(0−ρ)^{−k} = −(k−1)!·sigmaP k: \nper-term: mult·(−1)^{k−1}(k−1)!·(−ρ)^{−k} = −(k−1)!·mult·ρ^{−k}·[sign check]: (−ρ)^{−k} = (−1)^k·ρ^{−k} (zpow of neg: (−ρ)^{m:ℤ}: use `neg_zpow`: (−a)^(n:ℤ) = (−1)^n·a^n — hmm `neg_zpow` signature: for monoid with... it exists: neg_zpow (a : G) (n : ℤ) : (-a)^n = (-1)^n * a^n? For n negative, (−1)^n = ((−1)^{|n|})^{±1} = (−1)^{|n|} since −1 self-inverse ✓. In ℂ: (−1)^(−k:ℤ) = ((−1)^k)⁻¹ = (−1)^k ✓.) So term = mult·(k−1)!·(−1)^{k−1}·(−1)^k·ρ^{−k} = −mult·(k−1)!·ρ^{−k} ((−1)^{2k−1} = −1 ✓ pow_add/neg_one_pow...).\nThen ∑' = −(k−1)!·∑' mult·ρ^{−k} [tsum of −(k−1)!·(mult·ρ^{−k}): Summable.mul_left → tsum_mul_left: ∑' (c·f) = c·∑' f ✓] = −(k−1)!·sigmaP k [via the ½(S+S) lemma ✓].\n\nEverything avoids re/conj-of-tsum. The only tsum utilities: tsum_add, tsum_sub, tsum_mul_left (const), tsum_congr, tsum_zero, tsum_neg, Equiv.tsum_eq, Summable.of_norm_bounded/of_norm, Summable.mul_left, Equiv.summable_iff.\n\nOne more check — the M-test dominator summability for the derivative families: dominator family u ρ := mult(ρ)·C_j/‖ρ‖²... wait actually SummableLocallyUniformlyOn_of_locally_bounded wants a summable ℝ-family bounding ‖term‖. I'll prove `summable_mult_div_normSq : Summable (fun ρ => (zeroMult ρ : ℝ)/‖(ρ:ℂ)‖^2)` once (comparison (9/4)·mult/(1+γ²) + zero_sum_inv_sq — the sigmaSlice_summable pattern at LiSwaps:213-216 shows the base: (WeilEF.zero_sum_inv_sq zetaSeam).mul_left (9/4)). Then everything else mul_left's constants. And for the ‖ρ‖ ≥ δ₀ lower bound: exists_ball_avoid_nontrivialZeros 0 (not IsNontrivialZero 0 — re 0 > 0 fails: ¬ IsNontrivialZero 0: h.2.1 : 0 < (0:ℂ).re = 0 contradiction ✓).\n\nAlso `summable_mult_inv_pow (k ≥ 2)`: ‖mult·(1/ρ)^k‖ = mult·‖ρ‖^{−k} ≤ mult·δ₀^{2−k}·‖ρ‖^{−2}: since ‖ρ‖ ≥ δ₀ > 0: ‖ρ‖^{2−k} ≤ δ₀^{2−k} (k ≥ 2, pow_le_pow_of_nonpos?? for real: ‖ρ‖^{−(k−2)} ≤ δ₀^{−(k−2)} via one_div_le_one_div_of_le / pow_le_pow_left₀ on inverses ✓). ✓\n\nFor the k=1 summability lemmas:\n- `summable_mult_wTerm` : Summable (fun ρ => (zeroMult ρ:ℂ)·(1/((ρ:ℂ)·(1−(ρ:ℂ))))): ‖·‖ = mult/(‖ρ‖‖1−ρ‖) ≤ (mult/2)(‖ρ‖⁻²+‖1−ρ‖⁻²): AM-GM: 1/(ab) ≤ (a⁻²+b⁻²)/2 ✓; summability of the two: first ✓ (summable_mult_div_normSq); second: Summable (fun ρ => mult/‖1−ρ‖²) via oneSubEquiv transfer: Equiv.summable_iff: Summable (f ∘ e₂) ⟺ Summable f with f σ = mult(σ)/‖σ‖²: (f∘e₂) ρ = mult(1−ρ)/‖1−ρ‖² = mult(ρ)/‖1−ρ‖² (zeroMult_one_sub ✓). ✓\n- `summable_mult_vTerm` : Summable (fun ρ => (zeroMult ρ:ℂ)·(1/conjρ − 1/(1−ρ))): norm ≤ mult·|1−2re|/(‖ρ‖‖1−ρ‖) ≤ mult/(‖ρ‖‖1−ρ‖) — via the field identity 1/conjρ − 1/(1−ρ) = (1−ρ−conjρ)/(conjρ(1−ρ)) and |1−ρ−conjρ| = |1−2re| ≤ 1... 1−ρ−conjρ = 1−2re(ρ) ✓ (re conj = re). |1−2re| ≤ 1 since re ∈ (0,1) ✓. Then the AM-GM dominator ✓.\n\nOK — design is complete and tight. Estimated file ~700–1000 lines. Sub-chunks:\n- §0 header + imports.\n- §1 xiL + basic facts (differentiable, xiL_eq, xiL_zero/one, xiL_one_sub, xiL_ne_zero) + isNontrivialZero_one_sub + conjEquiv/oneSubEquiv.\n- §2 gFun_eq (the B + seriesFun identity at good points).\n- §3 values at 0,1: seriesFun_zero, seriesFun_one, gFun_zero, gFun_one, gFun_FE (gFun 1 = −gFun 0).\n- §4 summability lemmas + the reindex lemmas (sigmaP_eq_unpaired for k≥2, sigmaP_one_eq_half_T).\n- §5 the zpow derivative lemma + per-term derivatives + M-test + termwise iteratedDeriv at 0 (k ≥ 2 main).\n- §6 capstone unified.\n\nNow — IMPORTANT process point: per §8.4/8.5, commit at sub-stage boundaries; write artifacts immediately. I'll iterate the file with `lake env lean NguyenRH1/LiMoments.lean` (needs the imports' oleans — LiTightR olean exists? STATE says build green 8762 jobs WITH LiTightR not root-imported — but the audits ran on it, so `lake build NguyenRH1.LiTightR` was run and its olean exists ✓).\n\nAlso per the todo: mark task 1 complete, task 2 (scope) — essentially done now (this design). Let me record the design as a short derivation note? The route change should be documented (D-070) — I'll do that at closure, but actually per \"save artifacts IMMEDIATELY\" I could write the design note now. I'll fold it into the closure journal + D-070. Actually — the design IS substantial (route change from D-066's contour plan). Write D-070 NOW (short), then implement.\n\nUpdate todos and go.","signature":""},{"type":"text","text":"Design is complete and tight. Key findings from the API sweep:\n\n- **No re/conj-of-tsum bridges needed anywhere**: the k≥2 case reduces to sigmaP k = ½(S+S) via the conj-equiv reindex; the k=1 case to V = ∑' mult·(1/conjρ − 1/(1−ρ)) = 0 via the *composed* conj/reflect reindexes (V = −V), with the mixed terms O(1/γ²) hence absolutely summable\n- **xiL entire closed form**: xiL(s) := (s(s−1)/2)·Λ₀(s) − (s−1)/2 + s/2 via Mathlib's `completedRiemannZeta_eq` (Λ₀ entire) — sidesteps removable-singularity proofs; xiL(0) = xiL(1) = 1/2 for free\n- All reindex machinery exists: `isNontrivialZero_conj`, `zeroMult_conj` (LiTightR), `zeroMult_one_sub` (LiReflect), `zeta_reflect_zero` (Zeta23)\n- The termwise-iterated-deriv pattern (`iteratedDerivWithin_tsum` + `SummableLocallyUniformlyOn_of_locally_bounded`) clones from LiDigamma §7–8\n\nLet me file the route-change design note (D-070) first, then implement."},{"type":"tool_use","id":"TodoWrite_47","name":"TodoWrite","input":{"todos":[{"content":"Read D-066 design + journal-035/036 gotchas","status":"completed","activeForm":"Reading D-066 design + banked gotchas"},{"content":"Scope ii′-3b: exact statement + proof skeleton of the contour moments","status":"completed","activeForm":"Scoping ii′-3b moment theorem"},{"content":"File D-070 route-change design note","status":"in_progress","activeForm":"Filing D-070 route-change note"},{"content":"LiMoments §1: xiL + equivs + basic facts","status":"pending","activeForm":"Building LiMoments §1 (xiL)"},{"content":"LiMoments §2: gFun = B + seriesFun at good points","status":"pending","activeForm":"Building LiMoments §2 (gFun identity)"},{"content":"LiMoments §3: values at 0,1 + FE sign","status":"pending","activeForm":"Building LiMoments §3 (evaluations)"},{"content":"LiMoments §4: summability + reindex lemmas (k=1)","status":"pending","activeForm":"Building LiMoments §4 (k=1 rearrangement)"},{"content":"LiMoments §5: termwise iterated deriv at 0 (k≥2)","status":"pending","activeForm":"Building LiMoments §5 (k≥2 termwise)"},{"content":"LiMoments §6: unified capstone sigmaP_eq","status":"pending","activeForm":"Building LiMoments §6 (capstone)"},{"content":"Axiom audit + full build green + root import","status":"pending","activeForm":"Running axiom audit + full build"},{"content":"Session-037 archive closure (journal, db, STATE, commit)","status":"pending","activeForm":"Closing session 037 archive"}]},"extra_content":null}]