← Session 31 — ii′-5f: tight R-bound 10.5/48 (piece 3 + pinch)
thinking (2259 chars)
The pattern is clear: the `analyticOrderAt_eq_natCast` characterization with the normal form f =ᶠ (z−z₀)ⁿ • h, h(z₀) ≠ 0. For the conj case:
Goal: `zeroMult ((starRingEnd ℂ) ρ) = zeroMult ρ` for IsNontrivialZero ρ (or any ρ ≠ 1 where ζ is analytic — but nontrivial is enough).
Proof plan (following the affine pattern):
- Let n := analyticOrderNatAt ζ ρ. Get the normal form at ρ: ζ =ᶠ[𝓝 ρ] (z−ρ)ⁿ • h, h analytic, h(ρ) ≠ 0 (from (analyticAt_riemannZeta hρ1).analyticOrderAt_ne_top.mp (zeta_order_ne_top_of_ne hρ1) — the pattern at line 196).
- Set z₀ := conj ρ. For g := ζ: show ζ =ᶠ[𝓝 (conj ρ)] (z − conj ρ)ⁿ • h̃ where h̃(z) = conj(h(conj z)).
ζ(z) = conj(ζ(conj z)) (riemannZeta_conj: ζ(conj z) = conj(ζ z) ⟹ ζ z = conj(ζ(conj z)): rw — ζ z = conj(conj(ζ z)) = conj(ζ(conj z)) ✓).
For z near conj ρ: conj z near ρ ⟹ ζ(conj z) = (conj z − ρ)ⁿ • h(conj z) ⟹ ζ(z) = conj((conj z − ρ)ⁿ • h(conj z)) = conj((conj z − ρ)ⁿ)·conj(h(conj z)) = (z − conj ρ)ⁿ · conj(h(conj z)) — since conj((conj z − ρ)ⁿ) = (z − conj ρ)ⁿ (conj_sub, conj_pow, RingConj... map_pow, conj_conj).
The eventually: h3.comp_tendsto (conj continuous: Continuous.tendsto (starRingEnd continuous... `Complex.continuous_conj` — as (starRingEnd ℂ) it's `continuous_starRingEnd` or continuous_conj) at conj ρ → ρ).
- h̃ analytic: conj ∘ h ∘ conj — the conj-sandwich of an analytic function IS analytic. Mathlib lemma? `AnalyticAt.conj`?? Hmm — need: AnalyticAt ℂ (fun z => conj (h (conj z))) (conj ρ). Is there such a lemma? I recall `analyticAt_conj` is FALSE (conj not analytic), but the sandwich: there might be `AnalyticAt.conj_conj`... Let me think of alternatives:
- Via the power series: h has a power series at ρ; conj-sandwich has conjugate coefficients. There might be `HasFPowerSeriesAt.conj`? Not sure.
- ALTERNATIVE avoiding the sandwich analyticity: h̃(z) = conj(h(conj z)) — I need analyticOrderAt ζ (conj ρ) = n via analyticOrderAt_eq_natCast which requires h̃ ANALYTIC at conj ρ.
- Mathlib search needed: "conj" "analytic" sandwich. I believe there IS `AnalyticAt.conj`? No... There's `Complex.analyticAt_iff`... Hmm, in recent Mathlib: `AnalyticAt.conj_cpow`... Let me search Mathlib source.
Let me grep the vendored Mathlib for conj-sandwich analyticity lemmas.
The normal-form pattern is clear. For the conj sandwich analyticity, let me check what Mathlib offers.
tool: Bash
input
{
"command": "grep -rn \"analyticAt.*conj\\|AnalyticAt.*conj\\|conj.*[Aa]nalytic\" D:/Python/Quantum/research/lean/NguyenRH1/../../../zeta-23-lean/.lake/packages/mathlib/Mathlib/Analysis/Complex/ 2>/dev/null | grep -i \"theorem\\|lemma\" | head -20",
"description": "Search Mathlib for conj analyticity lemmas"
}
raw content_json (database row)
[{"type":"thinking","thinking":"The pattern is clear: the `analyticOrderAt_eq_natCast` characterization with the normal form f =ᶠ (z−z₀)ⁿ • h, h(z₀) ≠ 0. For the conj case:\n\nGoal: `zeroMult ((starRingEnd ℂ) ρ) = zeroMult ρ` for IsNontrivialZero ρ (or any ρ ≠ 1 where ζ is analytic — but nontrivial is enough).\n\nProof plan (following the affine pattern):\n- Let n := analyticOrderNatAt ζ ρ. Get the normal form at ρ: ζ =ᶠ[𝓝 ρ] (z−ρ)ⁿ • h, h analytic, h(ρ) ≠ 0 (from (analyticAt_riemannZeta hρ1).analyticOrderAt_ne_top.mp (zeta_order_ne_top_of_ne hρ1) — the pattern at line 196).\n- Set z₀ := conj ρ. For g := ζ: show ζ =ᶠ[𝓝 (conj ρ)] (z − conj ρ)ⁿ • h̃ where h̃(z) = conj(h(conj z)).\n ζ(z) = conj(ζ(conj z)) (riemannZeta_conj: ζ(conj z) = conj(ζ z) ⟹ ζ z = conj(ζ(conj z)): rw — ζ z = conj(conj(ζ z)) = conj(ζ(conj z)) ✓).\n For z near conj ρ: conj z near ρ ⟹ ζ(conj z) = (conj z − ρ)ⁿ • h(conj z) ⟹ ζ(z) = conj((conj z − ρ)ⁿ • h(conj z)) = conj((conj z − ρ)ⁿ)·conj(h(conj z)) = (z − conj ρ)ⁿ · conj(h(conj z)) — since conj((conj z − ρ)ⁿ) = (z − conj ρ)ⁿ (conj_sub, conj_pow, RingConj... map_pow, conj_conj).\n The eventually: h3.comp_tendsto (conj continuous: Continuous.tendsto (starRingEnd continuous... `Complex.continuous_conj` — as (starRingEnd ℂ) it's `continuous_starRingEnd` or continuous_conj) at conj ρ → ρ).\n- h̃ analytic: conj ∘ h ∘ conj — the conj-sandwich of an analytic function IS analytic. Mathlib lemma? `AnalyticAt.conj`?? Hmm — need: AnalyticAt ℂ (fun z => conj (h (conj z))) (conj ρ). Is there such a lemma? I recall `analyticAt_conj` is FALSE (conj not analytic), but the sandwich: there might be `AnalyticAt.conj_conj`... Let me think of alternatives:\n - Via the power series: h has a power series at ρ; conj-sandwich has conjugate coefficients. There might be `HasFPowerSeriesAt.conj`? Not sure.\n - ALTERNATIVE avoiding the sandwich analyticity: h̃(z) = conj(h(conj z)) — I need analyticOrderAt ζ (conj ρ) = n via analyticOrderAt_eq_natCast which requires h̃ ANALYTIC at conj ρ. \n - Mathlib search needed: \"conj\" \"analytic\" sandwich. I believe there IS `AnalyticAt.conj`? No... There's `Complex.analyticAt_iff`... Hmm, in recent Mathlib: `AnalyticAt.conj_cpow`... Let me search Mathlib source.\n\nLet me grep the vendored Mathlib for conj-sandwich analyticity lemmas.","signature":""},{"type":"text","text":"The normal-form pattern is clear. For the conj sandwich analyticity, let me check what Mathlib offers."},{"type":"tool_use","id":"Bash_33","name":"Bash","input":{"command":"grep -rn \"analyticAt.*conj\\|AnalyticAt.*conj\\|conj.*[Aa]nalytic\" D:/Python/Quantum/research/lean/NguyenRH1/../../../zeta-23-lean/.lake/packages/mathlib/Mathlib/Analysis/Complex/ 2>/dev/null | grep -i \"theorem\\|lemma\" | head -20","description":"Search Mathlib for conj analyticity lemmas"},"extra_content":null}]