← Session 35 — ii′-6-R: Lagarias 6.1 right-tail re-proof (E-032/D-073)
thinking (9466 chars)
`norm_term_eq`: ‖term f s n‖ = if n = 0 then 0 else ‖f n‖ / n ^ s.re — perfect for the comparison lemma. For the Λ terms at 3 vs 2:
‖term Λ 3 n‖ = (n = 0 ? 0 : Λ(n)/n³) and ‖term Λ 2 n‖ = (n = 0 ? 0 : Λ(n)/n²). For n ≠ 0: Λ(n)/n³ = (1/n)·(Λ(n)/n²) ≤ (1/2)·(Λ(n)/n²) when 2 ≤ n (1/n ≤ 1/2 ✓); n = 1: Λ(1) = 0 → both 0 ✓ (Λ(1) = 0 — vonMangoldt at 1: `ArithmeticFunction.vonMangoldt_one` = 0 ✓ exists presumably).
The comparison lemma:
```lean
lemma norm_term_vonMangoldt_three_le_half (n : ℕ) :
‖LSeries.term (fun n => (ArithmeticFunction.vonMangoldt n : ℂ)) (3 : ℂ) n‖ ≤
(1 / 2) * ‖LSeries.term (fun n => (ArithmeticFunction.vonMangoldt n : ℂ)) (2 : ℂ) n‖ := by
rw [norm_term_eq, norm_term_eq]
split
· norm_num
· next hn =>
-- goal: Λ(n)/n³ ≤ (1/2)·(Λ(n)/n²)
have hn2 : 2 ≤ n := Nat.two_le_iff_ne_zero_and_one_lt...
```
Hmm — n ≠ 0 means n ≥ 1; for n = 1, Λ(1) = 0 → both sides 0. For n ≥ 2: the ratio. So handle n = 1 specially:
```
· next hn =>
rcases eq_or_ne n 1 with rfl | hn1
· simp [ArithmeticFunction.vonMangoldt_one] -- Λ(1) = 0: both sides 0
· have hn2 : 2 ≤ n := by omega -- n ≠ 0 ∧ n ≠ 1 ⟹ 2 ≤ n
-- Λ(n)/n³ ≤ (1/2)·Λ(n)/n²
have hΛnn : (0:ℝ) ≤ (ArithmeticFunction.vonMangoldt n : ℝ) := ArithmeticFunction.vonMangoldt_nonneg
have e : (ArithmeticFunction.vonMangoldt n : ℝ) / (n:ℝ) ^ 3 =
(1 / (n:ℝ)) * ((ArithmeticFunction.vonMangoldt n : ℝ) / (n:ℝ) ^ 2) := by
field_simp [show (n:ℝ) ≠ 0 by positivity]
ring
rw [e]
have h12 : (1 : ℝ) / (n:ℝ) ≤ 1 / 2 := by
rw [div_le_div_iff_of_pos_left (by norm_num : (0:ℝ) < 1) (by positivity : (0:ℝ) < 2) (by positivity : (0:ℝ) < n)]
exact_mod_cast hn2
calc (1 / (n:ℝ)) * ((ArithmeticFunction.vonMangoldt n : ℝ) / (n:ℝ) ^ 2)
≤ (1 / 2) * ((ArithmeticFunction.vonMangoldt n : ℝ) / (n:ℝ) ^ 2) := by
apply mul_le_mul_of_nonneg_right _ (by positivity)
exact h12
_ = (1 / 2) * ‖...‖ := by rw [norm_term_eq, if_neg hn]
```
Hmm — the norm_term_eq's if: the goal after `rw [norm_term_eq, norm_term_eq]; split` — the two ifs share the condition n = 0: `split` handles the if on the GOAL (both ifs split together? `split` splits the FIRST if; with two ifs with the same condition it might handle both or need twice). The norm_term_le_of_re_le_re proof above did exactly `simp only [norm_term_eq]; split; · rfl; · next hn => gcongr; ...` — so split handles both ifs in one go (they reduce on the same condition) ✓ clone that pattern.
Also — wait, the norm of the Λ value: ‖(ArithmeticFunction.vonMangoldt n : ℂ)‖ = Λ(n) (real, nonneg): the norm_term_eq gives ‖f n‖/n^s.re with f n = (Λ n : ℂ): ‖(Λ n : ℂ)‖ = Λ n as a real (Complex.norm_of_nonneg vonMangoldt_nonneg / or the norm is just the real value: (‖(Λ n : ℂ)‖ : ℝ) = Λ n — need `Complex.norm_ofReal`/`norm_of_nonneg`... In the goal after norm_term_eq, the LHS is ‖(Λ n : ℂ)‖ / n^3 — the `e` computation needs ‖(Λ n:ℂ)‖ = Λ n (as reals): `have hΛ : ‖(ArithmeticFunction.vonMangoldt n : ℂ)‖ = ArithmeticFunction.vonMangoldt n := by rw [Complex.norm_eq_abs, ← Real.norm_eq_abs, Real.norm_of_nonneg ArithmeticFunction.vonMangoldt_nonneg]` — or `norm_of_nonneg vonMangoldt_nonneg` directly (Complex.norm_of_nonneg exists? `Complex.norm_of_nonneg (hx : 0 ≤ x) : ‖(x : ℂ)‖ = x` ✓ exists).
OK — and the summability for the tsum comparison:
```
lemma dirichletC3_le_half : (∑' n : ℕ, ‖LSeries.term (fun n => (ArithmeticFunction.vonMangoldt n : ℂ)) (3 : ℂ) n‖) ≤ 1 / 2 := by
have hsum3 : Summable (fun n : ℕ => ‖LSeries.term (fun n => (ArithmeticFunction.vonMangoldt n : ℂ)) (3 : ℂ) n‖) := by
rw [summable_norm_iff]
exact ArithmeticFunction.LSeriesSummable_vonMangoldt (by norm_num)
have hsum2 : Summable ... := (same at 2)
calc ∑' n, ‖term Λ 3 n‖
≤ ∑' n, (1/2) * ‖term Λ 2 n‖ := Summable.tsum_le_tsum (fun n => norm_term_vonMangoldt_three_le_half n) hsum3 (hsum2.mul_left _)
_ = (1/2) * dirichletC2 := by rw [dirichletC2, tsum_mul_left]
_ ≤ 1 / 2 := by linarith [dirichletC2_le_one]
```
`Summable.tsum_le_tsum (h : ∀ n, f n ≤ g n) (hf : Summable f) (hg : Summable g) : ∑' f ≤ ∑' g` ✓ (used in the C2 proof ✓).
And the zeta bound:
```
/-- ‖ζ′/ζ s‖ ≤ 1/2 for re s ≥ 3 (the C = 0.5 dog-leg constant: the
termwise 3-vs-2 comparison + dirichletC2 ≤ 1). -/
lemma norm_logDeriv_zeta_le_half {s : ℂ} (hs : 3 ≤ s.re) :
‖logDeriv riemannZeta s‖ ≤ 1 / 2 := by
have hs2 : 2 ≤ s.re := by linarith
have hle := norm_logDeriv_zeta_le_dirichlet hs2
-- hmm — that gives ≤ dirichletC2, not the sharper 3-bound...
```
WAIT — norm_logDeriv_zeta_le_dirichlet bounds by dirichletC2 (the s=2 tsum). For the sharper s=3 comparison I need the s=3 tsum: ‖LSeries Λ s‖ ≤ ∑'‖term Λ s‖ ≤ ∑'‖term Λ 3‖ (re 3 ≤ re s) — then dirichletC3 ≤ 1/2. So I need the full C3-shaped clone:
```
lemma norm_logDeriv_zeta_le_dirichletC3 {s : ℂ} (hs : 3 ≤ s.re) :
‖logDeriv riemannZeta s‖ ≤ ∑' n : ℕ, ‖LSeries.term (fun n => (ArithmeticFunction.vonMangoldt n : ℂ)) (3 : ℂ) n‖ :=
-- clone of norm_logDeriv_zeta_le_dirichlet with 3 in place of 2
lemma norm_logDeriv_zeta_le_half {s : ℂ} (hs : 3 ≤ s.re) :
‖logDeriv riemannZeta s‖ ≤ 1 / 2 :=
le_trans (norm_logDeriv_zeta_le_dirichletC3 hs) dirichletC3_le_half
```
For uniformity with dirichletC2, define dirichletC3:
```
def dirichletC3 : ℝ := ∑' n : ℕ, ‖LSeries.term (fun n => (ArithmeticFunction.vonMangoldt n : ℂ)) (3 : ℂ) n‖
```
then dirichletC3_le_half : dirichletC3 ≤ 1/2 and the clone bounds by dirichletC3.
Then the V_left assembly:
```
/-- The left-lift bound (D-074 §3.3 V_left): for T² ≥ n and 0 < T ≤ U,
‖VIntegral (Jlag n) 3 T U‖ ≤ (U − T)·(e^{5/2}+1)/2. The zeta factor
‖ζ′/ζ(3+it)‖ ≤ 1/2 (dirichletC3 ≤ 1/2); the kernel ≤ e^{5/2}+1. -/
theorem vIntegral_Jlag_three_norm_le {n : ℕ} {T U : ℝ}
(hT0 : (0 : ℝ) < T) (hTU : T ≤ U) (hTn : (n : ℝ) ≤ T ^ 2) :
‖VIntegral (Jlag n) 3 T U‖ ≤ (U - T) * (Real.exp (5 / 2) + 1) / 2 := by
unfold VIntegral
rw [norm_smul, Complex.norm_I, one_mul]
-- ‖∫_T^U Jlag (3 + t·I) dt‖ ≤ ∫_T^U ‖Jlag‖ ≤ (U−T)·sup
have hcont : ContinuousOn (fun t : ℝ => Jlag n ((3 : ℝ) + t * Complex.I)) (Set.Icc T U) := by
intro t ht
exact (Jlag_differentiableAt_dogleg (by simp : 3 ≤ ((3:ℝ) + t*I).re) (by
simp [ht.1, hT0] : 0 < ((3:ℝ) + t*I).im)).continuousAt.continuousWithinAt
have hbound : ∀ t ∈ Set.Icc T U, ‖Jlag n ((3 : ℝ) + t * Complex.I)‖ ≤ (Real.exp (5/2) + 1) * (1/2) := by
intro t ht
have ht2 : (n : ℝ) ≤ t ^ 2 := by
-- t ≥ T ⟹ t² ≥ T² ≥ n ✓ (t ≥ T > 0)
have htT : T ≤ t := ht.1
nlinarith [hTn, hT0]
have h1 := kFun_three_add_it_norm_le_exp_five_halves_add_one ht2
have h2 := norm_logDeriv_zeta_le_half (s := (3:ℝ) + t * Complex.I) (by simp)
unfold Jlag
rw [show Jlag n ((3:ℝ) + t * Complex.I) = kFun n ((3:ℝ) + t * Complex.I) *
(logDeriv riemannZeta ((3:ℝ) + t * Complex.I)) from rfl]
```
Hmm — Jlag n s = kFun n s * (-(deriv ζ s/ζ s)) and logDeriv ζ s = deriv ζ s/ζ s (logDeriv def: logDeriv f = f'/f ✓ so −(deriv/ζ) = −logDeriv). ‖−logDeriv‖ = ‖logDeriv‖ ✓.
```
calc ‖kFun n _ * (-(deriv ζ _ / ζ _))‖
≤ ‖kFun n _‖ * ‖logDeriv ζ _‖ := by rw [norm_mul, ← norm_neg]; rfl??
```
logDeriv f s = deriv f s / f s (Mathlib: logDeriv f = fun x => deriv f x / f x — the Pi.div form). So −(deriv ζ s/ζ s) = −logDeriv ζ s. ‖−logDeriv‖ = ‖logDeriv‖. The norm_logDeriv_zeta_le_half is stated on ‖logDeriv riemannZeta s‖ ✓. So:
```
have hJ : Jlag n ((3:ℝ) + t * Complex.I) = kFun n ((3:ℝ) + t * Complex.I) *
(-logDeriv riemannZeta ((3:ℝ) + t * Complex.I)) := rfl
calc ‖Jlag n _‖ = ‖kFun n _‖ * ‖logDeriv ζ _‖ := by rw [hJ, norm_mul, norm_neg]
_ ≤ (Real.exp (5/2) + 1) * (1/2) := by
apply mul_le_mul h1 h2 (norm_nonneg _) (by positivity)
```
mul_le_mul (h1 : a ≤ b) (h2 : c ≤ d) (hc : 0 ≤ c) (hb : 0 ≤ b) : a*c ≤ b*d ✓ — hc : 0 ≤ ‖logDeriv‖ ✓ (norm_nonneg); hb : 0 ≤ e^{5/2}+1 ✓ positivity.
Then the integral bound:
```
calc ‖∫ t in T..U, Jlag n ((3:ℝ) + t * Complex.I)‖
≤ (U - T) * ((Real.exp (5/2) + 1) * (1/2)) := by
apply intervalIntegral.norm_integral_le_of_norm_le_const hTU hbound
_ = (U - T) * (Real.exp (5 / 2) + 1) / 2 := by ring
```
`intervalIntegral.norm_integral_le_of_norm_le_const (hab : a ≤ b) (hf : ∀ x ∈ Set.Icc a b, ‖f x‖ ≤ C) : ‖∫ x in a..b, f x‖ ≤ C * (b - a)` — check the exact name/form: Mathlib has intervalIntegral.norm_integral_le_of_norm_le_const (hab : a ≤ b) (h : ∀ x ∈ uIcc a b, ‖f x‖ ≤ C) : ‖∫ x in a..b, f x‖ ≤ C * |b - a|?? — there are variants. Let me check quickly. There's also `intervalIntegral.norm_integral_le_of_norm_le_const'`. I'll grep.
Also the norm_smul on I • x: ‖(I : ℂ) • x‖ = ‖I‖·‖x‖: norm_smul gives ‖I‖ * ‖x‖; Complex.norm_I : ‖Complex.I‖ = 1 ✓. Hmm — VIntegral f x y₁ y₂ = I • (∫ ...) with • being ℂ-scalar on ℂ — norm_smul : ‖c • x‖ = ‖c‖ * ‖x‖ ✓.
Also the interval integral ∫ t in T..U: VIntegral's def uses `∫ y in y₁..y₂, f (x + y * I)` — the intervalIntegral with the intervalIntegral Integrable condition?? The norm bound lemma needs integrability: norm_integral_le_of_norm_le_const might not require it (the junk-value convention) — the version without integrability: `intervalIntegral.norm_integral_le_of_norm_le_const'`? Hmm — safest: provide integrability (ContinuousOn ✓ gives IntervalIntegrable via ContinuousOn.intervalIntegrable).
Let me check the exact lemma names in this Mathlib for the norm-of-interval-integral bound.
Checking the exact interval-integral norm bound lemma names.
tool: Bash
input
{
"command": "cd D:/Python/Quantum/zeta-23-lean && grep -rn \"norm_integral_le_of_norm_le_const\\|norm_intervalIntegral_le\" .lake/packages/mathlib/Mathlib/MeasureTheory/Integral/IntervalIntegral.lean 2>/dev/null | head -8; grep -rn \"theorem.*norm_integral_le_of_norm_le_const\" .lake/packages/mathlib/Mathlib/ -r 2>/dev/null | head -5",
"description": "Find interval-integral norm bound lemmas"
}
raw content_json (database row)
[{"type":"thinking","thinking":"`norm_term_eq`: ‖term f s n‖ = if n = 0 then 0 else ‖f n‖ / n ^ s.re — perfect for the comparison lemma. For the Λ terms at 3 vs 2:\n\n‖term Λ 3 n‖ = (n = 0 ? 0 : Λ(n)/n³) and ‖term Λ 2 n‖ = (n = 0 ? 0 : Λ(n)/n²). For n ≠ 0: Λ(n)/n³ = (1/n)·(Λ(n)/n²) ≤ (1/2)·(Λ(n)/n²) when 2 ≤ n (1/n ≤ 1/2 ✓); n = 1: Λ(1) = 0 → both 0 ✓ (Λ(1) = 0 — vonMangoldt at 1: `ArithmeticFunction.vonMangoldt_one` = 0 ✓ exists presumably).\n\nThe comparison lemma:\n```lean\nlemma norm_term_vonMangoldt_three_le_half (n : ℕ) :\n ‖LSeries.term (fun n => (ArithmeticFunction.vonMangoldt n : ℂ)) (3 : ℂ) n‖ ≤\n (1 / 2) * ‖LSeries.term (fun n => (ArithmeticFunction.vonMangoldt n : ℂ)) (2 : ℂ) n‖ := by\n rw [norm_term_eq, norm_term_eq]\n split\n · norm_num\n · next hn =>\n -- goal: Λ(n)/n³ ≤ (1/2)·(Λ(n)/n²)\n have hn2 : 2 ≤ n := Nat.two_le_iff_ne_zero_and_one_lt... \n```\nHmm — n ≠ 0 means n ≥ 1; for n = 1, Λ(1) = 0 → both sides 0. For n ≥ 2: the ratio. So handle n = 1 specially:\n```\n · next hn =>\n rcases eq_or_ne n 1 with rfl | hn1\n · simp [ArithmeticFunction.vonMangoldt_one] -- Λ(1) = 0: both sides 0\n · have hn2 : 2 ≤ n := by omega -- n ≠ 0 ∧ n ≠ 1 ⟹ 2 ≤ n\n -- Λ(n)/n³ ≤ (1/2)·Λ(n)/n²\n have hΛnn : (0:ℝ) ≤ (ArithmeticFunction.vonMangoldt n : ℝ) := ArithmeticFunction.vonMangoldt_nonneg\n have e : (ArithmeticFunction.vonMangoldt n : ℝ) / (n:ℝ) ^ 3 =\n (1 / (n:ℝ)) * ((ArithmeticFunction.vonMangoldt n : ℝ) / (n:ℝ) ^ 2) := by\n field_simp [show (n:ℝ) ≠ 0 by positivity]\n ring\n rw [e]\n have h12 : (1 : ℝ) / (n:ℝ) ≤ 1 / 2 := by\n rw [div_le_div_iff_of_pos_left (by norm_num : (0:ℝ) < 1) (by positivity : (0:ℝ) < 2) (by positivity : (0:ℝ) < n)]\n exact_mod_cast hn2\n calc (1 / (n:ℝ)) * ((ArithmeticFunction.vonMangoldt n : ℝ) / (n:ℝ) ^ 2)\n ≤ (1 / 2) * ((ArithmeticFunction.vonMangoldt n : ℝ) / (n:ℝ) ^ 2) := by\n apply mul_le_mul_of_nonneg_right _ (by positivity)\n exact h12\n _ = (1 / 2) * ‖...‖ := by rw [norm_term_eq, if_neg hn]\n```\nHmm — the norm_term_eq's if: the goal after `rw [norm_term_eq, norm_term_eq]; split` — the two ifs share the condition n = 0: `split` handles the if on the GOAL (both ifs split together? `split` splits the FIRST if; with two ifs with the same condition it might handle both or need twice). The norm_term_le_of_re_le_re proof above did exactly `simp only [norm_term_eq]; split; · rfl; · next hn => gcongr; ...` — so split handles both ifs in one go (they reduce on the same condition) ✓ clone that pattern.\n\nAlso — wait, the norm of the Λ value: ‖(ArithmeticFunction.vonMangoldt n : ℂ)‖ = Λ(n) (real, nonneg): the norm_term_eq gives ‖f n‖/n^s.re with f n = (Λ n : ℂ): ‖(Λ n : ℂ)‖ = Λ n as a real (Complex.norm_of_nonneg vonMangoldt_nonneg / or the norm is just the real value: (‖(Λ n : ℂ)‖ : ℝ) = Λ n — need `Complex.norm_ofReal`/`norm_of_nonneg`... In the goal after norm_term_eq, the LHS is ‖(Λ n : ℂ)‖ / n^3 — the `e` computation needs ‖(Λ n:ℂ)‖ = Λ n (as reals): `have hΛ : ‖(ArithmeticFunction.vonMangoldt n : ℂ)‖ = ArithmeticFunction.vonMangoldt n := by rw [Complex.norm_eq_abs, ← Real.norm_eq_abs, Real.norm_of_nonneg ArithmeticFunction.vonMangoldt_nonneg]` — or `norm_of_nonneg vonMangoldt_nonneg` directly (Complex.norm_of_nonneg exists? `Complex.norm_of_nonneg (hx : 0 ≤ x) : ‖(x : ℂ)‖ = x` ✓ exists).\n\nOK — and the summability for the tsum comparison:\n```\nlemma dirichletC3_le_half : (∑' n : ℕ, ‖LSeries.term (fun n => (ArithmeticFunction.vonMangoldt n : ℂ)) (3 : ℂ) n‖) ≤ 1 / 2 := by\n have hsum3 : Summable (fun n : ℕ => ‖LSeries.term (fun n => (ArithmeticFunction.vonMangoldt n : ℂ)) (3 : ℂ) n‖) := by\n rw [summable_norm_iff]\n exact ArithmeticFunction.LSeriesSummable_vonMangoldt (by norm_num)\n have hsum2 : Summable ... := (same at 2)\n calc ∑' n, ‖term Λ 3 n‖\n ≤ ∑' n, (1/2) * ‖term Λ 2 n‖ := Summable.tsum_le_tsum (fun n => norm_term_vonMangoldt_three_le_half n) hsum3 (hsum2.mul_left _)\n _ = (1/2) * dirichletC2 := by rw [dirichletC2, tsum_mul_left]\n _ ≤ 1 / 2 := by linarith [dirichletC2_le_one]\n```\n`Summable.tsum_le_tsum (h : ∀ n, f n ≤ g n) (hf : Summable f) (hg : Summable g) : ∑' f ≤ ∑' g` ✓ (used in the C2 proof ✓).\n\nAnd the zeta bound:\n```\n/-- ‖ζ′/ζ s‖ ≤ 1/2 for re s ≥ 3 (the C = 0.5 dog-leg constant: the\ntermwise 3-vs-2 comparison + dirichletC2 ≤ 1). -/\nlemma norm_logDeriv_zeta_le_half {s : ℂ} (hs : 3 ≤ s.re) :\n ‖logDeriv riemannZeta s‖ ≤ 1 / 2 := by\n have hs2 : 2 ≤ s.re := by linarith\n have hle := norm_logDeriv_zeta_le_dirichlet hs2\n -- hmm — that gives ≤ dirichletC2, not the sharper 3-bound...\n```\nWAIT — norm_logDeriv_zeta_le_dirichlet bounds by dirichletC2 (the s=2 tsum). For the sharper s=3 comparison I need the s=3 tsum: ‖LSeries Λ s‖ ≤ ∑'‖term Λ s‖ ≤ ∑'‖term Λ 3‖ (re 3 ≤ re s) — then dirichletC3 ≤ 1/2. So I need the full C3-shaped clone:\n\n```\nlemma norm_logDeriv_zeta_le_dirichletC3 {s : ℂ} (hs : 3 ≤ s.re) :\n ‖logDeriv riemannZeta s‖ ≤ ∑' n : ℕ, ‖LSeries.term (fun n => (ArithmeticFunction.vonMangoldt n : ℂ)) (3 : ℂ) n‖ :=\n -- clone of norm_logDeriv_zeta_le_dirichlet with 3 in place of 2\n\nlemma norm_logDeriv_zeta_le_half {s : ℂ} (hs : 3 ≤ s.re) :\n ‖logDeriv riemannZeta s‖ ≤ 1 / 2 :=\n le_trans (norm_logDeriv_zeta_le_dirichletC3 hs) dirichletC3_le_half\n```\n\nFor uniformity with dirichletC2, define dirichletC3:\n```\ndef dirichletC3 : ℝ := ∑' n : ℕ, ‖LSeries.term (fun n => (ArithmeticFunction.vonMangoldt n : ℂ)) (3 : ℂ) n‖\n```\nthen dirichletC3_le_half : dirichletC3 ≤ 1/2 and the clone bounds by dirichletC3.\n\nThen the V_left assembly:\n```\n/-- The left-lift bound (D-074 §3.3 V_left): for T² ≥ n and 0 < T ≤ U,\n‖VIntegral (Jlag n) 3 T U‖ ≤ (U − T)·(e^{5/2}+1)/2. The zeta factor\n‖ζ′/ζ(3+it)‖ ≤ 1/2 (dirichletC3 ≤ 1/2); the kernel ≤ e^{5/2}+1. -/\ntheorem vIntegral_Jlag_three_norm_le {n : ℕ} {T U : ℝ}\n (hT0 : (0 : ℝ) < T) (hTU : T ≤ U) (hTn : (n : ℝ) ≤ T ^ 2) :\n ‖VIntegral (Jlag n) 3 T U‖ ≤ (U - T) * (Real.exp (5 / 2) + 1) / 2 := by\n unfold VIntegral\n rw [norm_smul, Complex.norm_I, one_mul]\n -- ‖∫_T^U Jlag (3 + t·I) dt‖ ≤ ∫_T^U ‖Jlag‖ ≤ (U−T)·sup\n have hcont : ContinuousOn (fun t : ℝ => Jlag n ((3 : ℝ) + t * Complex.I)) (Set.Icc T U) := by\n intro t ht\n exact (Jlag_differentiableAt_dogleg (by simp : 3 ≤ ((3:ℝ) + t*I).re) (by\n simp [ht.1, hT0] : 0 < ((3:ℝ) + t*I).im)).continuousAt.continuousWithinAt\n have hbound : ∀ t ∈ Set.Icc T U, ‖Jlag n ((3 : ℝ) + t * Complex.I)‖ ≤ (Real.exp (5/2) + 1) * (1/2) := by\n intro t ht\n have ht2 : (n : ℝ) ≤ t ^ 2 := by\n -- t ≥ T ⟹ t² ≥ T² ≥ n ✓ (t ≥ T > 0)\n have htT : T ≤ t := ht.1\n nlinarith [hTn, hT0]\n have h1 := kFun_three_add_it_norm_le_exp_five_halves_add_one ht2\n have h2 := norm_logDeriv_zeta_le_half (s := (3:ℝ) + t * Complex.I) (by simp)\n unfold Jlag\n rw [show Jlag n ((3:ℝ) + t * Complex.I) = kFun n ((3:ℝ) + t * Complex.I) *\n (logDeriv riemannZeta ((3:ℝ) + t * Complex.I)) from rfl]\n```\nHmm — Jlag n s = kFun n s * (-(deriv ζ s/ζ s)) and logDeriv ζ s = deriv ζ s/ζ s (logDeriv def: logDeriv f = f'/f ✓ so −(deriv/ζ) = −logDeriv). ‖−logDeriv‖ = ‖logDeriv‖ ✓.\n\n```\n calc ‖kFun n _ * (-(deriv ζ _ / ζ _))‖\n ≤ ‖kFun n _‖ * ‖logDeriv ζ _‖ := by rw [norm_mul, ← norm_neg]; rfl?? \n```\nlogDeriv f s = deriv f s / f s (Mathlib: logDeriv f = fun x => deriv f x / f x — the Pi.div form). So −(deriv ζ s/ζ s) = −logDeriv ζ s. ‖−logDeriv‖ = ‖logDeriv‖. The norm_logDeriv_zeta_le_half is stated on ‖logDeriv riemannZeta s‖ ✓. So:\n\n```\n have hJ : Jlag n ((3:ℝ) + t * Complex.I) = kFun n ((3:ℝ) + t * Complex.I) *\n (-logDeriv riemannZeta ((3:ℝ) + t * Complex.I)) := rfl\n calc ‖Jlag n _‖ = ‖kFun n _‖ * ‖logDeriv ζ _‖ := by rw [hJ, norm_mul, norm_neg]\n _ ≤ (Real.exp (5/2) + 1) * (1/2) := by\n apply mul_le_mul h1 h2 (norm_nonneg _) (by positivity)\n```\nmul_le_mul (h1 : a ≤ b) (h2 : c ≤ d) (hc : 0 ≤ c) (hb : 0 ≤ b) : a*c ≤ b*d ✓ — hc : 0 ≤ ‖logDeriv‖ ✓ (norm_nonneg); hb : 0 ≤ e^{5/2}+1 ✓ positivity.\n\nThen the integral bound:\n```\n calc ‖∫ t in T..U, Jlag n ((3:ℝ) + t * Complex.I)‖\n ≤ (U - T) * ((Real.exp (5/2) + 1) * (1/2)) := by\n apply intervalIntegral.norm_integral_le_of_norm_le_const hTU hbound\n _ = (U - T) * (Real.exp (5 / 2) + 1) / 2 := by ring\n```\n`intervalIntegral.norm_integral_le_of_norm_le_const (hab : a ≤ b) (hf : ∀ x ∈ Set.Icc a b, ‖f x‖ ≤ C) : ‖∫ x in a..b, f x‖ ≤ C * (b - a)` — check the exact name/form: Mathlib has intervalIntegral.norm_integral_le_of_norm_le_const (hab : a ≤ b) (h : ∀ x ∈ uIcc a b, ‖f x‖ ≤ C) : ‖∫ x in a..b, f x‖ ≤ C * |b - a|?? — there are variants. Let me check quickly. There's also `intervalIntegral.norm_integral_le_of_norm_le_const'`. I'll grep.\n\nAlso the norm_smul on I • x: ‖(I : ℂ) • x‖ = ‖I‖·‖x‖: norm_smul gives ‖I‖ * ‖x‖; Complex.norm_I : ‖Complex.I‖ = 1 ✓. Hmm — VIntegral f x y₁ y₂ = I • (∫ ...) with • being ℂ-scalar on ℂ — norm_smul : ‖c • x‖ = ‖c‖ * ‖x‖ ✓.\n\nAlso the interval integral ∫ t in T..U: VIntegral's def uses `∫ y in y₁..y₂, f (x + y * I)` — the intervalIntegral with the intervalIntegral Integrable condition?? The norm bound lemma needs integrability: norm_integral_le_of_norm_le_const might not require it (the junk-value convention) — the version without integrability: `intervalIntegral.norm_integral_le_of_norm_le_const'`? Hmm — safest: provide integrability (ContinuousOn ✓ gives IntervalIntegrable via ContinuousOn.intervalIntegrable).\n\nLet me check the exact lemma names in this Mathlib for the norm-of-interval-integral bound.","signature":""},{"type":"text","text":"Checking the exact interval-integral norm bound lemma names."},{"type":"tool_use","id":"Bash_202","name":"Bash","input":{"command":"cd D:/Python/Quantum/zeta-23-lean && grep -rn \"norm_integral_le_of_norm_le_const\\|norm_intervalIntegral_le\" .lake/packages/mathlib/Mathlib/MeasureTheory/Integral/IntervalIntegral.lean 2>/dev/null | head -8; grep -rn \"theorem.*norm_integral_le_of_norm_le_const\" .lake/packages/mathlib/Mathlib/ -r 2>/dev/null | head -5","description":"Find interval-integral norm bound lemmas"},"extra_content":null}]