Current task: —

← Session 24 — ii′-2…4: swaps, (4.10) design, contour + website roadmap fixes

#1201 assistant 2026-08-22 16:00:13.082 UTC · 565→3523 tok open ⤢
thinking (872 chars)
`ENat.toNat` (ℕ∞ = WithTop ℕ, ENat namespace) with `ENat.toNat_one : toNat 1 = 1` ✓. So the final step: `rw [zeroMult, horder]; exact ENat.toNat_one` — or `simp [zeroMult, horder, ENat.toNat_one]`. Note: `(1 : ℕ∞)` vs `↑(1:ℕ)` — horder : analyticOrderAt ... = 1 — the `1` will elaborate as ℕ∞'s 1; toNat 1 = 1 via ENat.toNat_one ✓. Now write §5. One more check — the `open` namespaces in LiContour: Zeta23, Complex, Filter, Topology — so `Gammaℝ`, `Gamma` etc. accessible; `completedRiemannZeta_eq_Gammaℝ_mul` is Zeta23 (open Zeta23 ✓). `riemannZeta_neg_two_mul_nat_add_one` — in Complex namespace? RiemannZeta.lean:173 `theorem riemannZeta_neg_two_mul_nat_add_one` — inside namespace Complex? The file has `namespace Complex`? Let me just try unqualified first (open Complex). `completedRiemannZeta_one_sub` similarly. Writing §5 now — appending before `end NguyenRH1`.
All API confirmed. Writing §5 (trivial-zero simplicity).
tool: Edit
input
{
  "replace_all": false,
  "file_path": "D:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiContour.lean",
  "old_string": "end NguyenRH1\n\nend",
  "new_string": "/-! ## 5. Trivial-zero simplicity: zeroMult (\u22122) = 1 -/\n\n/-- The local factor of \u0393R at \u22122: Hfun s = 4\u00b7\u03c0^{\u2212s/2}\u00b7\u0393(s/2+2)/s. Equals\n(s+2)\u00b7\u0393R(s) off {\u22122, 0} (by `Gamma_add_one` twice); analytic at \u22122 with\nHfun(\u22122) = \u22122\u03c0 \u2260 0. This is the nonvanishing cofactor in the local\nfactorization \u03b6(s) = (s+2)\u00b7(\u039b(s)/Hfun(s)) proving zeroMult(\u22122) = 1. -/\ndef Hfun (s : \u2102) : \u2102 := 4 * (Real.pi : \u2102) ^ (-s / 2) * Complex.Gamma (s / 2 + 2) / s\n\n/-- Hfun is analytic at \u22122: on ball(\u22122, 1) the point s/2+2 avoids the\nGamma poles {0, \u22121, \u22122, \u2026} (it lies in ball(1, 1/2)). -/\ntheorem Hfun_analyticAt_neg_two : AnalyticAt \u2102 Hfun (-2) := by\n  have hcpi : AnalyticAt \u2102 (fun s => (Real.pi : \u2102) ^ (-s / 2)) (-2) := by\n    have heq : (fun s => (Real.pi : \u2102) ^ (-s / 2))\n        = fun s => Complex.exp ((Complex.log (Real.pi : \u2102) * (-1 / 2)) * s) := by\n      funext s\n      rw [Complex.cpow_def_of_ne_zero (by norm_num : (Real.pi : \u2102) \u2260 0)]\n      ring_nf\n    rw [heq]\n    exact (analyticAt_const.mul analyticAt_id).cexp\n  have hGamma : AnalyticAt \u2102 (fun s => Complex.Gamma (s / 2 + 2)) (-2) := by\n    have hd : DifferentiableOn \u2102 (fun s => Complex.Gamma (s / 2 + 2))\n        (Metric.ball (-2) 1) := by\n      intro s hs\n      have hg : DifferentiableAt \u2102 Complex.Gamma (s / 2 + 2) := by\n        apply Complex.differentiableAt_Gamma\n        intro m hm\n        have hs_eq : s = -2 * (m : \u2102) - 4 := by linear_combination 2 * hm\n        rw [hs_eq, Metric.mem_ball, dist_eq_norm] at hs\n        have h1 : ((-2 : \u2102) * (m : \u2102) - 4) - -2\n            = (((2 : \u211d) * m + 2 : \u211d) : \u2102) := by push_cast; ring\n        rw [h1, Complex.norm_real, Real.norm_eq_abs] at hs\n        rw [abs_of_nonneg (by positivity : (0:\u211d) \u2264 2 * (m : \u211d) + 2)] at hs\n        have hge : (2:\u211d) \u2264 2 * (m : \u211d) + 2 := by\n          have hm0 : (0:\u211d) \u2264 (m : \u211d) := by positivity\n          linarith\n        linarith\n      exact hg.comp s (by fun_prop)\n    exact (hd.analyticOnNhd Metric.isOpen_ball) (-2) (Metric.mem_ball_self zero_lt_one)\n  unfold Hfun\n  exact ((analyticAt_const.mul hcpi).mul hGamma).div analyticAt_id (by norm_num)\n\n/-- Hfun(\u22122) = \u22122\u03c0 (via \u0393(1) = 1 and \u03c0^1 = \u03c0). -/\ntheorem Hfun_neg_two : Hfun (-2) = -2 * (Real.pi : \u2102) := by\n  unfold Hfun\n  rw [show (-(-2 : \u2102) / 2) = 1 by norm_num, Complex.cpow_one,\n    show ((-2 : \u2102) / 2 + 2) = 1 by norm_num, Complex.Gamma_one, mul_one]\n  norm_num\n\n/-- Hfun(\u22122) \u2260 0. -/\ntheorem Hfun_neg_two_ne_zero : Hfun (-2) \u2260 0 := by\n  rw [Hfun_neg_two]\n  norm_num [Real.pi_ne_zero]\n\n/-- The punctured identity: (s+2)\u00b7\u0393R(s) = Hfun s for s \u2209 {\u22122, 0}\n(Gamma_add_one applied twice: \u0393(s/2) = \u0393(s/2+2)/((s/2)(s/2+1))). -/\ntheorem Hfun_eq (s : \u2102) (hs2 : s \u2260 -2) (hs0 : s \u2260 0) :\n    (s + 2) * Complex.Gamma\u211d s = Hfun s := by\n  have h2ne : s / 2 \u2260 0 := div_ne_zero hs0 (by norm_num)\n  have h21ne : s / 2 + 1 \u2260 0 := by\n    intro h\n    apply hs2\n    linear_combination 2 * h\n  have h1 := Complex.Gamma_add_one (s / 2) h2ne\n  have h2 : Complex.Gamma (s / 2 + 2) = (s / 2 + 1) * Complex.Gamma (s / 2 + 1) := by\n    rw [show s / 2 + 2 = (s / 2 + 1) + 1 by ring]\n    exact Complex.Gamma_add_one _ h21ne\n  have hG : Complex.Gamma (s / 2)\n      = Complex.Gamma (s / 2 + 2) / ((s / 2) * (s / 2 + 1)) := by\n    have h12 : Complex.Gamma (s / 2 + 2)\n        = (s / 2 + 1) * (s / 2) * Complex.Gamma (s / 2) := by\n      rw [h2, h1]; ring\n    rw [h12]\n    field_simp [mul_ne_zero h2ne h21ne]\n    ring\n  rw [Complex.Gamma\u211d_def, hG]\n  unfold Hfun\n  field_simp [hs0, mul_ne_zero h2ne h21ne]\n  ring\n\n/-- **Trivial-zero simplicity** (deferred from ii\u2032-1b(iii), route D-066 \u00a76):\nzeroMult(\u22122) = 1. The local factorization \u03b6(s) = (s+2)\u00b7G(s) holds near \u22122\nwith G(s) = \u039b(s)/Hfun(s) analytic and G(\u22122) = \u039b(\u22122)/(\u22122\u03c0) \u2260 0, since\n\u039b(\u22122) = \u039b(3) = \u0393R(3)\u00b7\u03b6(3) \u2260 0 (functional equation + \u0393R(3) \u2260 0 via\n`Gamma\u211d_eq_zero_iff` + `riemannZeta_ne_zero_of_one_lt_re`). -/\ntheorem zeroMult_neg_two : zeroMult (-2) = 1 := by\n  have hHfun_an : AnalyticAt \u2102 Hfun (-2) := Hfun_analyticAt_neg_two\n  have hHfun_ne : Hfun (-2) \u2260 0 := Hfun_neg_two_ne_zero\n  have h\u039b_an : AnalyticAt \u2102 completedRiemannZeta (-2) := by\n    have hd : DifferentiableOn \u2102 completedRiemannZeta (Metric.ball (-2) 1) := by\n      intro s hs\n      have hs0 : s \u2260 0 := by\n        rintro h\n        rw [h, Metric.mem_ball, dist_eq_norm] at hs\n        have e : ((0 : \u2102) - -2) = ((2 : \u211d) : \u2102) := by norm_num\n        rw [e, Complex.norm_real, Real.norm_eq_abs] at hs\n        norm_num at hs\n      have hs1 : s \u2260 1 := by\n        rintro h\n        rw [h, Metric.mem_ball, dist_eq_norm] at hs\n        have e : ((1 : \u2102) - -2) = ((3 : \u211d) : \u2102) := by norm_num\n        rw [e, Complex.norm_real, Real.norm_eq_abs] at hs\n        norm_num at hs\n      exact differentiableAt_completedZeta hs0 hs1\n    exact (hd.analyticOnNhd Metric.isOpen_ball) (-2) (Metric.mem_ball_self zero_lt_one)\n  have h\u039b_ne : completedRiemannZeta (-2) \u2260 0 := by\n    have h\u0393R3 : Complex.Gamma\u211d 3 \u2260 0 := by\n      rw [Complex.Gamma\u211d_eq_zero_iff]\n      rintro \u27e8m, hm\u27e9\n      have hre := congrArg Complex.re hm\n      simp only [Complex.neg_re, Complex.mul_re, Complex.ofReal_re, Complex.ofReal_im,\n        mul_zero, sub_zero, Complex.natCast_re, Complex.ofNat_re] at hre\n      have hm0 : (0:\u211d) \u2264 (m : \u211d) := by positivity\n      nlinarith\n    have h\u03b63 : riemannZeta 3 \u2260 0 :=\n      riemannZeta_ne_zero_of_one_lt_re (by norm_num)\n    have h\u039b3 : completedRiemannZeta 3 \u2260 0 := by\n      rw [completedRiemannZeta_eq_Gamma\u211d_mul (by norm_num) h\u0393R3]\n      exact mul_ne_zero h\u0393R3 h\u03b63\n    have hfe : completedRiemannZeta (-2) = completedRiemannZeta 3 := by\n      have h := completedRiemannZeta_one_sub (-2 : \u2102)\n      norm_num at h\n      exact h.symm\n    rw [hfe]\n    exact h\u039b3\n  have hG_an : AnalyticAt \u2102 (fun s => completedRiemannZeta s / Hfun s) (-2) :=\n    h\u039b_an.div hHfun_an hHfun_ne\n  have hG_ne : completedRiemannZeta (-2) / Hfun (-2) \u2260 0 :=\n    div_ne_zero h\u039b_ne hHfun_ne\n  have hEv : \u2200\u1da0 s in \ud835\udcdd (-2 : \u2102),\n      riemannZeta s = (s - -2) ^ 1 \u2022 (completedRiemannZeta s / Hfun s) := by\n    have hHne_ev : \u2200\u1da0 s in \ud835\udcdd (-2 : \u2102), Hfun s \u2260 0 :=\n      hHfun_an.continuousAt.eventually_ne hHfun_ne\n    filter_upwards [Metric.ball_mem_nhds (-2) (zero_lt_one : (0:\u211d) < 1), hHne_ev]\n      with s hs1 hHne\n    by_cases hs : s = -2\n    \u00b7 subst hs\n      have hz0 : riemannZeta (-2) = 0 := by\n        have h := riemannZeta_neg_two_mul_nat_add_one 0\n        norm_num at h\n        exact h\n      rw [hz0]\n      simp\n    \u00b7 have hs0 : s \u2260 0 := by\n        rintro h\n        rw [h, Metric.mem_ball, dist_eq_norm] at hs1\n        have e : ((0 : \u2102) - -2) = ((2 : \u211d) : \u2102) := by norm_num\n        rw [e, Complex.norm_real, Real.norm_eq_abs] at hs1\n        norm_num at hs1\n      have h\u0393R : Complex.Gamma\u211d s \u2260 0 := by\n        rw [Complex.Gamma\u211d_eq_zero_iff]\n        rintro \u27e8m, hm\u27e9\n        rcases Nat.eq_zero_or_pos m with hm0 | hmpos\n        \u00b7 subst hm0\n          norm_num at hm\n          exact hs0 hm\n        \u00b7 rcases eq_or_ne m 1 with hm1 | hm1\n          \u00b7 subst hm1\n            norm_num at hm\n            exact hs hm\n          \u00b7 have hm2 : 2 \u2264 m := by omega\n            rw [hm, Metric.mem_ball, dist_eq_norm] at hs1\n            have h1 : (-(2 * (m : \u2102))) - -2 = (((2 : \u211d) - 2 * m : \u211d) : \u2102) := by\n              push_cast\n              ring\n            rw [h1, Complex.norm_real, Real.norm_eq_abs] at hs1\n            have hle : (2:\u211d) - 2 * (m : \u211d) \u2264 0 := by\n              have hmR : (2:\u211d) \u2264 (m : \u211d) := by exact_mod_cast hm2\n              linarith\n            rw [abs_of_nonpos hle] at hs1\n            have hmR : (2:\u211d) \u2264 (m : \u211d) := by exact_mod_cast hm2\n            nlinarith\n      have h\u039b := completedRiemannZeta_eq_Gamma\u211d_mul hs0 h\u0393R\n      have hH : (s + 2) * Complex.Gamma\u211d s = Hfun s := Hfun_eq s hs hs0\n      rw [pow_one, smul_eq_mul, show s - -2 = s + 2 by ring]\n      have hz : riemannZeta s = completedRiemannZeta s / Complex.Gamma\u211d s := by\n        rw [h\u039b, mul_div_cancel_left\u2080 _ h\u0393R]\n      rw [hz, div_mul_eq_mul_div, div_eq_div_iff h\u0393R hHne, \u2190 hH]\n      ring\n  have hRHS_an : AnalyticAt \u2102\n      (fun s => (s - -2) ^ 1 \u2022 (completedRiemannZeta s / Hfun s)) (-2) :=\n    ((analyticAt_id.sub analyticAt_const).pow 1).smul hG_an\n  have hzeta_an : AnalyticAt \u2102 riemannZeta (-2) := hRHS_an.congr hEv\n  have horder : analyticOrderAt riemannZeta (-2) = 1 :=\n    (hzeta_an.analyticOrderAt_eq_natCast).mpr\n      \u27e8fun s => completedRiemannZeta s / Hfun s, hG_an, hG_ne, hEv\u27e9\n  rw [zeroMult, horder]\n  exact ENat.toNat_one\n\nend NguyenRH1\n\nend"
}
raw content_json (database row)
[{"type":"thinking","thinking":"`ENat.toNat` (ℕ∞ = WithTop ℕ, ENat namespace) with `ENat.toNat_one : toNat 1 = 1` ✓. So the final step: `rw [zeroMult, horder]; exact ENat.toNat_one` — or `simp [zeroMult, horder, ENat.toNat_one]`. Note: `(1 : ℕ∞)` vs `↑(1:ℕ)` — horder : analyticOrderAt ... = 1 — the `1` will elaborate as ℕ∞'s 1; toNat 1 = 1 via ENat.toNat_one ✓.\n\nNow write §5. One more check — the `open` namespaces in LiContour: Zeta23, Complex, Filter, Topology — so `Gammaℝ`, `Gamma` etc. accessible; `completedRiemannZeta_eq_Gammaℝ_mul` is Zeta23 (open Zeta23 ✓). `riemannZeta_neg_two_mul_nat_add_one` — in Complex namespace? RiemannZeta.lean:173 `theorem riemannZeta_neg_two_mul_nat_add_one` — inside namespace Complex? The file has `namespace Complex`? Let me just try unqualified first (open Complex). `completedRiemannZeta_one_sub` similarly.\n\nWriting §5 now — appending before `end NguyenRH1`.","signature":""},{"type":"text","text":"All API confirmed. Writing §5 (trivial-zero simplicity)."},{"type":"tool_use","id":"Edit_110","name":"Edit","input":{"replace_all":false,"file_path":"D:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiContour.lean","old_string":"end NguyenRH1\n\nend","new_string":"/-! ## 5. Trivial-zero simplicity: zeroMult (−2) = 1 -/\n\n/-- The local factor of ΓR at −2: Hfun s = 4·π^{−s/2}·Γ(s/2+2)/s. Equals\n(s+2)·ΓR(s) off {−2, 0} (by `Gamma_add_one` twice); analytic at −2 with\nHfun(−2) = −2π ≠ 0. This is the nonvanishing cofactor in the local\nfactorization ζ(s) = (s+2)·(Λ(s)/Hfun(s)) proving zeroMult(−2) = 1. -/\ndef Hfun (s : ℂ) : ℂ := 4 * (Real.pi : ℂ) ^ (-s / 2) * Complex.Gamma (s / 2 + 2) / s\n\n/-- Hfun is analytic at −2: on ball(−2, 1) the point s/2+2 avoids the\nGamma poles {0, −1, −2, …} (it lies in ball(1, 1/2)). -/\ntheorem Hfun_analyticAt_neg_two : AnalyticAt ℂ Hfun (-2) := by\n  have hcpi : AnalyticAt ℂ (fun s => (Real.pi : ℂ) ^ (-s / 2)) (-2) := by\n    have heq : (fun s => (Real.pi : ℂ) ^ (-s / 2))\n        = fun s => Complex.exp ((Complex.log (Real.pi : ℂ) * (-1 / 2)) * s) := by\n      funext s\n      rw [Complex.cpow_def_of_ne_zero (by norm_num : (Real.pi : ℂ) ≠ 0)]\n      ring_nf\n    rw [heq]\n    exact (analyticAt_const.mul analyticAt_id).cexp\n  have hGamma : AnalyticAt ℂ (fun s => Complex.Gamma (s / 2 + 2)) (-2) := by\n    have hd : DifferentiableOn ℂ (fun s => Complex.Gamma (s / 2 + 2))\n        (Metric.ball (-2) 1) := by\n      intro s hs\n      have hg : DifferentiableAt ℂ Complex.Gamma (s / 2 + 2) := by\n        apply Complex.differentiableAt_Gamma\n        intro m hm\n        have hs_eq : s = -2 * (m : ℂ) - 4 := by linear_combination 2 * hm\n        rw [hs_eq, Metric.mem_ball, dist_eq_norm] at hs\n        have h1 : ((-2 : ℂ) * (m : ℂ) - 4) - -2\n            = (((2 : ℝ) * m + 2 : ℝ) : ℂ) := by push_cast; ring\n        rw [h1, Complex.norm_real, Real.norm_eq_abs] at hs\n        rw [abs_of_nonneg (by positivity : (0:ℝ) ≤ 2 * (m : ℝ) + 2)] at hs\n        have hge : (2:ℝ) ≤ 2 * (m : ℝ) + 2 := by\n          have hm0 : (0:ℝ) ≤ (m : ℝ) := by positivity\n          linarith\n        linarith\n      exact hg.comp s (by fun_prop)\n    exact (hd.analyticOnNhd Metric.isOpen_ball) (-2) (Metric.mem_ball_self zero_lt_one)\n  unfold Hfun\n  exact ((analyticAt_const.mul hcpi).mul hGamma).div analyticAt_id (by norm_num)\n\n/-- Hfun(−2) = −2π (via Γ(1) = 1 and π^1 = π). -/\ntheorem Hfun_neg_two : Hfun (-2) = -2 * (Real.pi : ℂ) := by\n  unfold Hfun\n  rw [show (-(-2 : ℂ) / 2) = 1 by norm_num, Complex.cpow_one,\n    show ((-2 : ℂ) / 2 + 2) = 1 by norm_num, Complex.Gamma_one, mul_one]\n  norm_num\n\n/-- Hfun(−2) ≠ 0. -/\ntheorem Hfun_neg_two_ne_zero : Hfun (-2) ≠ 0 := by\n  rw [Hfun_neg_two]\n  norm_num [Real.pi_ne_zero]\n\n/-- The punctured identity: (s+2)·ΓR(s) = Hfun s for s ∉ {−2, 0}\n(Gamma_add_one applied twice: Γ(s/2) = Γ(s/2+2)/((s/2)(s/2+1))). -/\ntheorem Hfun_eq (s : ℂ) (hs2 : s ≠ -2) (hs0 : s ≠ 0) :\n    (s + 2) * Complex.Gammaℝ s = Hfun s := by\n  have h2ne : s / 2 ≠ 0 := div_ne_zero hs0 (by norm_num)\n  have h21ne : s / 2 + 1 ≠ 0 := by\n    intro h\n    apply hs2\n    linear_combination 2 * h\n  have h1 := Complex.Gamma_add_one (s / 2) h2ne\n  have h2 : Complex.Gamma (s / 2 + 2) = (s / 2 + 1) * Complex.Gamma (s / 2 + 1) := by\n    rw [show s / 2 + 2 = (s / 2 + 1) + 1 by ring]\n    exact Complex.Gamma_add_one _ h21ne\n  have hG : Complex.Gamma (s / 2)\n      = Complex.Gamma (s / 2 + 2) / ((s / 2) * (s / 2 + 1)) := by\n    have h12 : Complex.Gamma (s / 2 + 2)\n        = (s / 2 + 1) * (s / 2) * Complex.Gamma (s / 2) := by\n      rw [h2, h1]; ring\n    rw [h12]\n    field_simp [mul_ne_zero h2ne h21ne]\n    ring\n  rw [Complex.Gammaℝ_def, hG]\n  unfold Hfun\n  field_simp [hs0, mul_ne_zero h2ne h21ne]\n  ring\n\n/-- **Trivial-zero simplicity** (deferred from ii′-1b(iii), route D-066 §6):\nzeroMult(−2) = 1. The local factorization ζ(s) = (s+2)·G(s) holds near −2\nwith G(s) = Λ(s)/Hfun(s) analytic and G(−2) = Λ(−2)/(−2π) ≠ 0, since\nΛ(−2) = Λ(3) = ΓR(3)·ζ(3) ≠ 0 (functional equation + ΓR(3) ≠ 0 via\n`Gammaℝ_eq_zero_iff` + `riemannZeta_ne_zero_of_one_lt_re`). -/\ntheorem zeroMult_neg_two : zeroMult (-2) = 1 := by\n  have hHfun_an : AnalyticAt ℂ Hfun (-2) := Hfun_analyticAt_neg_two\n  have hHfun_ne : Hfun (-2) ≠ 0 := Hfun_neg_two_ne_zero\n  have hΛ_an : AnalyticAt ℂ completedRiemannZeta (-2) := by\n    have hd : DifferentiableOn ℂ completedRiemannZeta (Metric.ball (-2) 1) := by\n      intro s hs\n      have hs0 : s ≠ 0 := by\n        rintro h\n        rw [h, Metric.mem_ball, dist_eq_norm] at hs\n        have e : ((0 : ℂ) - -2) = ((2 : ℝ) : ℂ) := by norm_num\n        rw [e, Complex.norm_real, Real.norm_eq_abs] at hs\n        norm_num at hs\n      have hs1 : s ≠ 1 := by\n        rintro h\n        rw [h, Metric.mem_ball, dist_eq_norm] at hs\n        have e : ((1 : ℂ) - -2) = ((3 : ℝ) : ℂ) := by norm_num\n        rw [e, Complex.norm_real, Real.norm_eq_abs] at hs\n        norm_num at hs\n      exact differentiableAt_completedZeta hs0 hs1\n    exact (hd.analyticOnNhd Metric.isOpen_ball) (-2) (Metric.mem_ball_self zero_lt_one)\n  have hΛ_ne : completedRiemannZeta (-2) ≠ 0 := by\n    have hΓR3 : Complex.Gammaℝ 3 ≠ 0 := by\n      rw [Complex.Gammaℝ_eq_zero_iff]\n      rintro ⟨m, hm⟩\n      have hre := congrArg Complex.re hm\n      simp only [Complex.neg_re, Complex.mul_re, Complex.ofReal_re, Complex.ofReal_im,\n        mul_zero, sub_zero, Complex.natCast_re, Complex.ofNat_re] at hre\n      have hm0 : (0:ℝ) ≤ (m : ℝ) := by positivity\n      nlinarith\n    have hζ3 : riemannZeta 3 ≠ 0 :=\n      riemannZeta_ne_zero_of_one_lt_re (by norm_num)\n    have hΛ3 : completedRiemannZeta 3 ≠ 0 := by\n      rw [completedRiemannZeta_eq_Gammaℝ_mul (by norm_num) hΓR3]\n      exact mul_ne_zero hΓR3 hζ3\n    have hfe : completedRiemannZeta (-2) = completedRiemannZeta 3 := by\n      have h := completedRiemannZeta_one_sub (-2 : ℂ)\n      norm_num at h\n      exact h.symm\n    rw [hfe]\n    exact hΛ3\n  have hG_an : AnalyticAt ℂ (fun s => completedRiemannZeta s / Hfun s) (-2) :=\n    hΛ_an.div hHfun_an hHfun_ne\n  have hG_ne : completedRiemannZeta (-2) / Hfun (-2) ≠ 0 :=\n    div_ne_zero hΛ_ne hHfun_ne\n  have hEv : ∀ᶠ s in 𝓝 (-2 : ℂ),\n      riemannZeta s = (s - -2) ^ 1 • (completedRiemannZeta s / Hfun s) := by\n    have hHne_ev : ∀ᶠ s in 𝓝 (-2 : ℂ), Hfun s ≠ 0 :=\n      hHfun_an.continuousAt.eventually_ne hHfun_ne\n    filter_upwards [Metric.ball_mem_nhds (-2) (zero_lt_one : (0:ℝ) < 1), hHne_ev]\n      with s hs1 hHne\n    by_cases hs : s = -2\n    · subst hs\n      have hz0 : riemannZeta (-2) = 0 := by\n        have h := riemannZeta_neg_two_mul_nat_add_one 0\n        norm_num at h\n        exact h\n      rw [hz0]\n      simp\n    · have hs0 : s ≠ 0 := by\n        rintro h\n        rw [h, Metric.mem_ball, dist_eq_norm] at hs1\n        have e : ((0 : ℂ) - -2) = ((2 : ℝ) : ℂ) := by norm_num\n        rw [e, Complex.norm_real, Real.norm_eq_abs] at hs1\n        norm_num at hs1\n      have hΓR : Complex.Gammaℝ s ≠ 0 := by\n        rw [Complex.Gammaℝ_eq_zero_iff]\n        rintro ⟨m, hm⟩\n        rcases Nat.eq_zero_or_pos m with hm0 | hmpos\n        · subst hm0\n          norm_num at hm\n          exact hs0 hm\n        · rcases eq_or_ne m 1 with hm1 | hm1\n          · subst hm1\n            norm_num at hm\n            exact hs hm\n          · have hm2 : 2 ≤ m := by omega\n            rw [hm, Metric.mem_ball, dist_eq_norm] at hs1\n            have h1 : (-(2 * (m : ℂ))) - -2 = (((2 : ℝ) - 2 * m : ℝ) : ℂ) := by\n              push_cast\n              ring\n            rw [h1, Complex.norm_real, Real.norm_eq_abs] at hs1\n            have hle : (2:ℝ) - 2 * (m : ℝ) ≤ 0 := by\n              have hmR : (2:ℝ) ≤ (m : ℝ) := by exact_mod_cast hm2\n              linarith\n            rw [abs_of_nonpos hle] at hs1\n            have hmR : (2:ℝ) ≤ (m : ℝ) := by exact_mod_cast hm2\n            nlinarith\n      have hΛ := completedRiemannZeta_eq_Gammaℝ_mul hs0 hΓR\n      have hH : (s + 2) * Complex.Gammaℝ s = Hfun s := Hfun_eq s hs hs0\n      rw [pow_one, smul_eq_mul, show s - -2 = s + 2 by ring]\n      have hz : riemannZeta s = completedRiemannZeta s / Complex.Gammaℝ s := by\n        rw [hΛ, mul_div_cancel_left₀ _ hΓR]\n      rw [hz, div_mul_eq_mul_div, div_eq_div_iff hΓR hHne, ← hH]\n      ring\n  have hRHS_an : AnalyticAt ℂ\n      (fun s => (s - -2) ^ 1 • (completedRiemannZeta s / Hfun s)) (-2) :=\n    ((analyticAt_id.sub analyticAt_const).pow 1).smul hG_an\n  have hzeta_an : AnalyticAt ℂ riemannZeta (-2) := hRHS_an.congr hEv\n  have horder : analyticOrderAt riemannZeta (-2) = 1 :=\n    (hzeta_an.analyticOrderAt_eq_natCast).mpr\n      ⟨fun s => completedRiemannZeta s / Hfun s, hG_an, hG_ne, hEv⟩\n  rw [zeroMult, horder]\n  exact ENat.toNat_one\n\nend NguyenRH1\n\nend"},"extra_content":null}]