Current task: —

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

#1308 assistant 2026-08-22 20:20:13.151 UTC · 5498→2321 tok open ⤢
thinking (281 chars)
`AnalyticAt.analyticOrderAt_eq_zero (hf : AnalyticAt 𝕜 f z₀) : analyticOrderAt f z₀ = 0 ↔ f z₀ ≠ 0` ✓. So const C (≠ 0) has order 0 ✓. Now write the full §4 block: const-mul invariance, scaled-order invariance, the ZerosBound count, and the R-gap. Let me write it all and compile.
`AnalyticAt.analyticOrderAt_eq_zero` confirmed. Writing §4 (order invariances + Jensen count + R-gap).
tool: Edit ok
input
{
  "replace_all": false,
  "file_path": "D:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean",
  "old_string": "end NguyenRH1\n\nend",
  "new_string": "/-! ## 4. The Jensen count -/\n\n/-- A nonzero constant factor does not change the analytic order. -/\ntheorem analyticOrderNatAt_const_mul {C : \u2102} (hC : C \u2260 0) {X : \u2102 \u2192 \u2102} {w\u2080 : \u2102}\n    (hX : AnalyticAt \u2102 X w\u2080) :\n    analyticOrderNatAt (fun w => C * X w) w\u2080 = analyticOrderNatAt X w\u2080 := by\n  have hord : analyticOrderAt (fun w => C * X w) w\u2080 = analyticOrderAt X w\u2080 := by\n    have h1 : analyticOrderAt ((fun _ : \u2102 => C) \u2022 X) w\u2080\n        = analyticOrderAt (fun _ : \u2102 => C) w\u2080 + analyticOrderAt X w\u2080 :=\n      analyticOrderAt_smul analyticAt_const hX\n    have h2 : analyticOrderAt (fun _ : \u2102 => C) w\u2080 = 0 :=\n      (analyticAt_const (\ud835\udd5c := \u2102) (v := C)).analyticOrderAt_eq_zero.mpr hC\n    have h3 : (fun w : \u2102 => C * X w) = (fun _ : \u2102 => C) \u2022 X :=\n      funext fun w => by simp [smul_eq_mul]\n    rw [h3, h1, h2]\n    simp\n  by_cases htop : analyticOrderAt X w\u2080 = \u22a4\n  \u00b7 rw [htop] at hord\n    have h4 : analyticOrderAt (fun w => C * X w) w\u2080 = \u22a4 := hord\n    rw [analyticOrderAt_eq_top] at htop h4  -- both sides junk 0: toNat \u22a4 = 0\n    rw [h4, htop]\n  \u00b7 have h1c := Nat.cast_analyticOrderNatAt (f := fun w => C * X w) (z\u2080 := w\u2080)\n      (by rw [hord]; exact htop)\n    have h2c := Nat.cast_analyticOrderNatAt (f := X) (z\u2080 := w\u2080) htop\n    have hcast : ((analyticOrderNatAt (fun w => C * X w) w\u2080 : \u2115) : \u2115\u221e)\n        = ((analyticOrderNatAt X w\u2080 : \u2115) : \u2115\u221e) := by\n      rw [h1c, h2c, hord]\n    exact Nat.cast_inj.mp hcast\n\n/-- The order of the scaled function at w\u2080 equals the order of \u03b6 at the\naffine image (for \u2016w\u2080\u2016 \u2264 1, |t| \u2265 10). -/\ntheorem analyticOrderNatAt_scaledZeta {t : \u211d} (ht : 10 \u2264 |t|) {w\u2080 : \u2102} (hw\u2080 : \u2016w\u2080\u2016 \u2264 1) :\n    analyticOrderNatAt (scaledZeta t) w\u2080\n      = analyticOrderNatAt riemannZeta (discCenter t + (5 / 2 : \u2102) * w\u2080) := by\n  have h\u03b60 : riemannZeta (discCenter t) \u2260 0 := by\n    have h := RvM.zeta_lower_bound_two t\n    intro h0\n    rw [\u2190 show discCenter t = 2 + t * Complex.I from rfl, h0, norm_zero] at h\n    norm_num at h\n  have haffine := analyticOrderNatAt_riemannZeta_affine ht hw\u2080\n  have haff_an : AnalyticAt \u2102 (fun w => riemannZeta (discCenter t + (5 / 2 : \u2102) * w)) w\u2080 := by\n    have hne : discCenter t + (5 / 2 : \u2102) * w\u2080 \u2260 1 := by\n      intro h\n      have hwim : |w\u2080.im| \u2264 1 := (abs_im_le_norm _).trans hw\u2080\n      have him : (discCenter t + (5 / 2 : \u2102) * w\u2080).im = t + (5 / 2) * w\u2080.im := by\n        simp [discCenter, add_im, mul_im, ofReal_re, ofReal_im, I_re, I_im]\n      have hbig : 15 / 2 \u2264 |t + (5 / 2) * w\u2080.im| := by\n        have h3 := abs_add_le (t + (5 / 2) * w\u2080.im) (-((5 / 2) * w\u2080.im))\n        rw [abs_neg, add_neg_cancel_right] at h3\n        have h4 : |(5 / 2) * w\u2080.im| \u2264 5 / 2 := by\n          rw [abs_mul, abs_of_nonneg (by norm_num : (0:\u211d) \u2264 5 / 2)]\n          calc (5 / 2) * |w\u2080.im| \u2264 (5 / 2) * 1 :=\n                mul_le_mul_of_nonneg_left hwim (by norm_num)\n            _ = 5 / 2 := by norm_num\n        linarith [h3, h4, ht]\n      rw [h] at him\n      rw [Complex.one_im] at him\n      rw [\u2190 him] at hbig\n      norm_num at hbig\n    have haff : AnalyticAt \u2102 (fun w : \u2102 => discCenter t + (5 / 2 : \u2102) * w) w\u2080 :=\n      analyticAt_const.add (analyticAt_const.mul analyticAt_id)\n    exact (analyticAt_riemannZeta_of_ne_one hne).comp_of_eq haff rfl\n  have hconst := analyticOrderNatAt_const_mul (inv_ne_zero h\u03b60) haff_an\n  -- scaledZeta t = fun w => (\u03b6(s\u2080))\u207b\u00b9 * \u03b6(aff w) pointwise\n  have hpoint : scaledZeta t = fun w => (riemannZeta (discCenter t))\u207b\u00b9 *\n      riemannZeta (discCenter t + (5 / 2 : \u2102) * w) :=\n    funext fun w => by unfold scaledZeta; rw [div_eq_mul_inv]\n  rw [hpoint, hconst]\n  exact haffine\n\n/-- **The Jensen count**: the mult-weighted count of zeros of the scaled\nfunction F in the closed ball of radius 24/25, via Zeta23's `ZerosBound`\napplied with B = (9/4)\u00b7|t|\u00b2. -/\ntheorem scaledZeta_jensen_count {t : \u211d} (ht : 10 \u2264 |t|) :\n    \u2211 \u03c1 \u2208 (finiteSetOfZeros_mono (f := scaledZeta t) (r := 24 / 25) (R := 99 / 100)\n      (by norm_num) (scaledZeta_zeros_finite)).toFinset,\n        analyticOrderNatAt (scaledZeta t) \u03c1\n      \u2264 Real.log ((9 / 4) * |t| ^ 2) / Real.log (33 / 32) := by\n  have hB : \u2200 z : \u2102, \u2016z\u2016 \u2264 99 / 100 \u2192 \u2016scaledZeta t z\u2016 \u2264 (9 / 4) * |t| ^ 2 := by\n    intro z hz\n    have hcenter : (1 / 3 : \u211d) \u2264 \u2016riemannZeta (discCenter t)\u2016 := by\n      have h := RvM.zeta_lower_bound_two t\n      rwa [\u2190 show discCenter t = 2 + t * Complex.I from rfl] at h\n    have htop : \u2016riemannZeta (discCenter t + (5 / 2 : \u2102) * z)\u2016 \u2264 (3 / 4) * |t| ^ 2 := by\n      apply norm_riemannZeta_le_disc ht\n      rw [Metric.mem_closedBall, Complex.dist_eq, add_sub_cancel_left]\n      calc \u2016(5 / 2 : \u2102) * z\u2016 \u2264 (5 / 2) * \u2016z\u2016 := by\n            rw [norm_mul]\n            have hn : \u2016(5 / 2 : \u2102)\u2016 = 5 / 2 := by\n              rw [show (5 / 2 : \u2102) = ((5 / 2 : \u211d) : \u2102) by norm_num, Complex.norm_real,\n                Real.norm_eq_abs, abs_of_nonneg (by norm_num : (0:\u211d) \u2264 5 / 2)]\n            rw [hn]\n        _ \u2264 (5 / 2) * (99 / 100) := mul_le_mul_of_nonneg_left hz (by norm_num)\n        _ \u2264 5 / 2 := by norm_num\n    unfold scaledZeta\n    rw [norm_div]\n    calc \u2016riemannZeta (discCenter t + (5 / 2 : \u2102) * z)\u2016 / \u2016riemannZeta (discCenter t)\u2016\n        \u2264 ((3 / 4) * |t| ^ 2) / (1 / 3) := by\n          apply div_le_div htop _ (by norm_num) hcenter\n          \u00b7 norm_num\n      _ = (9 / 4) * |t| ^ 2 := by ring\n  have h := ZerosBound (f := scaledZeta t) (r := 24 / 25) (R := 99 / 100)\n    (by norm_num) (by norm_num) (by norm_num) (by norm_num)\n    (scaledZeta_analytic ht) (scaledZeta_zero t) scaledZeta_zeros_finite hB\n  refine h.trans ?_\n  rw [one_div, inv_mul_eq_div]\n  apply div_le_div_of_nonneg_right _ ... \n  sorry\n\nend NguyenRH1\n\nend"
}
result 2026-08-22 20:20:13Z → 2026-08-23 10:23:28Z
{
  "filePath": "D:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiDigammaLeft.lean",
  "oldString": "            tsum_le_tsum hterm h1 (hasSum_one_div_sub_telescope N hN1).summable",
  "newString": "            Summable.tsum_le_tsum hterm h1 (hasSum_one_div_sub_telescope N hN1).summable",
  "originalFile": "/-\nNguyenRH1/LiDigammaLeft.lean \u2014 tier ii\u2032 sub-stage 5e-ii (D-068 \u00a71 C2):\nthe two digamma bounds feeding the circle estimate of ii\u2032-5e-v.\n\n* \u00a71 `tsum_one_div_sub_telescope`: \u2211'\u2099 (1/(n+N) \u2212 1/(n+N+1)) = 1/N\n  (partial-sum telescope + squeeze).\n* \u00a72 `norm_digamma_le_of_two_le_re`: \u2016\u03c8(w)\u2016 \u2264 20\u00b7log(2+\u2016w\u2016) for\n  re w \u2265 2, |im w| \u2264 5 \u2014 the Weierstrass-series route (Zeta23\n  `DigammaSeries.digamma_series`): \u03a3'_n w/((n+1)(w+n+1)) split at\n  N = \u2308re w\u2309\u208a (head via the harmonic bound `harmonic_le_one_add_log`,\n  tail via \u00a71's telescope); the positive-integer case via `digamma_one`\n  + the recurrence (`digamma_natCast_eq`).\n* \u00a73 (C): `digamma_recip_sum_le` \u2014 the separated reciprocal sum bound\n  \u03a3_{j<m} \u2016w+j\u2016\u207b\u00b9 \u2264 2/c + 2 + 2\u00b7log m for dist(w, \u2212\u2115) \u2265 c (V-split).\n* \u00a74 (A): `norm_digamma_le_of_dist_nat` \u2014 the near-axis left-plane bound\n  for re w \u2264 2, dist(w,\u2212\u2115) \u2265 c (recurrence `digamma_add_natCast` + \u00a73 +\n  the landing-zone bound via \u00a72 or StirlingVert).\n* \u00a75 (G): `logDeriv_Gamma\u211d_eq` \u2014 logDeriv \u0393R s = \u2212(log \u03c0)/2 + \u00bd\u03c8(s/2)\n  for im s \u2260 0 (the m-fold shift: `gamma_mul_prod` + the EventuallyEq\n  machinery of 5d).\n\nArchive references: D-068 \u00a71 (C2) + \u00a77, journal-025/026.\n-/\nimport Mathlib\nimport Zeta23.GammaFacts.Series\nimport Zeta23.GammaFacts.StirlingVert\nimport NguyenRH1.LiReflect\nimport NguyenRH1.LiTrivialZeros\n\nopen Zeta23 Complex Filter Topology MeasureTheory\nopen scoped Nat\n\nnoncomputable section\n\nnamespace NguyenRH1\n\n/-! ## 1. The telescoping tail -/\n\n/-- The partial sums of the telescoping series. -/\ntheorem sum_range_one_div_sub (N M : \u2115) :\n    \u2211 n \u2208 Finset.range M, ((1 : \u211d) / ((n : \u211d) + N) - 1 / ((n : \u211d) + N + 1))\n      = 1 / (N : \u211d) - 1 / ((M : \u211d) + N) := by\n  have h := Finset.sum_range_sub' (fun n : \u2115 => (1 : \u211d) / ((n : \u211d) + N)) M\n  rw [Nat.cast_zero, zero_add] at h\n  rw [\u2190 h]\n  apply Finset.sum_congr rfl\n  intro n _\n  push_cast\n  ring_nf\n\n/-- **The telescoping tail, HasSum form**. -/\ntheorem hasSum_one_div_sub_telescope (N : \u2115) (hN : 1 \u2264 N) :\n    HasSum (fun n : \u2115 => (1 : \u211d) / ((n : \u211d) + N) - 1 / ((n : \u211d) + N + 1))\n      (1 / (N : \u211d)) := by\n  have hNR : (0 : \u211d) < (N : \u211d) := by exact_mod_cast hN\n  have hnonneg : \u2200 n : \u2115, (0 : \u211d) \u2264 1 / ((n : \u211d) + N) - 1 / ((n : \u211d) + N + 1) := by\n    intro n\n    have h1 : (0 : \u211d) < (n : \u211d) + N := by\n      have h2 : (0 : \u211d) \u2264 (n : \u211d) := Nat.cast_nonneg n\n      linarith [hNR, h2]\n    have h3 : 1 / ((n : \u211d) + N + 1) \u2264 1 / ((n : \u211d) + N) :=\n      one_div_le_one_div_of_le h1 (by linarith)\n    linarith [h3]\n  have hlim0 : Tendsto (fun M : \u2115 => (1 : \u211d) / ((M : \u211d) + N)) atTop (\ud835\udcdd 0) := by\n    have h1 : Tendsto (fun M : \u2115 => (1 : \u211d) / ((M : \u211d) + 1)) atTop (\ud835\udcdd 0) :=\n      tendsto_one_div_add_atTop_nhds_zero_nat\n    refine squeeze_zero (f := fun M : \u2115 => (1 : \u211d) / ((M : \u211d) + N))\n      (g := fun M : \u2115 => (1 : \u211d) / ((M : \u211d) + 1)) ?_ ?_ h1\n    \u00b7 intro M\n      positivity\n    \u00b7 intro M\n      apply one_div_le_one_div_of_le (by positivity)\n      have hN1R : (1 : \u211d) \u2264 (N : \u211d) := by exact_mod_cast hN\n      linarith [hN1R]\n  have hlim : Tendsto (fun M : \u2115 => (1 : \u211d) / (N : \u211d) - 1 / ((M : \u211d) + N)) atTop\n      (\ud835\udcdd (1 / (N : \u211d))) := by\n    have h := hlim0.const_sub (1 / (N : \u211d))\n    rwa [sub_zero] at h\n  rw [hasSum_iff_tendsto_nat_of_nonneg hnonneg]\n  convert hlim using 1\n  ext M\n  exact sum_range_one_div_sub N M\n\n/-- **The telescoping tail**: \u2211'\u2099 (1/(n+N) \u2212 1/(n+N+1)) = 1/N for N \u2265 1. -/\ntheorem tsum_one_div_sub_telescope (N : \u2115) (hN : 1 \u2264 N) :\n    \u2211' n : \u2115, ((1 : \u211d) / ((n : \u211d) + N) - 1 / ((n : \u211d) + N + 1)) = 1 / (N : \u211d) :=\n  (hasSum_one_div_sub_telescope N hN).tsum_eq\n\n/-! ## 2. The right-half-plane bound (B) -/\n\n/-- \u03c8 at positive integers: \u03c8(n) = \u2212\u03b3 + H_{n\u22121} for n \u2265 1. -/\ntheorem digamma_natCast_eq (n : \u2115) (hn : 1 \u2264 n) :\n    Complex.digamma (n : \u2102)\n      = -(Real.eulerMascheroniConstant : \u2102) + ((harmonic (n - 1) : \u211a) : \u2102) := by\n  induction n with\n  | zero => omega\n  | succ k ih =>\n    rcases eq_or_ne k 0 with hk | hk\n    \u00b7 subst hk\n      simp [Complex.digamma_one, harmonic]\n    \u00b7 have hk1 : 1 \u2264 k := Nat.one_le_iff_ne_zero.mpr hk\n      have h1 := ih hk1\n      have hside : \u2200 m : \u2115, (k : \u2102) \u2260 -(m : \u2102) := by\n        intro m h\n        have hre := congrArg Complex.re h\n        simp [Complex.neg_re, Complex.natCast_re] at hre\n        have hmk : (1 : \u211d) \u2264 (k : \u211d) := by exact_mod_cast hk1\n        have hm0 : (0 : \u211d) \u2264 (m : \u211d) := by positivity\n        linarith\n      have h2 := Complex.digamma_apply_add_one (k : \u2102) hside\n      rw [show ((k + 1 : \u2115) : \u2102) = (k : \u2102) + 1 by push_cast; ring, h2, h1]\n      have hharm : ((harmonic (k + 1 - 1) : \u211a) : \u2102)\n          = ((harmonic (k - 1) : \u211a) : \u2102) + ((k : \u211d) : \u2102)\u207b\u00b9 := by\n        have h3 : k + 1 - 1 = k := by omega\n        rw [h3]\n        have h4 : harmonic k = harmonic (k - 1) + ((k : \u211a))\u207b\u00b9 := by\n          conv_lhs => rw [show k = (k - 1) + 1 by omega]\n          rw [harmonic, Finset.sum_range_succ]\n          have h5 : k - 1 + 1 = k := by omega\n          rw [h5]\n          rw [harmonic]\n        rw [h4]\n        push_cast\n        ring\n      rw [hharm]\n      push_cast\n      ring\n\n/-- The digamma-series majorant g n = \u2016w\u2016/((n+1)(re w+n+1)) is summable\n(dominated by \u2016w\u2016/(n+1)\u00b2) for re w \u2265 2. -/\ntheorem summable_digamma_majorant {w : \u2102} (hwre : 2 \u2264 w.re) :\n    Summable (fun n : \u2115 => \u2016w\u2016 / (((n : \u211d) + 1) * (w.re + (n : \u211d) + 1))) := by\n  have h1 : Summable (fun n : \u2115 => (((n : \u211d) + 1) ^ 2)\u207b\u00b9) := by\n    have h2 : Summable (fun n : \u2115 => (((n : \u211d)) ^ 2)\u207b\u00b9) := by\n      have h3 := Real.summable_nat_rpow_inv.mpr (by norm_num : (1 : \u211d) < 2)\n      have heq : (fun n : \u2115 => ((n : \u211d) ^ (2 : \u211d))\u207b\u00b9) = fun n : \u2115 => (((n : \u211d)) ^ 2)\u207b\u00b9 := by\n        funext n\n        rw [show ((2 : \u211d)) = ((2 : \u2115) : \u211d) by norm_num, Real.rpow_natCast]\n      rwa [heq] at h3\n    have h4 := (summable_nat_add_iff 1).mpr h2\n    simpa [add_comm] using h4\n  refine Summable.of_nonneg_of_le (fun n => by positivity) ?_ (h1.mul_left \u2016w\u2016)\n  intro n\n  have hstep : ((n : \u211d) + 1) ^ 2 \u2264 ((n : \u211d) + 1) * (w.re + (n : \u211d) + 1) := by\n    rw [sq]\n    apply mul_le_mul_of_nonneg_left _ (by positivity)\n    have h2 : (0 : \u211d) \u2264 (n : \u211d) := Nat.cast_nonneg n\n    linarith [hwre, h2]\n  calc \u2016w\u2016 / (((n : \u211d) + 1) * (w.re + (n : \u211d) + 1))\n      \u2264 \u2016w\u2016 / (((n : \u211d) + 1) ^ 2) := by\n        apply div_le_div_of_nonneg_left (norm_nonneg _)\n          (show (0 : \u211d) < ((n : \u211d) + 1) ^ 2 by positivity) hstep\n    _ = \u2016w\u2016 * ((((n : \u211d) + 1) ^ 2)\u207b\u00b9) := by rw [div_eq_mul_inv]\n\n/-- The per-term bound: \u20161/(n+1) \u2212 1/(w+n+1)\u2016 \u2264 \u2016w\u2016/((n+1)(re w+n+1)). -/\ntheorem norm_digamma_term_le {w : \u2102} (hwre : 2 \u2264 w.re) (n : \u2115) :\n    \u20161 / ((n : \u2102) + 1) - 1 / (w + n + 1)\u2016\n      \u2264 \u2016w\u2016 / (((n : \u211d) + 1) * (w.re + (n : \u211d) + 1)) := by\n  have hwn1 : w + (n : \u2102) + 1 \u2260 0 := by\n    intro h\n    have h2 := congrArg Complex.re h\n    simp [Complex.add_re, Complex.natCast_re, Complex.one_re] at h2\n    have h3 : (0 : \u211d) \u2264 (n : \u211d) := Nat.cast_nonneg n\n    linarith [hwre, h3, h2]\n  have hident : 1 / ((n : \u2102) + 1) - 1 / (w + n + 1)\n      = w / (((n : \u2102) + 1) * (w + n + 1)) := by\n    field_simp [Nat.cast_add_one_ne_zero n, hwn1]\n    ring\n  have hrew : (w + (n : \u2102) + 1).re = w.re + (n : \u211d) + 1 := by\n    simp [Complex.add_re, Complex.natCast_re, Complex.one_re]\n  have hle : w.re + (n : \u211d) + 1 \u2264 \u2016w + (n : \u2102) + 1\u2016 := by\n    have hpos : (0 : \u211d) \u2264 (w + (n : \u2102) + 1).re := by\n      rw [hrew]\n      have h3 : (0 : \u211d) \u2264 (n : \u211d) := Nat.cast_nonneg n\n      linarith [hwre, h3]\n    have h2 := Complex.abs_re_le_norm (w + (n : \u2102) + 1)\n    rwa [abs_of_nonneg hpos, hrew] at h2\n  rw [hident, norm_div, norm_mul, DigammaSeries.norm_natCast_add_one]\n  apply div_le_div_of_nonneg_left (norm_nonneg _)\n  \u00b7 apply mul_pos (by positivity)\n    have h3 : (0 : \u211d) \u2264 (n : \u211d) := Nat.cast_nonneg n\n    linarith [hwre, h3]\n  \u00b7 apply mul_le_mul_of_nonneg_left hle (by positivity)\n\n/-- The harmonic-sum form used in the head split. -/\ntheorem sum_one_div_le_one_add_log (N : \u2115) :\n    \u2211 n \u2208 Finset.range N, (1 : \u211d) / ((n : \u211d) + 1) \u2264 1 + Real.log N := by\n  have h1 : (\u2211 n \u2208 Finset.range N, (1 : \u211d) / ((n : \u211d) + 1)) = (harmonic N : \u211d) := by\n    rw [harmonic, Rat.cast_sum]\n    apply Finset.sum_congr rfl\n    intro i _\n    rw [Rat.cast_inv, Rat.cast_natCast, Nat.cast_add_one, one_div]\n  rw [h1]\n  exact harmonic_le_one_add_log N\n/-- **The right-half-plane digamma bound (B)**: for re w \u2265 2, |im w| \u2264 5,\n\u2016\u03c8(w)\u2016 \u2264 20\u00b7log(2+\u2016w\u2016). Weierstrass series + split at N = \u2308re w\u2309\u208a;\npositive integers via the harmonic identity. -/\ntheorem norm_digamma_le_of_two_le_re {w : \u2102} (hwre : 2 \u2264 w.re) (hwim : |w.im| \u2264 5) :\n    \u2016Complex.digamma w\u2016 \u2264 20 * Real.log (2 + \u2016w\u2016) := by\n  have hw_norm_ge : 2 \u2264 \u2016w\u2016 := by\n    have h1 := Complex.abs_re_le_norm w\n    rw [abs_of_nonneg (by linarith [hwre])] at h1\n    linarith [hwre, h1]\n  have h1log4 : Real.log 4 \u2264 Real.log (2 + \u2016w\u2016) :=\n    Real.log_le_log (by norm_num) (by linarith [hw_norm_ge])\n  have hlog4gt : (1 : \u211d) < Real.log 4 := by\n    have h4 := Real.log_two_gt_d9.le\n    have h5 : Real.log 4 = 2 * Real.log 2 := by\n      rw [show (4 : \u211d) = 2 ^ 2 by norm_num, Real.log_pow]\n      push_cast\n      ring\n    linarith [h4, h5]\n  have hlog4 : (5 : \u211d) / 3 \u2264 19 * Real.log (2 + \u2016w\u2016) := by nlinarith [h1log4, hlog4gt]\n  by_cases hwint : \u2203 m : \u2124, (m : \u2102) = w\n  \u00b7 -- the positive-integer case: w = \u2191n, n \u2265 2\n    obtain \u27e8m, hm\u27e9 := hwint\n    have hmre : w.re = (m : \u211d) := by rw [\u2190 hm]; simp\n    have hm2 : 2 \u2264 m := by\n      by_contra h\n      push Not at h\n      have h1 : (m : \u211d) \u2264 1 := by exact_mod_cast (show m \u2264 1 by omega)\n      linarith [hwre, hmre, h1]\n    have hn2 : 2 \u2264 m.toNat := by\n      have h1 : (m : \u2124) = ((m.toNat : \u2115) : \u2124) := (Int.toNat_of_nonneg (by omega)).symm\n      rw [h1] at hm2\n      exact_mod_cast hm2\n    set n := m.toNat with hn_def\n    have hwn : w = (n : \u2102) := by\n      rw [\u2190 hm, hn_def]\n      exact_mod_cast (Int.toNat_of_nonneg (by omega : (0 : \u2124) \u2264 m)).symm\n    rw [hwn, digamma_natCast_eq n (by omega)]\n    have h\u03b30 : (0 : \u211d) \u2264 Real.eulerMascheroniConstant :=\n      (by norm_num : (0 : \u211d) \u2264 1 / 2).trans Real.one_half_lt_eulerMascheroniConstant.le\n    have hreal : |(-Real.eulerMascheroniConstant + (harmonic (n - 1) : \u211a) : \u211d)|\n        \u2264 Real.eulerMascheroniConstant + (1 + Real.log ((n : \u211d) - 1)) := by\n      have hH0\u211a : (0 : \u211a) \u2264 harmonic (n - 1) :=\n        Finset.sum_nonneg (fun i _ => by positivity)\n      have hH0 : (0 : \u211d) \u2264 ((harmonic (n - 1) : \u211a) : \u211d) := by exact_mod_cast hH0\u211a\n      have hcast2 : ((n - 1 : \u2115) : \u211d) = (n : \u211d) - 1 := by\n        rw [Nat.cast_sub (by omega : 1 \u2264 n)]\n        push_cast\n        ring\n      have hHbound : ((harmonic (n - 1) : \u211a) : \u211d) \u2264 1 + Real.log ((n : \u211d) - 1) := by\n        have h := harmonic_le_one_add_log (n - 1)\n        rw [hcast2] at h\n        exact h\n      have hlog0 : (0 : \u211d) \u2264 Real.log ((n : \u211d) - 1) := by\n        apply Real.log_nonneg\n        have h1 : (1 : \u211d) \u2264 ((n - 1 : \u2115) : \u211d) := by exact_mod_cast (by omega : 1 \u2264 n - 1)\n        linarith [h1, hcast2]\n      apply abs_le.mpr\n      constructor <;> linarith [h\u03b30, hH0, hHbound, hlog0]\n    have hnrm : \u2016-(Real.eulerMascheroniConstant : \u2102) + ((harmonic (n - 1) : \u211a) : \u2102)\u2016\n        = |(-Real.eulerMascheroniConstant + (harmonic (n - 1) : \u211a) : \u211d)| := by\n      rw [\u2190 Complex.ofReal_ratCast, \u2190 Complex.ofReal_neg, \u2190 Complex.ofReal_add,\n        Complex.norm_real, Real.norm_eq_abs]\n    rw [hnrm]\n    have hlogn1 : Real.log ((n : \u211d) - 1) \u2264 Real.log (2 + \u2016w\u2016) := by\n      have h2 : ((n - 1 : \u2115) : \u211d) = (n : \u211d) - 1 := by\n        rw [Nat.cast_sub (by omega : 1 \u2264 n)]\n        push_cast\n        ring\n      have hpos : (0 : \u211d) < (n : \u211d) - 1 := by\n        have h1 : (1 : \u211d) \u2264 ((n - 1 : \u2115) : \u211d) := by exact_mod_cast (by omega : 1 \u2264 n - 1)\n        linarith [h1, h2]\n      apply Real.log_le_log hpos\n      have hwnorm : \u2016w\u2016 = (n : \u211d) := by rw [hwn, RCLike.norm_natCast]\n      rw [hwnorm]\n      linarith [h2]\n    have h\u03b31 : Real.eulerMascheroniConstant \u2264 1 :=\n      Real.eulerMascheroniConstant_lt_two_thirds.le.trans (by norm_num)\n    rw [hwn] at hlogn1 h1log4\n    have hlogbig : (2 : \u211d) \u2264 19 * Real.log (2 + \u2016(n : \u2102)\u2016) := by nlinarith [h1log4, hlog4gt]\n    linarith [hreal, h\u03b31, hlogn1, hlogbig]\n  \u00b7 -- the series case: w off the integers\n    have hcomp : w \u2208 Complex.integerComplement := hwint\n    rw [DigammaSeries.digamma_series hcomp]\n    set A := w.re with hA_def\n    set N := \u2308w.re\u2309\u208a with hN_def\n    have hA0 : (0 : \u211d) < A := by linarith [hwre]\n    have hNA : A \u2264 (N : \u211d) := by rw [hN_def]; exact Nat.le_ceil _\n    have hNA1 : (N : \u211d) \u2264 A + 1 := by\n      have h := Nat.ceil_lt_add_one (show (0 : \u211d) \u2264 w.re by linarith [hwre])\n      have h2 : ((\u2308w.re\u2309\u208a : \u2115) : \u211d) < w.re + 1 := by exact_mod_cast h\n      rw [hN_def]\n      linarith [h2]\n    have hN1 : 1 \u2264 N := by\n      have h1 : (2 : \u2115) \u2264 N := by\n        rw [hN_def]\n        have h2 := Nat.ceil_mono hwre\n        rwa [Nat.ceil_ofNat] at h2\n      omega\n    have hterm_summ : Summable (fun n : \u2115 => \u20161 / ((n : \u2102) + 1) - 1 / (w + n + 1)\u2016) :=\n      Summable.of_nonneg_of_le (fun n => norm_nonneg _) (fun n => norm_digamma_term_le hwre n)\n        (summable_digamma_majorant hwre)\n    -- the kernel: summable + the split bound\n    have hker_summ : Summable (fun n : \u2115 => (((n : \u211d) + 1) * (A + (n : \u211d) + 1))\u207b\u00b9) := by\n      have h1 : Summable (fun n : \u2115 => (((n : \u211d) + 1) ^ 2)\u207b\u00b9) := by\n        have h2 : Summable (fun n : \u2115 => (((n : \u211d)) ^ 2)\u207b\u00b9) := by\n          have h3 := Real.summable_nat_rpow_inv.mpr (by norm_num : (1 : \u211d) < 2)\n          have heq : (fun n : \u2115 => ((n : \u211d) ^ (2 : \u211d))\u207b\u00b9)\n              = fun n : \u2115 => (((n : \u211d)) ^ 2)\u207b\u00b9 := by\n            funext n\n            rw [show ((2 : \u211d)) = ((2 : \u2115) : \u211d) by norm_num, Real.rpow_natCast]\n          rwa [heq] at h3\n        have h4 := (summable_nat_add_iff 1).mpr h2\n        simpa [add_comm] using h4\n      refine Summable.of_nonneg_of_le (fun n => by positivity) ?_ h1\n      intro n\n      apply (inv_le_inv\u2080 (by positivity) (by positivity)).mpr\n      rw [sq]\n      apply mul_le_mul_of_nonneg_left _ (by positivity)\n      have h2 : (0 : \u211d) \u2264 (n : \u211d) := Nat.cast_nonneg n\n      linarith [hA0, h2]\n    have hsplit : (\u2211' n : \u2115, (((n : \u211d) + 1) * (A + (n : \u211d) + 1))\u207b\u00b9)\n        = \u2211 n \u2208 Finset.range N, (((n : \u211d) + 1) * (A + (n : \u211d) + 1))\u207b\u00b9\n          + \u2211' n : \u2115, (fun m : \u2115 => (((m : \u211d) + 1) * (A + (m : \u211d) + 1))\u207b\u00b9) (n + N) := by\n      exact (hker_summ.sum_add_tsum_nat_add N).symm\n    -- the head bound\n    have hhead : \u2211 n \u2208 Finset.range N, (((n : \u211d) + 1) * (A + (n : \u211d) + 1))\u207b\u00b9\n        \u2264 (1 + Real.log (N : \u211d)) / A := by\n      have hper : \u2200 n : \u2115, (((n : \u211d) + 1) * (A + (n : \u211d) + 1))\u207b\u00b9\n          \u2264 ((n : \u211d) + 1)\u207b\u00b9 * A\u207b\u00b9 := by\n        intro n\n        have h1 : (0 : \u211d) < ((n : \u211d) + 1) * A := mul_pos (by positivity) hA0\n        have h2 : (0 : \u211d) < ((n : \u211d) + 1) * (A + (n : \u211d) + 1) := by\n          apply mul_pos (by positivity)\n          have h3 : (0 : \u211d) \u2264 (n : \u211d) := Nat.cast_nonneg n\n          linarith [hA0, h3]\n        rw [\u2190 mul_inv]\n        apply (inv_le_inv\u2080 h2 h1).mpr\n        apply mul_le_mul_of_nonneg_left _ (by positivity)\n        have h3 : (0 : \u211d) \u2264 (n : \u211d) := Nat.cast_nonneg n\n        linarith [hA0, h3]\n      have hS' : (\u2211 n \u2208 Finset.range N, ((n : \u211d) + 1)\u207b\u00b9) \u2264 1 + Real.log (N : \u211d) := by\n        have h := sum_one_div_le_one_add_log N\n        simpa [one_div] using h\n      calc \u2211 n \u2208 Finset.range N, (((n : \u211d) + 1) * (A + (n : \u211d) + 1))\u207b\u00b9\n          \u2264 \u2211 n \u2208 Finset.range N, ((n : \u211d) + 1)\u207b\u00b9 * A\u207b\u00b9 :=\n            Finset.sum_le_sum fun n _ => hper n\n        _ = (\u2211 n \u2208 Finset.range N, ((n : \u211d) + 1)\u207b\u00b9) * A\u207b\u00b9 := by rw [\u2190 Finset.sum_mul]\n        _ \u2264 (1 + Real.log (N : \u211d)) * A\u207b\u00b9 :=\n            mul_le_mul_of_nonneg_right hS' (inv_nonneg.mpr hA0.le)\n        _ = (1 + Real.log (N : \u211d)) / A := by rw [div_eq_mul_inv]\n    -- the tail bound\n    have htail : (\u2211' n : \u2115, (fun m : \u2115 => (((m : \u211d) + 1) * (A + (m : \u211d) + 1))\u207b\u00b9) (n + N))\n        \u2264 1 / (N : \u211d) := by\n      have h1 : Summable (fun n : \u2115 => (fun m : \u2115 => (((m : \u211d) + 1) * (A + (m : \u211d) + 1))\u207b\u00b9)\n          (n + N)) :=\n        (summable_nat_add_iff N).mpr hker_summ\n      have hterm : \u2200 n : \u2115, (fun m : \u2115 => (((m : \u211d) + 1) * (A + (m : \u211d) + 1))\u207b\u00b9) (n + N)\n          \u2264 1 / ((n : \u211d) + N) - 1 / ((n : \u211d) + N + 1) := by\n        intro n\n        show ((((n + N : \u2115) : \u211d) + 1) * (A + ((n + N : \u2115) : \u211d) + 1))\u207b\u00b9\n          \u2264 1 / ((n : \u211d) + N) - 1 / ((n : \u211d) + N + 1)\n        have hN0 : (0 : \u211d) < (n : \u211d) + N := by\n          have h2 : (0 : \u211d) \u2264 (n : \u211d) := Nat.cast_nonneg n\n          have h3 : (0 : \u211d) < (N : \u211d) := by exact_mod_cast hN1\n          linarith [h2, h3]\n        have htele : (1 : \u211d) / ((n : \u211d) + N) - 1 / ((n : \u211d) + N + 1)\n            = (((n : \u211d) + N) * ((n : \u211d) + N + 1))\u207b\u00b9 := by\n          rw [div_sub_div _ _ hN0.ne' (by positivity)]\n          rw [div_eq_iff (by positivity : ((n : \u211d) + N) * ((n : \u211d) + N + 1) \u2260 0)]\n          rw [inv_mul_cancel\u2080 (by positivity : ((n : \u211d) + N) * ((n : \u211d) + N + 1) \u2260 0)]\n          ring\n        rw [htele]\n        have h2 : (0 : \u211d) < ((n : \u211d) + N) * ((n : \u211d) + N + 1) := by positivity\n        have h3 : (0 : \u211d) < (((n + N : \u2115) : \u211d) + 1) * (A + ((n + N : \u2115) : \u211d) + 1) := by\n          apply mul_pos\n          \u00b7 push_cast\n            have h4 : (0 : \u211d) \u2264 (n : \u211d) := Nat.cast_nonneg n\n            have h5 : (0 : \u211d) < (N : \u211d) := by exact_mod_cast hN1\n            positivity\n          \u00b7 push_cast\n            have h4 : (0 : \u211d) \u2264 (n : \u211d) := Nat.cast_nonneg n\n            have h5 : (0 : \u211d) < (N : \u211d) := by exact_mod_cast hN1\n            linarith [hA0, h4, h5]\n        apply (inv_le_inv\u2080 h3 h2).mpr\n        push_cast\n        have h4 : (0 : \u211d) \u2264 (n : \u211d) := Nat.cast_nonneg n\n        nlinarith [hA0, h4, hN0]\n      calc (\u2211' n : \u2115, (fun m : \u2115 => (((m : \u211d) + 1) * (A + (m : \u211d) + 1))\u207b\u00b9) (n + N))\n          \u2264 \u2211' n : \u2115, (1 / ((n : \u211d) + N) - 1 / ((n : \u211d) + N + 1)) :=\n            tsum_le_tsum hterm h1 (hasSum_one_div_sub_telescope N hN1).summable\n        _ = 1 / (N : \u211d) := (hasSum_one_div_sub_telescope N hN1).tsum_eq\n    -- the kernel bound\n    have hN0R : (0 : \u211d) < (N : \u211d) := by exact_mod_cast hN1\n    have hkernel_bound : (\u2211' n : \u2115, (((n : \u211d) + 1) * (A + (n : \u211d) + 1))\u207b\u00b9)\n        \u2264 (2 + Real.log (A + 1)) / A := by\n      rw [hsplit]\n      have h1 : (1 + Real.log (N : \u211d)) / A \u2264 (1 + Real.log (A + 1)) / A := by\n        apply div_le_div_of_nonneg_left _ hA0\n        have h2 : Real.log (N : \u211d) \u2264 Real.log (A + 1) := Real.log_le_log hN0R hNA1\n        linarith [h2]\n      have h2 : (1 : \u211d) / (N : \u211d) \u2264 1 / A := one_div_le_one_div_of_le hA0 hNA\n      linarith [h1, h2, hhead, htail]\n    -- the norm of the series\n    have hser : \u2016\u2211' n : \u2115, (1 / ((n : \u2102) + 1) - 1 / (w + n + 1))\u2016\n        \u2264 (\u2016w\u2016 / A) * (2 + Real.log (A + 1)) := by\n      calc \u2016\u2211' n : \u2115, (1 / ((n : \u2102) + 1) - 1 / (w + n + 1))\u2016\n          \u2264 \u2211' n : \u2115, \u20161 / ((n : \u2102) + 1) - 1 / (w + n + 1)\u2016 :=\n            norm_tsum_le_tsum_norm hterm_summ\n        _ \u2264 \u2211' n : \u2115, \u2016w\u2016 / (((n : \u211d) + 1) * (A + (n : \u211d) + 1)) :=\n            tsum_le_tsum (fun n => norm_digamma_term_le hwre n) hterm_summ\n              (summable_digamma_majorant hwre)\n        _ = \u2016w\u2016 * \u2211' n : \u2115, (((n : \u211d) + 1) * (A + (n : \u211d) + 1))\u207b\u00b9 := by\n            rw [tsum_mul_left]\n            apply tsum_congr\n            intro n\n            rw [div_eq_mul_inv]\n        _ \u2264 \u2016w\u2016 * ((2 + Real.log (A + 1)) / A) :=\n            mul_le_mul_of_nonneg_left hkernel_bound (norm_nonneg _)\n        _ = (\u2016w\u2016 / A) * (2 + Real.log (A + 1)) := by ring\n    -- the ratio \u2016w\u2016/A \u2264 3\n    have hratio : \u2016w\u2016 / A \u2264 3 := by\n      have h1 : \u2016w\u2016 \u2264 3 * A := by\n        have hnormsq : \u2016w\u2016 ^ 2 = w.re ^ 2 + w.im ^ 2 := by\n          rw [\u2190 Complex.normSq_eq_norm_sq, Complex.normSq_apply]\n          ring\n        have him5 : w.im ^ 2 \u2264 25 := by\n          calc w.im ^ 2 = |w.im| ^ 2 := by rw [sq_abs]\n            _ \u2264 5 ^ 2 := pow_le_pow_left\u2080 (abs_nonneg _) hwim _\n            _ = 25 := by norm_num\n        have h2 : \u2016w\u2016 ^ 2 \u2264 (3 * A) ^ 2 := by\n          rw [hnormsq]\n          have hA2 : 2 \u2264 A := hwre\n          nlinarith [him5, hA2]\n        exact le_of_pow_le_pow_left\u2080 (two_ne_zero) (by positivity) h2\n      rw [div_le_iff\u2080 hA0]\n      linarith [h1]\n    have hlogA : Real.log (A + 1) \u2264 Real.log (\u2016w\u2016 + 1) := by\n      apply Real.log_le_log (by linarith [hA0])\n      have h1 : w.re \u2264 \u2016w\u2016 := by\n        have h2 := Complex.abs_re_le_norm w\n        rwa [abs_of_nonneg (by linarith [hwre])] at h2\n      linarith [h1]\n    -- the final assembly\n    have h\u03b31 : Real.eulerMascheroniConstant \u2264 1 :=\n      Real.eulerMascheroniConstant_lt_two_thirds.le.trans (by norm_num)\n    have h1w : \u2016(1 : \u2102) / w\u2016 \u2264 1 := by\n      rw [norm_div, norm_one]\n      rw [div_le_one (by linarith [hw_norm_ge] : (0 : \u211d) < \u2016w\u2016)]\n      exact hw_norm_ge\n    calc \u2016-(Real.eulerMascheroniConstant : \u2102) - 1 / w\n          + \u2211' n : \u2115, (1 / ((n : \u2102) + 1) - 1 / (w + n + 1))\u2016\n        \u2264 Real.eulerMascheroniConstant + \u2016(1 : \u2102) / w\u2016\n          + \u2016\u2211' n : \u2115, (1 / ((n : \u2102) + 1) - 1 / (w + n + 1))\u2016 := by\n          refine (norm_add_le _ _).trans ?_\n          refine add_le_add_right ?_ _\n          refine (norm_sub_le _ _).trans ?_\n          rw [norm_neg]\n          refine add_le_add_right ?_ _\n          rw [show (Real.eulerMascheroniConstant : \u2102)\n            = ((Real.eulerMascheroniConstant : \u211d) : \u2102) from rfl, Complex.norm_real,\n            Real.norm_eq_abs,\n            abs_of_nonneg (Real.one_half_lt_eulerMascheroniConstant.le.trans (by norm_num))]\n      _ \u2264 1 + 1 + (\u2016w\u2016 / A) * (2 + Real.log (A + 1)) := by\n          gcongr\n          \u00b7 exact h\u03b31\n          \u00b7 exact h1w\n          \u00b7 exact hser\n      _ \u2264 20 * Real.log (2 + \u2016w\u2016) := by\n          have h2 : (\u2016w\u2016 / A) * (2 + Real.log (A + 1)) \u2264 3 * (2 + Real.log (\u2016w\u2016 + 1)) := by\n            apply mul_le_mul hratio (by linarith [hlogA]) (by positivity) (by positivity)\n          have h3 : Real.log (\u2016w\u2016 + 1) \u2264 Real.log (2 + \u2016w\u2016) :=\n            Real.log_le_log (by positivity) (by linarith)\n          have hlognonneg : (0 : \u211d) \u2264 Real.log (2 + \u2016w\u2016) :=\n            Real.log_nonneg (by linarith [hw_norm_ge])\n          nlinarith [h2, h3, hlog4, hlognonneg]\n\n\nend NguyenRH1\n\nend\n",
  "structuredPatch": [
    {
      "oldStart": 381,
      "oldLines": 7,
      "newStart": 381,
      "newLines": 7,
      "lines": [
        "         nlinarith [hA0, h4, hN0]",
        "       calc (\u2211' n : \u2115, (fun m : \u2115 => (((m : \u211d) + 1) * (A + (m : \u211d) + 1))\u207b\u00b9) (n + N))",
        "           \u2264 \u2211' n : \u2115, (1 / ((n : \u211d) + N) - 1 / ((n : \u211d) + N + 1)) :=",
        "-            tsum_le_tsum hterm h1 (hasSum_one_div_sub_telescope N hN1).summable",
        "+            Summable.tsum_le_tsum hterm h1 (hasSum_one_div_sub_telescope N hN1).summable",
        "         _ = 1 / (N : \u211d) := (hasSum_one_div_sub_telescope N hN1).tsum_eq",
        "     -- the kernel bound",
        "     have hN0R : (0 : \u211d) < (N : \u211d) := by exact_mod_cast hN1"
      ]
    }
  ],
  "userModified": false,
  "replaceAll": false
}
raw content_json (database row)
[{"type":"thinking","thinking":"`AnalyticAt.analyticOrderAt_eq_zero (hf : AnalyticAt 𝕜 f z₀) : analyticOrderAt f z₀ = 0 ↔ f z₀ ≠ 0` ✓. So const C (≠ 0) has order 0 ✓.\n\nNow write the full §4 block: const-mul invariance, scaled-order invariance, the ZerosBound count, and the R-gap. Let me write it all and compile.","signature":""},{"type":"text","text":"`AnalyticAt.analyticOrderAt_eq_zero` confirmed. Writing §4 (order invariances + Jensen count + R-gap)."},{"type":"tool_use","id":"Edit_373","name":"Edit","input":{"replace_all":false,"file_path":"D:\\Python\\Quantum\\research\\lean\\NguyenRH1\\NguyenRH1\\LiDisc.lean","old_string":"end NguyenRH1\n\nend","new_string":"/-! ## 4. The Jensen count -/\n\n/-- A nonzero constant factor does not change the analytic order. -/\ntheorem analyticOrderNatAt_const_mul {C : ℂ} (hC : C ≠ 0) {X : ℂ → ℂ} {w₀ : ℂ}\n    (hX : AnalyticAt ℂ X w₀) :\n    analyticOrderNatAt (fun w => C * X w) w₀ = analyticOrderNatAt X w₀ := by\n  have hord : analyticOrderAt (fun w => C * X w) w₀ = analyticOrderAt X w₀ := by\n    have h1 : analyticOrderAt ((fun _ : ℂ => C) • X) w₀\n        = analyticOrderAt (fun _ : ℂ => C) w₀ + analyticOrderAt X w₀ :=\n      analyticOrderAt_smul analyticAt_const hX\n    have h2 : analyticOrderAt (fun _ : ℂ => C) w₀ = 0 :=\n      (analyticAt_const (𝕜 := ℂ) (v := C)).analyticOrderAt_eq_zero.mpr hC\n    have h3 : (fun w : ℂ => C * X w) = (fun _ : ℂ => C) • X :=\n      funext fun w => by simp [smul_eq_mul]\n    rw [h3, h1, h2]\n    simp\n  by_cases htop : analyticOrderAt X w₀ = ⊤\n  · rw [htop] at hord\n    have h4 : analyticOrderAt (fun w => C * X w) w₀ = ⊤ := hord\n    rw [analyticOrderAt_eq_top] at htop h4  -- both sides junk 0: toNat ⊤ = 0\n    rw [h4, htop]\n  · have h1c := Nat.cast_analyticOrderNatAt (f := fun w => C * X w) (z₀ := w₀)\n      (by rw [hord]; exact htop)\n    have h2c := Nat.cast_analyticOrderNatAt (f := X) (z₀ := w₀) htop\n    have hcast : ((analyticOrderNatAt (fun w => C * X w) w₀ : ℕ) : ℕ∞)\n        = ((analyticOrderNatAt X w₀ : ℕ) : ℕ∞) := by\n      rw [h1c, h2c, hord]\n    exact Nat.cast_inj.mp hcast\n\n/-- The order of the scaled function at w₀ equals the order of ζ at the\naffine image (for ‖w₀‖ ≤ 1, |t| ≥ 10). -/\ntheorem analyticOrderNatAt_scaledZeta {t : ℝ} (ht : 10 ≤ |t|) {w₀ : ℂ} (hw₀ : ‖w₀‖ ≤ 1) :\n    analyticOrderNatAt (scaledZeta t) w₀\n      = analyticOrderNatAt riemannZeta (discCenter t + (5 / 2 : ℂ) * w₀) := by\n  have hζ0 : riemannZeta (discCenter t) ≠ 0 := by\n    have h := RvM.zeta_lower_bound_two t\n    intro h0\n    rw [← show discCenter t = 2 + t * Complex.I from rfl, h0, norm_zero] at h\n    norm_num at h\n  have haffine := analyticOrderNatAt_riemannZeta_affine ht hw₀\n  have haff_an : AnalyticAt ℂ (fun w => riemannZeta (discCenter t + (5 / 2 : ℂ) * w)) w₀ := by\n    have hne : discCenter t + (5 / 2 : ℂ) * w₀ ≠ 1 := by\n      intro h\n      have hwim : |w₀.im| ≤ 1 := (abs_im_le_norm _).trans hw₀\n      have him : (discCenter t + (5 / 2 : ℂ) * w₀).im = t + (5 / 2) * w₀.im := by\n        simp [discCenter, add_im, mul_im, ofReal_re, ofReal_im, I_re, I_im]\n      have hbig : 15 / 2 ≤ |t + (5 / 2) * w₀.im| := by\n        have h3 := abs_add_le (t + (5 / 2) * w₀.im) (-((5 / 2) * w₀.im))\n        rw [abs_neg, add_neg_cancel_right] at h3\n        have h4 : |(5 / 2) * w₀.im| ≤ 5 / 2 := by\n          rw [abs_mul, abs_of_nonneg (by norm_num : (0:ℝ) ≤ 5 / 2)]\n          calc (5 / 2) * |w₀.im| ≤ (5 / 2) * 1 :=\n                mul_le_mul_of_nonneg_left hwim (by norm_num)\n            _ = 5 / 2 := by norm_num\n        linarith [h3, h4, ht]\n      rw [h] at him\n      rw [Complex.one_im] at him\n      rw [← him] at hbig\n      norm_num at hbig\n    have haff : AnalyticAt ℂ (fun w : ℂ => discCenter t + (5 / 2 : ℂ) * w) w₀ :=\n      analyticAt_const.add (analyticAt_const.mul analyticAt_id)\n    exact (analyticAt_riemannZeta_of_ne_one hne).comp_of_eq haff rfl\n  have hconst := analyticOrderNatAt_const_mul (inv_ne_zero hζ0) haff_an\n  -- scaledZeta t = fun w => (ζ(s₀))⁻¹ * ζ(aff w) pointwise\n  have hpoint : scaledZeta t = fun w => (riemannZeta (discCenter t))⁻¹ *\n      riemannZeta (discCenter t + (5 / 2 : ℂ) * w) :=\n    funext fun w => by unfold scaledZeta; rw [div_eq_mul_inv]\n  rw [hpoint, hconst]\n  exact haffine\n\n/-- **The Jensen count**: the mult-weighted count of zeros of the scaled\nfunction F in the closed ball of radius 24/25, via Zeta23's `ZerosBound`\napplied with B = (9/4)·|t|². -/\ntheorem scaledZeta_jensen_count {t : ℝ} (ht : 10 ≤ |t|) :\n    ∑ ρ ∈ (finiteSetOfZeros_mono (f := scaledZeta t) (r := 24 / 25) (R := 99 / 100)\n      (by norm_num) (scaledZeta_zeros_finite)).toFinset,\n        analyticOrderNatAt (scaledZeta t) ρ\n      ≤ Real.log ((9 / 4) * |t| ^ 2) / Real.log (33 / 32) := by\n  have hB : ∀ z : ℂ, ‖z‖ ≤ 99 / 100 → ‖scaledZeta t z‖ ≤ (9 / 4) * |t| ^ 2 := by\n    intro z hz\n    have hcenter : (1 / 3 : ℝ) ≤ ‖riemannZeta (discCenter t)‖ := by\n      have h := RvM.zeta_lower_bound_two t\n      rwa [← show discCenter t = 2 + t * Complex.I from rfl] at h\n    have htop : ‖riemannZeta (discCenter t + (5 / 2 : ℂ) * z)‖ ≤ (3 / 4) * |t| ^ 2 := by\n      apply norm_riemannZeta_le_disc ht\n      rw [Metric.mem_closedBall, Complex.dist_eq, add_sub_cancel_left]\n      calc ‖(5 / 2 : ℂ) * z‖ ≤ (5 / 2) * ‖z‖ := by\n            rw [norm_mul]\n            have hn : ‖(5 / 2 : ℂ)‖ = 5 / 2 := by\n              rw [show (5 / 2 : ℂ) = ((5 / 2 : ℝ) : ℂ) by norm_num, Complex.norm_real,\n                Real.norm_eq_abs, abs_of_nonneg (by norm_num : (0:ℝ) ≤ 5 / 2)]\n            rw [hn]\n        _ ≤ (5 / 2) * (99 / 100) := mul_le_mul_of_nonneg_left hz (by norm_num)\n        _ ≤ 5 / 2 := by norm_num\n    unfold scaledZeta\n    rw [norm_div]\n    calc ‖riemannZeta (discCenter t + (5 / 2 : ℂ) * z)‖ / ‖riemannZeta (discCenter t)‖\n        ≤ ((3 / 4) * |t| ^ 2) / (1 / 3) := by\n          apply div_le_div htop _ (by norm_num) hcenter\n          · norm_num\n      _ = (9 / 4) * |t| ^ 2 := by ring\n  have h := ZerosBound (f := scaledZeta t) (r := 24 / 25) (R := 99 / 100)\n    (by norm_num) (by norm_num) (by norm_num) (by norm_num)\n    (scaledZeta_analytic ht) (scaledZeta_zero t) scaledZeta_zeros_finite hB\n  refine h.trans ?_\n  rw [one_div, inv_mul_eq_div]\n  apply div_le_div_of_nonneg_right _ ... \n  sorry\n\nend NguyenRH1\n\nend"},"extra_content":null}]