Current task: —

← Session 36 — ii′-6-DL dog-leg + side bounds; Paper A review

#2295 assistant 2026-08-26 19:36:08.686 UTC · 3654→5496 tok open ⤢
thinking (15540 chars)
Key facts: - `DogLegRight (n : ℝ) := ((√n + 1)/2)·(e^{5/2}+1)/2 + 8.38 + IIMaj n / 4` — exactly the DL-5 per-side bound ✓. - `Jlag_differentiableAt_dogleg {n} {s} (hre : 3 ≤ s.re) (him : 0 < s.im) : DifferentiableAt ℂ (Jlag n) s` — for the [3, 2√n] tail at height +T: points σ+iT have re = σ ≥ 3 ✓ im = T > 0 ✓. For the BOTTOM side (−T): im = −T < 0 — him : 0 < s.im FAILS! — hmm — the dog-leg differentiability needs 0 < im. For the bottom side, ζ is zero-free on re ≥ 1 regardless of im sign — `riemannZeta_ne_zero_of_one_lt_re` works for any im ✓ — so for the bottom I can build the differentiability via `Jlag_differentiableAt` directly (like DL-1's proof but without the him condition). Let me check `Jlag_differentiableAt`'s signature — line 50: `apply Jlag_differentiableAt` with two side goals: s ≠ 1 (rintro rfl; simp at him) and ζ s ≠ 0 (riemannZeta_ne_zero_of_one_lt_re). So `Jlag_differentiableAt (h1 : s ≠ 1) (hζ : riemannZeta s ≠ 0) : DifferentiableAt ℂ (Jlag n) s` presumably. For the bottom side's tail integrability, I need Jlag continuous on the path σ+i(−T), σ ∈ [3, 2√n] — via Jlag_differentiableAt (s ≠ 1 since re ≥ 3 > 1... wait s ≠ 1: re = 3 ≤ s.re... s with re ≥ 3: if s = 1 then re = 1 ≠ ≥ 3 ✓) (ζ s ≠ 0 via riemannZeta_ne_zero_of_one_lt_re (1 < re since 3 ≤ re ⟹ 1 < re ✓)). So a small helper: for both signs, Jlag differentiableAt at points with re ≥ 3 and im = ±T — actually im doesn't matter (ζ zero-free on re > 1). So the tail integrability helper (both signs of T): ```lean have hJcontTail : ∀ σ : ℝ, (3 : ℝ) ≤ σ → ∀ y : ℝ, ContinuousAt (Jlag n) ((σ : ℝ) + (y : ℝ) * Complex.I) := by intro σ hσ y have hre : (((σ : ℝ) + (y : ℝ) * Complex.I)).re = σ := by simp have hs1 : ((σ : ℝ) + (y : ℝ) * Complex.I) ≠ 1 := by intro h rw [h] at hre simp at hre linarith [hσ] have hζ : riemannZeta ((σ : ℝ) + (y : ℝ) * Complex.I) ≠ 0 := by apply riemannZeta_ne_zero_of_one_lt_re rw [hre] linarith [hσ] exact Jlag_differentiableAt hs1 hζ |>.continuousAt ``` Hmm — wait — `Jlag_differentiableAt` — its signature: from DL-1's usage: `apply Jlag_differentiableAt` produced goals `s ≠ 1`? (rintro rfl — hmm — rintro rfl introduces s = 1?? — the goal after apply was `(s = 1) → False`?? — no — `rintro rfl` on goal `s ≠ 1` = `(s = 1) → False` — rintro rfl intro's s := 1, then `simp at him` — him : 0 < (1:ℂ).im = 0 — contradiction ✓). And second goal `riemannZeta s ≠ 0` (via riemannZeta_ne_zero_of_one_lt_re) ✓. So Jlag_differentiableAt (h1 : s ≠ 1) (hζ : ζ s ≠ 0) : DifferentiableAt ℂ (Jlag n) s ✓ (let me verify its exact signature — grep). Then the tail IntervalIntegrable: ```lean have hTailInt : ∀ y : ℝ, IntervalIntegrable (fun σ : ℝ => Jlag n ((σ : ℝ) + (y : ℝ) * Complex.I)) MeasureTheory.volume 3 (2 * Real.sqrt (n : ℝ)) := by intro y apply Continuous.intervalIntegrable rw [continuous_iff_continuousAt] intro σ -- need 3 ≤ σ?? — the path covers ALL σ (not just [3, 2√n]) — Continuous.intervalIntegrable needs GLOBAL continuity ``` Hmm — Continuous.intervalIntegrable needs GLOBAL continuity of the integrand — but Jlag is only continuous where ζ ≠ 0. The [3, 2√n] path is zero-free, but the GLOBAL function t ↦ Jlag (↑σ+↑y·I) isn't continuous everywhere (it hits zeros for σ < 1!). So I need `ContinuousOn.intervalIntegrable (hab : a ≤ b) (h : ContinuousOn f (Set.uIcc a b))` — the uIcc-restricted version. Its signature: `theorem ContinuousOn.intervalIntegrable (hab : a ≤ b) (h : ContinuousOn f (uIcc a b)) : IntervalIntegrable f volume a b`? — hmm — actually `ContinuousOn.intervalIntegrable (h : ContinuousOn f (uIcc a b))`? — with the measure — earlier grep for it found nothing. Let me check: `ContinuousOn.intervalIntegrable (hab : a ≤ b) (hf : ContinuousOn f (Set.Icc a b)) : IntervalIntegrable f volume a b` — I believe this exists (used in Continuous.intervalIntegrable's proof: `hu.continuousOn.intervalIntegrable` — from Basic.lean:514: `hu.continuousOn.intervalIntegrable` — so ContinuousOn.intervalIntegrable exists with signature (hab : a ≤ b)? (h : ContinuousOn f (Icc a b))... — line 512-514: `theorem Continuous.intervalIntegrable {u : ℝ → E} (hu : Continuous u) (a b : ℝ) : IntervalIntegrable u μ a b := hu.continuousOn.intervalIntegrable` — so ContinuousOn.intervalIntegrable (hf : ContinuousOn f ?s) — the set s is implicit, probably uIcc or Icc — from the use, `hu.continuousOn : ContinuousOn f univ` — .intervalIntegrable with a b — so the signature might be `(hab : a ≤ b) (hf : ContinuousOn f (Set.uIcc a b))`? — or `(hf : ContinuousOn f (Set.Icc a b)) (hab : a ≤ b)`. Let me grep its def. For the mid-piece integrability on [−5/2, 3]: same ContinuousOn route with zeta_ne_zero_horizontal (re = σ ∈ [−5/2, 3] — the mid path has im = T with clearance ✓ continuous via hJcont from 6-c-iv — but that's INSIDE the mid theorem — I need it here too. Options: (a) rebuild the hcontJ machine locally in 6-c-v; (b) prove a standalone ContinuousOn lemma for the mid path. Since hIntegral_Jlag_mid_norm_le's hcontJ gives ContinuousAt at EVERY σ (global!), I can factor it: actually in 6-c-iv, hcontJ : ∀ σ, ContinuousAt (Jlag n) (↑σ+↑T·I) — GLOBAL (all σ ∈ ℝ, since zeta_ne_zero_horizontal holds for ALL σ). So for the mid piece [−5/2, 3] at +T: the SAME global statement — I'll rebuild the small machine in 6-c-v (it's ~10 lines) OR factor a theorem. Cleaner: factor two small theorems: ```lean theorem continuousAt_Jlag_horizontal (hTwide ...) (hn : 1 ≤ n) (hTn) (hTn1) (σ : ℝ) : ContinuousAt (Jlag n) ((σ : ℝ) + (T : ℝ) * Complex.I) ``` — hmm — but the -T side needs the conj trick anyway... — wait — for the -T side's split integrability: H(−5/2→3, −T) and H(3→2√n, −T) — the -T path: zeta zero-free? — for the MID segment [−5/2,3] at −T: a zero at σ−iT would be conj of a zero at σ+iT — also in the clearance window ✓ zero-free ✓ — but my zeta_ne_zero_horizontal only covers +T! For −T: need zeta_ne_zero_horizontal_neg — or prove via conj: ζ(σ−iT) = conj(ζ(σ+iT)) ≠ 0 since ζ(σ+iT) ≠ 0 ✓ (riemannZeta_conj + conj_ne_zero). Hmm — wait — actually, for the -T side split, do I even need separate integrability? The HIntegral_split for the -T side: HIntegral (Jlag n) (−5/2) (2√n) (−T) = H(−5/2→3, −T) + H(3→2√n, −T) — needs IntervalIntegrable on [−5/2,3] and [3,2√n] of the −T path. For [3,2√n] at −T: my hJcontTail helper (any y — im unrestricted, zero-free via re > 1) ✓. For [−5/2,3] at −T: need ζ(σ−iT) ≠ 0 for σ ∈ [−5/2,3] — via conj from zeta_ne_zero_horizontal: ```lean have hzne_neg : ∀ σ : ℝ, riemannZeta ((σ : ℝ) + (-T : ℝ) * Complex.I) ≠ 0 := by intro σ have h1 : ((σ : ℝ) + (-T : ℝ) * Complex.I) = (starRingEnd ℂ) ((σ : ℝ) + (T : ℝ) * Complex.I) := by simp [map_add, map_mul, Complex.conj_ofReal, Complex.conj_I] -- or by simp rw [h1, ne_eq, ← map_ne_zero (f := starRingEnd ℂ)??] ``` Hmm — ζ(conj s) = conj(ζ s) — `riemannZeta_conj` (banked: _root_.riemannZeta_conj) : riemannZeta (conj s) = conj (riemannZeta s) — so ζ(conj s) ≠ 0 ⟺ conj(ζ s) ≠ 0 ⟺ ζ s ≠ 0 (starRingEnd_apply_ne_zero? — `map_ne_zero (f := starRingEnd ℂ)` : f a ≠ 0 ↔ a ≠ 0 — `map_ne_zero_iff (FunLike injective)`? — simpler: (starRingEnd ℂ) x = 0 ↔ x = 0 — `Complex.conj_eq_zero`? hmm — `map_eq_zero` for ring endomorphisms: `(starRingEnd ℂ) x = 0 ↔ x = 0` — `map_eq_zero (starRingEnd ℂ)`? — there might be `Complex.conj_ne_zero`? no — `starRingEnd` is injective: `FunLike injective`... — cleanest: ```lean rw [h1, riemannZeta_conj] intro h0 have h2 := zeta_ne_zero_horizontal hTwide hn1 hTn hTn1 (σ := σ) -- ζ(σ+iT) ≠ 0 rw [show (starRingEnd ℂ) (riemannZeta _) = 0 → riemannZeta _ = 0 from ...] ``` Hmm — `Complex.conj_eq_zero`?? — let me think: `map_eq_zero (f : F) [FunLike F α β] [Zero α] [Zero β] [MapZeroClass...]`? — for starRingEnd: `RingAut`?? — starRingEnd ℂ is a RingAut — `(starRingEnd ℂ) x = 0 ↔ x = 0` via `map_eq_zero`? — there's `map_eq_zero_iff (f : α →*₀ β) (hf : Function.Injective f)`? — or for equivs: `Equiv.map_eq_zero_iff`? — starRingEnd is a RingAut → `(RingAut ...)`. Simplest robust: `Complex.conj_eq_zero`?? — I'm not sure it exists. Alternative: `starRingEnd ℂ |>.injective`? — `RingAut.injective`?? — there's `(starRingEnd ℂ).injective` — is starRingEnd a RingAut? — `starRingEnd ℂ : ℂ →+* ℂ` (a ring hom, not aut) — but it IS injective: `starRingEnd_injective : Function.Injective (starRingEnd ℂ)`? — hmm — `Complex.conj_injective` exists: `Function.Injective (starRingEnd ℂ)`? — there's `starRingEnd_self_inverse`?? — inverse: conj(conj x) = x — so injective trivially. For ≠ 0: intro h0; have : ζ s = 0 := by rw [← Complex.conj_conj??]... Cleanest deterministic: `map_ne_zero` — hmm. Actually — `ne_of_apply_ne`? — Let me do: intro h0; apply zeta_ne_zero_horizontal-instance; rw [← h0.symm??]... SIMPLEST: use `Complex.norm_conj`: if conj(ζ s) = 0 then ‖conj(ζ s)‖ = 0 = ‖ζ s‖ ⟹ ζ s = 0: ```lean rw [h1, riemannZeta_conj] intro h0 exact zeta_ne_zero_horizontal-instance (by have := congrArg Complex.norm h0 -- ‖conj(ζ s)‖ = 0 rw [Complex.norm_conj, norm_eq_zero] at this exact this) ``` Hmm — norm_eq_zero : ‖a‖ = 0 ↔ a = 0 — congrArg Complex.norm h0 : ‖(starRingEnd ℂ)(ζ s)‖ = ‖0‖ = 0 — rw [Complex.norm_conj] : ‖ζ s‖ = 0 — norm_eq_zero.mp : ζ s = 0 ✓. Actually — there's definitely `map_ne_zero` for injective maps: `map_ne_zero_iff (hf : Function.Injective f) : f a ≠ 0 ↔ a ≠ 0`?? — hmm — `map_ne_zero_iff (f : α → β) (hf : Injective f) (h0 : f 0 = 0)`? — for starRingEnd there's probably a direct `starRingEnd_apply_ne_zero`? — hmm. Let me not guess: the norm route is bulletproof. Or EVEN simpler: (starRingEnd ℂ) x = 0 ⟹ (starRingEnd ℂ)((starRingEnd ℂ) x) = 0 ⟹ x = 0 (conj_conj): ```lean intro h0 apply h-instance have h2 : (starRingEnd ℂ) ((starRingEnd ℂ) (riemannZeta ((σ : ℝ) + (T : ℝ) * Complex.I))) = 0 := by rw [h0] simp -- conj 0 = 0 rwa [Complex.conj_conj] at h2 ``` hmm — `Complex.conj_conj (z) : (starRingEnd ℂ) ((starRingEnd ℂ) z) = z`? — `conj_conj : conj (conj z) = z` — exists as `Complex.conj_conj`?? — hmm — `starRingEnd_self_inverse`? — `Complex.conj_conj` ✓ I'm fairly confident. And `(starRingEnd ℂ) 0 = 0` — `map_zero` — simp proves ✓. OK — alternatively — hmm — actually there's a MUCH simpler observation: `riemannZeta_conj` — let me grep its exact statement first, plus `Complex.conj_conj`, plus ContinuousOn.intervalIntegrable signature, plus Jlag_differentiableAt signature. Also — hmm — WAIT. Actually for the −T side I might not need the mid-path continuity at all: the MID bound at −T (hIntegral_Jlag_mid_neg_norm_le) is ALREADY PROVED (via the conj trick). The 6-c-v split at 3 needs the −T-path integrability on BOTH [−5/2,3] and [3,2√n] for HIntegral_split. Hmm — but hold on — maybe I can do the −T split differently: apply the conj trick at the LEVEL of the full integral: H(−5/2→2√n, −T) = conj(H(−5/2→2√n, +T)) — by the SAME intervalIntegral_conj argument (no split needed for continuity — intervalIntegral_conj holds for ANY integrand!). Then ‖H(−5/2→2√n, −T)‖ = ‖H(−5/2→2√n, +T)‖ (norm_conj) and bound the +T side by mid+DL. WAIT — but ‖H(+T full)‖ ≤ ‖H(+T mid)‖ + ‖H(+T tail)‖ needs the +T split (which needs +T-path integrability on both pieces ✓ — mid: zeta_ne_zero_horizontal ✓; tail: re ≥ 3 ✓). And for −T: NO split needed — just conj at the full level: ‖H(−5/2→2√n, −T)‖ = ‖conj(H(−5/2→2√n, +T))‖ = ‖H(−5/2→2√n, +T)‖ ≤ ‖H(+T mid)‖ + ‖H(+T tail)‖ ≤ midBound + DLRight. Hmm — but wait — does the conj identity work for the FULL −T integral? HIntegral (Jlag n) (−5/2) (2√n) (−T) = conj(HIntegral (Jlag n) (−5/2) (2√n) T) — the intervalIntegral_conj + Jlag_conj + integral_congr argument — Jlag_conj needs the point ≠ 1 (re = σ ≥ −5/2... wait — Jlag_conj n (hs : s ≠ 1) : Jlag n (conj s) = conj (Jlag n s) — for s = σ+iT: s ≠ 1 ⟸ im = T ≠ 0 ✓ (T > 0) — DL-5's pattern ✓. And intervalIntegral_conj needs NO integrability (it's a map property — let me double check: `intervalIntegral.intervalIntegral_conj (f : ℝ → ℂ) (a b : ℝ) : ∫ x in a..b, conj (f x) = conj (∫ x in a..b, f x)` — no integrability hypothesis?? — hmm — integral of conj — needs integrability of f for the Bochner integral? — conj is a continuous linear map — `ContinuousLinearMap.integral_comp_comm` — requires the function to be integrable?? — hmm — `intervalIntegral.intervalIntegral_conj` — let me check its hypotheses. DL-5 used it without extra hyps ✓ (their hconj proof only did integral_congr after) — so it works without integrability side-conditions?? — hmm — actually for the Bochner integral, `conj (∫ f) = ∫ (conj ∘ f)` requires f integrable OR the junk-value convention (integrals of non-integrable functions are 0, and conj 0 = 0 ✓ both conventions agree). Mathlib's `intervalIntegral.intervalIntegral_conj` — used unconditionally in DL-5 ✓ fine. So the −T side: ‖H(−T)‖ = ‖H(+T)‖ via conj — then both sides bounded by mid+DL — the two-sides statement becomes 2·(midBound + DLRight)... wait — hmm — but actually I realize the cleaner formulation: prove the +T full bound ‖H(+T)‖ ≤ midBound + DLRight (with the split), and the −T full bound ‖H(−T)‖ ≤ midBound + DLRight (via conj + the +T one), then the two-sides lemma ‖H(+T)‖ + ‖H(−T)‖ ≤ 2·(midBound + DLRight) = 2·midBound + 2·DogLegRight. The 6-d fold consumes the SUM (from the rectangle side decomposition + norm triangulation). Per the 6-d recipe: "‖RectInt'‖ = (1/(2π))·‖RectInt‖ ≤ (1/2π)·(sides)" where sides = ‖H(−T)‖ + ‖H(T)‖ + ‖V(right)‖ + ‖V(left)‖ — actually the decomposition: RectInt = H(−T) − H(T) + V(right) − V(left) — norm ≤ each. So the fold needs each side's norm bound separately? NO — the sum: ‖RectInt‖ ≤ ‖H(−T)‖ + ‖H(T)‖ + ‖Vr‖ + ‖Vl‖ — then each bounded: H-pair by the two-sides lemma, Vr by 6-c-iii, Vl by 6-c-ii ✓. So the two-sides lemma is the right deliverable ✓. Per the 6-c-v recipe: "both sides: ≤ 2(e⁴+1)(NI + 5.5(...)) + 2·DogLegRight" ✓ — my planned statement matches. Now — for the +T split at 3, I need: - IntervalIntegrable Jlag on [−5/2, 3] at +T: ContinuousOn on uIcc(−5/2, 3) = Icc(−5/2, 3) — from the hJcont machine (ContinuousAt at every σ — global!) — so `Continuous.intervalIntegrable` works?? — the GLOBAL continuity of (fun σ => Jlag n (↑σ+↑T·I)) — from hcontJ (∀ σ, ContinuousAt) + continuous_iff_continuousAt — that's what 6-c-iv's hcontJ gives — but it's LOCAL to that proof. For 6-c-v, rebuild it (small) or factor. I'll rebuild inline (it's the zeta_ne_zero_horizontal-based machine — ~10 lines). - IntervalIntegrable Jlag on [3, 2√n] at +T: from Jlag_differentiableAt_dogleg (hre : 3 ≤ s.re) (him : 0 < s.im) — at σ+iT: re = σ ≥ 3?? — WAIT — σ ∈ [3, 2√n] ✓ re = σ ≥ 3 ✓ him = T > 0 ✓. But for Continuous.intervalIntegrable (global), the Jlag on the +T path is continuous everywhere?? — for σ < 3 the path hits zeros — but for the SPLIT integrability I need only [3, 2√n]-segment integrability — ContinuousOn.intervalIntegrable (the Icc-version) with ContinuousOn from the dogleg differentiability on the segment ✓ — OR use HIntegral_split's exact requirements: (h1 : IntervalIntegrable f volume a b) (h2 : IntervalIntegrable f volume b c) — for [3, 2√n]: ContinuousOn on uIcc(3, 2√n) = Icc(3, 2√n) (3 ≤ 2√n ✓ since 2√n ≥ 632): per σ ∈ Icc(3, 2√n): ContinuousAt (Jlag n) (σ+iT) via Jlag_differentiableAt_dogleg.continuousAt — then .continuousWithinAt — ContinuousOn ✓ then ContinuousOn.intervalIntegrable. Let me check ContinuousOn.intervalIntegrable's exact signature. And Jlag_differentiableAt's. And riemannZeta_conj. Let me grep.
Checking `ContinuousOn.intervalIntegrable`, `Jlag_differentiableAt`, and `riemannZeta_conj` signatures.
tool: Bash
input
{
  "command": "grep -rn -B2 -A4 \"theorem ContinuousOn.intervalIntegrable\" \"D:/Python/Quantum/zeta-23-lean/.lake/packages/mathlib/Mathlib/MeasureTheory/Integral/IntervalIntegral/Basic.lean\" | head -14; grep -rn -B1 -A3 \"theorem Jlag_differentiableAt \\|lemma Jlag_differentiableAt \" \"D:/Python/Quantum/research/lean/NguyenRH1/NguyenRH1/\" | head -10; grep -rn \"theorem riemannZeta_conj\" \"D:/Python/Quantum/zeta-23-lean/.lake/packages/mathlib/Mathlib/\" | head -3",
  "description": "Verify ContinuousOn.intervalIntegrable, Jlag_differentiableAt, riemannZeta_conj"
}
raw content_json (database row)
[{"type":"thinking","thinking":"Key facts:\n- `DogLegRight (n : ℝ) := ((√n + 1)/2)·(e^{5/2}+1)/2 + 8.38 + IIMaj n / 4` — exactly the DL-5 per-side bound ✓.\n- `Jlag_differentiableAt_dogleg {n} {s} (hre : 3 ≤ s.re) (him : 0 < s.im) : DifferentiableAt ℂ (Jlag n) s` — for the [3, 2√n] tail at height +T: points σ+iT have re = σ ≥ 3 ✓ im = T > 0 ✓. For the BOTTOM side (−T): im = −T < 0 — him : 0 < s.im FAILS! — hmm — the dog-leg differentiability needs 0 < im. For the bottom side, ζ is zero-free on re ≥ 1 regardless of im sign — `riemannZeta_ne_zero_of_one_lt_re` works for any im ✓ — so for the bottom I can build the differentiability via `Jlag_differentiableAt` directly (like DL-1's proof but without the him condition). Let me check `Jlag_differentiableAt`'s signature — line 50: `apply Jlag_differentiableAt` with two side goals: s ≠ 1 (rintro rfl; simp at him) and ζ s ≠ 0 (riemannZeta_ne_zero_of_one_lt_re). So `Jlag_differentiableAt (h1 : s ≠ 1) (hζ : riemannZeta s ≠ 0) : DifferentiableAt ℂ (Jlag n) s` presumably.\n\nFor the bottom side's tail integrability, I need Jlag continuous on the path σ+i(−T), σ ∈ [3, 2√n] — via Jlag_differentiableAt (s ≠ 1 since re ≥ 3 > 1... wait s ≠ 1: re = 3 ≤ s.re... s with re ≥ 3: if s = 1 then re = 1 ≠ ≥ 3 ✓) (ζ s ≠ 0 via riemannZeta_ne_zero_of_one_lt_re (1 < re since 3 ≤ re ⟹ 1 < re ✓)). So a small helper: for both signs, Jlag differentiableAt at points with re ≥ 3 and im = ±T — actually im doesn't matter (ζ zero-free on re > 1).\n\nSo the tail integrability helper (both signs of T):\n```lean\n  have hJcontTail : ∀ σ : ℝ, (3 : ℝ) ≤ σ → ∀ y : ℝ,\n      ContinuousAt (Jlag n) ((σ : ℝ) + (y : ℝ) * Complex.I) := by\n    intro σ hσ y\n    have hre : (((σ : ℝ) + (y : ℝ) * Complex.I)).re = σ := by simp\n    have hs1 : ((σ : ℝ) + (y : ℝ) * Complex.I) ≠ 1 := by\n      intro h\n      rw [h] at hre\n      simp at hre\n      linarith [hσ]\n    have hζ : riemannZeta ((σ : ℝ) + (y : ℝ) * Complex.I) ≠ 0 := by\n      apply riemannZeta_ne_zero_of_one_lt_re\n      rw [hre]\n      linarith [hσ]\n    exact Jlag_differentiableAt hs1 hζ |>.continuousAt\n```\n\nHmm — wait — `Jlag_differentiableAt` — its signature: from DL-1's usage: `apply Jlag_differentiableAt` produced goals `s ≠ 1`? (rintro rfl — hmm — rintro rfl introduces s = 1?? — the goal after apply was `(s = 1) → False`?? — no — `rintro rfl` on goal `s ≠ 1` = `(s = 1) → False` — rintro rfl intro's s := 1, then `simp at him` — him : 0 < (1:ℂ).im = 0 — contradiction ✓). And second goal `riemannZeta s ≠ 0` (via riemannZeta_ne_zero_of_one_lt_re) ✓. So Jlag_differentiableAt (h1 : s ≠ 1) (hζ : ζ s ≠ 0) : DifferentiableAt ℂ (Jlag n) s ✓ (let me verify its exact signature — grep).\n\nThen the tail IntervalIntegrable:\n```lean\n  have hTailInt : ∀ y : ℝ, IntervalIntegrable\n      (fun σ : ℝ => Jlag n ((σ : ℝ) + (y : ℝ) * Complex.I)) MeasureTheory.volume 3 (2 * Real.sqrt (n : ℝ)) := by\n    intro y\n    apply Continuous.intervalIntegrable\n    rw [continuous_iff_continuousAt]\n    intro σ\n    -- need 3 ≤ σ?? — the path covers ALL σ (not just [3, 2√n]) — Continuous.intervalIntegrable needs GLOBAL continuity\n```\n\nHmm — Continuous.intervalIntegrable needs GLOBAL continuity of the integrand — but Jlag is only continuous where ζ ≠ 0. The [3, 2√n] path is zero-free, but the GLOBAL function t ↦ Jlag (↑σ+↑y·I) isn't continuous everywhere (it hits zeros for σ < 1!). So I need `ContinuousOn.intervalIntegrable (hab : a ≤ b) (h : ContinuousOn f (Set.uIcc a b))` — the uIcc-restricted version. Its signature: `theorem ContinuousOn.intervalIntegrable (hab : a ≤ b) (h : ContinuousOn f (uIcc a b)) : IntervalIntegrable f volume a b`? — hmm — actually `ContinuousOn.intervalIntegrable (h : ContinuousOn f (uIcc a b))`? — with the measure — earlier grep for it found nothing. Let me check: `ContinuousOn.intervalIntegrable (hab : a ≤ b) (hf : ContinuousOn f (Set.Icc a b)) : IntervalIntegrable f volume a b` — I believe this exists (used in Continuous.intervalIntegrable's proof: `hu.continuousOn.intervalIntegrable` — from Basic.lean:514: `hu.continuousOn.intervalIntegrable` — so ContinuousOn.intervalIntegrable exists with signature (hab : a ≤ b)? (h : ContinuousOn f (Icc a b))... — line 512-514: `theorem Continuous.intervalIntegrable {u : ℝ → E} (hu : Continuous u) (a b : ℝ) : IntervalIntegrable u μ a b := hu.continuousOn.intervalIntegrable` — so ContinuousOn.intervalIntegrable (hf : ContinuousOn f ?s) — the set s is implicit, probably uIcc or Icc — from the use, `hu.continuousOn : ContinuousOn f univ` — .intervalIntegrable with a b — so the signature might be `(hab : a ≤ b) (hf : ContinuousOn f (Set.uIcc a b))`? — or `(hf : ContinuousOn f (Set.Icc a b)) (hab : a ≤ b)`. Let me grep its def.\n\nFor the mid-piece integrability on [−5/2, 3]: same ContinuousOn route with zeta_ne_zero_horizontal (re = σ ∈ [−5/2, 3] — the mid path has im = T with clearance ✓ continuous via hJcont from 6-c-iv — but that's INSIDE the mid theorem — I need it here too. Options: (a) rebuild the hcontJ machine locally in 6-c-v; (b) prove a standalone ContinuousOn lemma for the mid path. Since hIntegral_Jlag_mid_norm_le's hcontJ gives ContinuousAt at EVERY σ (global!), I can factor it: actually in 6-c-iv, hcontJ : ∀ σ, ContinuousAt (Jlag n) (↑σ+↑T·I) — GLOBAL (all σ ∈ ℝ, since zeta_ne_zero_horizontal holds for ALL σ). So for the mid piece [−5/2, 3] at +T: the SAME global statement — I'll rebuild the small machine in 6-c-v (it's ~10 lines) OR factor a theorem. Cleaner: factor two small theorems:\n\n```lean\ntheorem continuousAt_Jlag_horizontal (hTwide ...) (hn : 1 ≤ n) (hTn) (hTn1) (σ : ℝ) :\n    ContinuousAt (Jlag n) ((σ : ℝ) + (T : ℝ) * Complex.I)\n```\n— hmm — but the -T side needs the conj trick anyway... — wait — for the -T side's split integrability: H(−5/2→3, −T) and H(3→2√n, −T) — the -T path: zeta zero-free? — for the MID segment [−5/2,3] at −T: a zero at σ−iT would be conj of a zero at σ+iT — also in the clearance window ✓ zero-free ✓ — but my zeta_ne_zero_horizontal only covers +T! For −T: need zeta_ne_zero_horizontal_neg — or prove via conj: ζ(σ−iT) = conj(ζ(σ+iT)) ≠ 0 since ζ(σ+iT) ≠ 0 ✓ (riemannZeta_conj + conj_ne_zero). \n\nHmm — wait — actually, for the -T side split, do I even need separate integrability? The HIntegral_split for the -T side: HIntegral (Jlag n) (−5/2) (2√n) (−T) = H(−5/2→3, −T) + H(3→2√n, −T) — needs IntervalIntegrable on [−5/2,3] and [3,2√n] of the −T path. For [3,2√n] at −T: my hJcontTail helper (any y — im unrestricted, zero-free via re > 1) ✓. For [−5/2,3] at −T: need ζ(σ−iT) ≠ 0 for σ ∈ [−5/2,3] — via conj from zeta_ne_zero_horizontal:\n```lean\n  have hzne_neg : ∀ σ : ℝ, riemannZeta ((σ : ℝ) + (-T : ℝ) * Complex.I) ≠ 0 := by\n    intro σ\n    have h1 : ((σ : ℝ) + (-T : ℝ) * Complex.I) = (starRingEnd ℂ) ((σ : ℝ) + (T : ℝ) * Complex.I) := by\n      simp [map_add, map_mul, Complex.conj_ofReal, Complex.conj_I]  -- or by simp\n    rw [h1, ne_eq, ← map_ne_zero (f := starRingEnd ℂ)??]\n```\nHmm — ζ(conj s) = conj(ζ s) — `riemannZeta_conj` (banked: _root_.riemannZeta_conj) : riemannZeta (conj s) = conj (riemannZeta s) — so ζ(conj s) ≠ 0 ⟺ conj(ζ s) ≠ 0 ⟺ ζ s ≠ 0 (starRingEnd_apply_ne_zero? — `map_ne_zero (f := starRingEnd ℂ)` : f a ≠ 0 ↔ a ≠ 0 — `map_ne_zero_iff (FunLike injective)`? — simpler: (starRingEnd ℂ) x = 0 ↔ x = 0 — `Complex.conj_eq_zero`? hmm — `map_eq_zero` for ring endomorphisms: `(starRingEnd ℂ) x = 0 ↔ x = 0` — `map_eq_zero (starRingEnd ℂ)`? — there might be `Complex.conj_ne_zero`? no — `starRingEnd` is injective: `FunLike injective`... — cleanest: \n```lean\n    rw [h1, riemannZeta_conj]\n    intro h0\n    have h2 := zeta_ne_zero_horizontal hTwide hn1 hTn hTn1 (σ := σ)  -- ζ(σ+iT) ≠ 0\n    rw [show (starRingEnd ℂ) (riemannZeta _) = 0 → riemannZeta _ = 0 from ...] \n```\nHmm — `Complex.conj_eq_zero`?? — let me think: `map_eq_zero (f : F) [FunLike F α β] [Zero α] [Zero β] [MapZeroClass...]`? — for starRingEnd: `RingAut`?? — starRingEnd ℂ is a RingAut — `(starRingEnd ℂ) x = 0 ↔ x = 0` via `map_eq_zero`? — there's `map_eq_zero_iff (f : α →*₀ β) (hf : Function.Injective f)`? — or for equivs: `Equiv.map_eq_zero_iff`? — starRingEnd is a RingAut → `(RingAut ...)`. Simplest robust: `Complex.conj_eq_zero`?? — I'm not sure it exists. Alternative: `starRingEnd ℂ |>.injective`? — `RingAut.injective`?? — there's `(starRingEnd ℂ).injective` — is starRingEnd a RingAut? — `starRingEnd ℂ : ℂ →+* ℂ` (a ring hom, not aut) — but it IS injective: `starRingEnd_injective : Function.Injective (starRingEnd ℂ)`? — hmm — `Complex.conj_injective` exists: `Function.Injective (starRingEnd ℂ)`? — there's `starRingEnd_self_inverse`?? — inverse: conj(conj x) = x — so injective trivially. For ≠ 0: intro h0; have : ζ s = 0 := by rw [← Complex.conj_conj??]... \n\nCleanest deterministic: `map_ne_zero` — hmm. Actually — `ne_of_apply_ne`? — Let me do: intro h0; apply zeta_ne_zero_horizontal-instance; rw [← h0.symm??]... \n\nSIMPLEST: use `Complex.norm_conj`: if conj(ζ s) = 0 then ‖conj(ζ s)‖ = 0 = ‖ζ s‖ ⟹ ζ s = 0:\n```lean\n    rw [h1, riemannZeta_conj]\n    intro h0\n    exact zeta_ne_zero_horizontal-instance (by\n      have := congrArg Complex.norm h0  -- ‖conj(ζ s)‖ = 0\n      rw [Complex.norm_conj, norm_eq_zero] at this\n      exact this)\n```\nHmm — norm_eq_zero : ‖a‖ = 0 ↔ a = 0 — congrArg Complex.norm h0 : ‖(starRingEnd ℂ)(ζ s)‖ = ‖0‖ = 0 — rw [Complex.norm_conj] : ‖ζ s‖ = 0 — norm_eq_zero.mp : ζ s = 0 ✓.\n\nActually — there's definitely `map_ne_zero` for injective maps: `map_ne_zero_iff (hf : Function.Injective f) : f a ≠ 0 ↔ a ≠ 0`?? — hmm — `map_ne_zero_iff (f : α → β) (hf : Injective f) (h0 : f 0 = 0)`? — for starRingEnd there's probably a direct `starRingEnd_apply_ne_zero`? — hmm. Let me not guess: the norm route is bulletproof. Or EVEN simpler: (starRingEnd ℂ) x = 0 ⟹ (starRingEnd ℂ)((starRingEnd ℂ) x) = 0 ⟹ x = 0 (conj_conj): \n```lean\n    intro h0\n    apply h-instance\n    have h2 : (starRingEnd ℂ) ((starRingEnd ℂ) (riemannZeta ((σ : ℝ) + (T : ℝ) * Complex.I))) = 0 := by\n      rw [h0]\n      simp  -- conj 0 = 0\n    rwa [Complex.conj_conj] at h2\n```\nhmm — `Complex.conj_conj (z) : (starRingEnd ℂ) ((starRingEnd ℂ) z) = z`? — `conj_conj : conj (conj z) = z` — exists as `Complex.conj_conj`?? — hmm — `starRingEnd_self_inverse`? — `Complex.conj_conj` ✓ I'm fairly confident. And `(starRingEnd ℂ) 0 = 0` — `map_zero` — simp proves ✓.\n\nOK — alternatively — hmm — actually there's a MUCH simpler observation: `riemannZeta_conj` — let me grep its exact statement first, plus `Complex.conj_conj`, plus ContinuousOn.intervalIntegrable signature, plus Jlag_differentiableAt signature. Also — hmm — WAIT. Actually for the −T side I might not need the mid-path continuity at all: the MID bound at −T (hIntegral_Jlag_mid_neg_norm_le) is ALREADY PROVED (via the conj trick). The 6-c-v split at 3 needs the −T-path integrability on BOTH [−5/2,3] and [3,2√n] for HIntegral_split. Hmm — but hold on — maybe I can do the −T split differently: apply the conj trick at the LEVEL of the full integral: H(−5/2→2√n, −T) = conj(H(−5/2→2√n, +T)) — by the SAME intervalIntegral_conj argument (no split needed for continuity — intervalIntegral_conj holds for ANY integrand!). Then ‖H(−5/2→2√n, −T)‖ = ‖H(−5/2→2√n, +T)‖ (norm_conj) and bound the +T side by mid+DL. WAIT — but ‖H(+T full)‖ ≤ ‖H(+T mid)‖ + ‖H(+T tail)‖ needs the +T split (which needs +T-path integrability on both pieces ✓ — mid: zeta_ne_zero_horizontal ✓; tail: re ≥ 3 ✓). And for −T: NO split needed — just conj at the full level:\n\n‖H(−5/2→2√n, −T)‖ = ‖conj(H(−5/2→2√n, +T))‖ = ‖H(−5/2→2√n, +T)‖ ≤ ‖H(+T mid)‖ + ‖H(+T tail)‖ ≤ midBound + DLRight.\n\nHmm — but wait — does the conj identity work for the FULL −T integral? HIntegral (Jlag n) (−5/2) (2√n) (−T) = conj(HIntegral (Jlag n) (−5/2) (2√n) T) — the intervalIntegral_conj + Jlag_conj + integral_congr argument — Jlag_conj needs the point ≠ 1 (re = σ ≥ −5/2... wait — Jlag_conj n (hs : s ≠ 1) : Jlag n (conj s) = conj (Jlag n s) — for s = σ+iT: s ≠ 1 ⟸ im = T ≠ 0 ✓ (T > 0) — DL-5's pattern ✓. And intervalIntegral_conj needs NO integrability (it's a map property — let me double check: `intervalIntegral.intervalIntegral_conj (f : ℝ → ℂ) (a b : ℝ) : ∫ x in a..b, conj (f x) = conj (∫ x in a..b, f x)` — no integrability hypothesis?? — hmm — integral of conj — needs integrability of f for the Bochner integral? — conj is a continuous linear map — `ContinuousLinearMap.integral_comp_comm` — requires the function to be integrable?? — hmm — `intervalIntegral.intervalIntegral_conj` — let me check its hypotheses. DL-5 used it without extra hyps ✓ (their hconj proof only did integral_congr after) — so it works without integrability side-conditions?? — hmm — actually for the Bochner integral, `conj (∫ f) = ∫ (conj ∘ f)` requires f integrable OR the junk-value convention (integrals of non-integrable functions are 0, and conj 0 = 0 ✓ both conventions agree). Mathlib's `intervalIntegral.intervalIntegral_conj` — used unconditionally in DL-5 ✓ fine.\n\nSo the −T side: ‖H(−T)‖ = ‖H(+T)‖ via conj — then both sides bounded by mid+DL — the two-sides statement becomes 2·(midBound + DLRight)... wait — hmm — but actually I realize the cleaner formulation: prove the +T full bound ‖H(+T)‖ ≤ midBound + DLRight (with the split), and the −T full bound ‖H(−T)‖ ≤ midBound + DLRight (via conj + the +T one), then the two-sides lemma ‖H(+T)‖ + ‖H(−T)‖ ≤ 2·(midBound + DLRight) = 2·midBound + 2·DogLegRight.\n\nThe 6-d fold consumes the SUM (from the rectangle side decomposition + norm triangulation). Per the 6-d recipe: \"‖RectInt'‖ = (1/(2π))·‖RectInt‖ ≤ (1/2π)·(sides)\" where sides = ‖H(−T)‖ + ‖H(T)‖ + ‖V(right)‖ + ‖V(left)‖ — actually the decomposition: RectInt = H(−T) − H(T) + V(right) − V(left) — norm ≤ each. So the fold needs each side's norm bound separately? NO — the sum: ‖RectInt‖ ≤ ‖H(−T)‖ + ‖H(T)‖ + ‖Vr‖ + ‖Vl‖ — then each bounded: H-pair by the two-sides lemma, Vr by 6-c-iii, Vl by 6-c-ii ✓. So the two-sides lemma is the right deliverable ✓.\n\nPer the 6-c-v recipe: \"both sides: ≤ 2(e⁴+1)(NI + 5.5(...)) + 2·DogLegRight\" ✓ — my planned statement matches.\n\nNow — for the +T split at 3, I need:\n- IntervalIntegrable Jlag on [−5/2, 3] at +T: ContinuousOn on uIcc(−5/2, 3) = Icc(−5/2, 3) — from the hJcont machine (ContinuousAt at every σ — global!) — so `Continuous.intervalIntegrable` works?? — the GLOBAL continuity of (fun σ => Jlag n (↑σ+↑T·I)) — from hcontJ (∀ σ, ContinuousAt) + continuous_iff_continuousAt — that's what 6-c-iv's hcontJ gives — but it's LOCAL to that proof. For 6-c-v, rebuild it (small) or factor. I'll rebuild inline (it's the zeta_ne_zero_horizontal-based machine — ~10 lines).\n- IntervalIntegrable Jlag on [3, 2√n] at +T: from Jlag_differentiableAt_dogleg (hre : 3 ≤ s.re) (him : 0 < s.im) — at σ+iT: re = σ ≥ 3?? — WAIT — σ ∈ [3, 2√n] ✓ re = σ ≥ 3 ✓ him = T > 0 ✓. But for Continuous.intervalIntegrable (global), the Jlag on the +T path is continuous everywhere?? — for σ < 3 the path hits zeros — but for the SPLIT integrability I need only [3, 2√n]-segment integrability — ContinuousOn.intervalIntegrable (the Icc-version) with ContinuousOn from the dogleg differentiability on the segment ✓ — OR use HIntegral_split's exact requirements: (h1 : IntervalIntegrable f volume a b) (h2 : IntervalIntegrable f volume b c) — for [3, 2√n]: ContinuousOn on uIcc(3, 2√n) = Icc(3, 2√n) (3 ≤ 2√n ✓ since 2√n ≥ 632): per σ ∈ Icc(3, 2√n): ContinuousAt (Jlag n) (σ+iT) via Jlag_differentiableAt_dogleg.continuousAt — then .continuousWithinAt — ContinuousOn ✓ then ContinuousOn.intervalIntegrable.\n\nLet me check ContinuousOn.intervalIntegrable's exact signature. And Jlag_differentiableAt's. And riemannZeta_conj. Let me grep.","signature":""},{"type":"text","text":"Checking `ContinuousOn.intervalIntegrable`, `Jlag_differentiableAt`, and `riemannZeta_conj` signatures."},{"type":"tool_use","id":"Bash_146","name":"Bash","input":{"command":"grep -rn -B2 -A4 \"theorem ContinuousOn.intervalIntegrable\" \"D:/Python/Quantum/zeta-23-lean/.lake/packages/mathlib/Mathlib/MeasureTheory/Integral/IntervalIntegral/Basic.lean\" | head -14; grep -rn -B1 -A3 \"theorem Jlag_differentiableAt \\|lemma Jlag_differentiableAt \" \"D:/Python/Quantum/research/lean/NguyenRH1/NguyenRH1/\" | head -10; grep -rn \"theorem riemannZeta_conj\" \"D:/Python/Quantum/zeta-23-lean/.lake/packages/mathlib/Mathlib/\" | head -3","description":"Verify ContinuousOn.intervalIntegrable, Jlag_differentiableAt, riemannZeta_conj"},"extra_content":null}]