← Session 24 — ii′-2…4: swaps, (4.10) design, contour + website roadmap fixes
thinking (4553 chars)
§2's scaledZeta pieces compile. Continue §2: the finiteness of SetOfZeros 1 (scaledZeta t), the ZerosBound application, and the R-gap. Let me write the finiteness + the ZerosBound application.
The finiteness: SetOfZeros 1 (scaledZeta t) = {w | ‖w‖ ≤ 1 ∧ scaledZeta t w = 0}:
- scaledZeta t w = 0 ⟺ ζ(s₀ + (5/2)w) = 0 (ζ(s₀) ≠ 0 ✓).
- So SetOfZeros 1 F = (fun w => s₀ + (5/2)w) ⁻¹' {ρ | ζ ρ = 0 ∧ ‖ρ − s₀‖ ≤ 5/2}... the finiteness: the ζ-zero set in the closed ball is finite (zeroDisc_finite via Mathlib) and the affine map is injective ⟹ preimage finite: `Set.Finite.preimage (hs : s.Finite) (hinj : Set.InjOn f (f ⁻¹' s))`? hmm the form: `Set.Finite.preimage (hs : s.Finite) (hinj : Set.InjOn f (f ⁻¹' s)) : (f ⁻¹' s).Finite`? I believe `Set.Finite.preimage` takes (hs : t.Finite) and (Set.InjOn f (f ⁻¹' t)) giving (f ⁻¹' t).Finite ✓.
Then ZerosBound {B r R} {f} (r_pos : 0 < r) (r_lt_one : r < 1) (r_lt_R : r < R) (R_lt_one : R < 1) (hfAnalytic : AnalyticOnNhd ℂ f (closedBall 0 1)) (hf0_eq_one : f 0 = 1) (finiteZeros : (SetOfZeros 1 f).Finite) (fz_bound : ∀ z, ‖z‖ ≤ R → ‖f z‖ ≤ B) : ∑ ρ ∈ (finiteSetOfZeros_mono r_lt_one finiteZeros).toFinset, analyticOrderNatAt f ρ ≤ (1/log(R/r))·log B.
With r := 23/25, R := 24/25, B := (9/4)·|t|²:
- fz_bound: ‖z‖ ≤ 24/25 ⟹ ‖F z‖ = ‖ζ(s₀+(5/2)z)‖/‖ζ(s₀)‖ ≤ (3/4)|t|²/(1/3) = (9/4)|t|²: needs (3/4)|t|² from norm_riemannZeta_le_disc (s₀+(5/2)z ∈ closedBall(s₀, 5/2) ⟸ ‖(5/2)z‖ ≤ (5/2)(24/25) = 12/5 ≤ 5/2 ✓) and ‖ζ(s₀)‖ ≥ 1/3 ⟹ 1/‖ζ(s₀)‖ ≤ 3: ‖F z‖ = ‖ζ(...)‖/‖ζ(s₀)‖ ≤ (3/4)|t|²·3 = (9/4)|t|² ✓.
- The conclusion: Σ_{w ∈ (SetOfZeros (23/25) F)-finset} analyticOrderNatAt F w ≤ log((9/4)|t|²)/log(24/23).
- Convert to the ζ-side: zeros ρ of ζ with ‖ρ − s₀‖ ≤ 23/10 (via w = (ρ−s₀)/(5/2)): the sum over the w-side equals the sum over the ρ-side (analyticOrderNatAt invariance under the affine map). Then M := Σ_{ρ: ‖ρ−s₀‖ ≤ 23/10} zeroMult ρ ≤ log((9/4)|t|²)/log(24/23).
The analyticOrderNatAt invariance: analyticOrderNatAt F w = analyticOrderNatAt ζ (s₀ + (5/2)w) — via the comp + the constant division:
- analyticOrderNatAt (ζ ∘ affine) w = analyticOrderNatAt ζ (affine w): via analyticOrderAt comp invariance — is there a Mathlib lemma `analyticOrderAt_comp`? Probably not directly; prove via the normal form (analyticOrderAt_eq_natCast characterization like ii′-4c): F(w) = ζ(aff w) = (aff w − aff w₀)^m·h(aff w) = ((5/2)(w−w₀))^m·h(aff w) = (5/2)^m·(w−w₀)^m·h(aff w): so F =ᶠ (w−w₀)^m·[(5/2)^m·h(aff w)] with the bracket analytic nonzero at w₀ ⟹ order m ✓. Formally via AnalyticAt.analyticOrderAt_eq_natCast: ⟨g', analytic, g'(w₀) ≠ 0, eventuallyEq⟩ — the eventuallyEq from the ζ-side factorization at aff w₀ (via `AnalyticAt.analyticOrderAt_ne_top`-choose-spec pattern used in ZeroFactorization: `(AnalyticAt_ρ.analyticOrderAt_ne_top.mp finiteOrder).choose_spec` gives h_ρ analytic, h_ρ ρ ≠ 0, f =ᶠ[𝓝 ρ] (z−ρ)^order•h_ρ).
Hmm — this per-zero factorization via the choose-spec: workable. There might be a cleaner API: `analyticOrderAt_comp`? let me just do it via the natCast characterization.
Actually — wait. Maybe simpler to AVOID the order-invariance entirely by working on the w-side for the count and keeping the R-sum on the ζ-side with a SEPARATE comparison... no — the mult-weights must match for the count to transfer. Let me just prove the invariance lemma:
```lean
theorem analyticOrderNatAt_scaledZeta {t : ℝ} (w : ℂ) :
analyticOrderNatAt (scaledZeta t) w = analyticOrderNatAt riemannZeta (discCenter t + (5/2 : ℂ) * w) := by
...
```
Hmm — analyticOrderNatAt vs analyticOrderAt: zeroMult uses analyticOrderAt...toNat. The invariance at the analyticOrderAt level: analyticOrderAt F w = analyticOrderAt ζ (aff w):
- step 1: analyticOrderAt (fun w => c * f w) = analyticOrderAt f w for c ≠ 0 — hmm — actually scaledZeta = ζ∘aff / ζ(s₀) = (1/ζ(s₀))·(ζ∘aff): constant multiple: analyticOrderAt (c • f)?? there might be `analyticOrderAt_const_mul`? or via AnalyticAt.analyticOrderAt_mul (const order 0). Hmm — does `AnalyticAt.analyticOrderAt_mul` exist? Earlier grep of Order.lean showed `analyticOrderAt_smul_eq_top_of_left/right` and stuff around line 229-253 — there's a mul version: `AnalyticAt.analyticOrderAt_mul`? Let me check Order.lean around line 229-260.
Actually — simpler global approach: rather than proving order-invariance abstractly, note that what I really need downstream is: the mult-weighted count of ζ-zeros in the |·−s₀| ≤ 23/10 region. The ZerosBound gives the F-side count. The bridge is the order-invariance. OK let me just check the mul/const_order API.
§2's scaled function compiles. Checking the order-of-product API for the affine invariance step.
tool: Bash
input
{
"command": "cd D:/Python/Quantum/zeta-23-lean/.lake/packages/mathlib && sed -n '225,265p' Mathlib/Analysis/Analytic/Order.lean && grep -rn \"analyticOrderAt_mul\\|analyticOrderAt_const_mul\\|analyticOrderAt_smul\\|analyticOrderAt_comp\" Mathlib/Analysis/Analytic/Order.lean | head -6",
"description": "Check analyticOrderAt product/comp API"
}
raw content_json (database row)
[{"type":"thinking","thinking":"§2's scaledZeta pieces compile. Continue §2: the finiteness of SetOfZeros 1 (scaledZeta t), the ZerosBound application, and the R-gap. Let me write the finiteness + the ZerosBound application.\n\nThe finiteness: SetOfZeros 1 (scaledZeta t) = {w | ‖w‖ ≤ 1 ∧ scaledZeta t w = 0}:\n- scaledZeta t w = 0 ⟺ ζ(s₀ + (5/2)w) = 0 (ζ(s₀) ≠ 0 ✓).\n- So SetOfZeros 1 F = (fun w => s₀ + (5/2)w) ⁻¹' {ρ | ζ ρ = 0 ∧ ‖ρ − s₀‖ ≤ 5/2}... the finiteness: the ζ-zero set in the closed ball is finite (zeroDisc_finite via Mathlib) and the affine map is injective ⟹ preimage finite: `Set.Finite.preimage (hs : s.Finite) (hinj : Set.InjOn f (f ⁻¹' s))`? hmm the form: `Set.Finite.preimage (hs : s.Finite) (hinj : Set.InjOn f (f ⁻¹' s)) : (f ⁻¹' s).Finite`? I believe `Set.Finite.preimage` takes (hs : t.Finite) and (Set.InjOn f (f ⁻¹' t)) giving (f ⁻¹' t).Finite ✓.\n\nThen ZerosBound {B r R} {f} (r_pos : 0 < r) (r_lt_one : r < 1) (r_lt_R : r < R) (R_lt_one : R < 1) (hfAnalytic : AnalyticOnNhd ℂ f (closedBall 0 1)) (hf0_eq_one : f 0 = 1) (finiteZeros : (SetOfZeros 1 f).Finite) (fz_bound : ∀ z, ‖z‖ ≤ R → ‖f z‖ ≤ B) : ∑ ρ ∈ (finiteSetOfZeros_mono r_lt_one finiteZeros).toFinset, analyticOrderNatAt f ρ ≤ (1/log(R/r))·log B.\n\nWith r := 23/25, R := 24/25, B := (9/4)·|t|²:\n- fz_bound: ‖z‖ ≤ 24/25 ⟹ ‖F z‖ = ‖ζ(s₀+(5/2)z)‖/‖ζ(s₀)‖ ≤ (3/4)|t|²/(1/3) = (9/4)|t|²: needs (3/4)|t|² from norm_riemannZeta_le_disc (s₀+(5/2)z ∈ closedBall(s₀, 5/2) ⟸ ‖(5/2)z‖ ≤ (5/2)(24/25) = 12/5 ≤ 5/2 ✓) and ‖ζ(s₀)‖ ≥ 1/3 ⟹ 1/‖ζ(s₀)‖ ≤ 3: ‖F z‖ = ‖ζ(...)‖/‖ζ(s₀)‖ ≤ (3/4)|t|²·3 = (9/4)|t|² ✓.\n\n- The conclusion: Σ_{w ∈ (SetOfZeros (23/25) F)-finset} analyticOrderNatAt F w ≤ log((9/4)|t|²)/log(24/23).\n\n- Convert to the ζ-side: zeros ρ of ζ with ‖ρ − s₀‖ ≤ 23/10 (via w = (ρ−s₀)/(5/2)): the sum over the w-side equals the sum over the ρ-side (analyticOrderNatAt invariance under the affine map). Then M := Σ_{ρ: ‖ρ−s₀‖ ≤ 23/10} zeroMult ρ ≤ log((9/4)|t|²)/log(24/23).\n\nThe analyticOrderNatAt invariance: analyticOrderNatAt F w = analyticOrderNatAt ζ (s₀ + (5/2)w) — via the comp + the constant division:\n- analyticOrderNatAt (ζ ∘ affine) w = analyticOrderNatAt ζ (affine w): via analyticOrderAt comp invariance — is there a Mathlib lemma `analyticOrderAt_comp`? Probably not directly; prove via the normal form (analyticOrderAt_eq_natCast characterization like ii′-4c): F(w) = ζ(aff w) = (aff w − aff w₀)^m·h(aff w) = ((5/2)(w−w₀))^m·h(aff w) = (5/2)^m·(w−w₀)^m·h(aff w): so F =ᶠ (w−w₀)^m·[(5/2)^m·h(aff w)] with the bracket analytic nonzero at w₀ ⟹ order m ✓. Formally via AnalyticAt.analyticOrderAt_eq_natCast: ⟨g', analytic, g'(w₀) ≠ 0, eventuallyEq⟩ — the eventuallyEq from the ζ-side factorization at aff w₀ (via `AnalyticAt.analyticOrderAt_ne_top`-choose-spec pattern used in ZeroFactorization: `(AnalyticAt_ρ.analyticOrderAt_ne_top.mp finiteOrder).choose_spec` gives h_ρ analytic, h_ρ ρ ≠ 0, f =ᶠ[𝓝 ρ] (z−ρ)^order•h_ρ).\n Hmm — this per-zero factorization via the choose-spec: workable. There might be a cleaner API: `analyticOrderAt_comp`? let me just do it via the natCast characterization.\n\nActually — wait. Maybe simpler to AVOID the order-invariance entirely by working on the w-side for the count and keeping the R-sum on the ζ-side with a SEPARATE comparison... no — the mult-weights must match for the count to transfer. Let me just prove the invariance lemma:\n\n```lean\ntheorem analyticOrderNatAt_scaledZeta {t : ℝ} (w : ℂ) :\n analyticOrderNatAt (scaledZeta t) w = analyticOrderNatAt riemannZeta (discCenter t + (5/2 : ℂ) * w) := by\n ...\n```\nHmm — analyticOrderNatAt vs analyticOrderAt: zeroMult uses analyticOrderAt...toNat. The invariance at the analyticOrderAt level: analyticOrderAt F w = analyticOrderAt ζ (aff w):\n- step 1: analyticOrderAt (fun w => c * f w) = analyticOrderAt f w for c ≠ 0 — hmm — actually scaledZeta = ζ∘aff / ζ(s₀) = (1/ζ(s₀))·(ζ∘aff): constant multiple: analyticOrderAt (c • f)?? there might be `analyticOrderAt_const_mul`? or via AnalyticAt.analyticOrderAt_mul (const order 0). Hmm — does `AnalyticAt.analyticOrderAt_mul` exist? Earlier grep of Order.lean showed `analyticOrderAt_smul_eq_top_of_left/right` and stuff around line 229-253 — there's a mul version: `AnalyticAt.analyticOrderAt_mul`? Let me check Order.lean around line 229-260.\n\nActually — simpler global approach: rather than proving order-invariance abstractly, note that what I really need downstream is: the mult-weighted count of ζ-zeros in the |·−s₀| ≤ 23/10 region. The ZerosBound gives the F-side count. The bridge is the order-invariance. OK let me just check the mul/const_order API.","signature":""},{"type":"text","text":"§2's scaled function compiles. Checking the order-of-product API for the affine invariance step."},{"type":"tool_use","id":"Bash_361","name":"Bash","input":{"command":"cd D:/Python/Quantum/zeta-23-lean/.lake/packages/mathlib && sed -n '225,265p' Mathlib/Analysis/Analytic/Order.lean && grep -rn \"analyticOrderAt_mul\\|analyticOrderAt_const_mul\\|analyticOrderAt_smul\\|analyticOrderAt_comp\" Mathlib/Analysis/Analytic/Order.lean | head -6","description":"Check analyticOrderAt product/comp API"},"extra_content":null}]