Current task: —

← Session 33 — ii′-3b/3c crux + F-D finding; Lagarias letter package

#1969 assistant 2026-08-25 05:38:15.785 UTC · 204→5948 tok open ⤢
thinking (16350 chars)
I was building ii′-6-b. I have all the forms: - RectangleBorder (z w) = [[z.re, w.re]] ×ℂ {z.im} ∪ {z.re} ×ℂ [[z.im, w.im]] ∪ [[z.re, w.re]] ×ℂ {w.im} ∪ {w.re} ×ℂ [[z.im, w.im]] — four sides: bottom, left, top, right. - Rectangle z w — let me check: `Rectangle z w := [[z.re, w.re]] ×ℂ [[z.im, w.im]]` presumably. Now write LiAssembly.lean with: §1: sides identity (sf_abs_le_rectInt_add_sum) §2: the bridge (zeroTerm_norm_le_four_FAlt) Plus in LiContour.lean: the two perimeter Props + the wide pigeonhole. Let me start with the LiContour additions (perimeter Props + wide pigeonhole). Append after NoLowZeros/two_le_C0hat region or after exists_zero_avoiding_T. The wide pigeonhole needs the three-window count — build: ```lean /-- The wide ordinate window: nontrivial zeros with ordinate in [a−1, a+2]. -/ def zeroWindowWide (a : ℝ) : Set ℂ := {ρ | IsNontrivialZero ρ ∧ a - 1 ≤ ρ.im ∧ ρ.im ≤ a + 2} theorem zeroWindowWide_finite (a : ℝ) : (zeroWindowWide a).Finite := by apply Set.Finite.subset (zerosIn_finite (a - 2) (a + 2)) intro ρ hρ refine ⟨hρ.1, ?_, hρ.2.2⟩ linarith [hρ.2.1] ``` Hmm — zerosIn_finite's form: from zeroWindow_finite: `zerosIn_finite (a - 1) (a + 1)` with members ⟨hρ.1 (zero), lower-bound, upper-bound⟩. The refinement: zerosIn_finite t1 t2 gives zeros with t1 ≤ im ≤ t2+1? From zeroWindow_finite: window [a, a+1] ⊆ zerosIn_finite (a−1) (a+1) with the proof refine ⟨hρ.1, ?_, hρ.2.2⟩; linarith [hρ.2.1] — so zerosIn_finite A B's membership is: zero ∧ A ≤ im ∧ im ≤ B+1? The refine gives ⟨zero, ?_, hρ.2.2⟩ where hρ.2.2 : im ≤ a+1 (the window's upper). And ?_ is discharged by linarith [hρ.2.1] (hρ.2.1 : a ≤ im). So zerosIn_finite A B membership components: (zero, A ≤ im, im ≤ B+1)?? For window [a, a+1] via zerosIn_finite (a−1) (a+1): components (a−1 ≤ im [from hρ.2.1: a ≤ im via linarith], im ≤ (a+1)+1 = a+2?? but hρ.2.2 : im ≤ a+1 is passed directly — so the third component is im ≤ a+1 = (a+1)... hmm inconsistent. Let me look at zerosIn_finite's exact signature in Zeta23. Actually — simpler: zeroWindowWide ⊆ zeroWindow (a−1) ∪ zeroWindow a ∪ zeroWindow (a+1), each finite ✓ no zerosIn_finite needed: ```lean theorem zeroWindowWide_finite (a : ℝ) : (zeroWindowWide a).Finite := by apply Set.Finite.subset ((zeroWindow_finite (a - 1)).union ((zeroWindow_finite a).union (zeroWindow_finite (a + 1)))) intro ρ hρ simp only [Set.mem_union, zeroWindow, Set.mem_setOf_eq] by_cases h1 : a - 1 ≤ ρ.im · left; exact ⟨hρ.1, h1, hρ.2.2⟩ -- wait need im ≤ (a−1)+1 = a: not given ... ``` Hmm — zeroWindowWide a : a−1 ≤ im ≤ a+2. Case split: im ≤ a → zeroWindow (a−1) (a−1 ≤ im ≤ a = (a−1)+1 ✓); a ≤ im ≤ a+1 → zeroWindow a ✓; a+1 ≤ im ≤ a+2 → zeroWindow (a+1) ✓. By trichotomy: ```lean theorem zeroWindowWide_finite (a : ℝ) : (zeroWindowWide a).Finite := by apply Set.Finite.subset ((zeroWindow_finite (a - 1)).union ((zeroWindow_finite a).union (zeroWindow_finite (a + 1)))) intro ρ hρ obtain ⟨hz, hlo, hhi⟩ := hρ by_cases h1 : ρ.im ≤ a · exact Or.inl ⟨hz, hlo, h1⟩ · by_cases h2 : ρ.im ≤ a + 1 · exact Or.inr (Or.inl ⟨hz, by linarith, h2⟩) · exact Or.inr (Or.inr ⟨hz, by linarith, hhi⟩) ``` Wait — the union membership: the set is zeroWindow (a−1) ∪ (zeroWindow a ∪ zeroWindow (a+1)) — membership forms ✓ as written (the ⊆ relation via Set.Finite.subset: goal ρ ∈ zeroWindow (a−1) ∪ (zeroWindow a ∪ zeroWindow (a+1))). The union lemmas: mem_union. My exacts give the Prop forms — need Set.mem_union.mpr or the direct: `Or.inl ⟨hz, hlo, h1⟩` — membership in a union of SETS (not lists): ρ ∈ A ∪ B ↔ ρ ∈ A ∨ ρ ∈ B ✓ defeq to Or — exact Or.inl works ✓. Then the count: ```lean theorem zeroWindowWide_card_le (hZC : ZeroCountProp) {a : ℝ} (ha : 3 ≤ a) : ((zeroWindowWide_finite a).toFinset.card : ℝ) ≤ 3 * C0hat (a + 2) := by -- the mult-sum over the wide window ≤ sum of the three unit windows have hsub : (zeroWindowWide_finite a).toFinset ⊆ (zeroWindow_finite (a - 1)).toFinset ∪ ((zeroWindow_finite a).toFinset ∪ (zeroWindow_finite (a + 1)).toFinset) := by intro ρ hρ have hmem : ρ ∈ zeroWindowWide a := (zeroWindowWide_finite a).mem_toFinset.mpr hρ obtain ⟨hz, hlo, hhi⟩ := hmem by_cases h1 : ρ.im ≤ a · exact Finset.mem_union.mpr (Or.inl ((zeroWindow_finite (a-1)).mem_toFinset.mpr ⟨hz, hlo, h1⟩)) · by_cases h2 : ρ.im ≤ a + 1 · exact Finset.mem_union.mpr (Or.inr (Finset.mem_union.mpr (Or.inl ((zeroWindow_finite a).mem_toFinset.mpr ⟨hz, by linarith, h2⟩)))) · exact Finset.mem_union.mpr (Or.inr (Finset.mem_union.mpr (Or.inr ((zeroWindow_finite (a+1)).mem_toFinset.mpr ⟨hz, by linarith, hhi⟩)))) have hsum_le : (((zeroWindowWide_finite a).toFinset.sum fun ρ => zeroMult ρ) : ℝ) ≤ 3 * C0hat (a + 2) := by have h1 := Finset.sum_le_sum_of_subset_of_nonneg hsub (fun ρ _ => Nat.cast_nonneg _) have h2 := Finset.sum_union ... -- messy; simpler: sum over union ≤ sum of parts (with double counting allowed): Finset.sum_union_inter? ``` Hmm — the union sum with overlaps: sum over A ∪ B ≤ sum A + sum B for nonneg (Finset.sum_union_inter or the direct: sum over the union ≤ sum of the three via `Finset.sum_le_sum_of_subset_of_nonneg` applied... no — sum over union = sum A + sum B − sum (A∩B) ≤ sum A + sum B (nonneg terms) — there's `Finset.sum_union_inter` : sum (s ∪ t) + sum (s ∩ t) = sum s + sum t. So sum (s ∪ t) ≤ sum s + sum t (nonneg intersection sum ≥ 0). For triple: ≤ sum A + sum B + sum C. Each ≤ C0hat(a), C0hat(a+1), C0hat(a+2) via hZC (a−1 ≥ 2 ✓ ha : 3 ≤ a; a ≥ 2 ✓; a+1 ≥ 2 ✓). Then C0hat(a) ≤ C0hat(a+2) and C0hat(a+1) ≤ C0hat(a+2) via C0hat_mono — does C0hat_mono exist? From LiGapCircles (5e-i used C0hat_mono). Let me assume `C0hat_mono : Monotone C0hat` or similar — grep later. Then card ≤ Σ mult (same pattern as exists_zero_avoiding_T's hWFcard) ≤ 3·C0hat(a+2). Then exists_zero_avoiding_T_wide clones exists_zero_avoiding_T: ```lean theorem exists_zero_avoiding_T_wide (hZC : ZeroCountProp) {a : ℝ} (ha : 3 ≤ a) : ∃ T : ℝ, a ≤ T ∧ T ≤ a + 1 ∧ ∀ ρ : ℂ, IsNontrivialZero ρ → a - 1 < ρ.im → ρ.im < a + 2 → 1 / (9 * C0hat (a + 2)) ≤ |ρ.im - T| := by classical have hfin := zeroWindowWide_finite a set WF : Finset ℂ := hfin.toFinset with hWF_def have hWFmem : ∀ ρ : ℂ, ρ ∈ WF ↔ ρ ∈ zeroWindowWide a := fun ρ => Set.Finite.mem_toFinset hfin set S : Finset ℝ := WF.image Complex.im with hS_def have hScard : S.card ≤ WF.card := Finset.card_image_le have hWFcard : (WF.card : ℝ) ≤ 3 * C0hat (a + 2) := by have h1 := zeroWindowWide_card_le hZC ha -- h1 : card ≤ 3 C0hat — via the mult route exact h1 obtain ⟨T, hT1, hT2, hT3⟩ := exists_avoiding_midpoint a S hScard refine ⟨T, hT1, hT2, fun ρ hρ hρlo hρhi => ?_⟩ have hρmem : ρ ∈ WF := (hWFmem ρ).mpr ⟨hρ, by linarith, by linarith⟩ have himmem : ρ.im ∈ S := Finset.mem_image.mpr ⟨ρ, hρmem, rfl⟩ have h1 := hT3 ρ.im himmem have hC : 2 ≤ C0hat (a + 2) := two_le_C0hat (by linarith) have hpos : (0:ℝ) < 2 * ((WF.card : ℝ) + 1) := by positivity have hle : 2 * ((WF.card : ℝ) + 1) ≤ 9 * C0hat (a + 2) := by linarith [hWFcard, hC] exact le_trans (one_div_le_one_div_of_le hpos hle) h1 ``` Wait — zeroWindowWide_card_le should return the CARD bound (not the mult-sum bound): name it appropriately: the proof gives (card : ℝ) ≤ 3·C0hat(a+2) via card ≤ Σ mult ≤ ... Let me restructure zeroWindowWide_card_le to produce exactly the card bound: ```lean theorem zeroWindowWide_card_le (hZC : ZeroCountProp) {a : ℝ} (ha : 3 ≤ a) : ((zeroWindowWide_finite a).toFinset.card : ℝ) ≤ 3 * C0hat (a + 2) := by have hsub : ... (as above) have hsum : (((zeroWindowWide_finite a).toFinset.sum fun ρ => zeroMult ρ) : ℝ) ≤ C0hat a + C0hat (a + 1) + C0hat (a + 2) := by -- via sum_union_inter chain + hZC ×3 ... ``` Hmm — the sum over the wide toFinset ≤ sum over the union (subset, nonneg) ≤ sum of the three parts (union-inter). Let me write it carefully: ```lean have hsum1 : (∑ ρ ∈ (zeroWindowWide_finite a).toFinset, (zeroMult ρ : ℝ)) ≤ ∑ ρ ∈ ((zeroWindow_finite (a - 1)).toFinset ∪ ((zeroWindow_finite a).toFinset ∪ (zeroWindow_finite (a + 1)).toFinset)), (zeroMult ρ : ℝ) := Finset.sum_le_sum_of_subset_of_nonneg hsub (fun ρ _ => Nat.cast_nonneg _) have hsum2 : (∑ ρ ∈ ((zeroWindow_finite (a - 1)).toFinset ∪ ((zeroWindow_finite a).toFinset ∪ (zeroWindow_finite (a + 1)).toFinset)), (zeroMult ρ : ℝ)) ≤ (∑ ρ ∈ (zeroWindow_finite (a - 1)).toFinset, (zeroMult ρ : ℝ)) + ((∑ ρ ∈ (zeroWindow_finite a).toFinset, (zeroMult ρ : ℝ)) + (∑ ρ ∈ (zeroWindow_finite (a + 1)).toFinset, (zeroMult ρ : ℝ))) := by have hu1 := Finset.sum_union_inter (s := (zeroWindow_finite (a - 1)).toFinset) (t := (zeroWindow_finite a).toFinset ∪ (zeroWindow_finite (a + 1)).toFinset) (f := fun ρ => (zeroMult ρ : ℝ)) have hnn : (0 : ℝ) ≤ ∑ ρ ∈ (zeroWindow_finite (a - 1)).toFinset ∩ ((zeroWindow_finite a).toFinset ∪ (zeroWindow_finite (a + 1)).toFinset), (zeroMult ρ : ℝ) := Finset.sum_nonneg (fun ρ _ => Nat.cast_nonneg _) have hu2 := Finset.sum_union_inter (s := (zeroWindow_finite a).toFinset) (t := (zeroWindow_finite (a + 1)).toFinset) (f := fun ρ => (zeroMult ρ : ℝ)) have hnn2 : (0 : ℝ) ≤ ∑ ρ ∈ (zeroWindow_finite a).toFinset ∩ (zeroWindow_finite (a + 1)).toFinset, (zeroMult ρ : ℝ) := Finset.sum_nonneg (fun ρ _ => Nat.cast_nonneg _) linarith ``` Finset.sum_union_inter : ∑ (s ∪ t) + ∑ (s ∩ t) = ∑ s + ∑ t ✓ (exists as Finset.sum_union_inter? — from LiTightR/session-035 usage: exists_avoiding_midpoint... I recall `Finset.sum_union_inter` being used. ✓) Then hZC (a−1) (by linarith : 2 ≤ a−1), hZC a (by linarith), hZC (a+1) (by linarith) give the three ≤ C0hat(a), C0hat(a+1), C0hat(a+2). Then C0hat monotone: C0hat(a) ≤ C0hat(a+2), C0hat(a+1) ≤ C0hat(a+2). Check C0hat_mono exists — from LiGapCircles. grep. Then total ≤ 3·C0hat(a+2). And card ≤ Σ mult: the pattern from exists_zero_avoiding_T's hWFcard. OK — also check `C0hat_mono`. Then the perimeter Props: ```lean /-- The global ordinate window: nontrivial zeros with 0 < γ ≤ T. -/ def zeroGlobalWindow (T : ℝ) : Set ℂ := {ρ | IsNontrivialZero ρ ∧ 0 < ρ.im ∧ ρ.im ≤ T} theorem zeroGlobalWindow_finite (T : ℝ) : (zeroGlobalWindow T).Finite := by apply Set.Finite.subset (zerosIn_finite 0 T) intro ρ hρ refine ⟨hρ.1, by linarith [hρ.2.1], hρ.2.2⟩ ``` Hmm — zerosIn_finite 0 T's membership form — need the exact signature. From zeroWindow_finite: zerosIn_finite (a−1) (a+1) gives ⟨zero, A ≤ im, im ≤ B+1⟩?? The refine passed hρ.2.2 : im ≤ a+1 as the third — if zerosIn_finite A B's third component were im ≤ B+1 = a+2, hρ.2.2 : im ≤ a+1 wouldn't typecheck directly... but it did (zeroWindow_finite builds). So the third component IS im ≤ B+... hmm — wait in zeroWindow_finite: `refine ⟨hρ.1, ?_, hρ.2.2⟩; linarith [hρ.2.1]` — hρ.2.2 : ρ.im ≤ a + 1 is given as the third component. So zerosIn_finite (a−1) (a+1) members have im ≤ a+1 = (a+1)... so zerosIn_finite A B's upper is im ≤ B? For A = a−1, B = a+1: im ≤ a+1 = B ✓ and lower A = a−1 ≤ im ✓ (discharged by linarith from hρ.2.1 : a ≤ im). So zerosIn_finite A B = zeros with A ≤ im ≤ B? But then zeroWindow [a, a+1] ⊆ zerosIn (a−1, a+1): im ∈ [a, a+1] ⊆ [a−1, a+1] ✓ consistent. So zerosIn_finite A B : {zeros ∧ A ≤ im ∧ im ≤ B}? Hmm but wait — zerosIn might be about |im| or about the zero-counting region (zerosIn a b in PNT context = zeros ρ with a ≤ im ≤ b, any re). OK for zeroGlobalWindow: zerosIn_finite 0 T : zeros with 0 ≤ im ≤ T: my members have 0 < im: linarith ✓. Let me grep zerosIn_finite's signature to be sure. Also the perimeter Props: ```lean /-- [PERIMETER — Trudgian 2014 N(T) global form, D-062 §4 / D-071 §3, user-approved session 038] The global zero-count bound: the multiplicity-weighted count of nontrivial zeros with 0 < γ ≤ T is at most FAlt T (T ≥ 2). This is the un-specialized form of the declared Trudgian source (ZeroCountProp is its unit-window corollary); the unit form does NOT imply the global form at the FAlt level (summing unit windows gives 0.433·T·log T > (1/2π)·T·log T). Used by the ii′-6 bridge (the both-signs count is 2× the one-sign count by conj symmetry). -/ def ZeroCountGlobalProp : Prop := ∀ T : ℝ, 2 ≤ T → (((zeroGlobalWindow_finite T).toFinset.sum fun ρ => zeroMult ρ) : ℝ) ≤ FAlt T /-- [PERIMETER — M₀ interval certificate, D-062 §4 L6 / D-071 §3, user-approved session 038] ‖ζ′/ζ(−5/2 + it)‖ ≤ 1.3352 for |t| ≤ 10 (E-023 grid + sampled-Lipschitz ×2; E-023b acb upgrade optional). Used by the I_III short piece. -/ def MZeroProp : Prop := ∀ t : ℝ, |t| ≤ 10 → ‖logDeriv riemannZeta (-(5 / 2) + t * Complex.I)‖ ≤ 1.3352 ``` Wait — (-(5/2) + t * Complex.I) : ℂ — the -(5/2) needs to be ℂ: `(-(5 / 2 : ℝ) : ℂ)`? Write `(-(5 / 2 : ℝ) : ℂ) + (t : ℝ) * Complex.I` — the re is −5/2 ✓. Hmm — (−(5/2) : ℂ) would be read as negation of the ℂ numeral — same thing. Let me write `(-5 / 2 : ℂ)`? re(−5/2 : ℂ) = −5/2 ✓. Cleaner: `(-5 / 2 : ℂ) + (t : ℝ) * Complex.I`. Where to put these: LiContour.lean after NoLowZeros/two_le_C0hat (§1) — but FAlt is in LiSkeleton (imported ✓ since C0hat is used). Now LiAssembly.lean — the sides identity + bridge. The bridge needs the both-signs decomposition: {nontrivial, |im| ≤ T} = {0 < im ≤ T} ∪ {−T ≤ im < 0} ∪ (im = 0 excluded by hNLZ). And the conj bijection between them (zeroMult_conj). The sum over the both-signs set = 2 × sum over the one-sign set (via the conj equiv — the tsum/Finset reindex: for FINSET sums this time (Sz is a Finset) — the conj map on the finset {−T ≤ im < 0} → {0 < im ≤ T} is a bijection with zeroMult_conj: sum over negative side = sum over positive side (via Finset.sum_image or the equiv reindex). This is the finicky part. Alternative simpler accounting: ‖Σ_nontriv‖ ≤ Σ mult·2 = 2·Σ mult. And Σ mult over both-signs = Σ mult over {0<γ≤T} + Σ over {−T≤γ<0} (disjoint union) = 2·Σ over {0<γ≤T} (conj bijection) ≤ 2·FAlt T. So ‖Σ‖ ≤ 4·FAlt T. For the Finset formulation: Sz's nontrivial part = (zeroGlobalBoth T).toFinset where zeroGlobalBoth T := {ρ | IsNontrivialZero ρ ∧ |ρ.im| ≤ T ∧ ρ.im ≠ 0}... hmm — with hNLZ: |im| ≥ 14 so im ≠ 0 automatic; |im| ≤ T ⟺ (0 < im ≤ T) ∨ (−T ≤ im < 0). Actually — do I even need the bridge separated from the sides? The sides identity gives |Sf n| ≤ ‖RectInt‖ + ‖Σ‖. The bridge bounds ‖Σ‖. Then 6-c bounds ‖RectInt‖ by the four sides. The fold (6-d) assembles. For the bridge, define the Sz finset explicitly: Sz := (zeroBothWindow T).toFinset ∪ {−2} where zeroBothWindow T := {ρ | IsNontrivialZero ρ ∧ |ρ.im| ≤ T}. The characterization for rectInt'_Jlag: s ∈ Sz ↔ s ∈ Rectangle z w ∧ zetaA s = 0 — need: zetaA s = 0 ∧ inside ⟺ (nontrivial ∧ |im| ≤ T) ∨ s = −2: - zetaA s = 0 (s ≠ 1) ⟺ ζ s = 0 (zetaA_apply; s = 1 ∉ inside anyway since... 1 IS inside the rectangle! But zetaA 1 = 1 ≠ 0 ✓ so s ≠ 1 from zetaA s = 0 via zetaA_one). - ζ s = 0 ⟹ classification: nontrivial ∨ s = 0 ∨ s = −2n. - inside: s = 0: zetaA 0 = 1/2 ≠ 0 ✓ excluded. s = −2n, n ≥ 1: inside ⟺ −2n ∈ (−5/2, 2√n]×[−T,T]: re = −2n: −5/2 ≤ −2n ⟹ n = 1: −2 ✓ inside (re −2 ∈ [−5/2, 2√n] ✓ im 0 ∈ [−T, T] ✓); n ≥ 2: re ≤ −4 < −5/2 ✗ outside. - nontrivial: inside ⟺ |im| ≤ T: re ∈ (0,1) ⊆ (−5/2, 2√n) ⟸ need 1 < 2√n (n ≥ 1 ✓) and 0 > −5/2 ✓; im: |im| ≤ T ⟺ −T ≤ im ≤ T ✓ inside. So the characterization holds with Sz = (zeroBothWindow T).toFinset ∪ {−2} — PROVIDED −2 ∉ (zeroBothWindow T).toFinset (true: −2 not nontrivial — re = −2 ∉ (0,1)). The Rectangle membership: Rectangle z w = [[z.re, w.re]] ×ℂ [[z.im, w.im]] (from the Rectangle def — check: `Rectangle z w := [[z.re, w.re]] ×ℂ [[z.im, w.im]]`? The symm lemma says Rectangle z w = Rectangle w z via uIcc_comm — consistent with [[z.re, w.re]] ×ℂ [[z.im, w.im]]). Membership: s ∈ Rectangle z w ↔ re s ∈ [[z.re, w.re]] ∧ im s ∈ [[z.im, w.im]] — via the mem lemmas (Complex.mem_reProdIm or similar — rectangleBorder_subset_rectangle used `hsR : s ∈ Rectangle z w := rectangleBorder_subset_rectangle z w hs` and the proof obtained ⟨h1, h2⟩ := hmem and simpa [Set.uIcc_of_le hre] — so membership IS a pair (re ∈ uIcc, im ∈ uIcc) ✓). OK — the full design is in hand. This is a decent chunk of Lean (~400-500 lines for ii′-6-b). Let me write LiContour additions first, build-check, then LiAssembly.lean.
All forms confirmed. Writing the LiContour additions first (perimeter Props + wide pigeonhole).
tool: Bash
input
{
  "command": "cd D:/Python/Quantum/zeta-23-lean && grep -rn \"theorem zerosIn_finite\\|lemma zerosIn_finite\" --include=\"*.lean\" Zeta23/ | head -2 && grep -rn \"C0hat_mono\" D:/Python/Quantum/research/lean/NguyenRH1/NguyenRH1/*.lean | head -3",
  "description": "Check zerosIn_finite + C0hat_mono signatures"
}
raw content_json (database row)
[{"type":"thinking","thinking":"I was building ii′-6-b. I have all the forms:\n- RectangleBorder (z w) = [[z.re, w.re]] ×ℂ {z.im} ∪ {z.re} ×ℂ [[z.im, w.im]] ∪ [[z.re, w.re]] ×ℂ {w.im} ∪ {w.re} ×ℂ [[z.im, w.im]] — four sides: bottom, left, top, right.\n- Rectangle z w — let me check: `Rectangle z w := [[z.re, w.re]] ×ℂ [[z.im, w.im]]` presumably.\n\nNow write LiAssembly.lean with:\n§1: sides identity (sf_abs_le_rectInt_add_sum)\n§2: the bridge (zeroTerm_norm_le_four_FAlt)\n\nPlus in LiContour.lean: the two perimeter Props + the wide pigeonhole.\n\nLet me start with the LiContour additions (perimeter Props + wide pigeonhole). Append after NoLowZeros/two_le_C0hat region or after exists_zero_avoiding_T. The wide pigeonhole needs the three-window count — build:\n\n```lean\n/-- The wide ordinate window: nontrivial zeros with ordinate in [a−1, a+2]. -/\ndef zeroWindowWide (a : ℝ) : Set ℂ :=\n  {ρ | IsNontrivialZero ρ ∧ a - 1 ≤ ρ.im ∧ ρ.im ≤ a + 2}\n\ntheorem zeroWindowWide_finite (a : ℝ) : (zeroWindowWide a).Finite := by\n  apply Set.Finite.subset (zerosIn_finite (a - 2) (a + 2))\n  intro ρ hρ\n  refine ⟨hρ.1, ?_, hρ.2.2⟩\n  linarith [hρ.2.1]\n```\n\nHmm — zerosIn_finite's form: from zeroWindow_finite: `zerosIn_finite (a - 1) (a + 1)` with members ⟨hρ.1 (zero), lower-bound, upper-bound⟩. The refinement: zerosIn_finite t1 t2 gives zeros with t1 ≤ im ≤ t2+1? From zeroWindow_finite: window [a, a+1] ⊆ zerosIn_finite (a−1) (a+1) with the proof refine ⟨hρ.1, ?_, hρ.2.2⟩; linarith [hρ.2.1] — so zerosIn_finite A B's membership is: zero ∧ A ≤ im ∧ im ≤ B+1? The refine gives ⟨zero, ?_, hρ.2.2⟩ where hρ.2.2 : im ≤ a+1 (the window's upper). And ?_ is discharged by linarith [hρ.2.1] (hρ.2.1 : a ≤ im). So zerosIn_finite A B membership components: (zero, A ≤ im, im ≤ B+1)?? For window [a, a+1] via zerosIn_finite (a−1) (a+1): components (a−1 ≤ im [from hρ.2.1: a ≤ im via linarith], im ≤ (a+1)+1 = a+2?? but hρ.2.2 : im ≤ a+1 is passed directly — so the third component is im ≤ a+1 = (a+1)... hmm inconsistent. Let me look at zerosIn_finite's exact signature in Zeta23.\n\nActually — simpler: zeroWindowWide ⊆ zeroWindow (a−1) ∪ zeroWindow a ∪ zeroWindow (a+1), each finite ✓ no zerosIn_finite needed:\n\n```lean\ntheorem zeroWindowWide_finite (a : ℝ) : (zeroWindowWide a).Finite := by\n  apply Set.Finite.subset ((zeroWindow_finite (a - 1)).union\n    ((zeroWindow_finite a).union (zeroWindow_finite (a + 1))))\n  intro ρ hρ\n  simp only [Set.mem_union, zeroWindow, Set.mem_setOf_eq]\n  by_cases h1 : a - 1 ≤ ρ.im\n  · left; exact ⟨hρ.1, h1, hρ.2.2⟩  -- wait need im ≤ (a−1)+1 = a: not given\n  ...\n```\nHmm — zeroWindowWide a : a−1 ≤ im ≤ a+2. Case split: im ≤ a → zeroWindow (a−1) (a−1 ≤ im ≤ a = (a−1)+1 ✓); a ≤ im ≤ a+1 → zeroWindow a ✓; a+1 ≤ im ≤ a+2 → zeroWindow (a+1) ✓. By trichotomy:\n\n```lean\ntheorem zeroWindowWide_finite (a : ℝ) : (zeroWindowWide a).Finite := by\n  apply Set.Finite.subset ((zeroWindow_finite (a - 1)).union\n    ((zeroWindow_finite a).union (zeroWindow_finite (a + 1))))\n  intro ρ hρ\n  obtain ⟨hz, hlo, hhi⟩ := hρ\n  by_cases h1 : ρ.im ≤ a\n  · exact Or.inl ⟨hz, hlo, h1⟩\n  · by_cases h2 : ρ.im ≤ a + 1\n    · exact Or.inr (Or.inl ⟨hz, by linarith, h2⟩)\n    · exact Or.inr (Or.inr ⟨hz, by linarith, hhi⟩)\n```\nWait — the union membership: the set is zeroWindow (a−1) ∪ (zeroWindow a ∪ zeroWindow (a+1)) — membership forms ✓ as written (the ⊆ relation via Set.Finite.subset: goal ρ ∈ zeroWindow (a−1) ∪ (zeroWindow a ∪ zeroWindow (a+1))). The union lemmas: mem_union. My exacts give the Prop forms — need Set.mem_union.mpr or the direct: `Or.inl ⟨hz, hlo, h1⟩` — membership in a union of SETS (not lists): ρ ∈ A ∪ B ↔ ρ ∈ A ∨ ρ ∈ B ✓ defeq to Or — exact Or.inl works ✓.\n\nThen the count:\n```lean\ntheorem zeroWindowWide_card_le (hZC : ZeroCountProp) {a : ℝ} (ha : 3 ≤ a) :\n    ((zeroWindowWide_finite a).toFinset.card : ℝ) ≤ 3 * C0hat (a + 2) := by\n  -- the mult-sum over the wide window ≤ sum of the three unit windows\n  have hsub : (zeroWindowWide_finite a).toFinset ⊆\n      (zeroWindow_finite (a - 1)).toFinset ∪\n        ((zeroWindow_finite a).toFinset ∪ (zeroWindow_finite (a + 1)).toFinset) := by\n    intro ρ hρ\n    have hmem : ρ ∈ zeroWindowWide a := (zeroWindowWide_finite a).mem_toFinset.mpr hρ\n    obtain ⟨hz, hlo, hhi⟩ := hmem\n    by_cases h1 : ρ.im ≤ a\n    · exact Finset.mem_union.mpr (Or.inl ((zeroWindow_finite (a-1)).mem_toFinset.mpr ⟨hz, hlo, h1⟩))\n    · by_cases h2 : ρ.im ≤ a + 1\n      · exact Finset.mem_union.mpr (Or.inr (Finset.mem_union.mpr (Or.inl\n          ((zeroWindow_finite a).mem_toFinset.mpr ⟨hz, by linarith, h2⟩))))\n      · exact Finset.mem_union.mpr (Or.inr (Finset.mem_union.mpr (Or.inr\n          ((zeroWindow_finite (a+1)).mem_toFinset.mpr ⟨hz, by linarith, hhi⟩))))\n  have hsum_le : (((zeroWindowWide_finite a).toFinset.sum fun ρ => zeroMult ρ) : ℝ) ≤\n      3 * C0hat (a + 2) := by\n    have h1 := Finset.sum_le_sum_of_subset_of_nonneg hsub (fun ρ _ => Nat.cast_nonneg _)\n    have h2 := Finset.sum_union ... -- messy; simpler: sum over union ≤ sum of parts (with double counting allowed): Finset.sum_union_inter? \n```\nHmm — the union sum with overlaps: sum over A ∪ B ≤ sum A + sum B for nonneg (Finset.sum_union_inter or the direct: sum over the union ≤ sum of the three via `Finset.sum_le_sum_of_subset_of_nonneg` applied... no — sum over union = sum A + sum B − sum (A∩B) ≤ sum A + sum B (nonneg terms) — there's `Finset.sum_union_inter` : sum (s ∪ t) + sum (s ∩ t) = sum s + sum t. So sum (s ∪ t) ≤ sum s + sum t (nonneg intersection sum ≥ 0). For triple: ≤ sum A + sum B + sum C. Each ≤ C0hat(a), C0hat(a+1), C0hat(a+2) via hZC (a−1 ≥ 2 ✓ ha : 3 ≤ a; a ≥ 2 ✓; a+1 ≥ 2 ✓). Then C0hat(a) ≤ C0hat(a+2) and C0hat(a+1) ≤ C0hat(a+2) via C0hat_mono — does C0hat_mono exist? From LiGapCircles (5e-i used C0hat_mono). Let me assume `C0hat_mono : Monotone C0hat` or similar — grep later.\n\nThen card ≤ Σ mult (same pattern as exists_zero_avoiding_T's hWFcard) ≤ 3·C0hat(a+2).\n\nThen exists_zero_avoiding_T_wide clones exists_zero_avoiding_T:\n```lean\ntheorem exists_zero_avoiding_T_wide (hZC : ZeroCountProp) {a : ℝ} (ha : 3 ≤ a) :\n    ∃ T : ℝ, a ≤ T ∧ T ≤ a + 1 ∧\n      ∀ ρ : ℂ, IsNontrivialZero ρ → a - 1 < ρ.im → ρ.im < a + 2 →\n        1 / (9 * C0hat (a + 2)) ≤ |ρ.im - T| := by\n  classical\n  have hfin := zeroWindowWide_finite a\n  set WF : Finset ℂ := hfin.toFinset with hWF_def\n  have hWFmem : ∀ ρ : ℂ, ρ ∈ WF ↔ ρ ∈ zeroWindowWide a :=\n    fun ρ => Set.Finite.mem_toFinset hfin\n  set S : Finset ℝ := WF.image Complex.im with hS_def\n  have hScard : S.card ≤ WF.card := Finset.card_image_le\n  have hWFcard : (WF.card : ℝ) ≤ 3 * C0hat (a + 2) := by\n    have h1 := zeroWindowWide_card_le hZC ha\n    -- h1 : card ≤ 3 C0hat — via the mult route\n    exact h1\n  obtain ⟨T, hT1, hT2, hT3⟩ := exists_avoiding_midpoint a S hScard\n  refine ⟨T, hT1, hT2, fun ρ hρ hρlo hρhi => ?_⟩\n  have hρmem : ρ ∈ WF := (hWFmem ρ).mpr ⟨hρ, by linarith, by linarith⟩\n  have himmem : ρ.im ∈ S := Finset.mem_image.mpr ⟨ρ, hρmem, rfl⟩\n  have h1 := hT3 ρ.im himmem\n  have hC : 2 ≤ C0hat (a + 2) := two_le_C0hat (by linarith)\n  have hpos : (0:ℝ) < 2 * ((WF.card : ℝ) + 1) := by positivity\n  have hle : 2 * ((WF.card : ℝ) + 1) ≤ 9 * C0hat (a + 2) := by\n    linarith [hWFcard, hC]\n  exact le_trans (one_div_le_one_div_of_le hpos hle) h1\n```\nWait — zeroWindowWide_card_le should return the CARD bound (not the mult-sum bound): name it appropriately: the proof gives (card : ℝ) ≤ 3·C0hat(a+2) via card ≤ Σ mult ≤ ... Let me restructure zeroWindowWide_card_le to produce exactly the card bound:\n```lean\ntheorem zeroWindowWide_card_le (hZC : ZeroCountProp) {a : ℝ} (ha : 3 ≤ a) :\n    ((zeroWindowWide_finite a).toFinset.card : ℝ) ≤ 3 * C0hat (a + 2) := by\n  have hsub : ... (as above)\n  have hsum : (((zeroWindowWide_finite a).toFinset.sum fun ρ => zeroMult ρ) : ℝ) ≤\n      C0hat a + C0hat (a + 1) + C0hat (a + 2) := by\n    -- via sum_union_inter chain + hZC ×3\n  ...\n```\nHmm — the sum over the wide toFinset ≤ sum over the union (subset, nonneg) ≤ sum of the three parts (union-inter). Let me write it carefully:\n\n```lean\n  have hsum1 : (∑ ρ ∈ (zeroWindowWide_finite a).toFinset, (zeroMult ρ : ℝ)) ≤\n      ∑ ρ ∈ ((zeroWindow_finite (a - 1)).toFinset ∪\n        ((zeroWindow_finite a).toFinset ∪ (zeroWindow_finite (a + 1)).toFinset)),\n        (zeroMult ρ : ℝ) :=\n    Finset.sum_le_sum_of_subset_of_nonneg hsub (fun ρ _ => Nat.cast_nonneg _)\n  have hsum2 : (∑ ρ ∈ ((zeroWindow_finite (a - 1)).toFinset ∪\n        ((zeroWindow_finite a).toFinset ∪ (zeroWindow_finite (a + 1)).toFinset)),\n        (zeroMult ρ : ℝ)) ≤\n      (∑ ρ ∈ (zeroWindow_finite (a - 1)).toFinset, (zeroMult ρ : ℝ)) +\n      ((∑ ρ ∈ (zeroWindow_finite a).toFinset, (zeroMult ρ : ℝ)) +\n        (∑ ρ ∈ (zeroWindow_finite (a + 1)).toFinset, (zeroMult ρ : ℝ))) := by\n    have hu1 := Finset.sum_union_inter (s := (zeroWindow_finite (a - 1)).toFinset)\n      (t := (zeroWindow_finite a).toFinset ∪ (zeroWindow_finite (a + 1)).toFinset)\n      (f := fun ρ => (zeroMult ρ : ℝ))\n    have hnn : (0 : ℝ) ≤ ∑ ρ ∈ (zeroWindow_finite (a - 1)).toFinset ∩\n        ((zeroWindow_finite a).toFinset ∪ (zeroWindow_finite (a + 1)).toFinset),\n        (zeroMult ρ : ℝ) :=\n      Finset.sum_nonneg (fun ρ _ => Nat.cast_nonneg _)\n    have hu2 := Finset.sum_union_inter (s := (zeroWindow_finite a).toFinset)\n      (t := (zeroWindow_finite (a + 1)).toFinset) (f := fun ρ => (zeroMult ρ : ℝ))\n    have hnn2 : (0 : ℝ) ≤ ∑ ρ ∈ (zeroWindow_finite a).toFinset ∩\n        (zeroWindow_finite (a + 1)).toFinset, (zeroMult ρ : ℝ) :=\n      Finset.sum_nonneg (fun ρ _ => Nat.cast_nonneg _)\n    linarith\n```\nFinset.sum_union_inter : ∑ (s ∪ t) + ∑ (s ∩ t) = ∑ s + ∑ t ✓ (exists as Finset.sum_union_inter? — from LiTightR/session-035 usage: exists_avoiding_midpoint... I recall `Finset.sum_union_inter` being used. ✓)\n\nThen hZC (a−1) (by linarith : 2 ≤ a−1), hZC a (by linarith), hZC (a+1) (by linarith) give the three ≤ C0hat(a), C0hat(a+1), C0hat(a+2). Then C0hat monotone: C0hat(a) ≤ C0hat(a+2), C0hat(a+1) ≤ C0hat(a+2). Check C0hat_mono exists — from LiGapCircles. grep. Then total ≤ 3·C0hat(a+2).\n\nAnd card ≤ Σ mult: the pattern from exists_zero_avoiding_T's hWFcard.\n\nOK — also check `C0hat_mono`. Then the perimeter Props:\n\n```lean\n/-- The global ordinate window: nontrivial zeros with 0 < γ ≤ T. -/\ndef zeroGlobalWindow (T : ℝ) : Set ℂ :=\n  {ρ | IsNontrivialZero ρ ∧ 0 < ρ.im ∧ ρ.im ≤ T}\n\ntheorem zeroGlobalWindow_finite (T : ℝ) : (zeroGlobalWindow T).Finite := by\n  apply Set.Finite.subset (zerosIn_finite 0 T)\n  intro ρ hρ\n  refine ⟨hρ.1, by linarith [hρ.2.1], hρ.2.2⟩\n```\nHmm — zerosIn_finite 0 T's membership form — need the exact signature. From zeroWindow_finite: zerosIn_finite (a−1) (a+1) gives ⟨zero, A ≤ im, im ≤ B+1⟩?? The refine passed hρ.2.2 : im ≤ a+1 as the third — if zerosIn_finite A B's third component were im ≤ B+1 = a+2, hρ.2.2 : im ≤ a+1 wouldn't typecheck directly... but it did (zeroWindow_finite builds). So the third component IS im ≤ B+... hmm — wait in zeroWindow_finite: `refine ⟨hρ.1, ?_, hρ.2.2⟩; linarith [hρ.2.1]` — hρ.2.2 : ρ.im ≤ a + 1 is given as the third component. So zerosIn_finite (a−1) (a+1) members have im ≤ a+1 = (a+1)... so zerosIn_finite A B's upper is im ≤ B? For A = a−1, B = a+1: im ≤ a+1 = B ✓ and lower A = a−1 ≤ im ✓ (discharged by linarith from hρ.2.1 : a ≤ im). So zerosIn_finite A B = zeros with A ≤ im ≤ B? But then zeroWindow [a, a+1] ⊆ zerosIn (a−1, a+1): im ∈ [a, a+1] ⊆ [a−1, a+1] ✓ consistent. So zerosIn_finite A B : {zeros ∧ A ≤ im ∧ im ≤ B}? Hmm but wait — zerosIn might be about |im| or about the zero-counting region (zerosIn a b in PNT context = zeros ρ with a ≤ im ≤ b, any re). OK for zeroGlobalWindow: zerosIn_finite 0 T : zeros with 0 ≤ im ≤ T: my members have 0 < im: linarith ✓. \n\nLet me grep zerosIn_finite's signature to be sure.\n\nAlso the perimeter Props:\n\n```lean\n/-- [PERIMETER — Trudgian 2014 N(T) global form, D-062 §4 / D-071 §3,\nuser-approved session 038] The global zero-count bound: the\nmultiplicity-weighted count of nontrivial zeros with 0 < γ ≤ T is at\nmost FAlt T (T ≥ 2). This is the un-specialized form of the declared\nTrudgian source (ZeroCountProp is its unit-window corollary); the unit\nform does NOT imply the global form at the FAlt level (summing unit\nwindows gives 0.433·T·log T > (1/2π)·T·log T). Used by the ii′-6\nbridge (the both-signs count is 2× the one-sign count by conj\nsymmetry). -/\ndef ZeroCountGlobalProp : Prop :=\n  ∀ T : ℝ, 2 ≤ T →\n    (((zeroGlobalWindow_finite T).toFinset.sum fun ρ => zeroMult ρ) : ℝ) ≤ FAlt T\n\n/-- [PERIMETER — M₀ interval certificate, D-062 §4 L6 / D-071 §3,\nuser-approved session 038] ‖ζ′/ζ(−5/2 + it)‖ ≤ 1.3352 for |t| ≤ 10\n(E-023 grid + sampled-Lipschitz ×2; E-023b acb upgrade optional). Used\nby the I_III short piece. -/\ndef MZeroProp : Prop :=\n  ∀ t : ℝ, |t| ≤ 10 → ‖logDeriv riemannZeta (-(5 / 2) + t * Complex.I)‖ ≤ 1.3352\n```\n\nWait — (-(5/2) + t * Complex.I) : ℂ — the -(5/2) needs to be ℂ: `(-(5 / 2 : ℝ) : ℂ)`? Write `(-(5 / 2 : ℝ) : ℂ) + (t : ℝ) * Complex.I` — the re is −5/2 ✓. Hmm — (−(5/2) : ℂ) would be read as negation of the ℂ numeral — same thing. Let me write `(-5 / 2 : ℂ)`? re(−5/2 : ℂ) = −5/2 ✓. Cleaner: `(-5 / 2 : ℂ) + (t : ℝ) * Complex.I`.\n\nWhere to put these: LiContour.lean after NoLowZeros/two_le_C0hat (§1) — but FAlt is in LiSkeleton (imported ✓ since C0hat is used). \n\nNow LiAssembly.lean — the sides identity + bridge. The bridge needs the both-signs decomposition: {nontrivial, |im| ≤ T} = {0 < im ≤ T} ∪ {−T ≤ im < 0} ∪ (im = 0 excluded by hNLZ). And the conj bijection between them (zeroMult_conj). The sum over the both-signs set = 2 × sum over the one-sign set (via the conj equiv — the tsum/Finset reindex: for FINSET sums this time (Sz is a Finset) — the conj map on the finset {−T ≤ im < 0} → {0 < im ≤ T} is a bijection with zeroMult_conj: sum over negative side = sum over positive side (via Finset.sum_image or the equiv reindex).\n\nThis is the finicky part. Alternative simpler accounting: ‖Σ_nontriv‖ ≤ Σ mult·2 = 2·Σ mult. And Σ mult over both-signs = Σ mult over {0<γ≤T} + Σ over {−T≤γ<0} (disjoint union) = 2·Σ over {0<γ≤T} (conj bijection) ≤ 2·FAlt T. So ‖Σ‖ ≤ 4·FAlt T.\n\nFor the Finset formulation: Sz's nontrivial part = (zeroGlobalBoth T).toFinset where zeroGlobalBoth T := {ρ | IsNontrivialZero ρ ∧ |ρ.im| ≤ T ∧ ρ.im ≠ 0}... hmm — with hNLZ: |im| ≥ 14 so im ≠ 0 automatic; |im| ≤ T ⟺ (0 < im ≤ T) ∨ (−T ≤ im < 0). \n\nActually — do I even need the bridge separated from the sides? The sides identity gives |Sf n| ≤ ‖RectInt‖ + ‖Σ‖. The bridge bounds ‖Σ‖. Then 6-c bounds ‖RectInt‖ by the four sides. The fold (6-d) assembles.\n\nFor the bridge, define the Sz finset explicitly:\nSz := (zeroBothWindow T).toFinset ∪ {−2} where zeroBothWindow T := {ρ | IsNontrivialZero ρ ∧ |ρ.im| ≤ T}.\n\nThe characterization for rectInt'_Jlag: s ∈ Sz ↔ s ∈ Rectangle z w ∧ zetaA s = 0 — need: zetaA s = 0 ∧ inside ⟺ (nontrivial ∧ |im| ≤ T) ∨ s = −2:\n- zetaA s = 0 (s ≠ 1) ⟺ ζ s = 0 (zetaA_apply; s = 1 ∉ inside anyway since... 1 IS inside the rectangle! But zetaA 1 = 1 ≠ 0 ✓ so s ≠ 1 from zetaA s = 0 via zetaA_one).\n- ζ s = 0 ⟹ classification: nontrivial ∨ s = 0 ∨ s = −2n.\n- inside: s = 0: zetaA 0 = 1/2 ≠ 0 ✓ excluded. s = −2n, n ≥ 1: inside ⟺ −2n ∈ (−5/2, 2√n]×[−T,T]: re = −2n: −5/2 ≤ −2n ⟹ n = 1: −2 ✓ inside (re −2 ∈ [−5/2, 2√n] ✓ im 0 ∈ [−T, T] ✓); n ≥ 2: re ≤ −4 < −5/2 ✗ outside.\n- nontrivial: inside ⟺ |im| ≤ T: re ∈ (0,1) ⊆ (−5/2, 2√n) ⟸ need 1 < 2√n (n ≥ 1 ✓) and 0 > −5/2 ✓; im: |im| ≤ T ⟺ −T ≤ im ≤ T ✓ inside.\n\nSo the characterization holds with Sz = (zeroBothWindow T).toFinset ∪ {−2} — PROVIDED −2 ∉ (zeroBothWindow T).toFinset (true: −2 not nontrivial — re = −2 ∉ (0,1)).\n\nThe Rectangle membership: Rectangle z w = [[z.re, w.re]] ×ℂ [[z.im, w.im]] (from the Rectangle def — check: `Rectangle z w := [[z.re, w.re]] ×ℂ [[z.im, w.im]]`? The symm lemma says Rectangle z w = Rectangle w z via uIcc_comm — consistent with [[z.re, w.re]] ×ℂ [[z.im, w.im]]). Membership: s ∈ Rectangle z w ↔ re s ∈ [[z.re, w.re]] ∧ im s ∈ [[z.im, w.im]] — via the mem lemmas (Complex.mem_reProdIm or similar — rectangleBorder_subset_rectangle used `hsR : s ∈ Rectangle z w := rectangleBorder_subset_rectangle z w hs` and the proof obtained ⟨h1, h2⟩ := hmem and simpa [Set.uIcc_of_le hre] — so membership IS a pair (re ∈ uIcc, im ∈ uIcc) ✓).\n\nOK — the full design is in hand. This is a decent chunk of Lean (~400-500 lines for ii′-6-b). Let me write LiContour additions first, build-check, then LiAssembly.lean.","signature":""},{"type":"text","text":"All forms confirmed. Writing the LiContour additions first (perimeter Props + wide pigeonhole)."},{"type":"tool_use","id":"Bash_246","name":"Bash","input":{"command":"cd D:/Python/Quantum/zeta-23-lean && grep -rn \"theorem zerosIn_finite\\|lemma zerosIn_finite\" --include=\"*.lean\" Zeta23/ | head -2 && grep -rn \"C0hat_mono\" D:/Python/Quantum/research/lean/NguyenRH1/NguyenRH1/*.lean | head -3","description":"Check zerosIn_finite + C0hat_mono signatures"},"extra_content":null}]