Skip to main content
AlexKontorovich/PrimeNumberTheoremAnd
Source indexedtheorem · leanprover/lean4:v4.32.0

CH2.Phi_circ.poles_simple

PrimeNumberTheoremAnd.IEANTN.CH2.CH2_part1 · PrimeNumberTheoremAnd/IEANTN/CH2/CH2_part1.lean:1473 to 1505

Mathematical statement

Exact Lean statement

@[blueprint
  "Phi-circ-poles-simple"
  (title := "$\\Phi^{\\pm,\\circ}_\\nu$ poles simple")
  (statement := /--
  The poles of $$\Phi^{\pm,\circ}_\nu(z)$$ are all simple.
  -/)
  (proof := /-- This follows from the definition of $\Phi^{\pm,\circ}_\nu$ and the properties of the $\coth$ function. -/)
  (latexEnv := "lemma")
  (discussion := 1070)]
theorem Phi_circ.poles_simple (ν ε : ℝ) (hν : ν > 0) (z : ℂ) :
    meromorphicOrderAt (Phi_circ ν ε) z = -1 ↔ ∃ n : ℤ, z = n - I * ν / (2 * π)

Complete declaration

Lean source

Canonical source
Full Lean sourceLean 4
@[blueprint  "Phi-circ-poles-simple"  (title := "$\\Phi^{\\pm,\\circ}_\\nu$ poles simple")  (statement := /--  The poles of $$\Phi^{\pm,\circ}_\nu(z)$$ are all simple.  -/)  (proof := /-- This follows from the definition of $\Phi^{\pm,\circ}_\nu$ and the properties of the $\coth$ function. -/)  (latexEnv := "lemma")  (discussion := 1070)]theorem Phi_circ.poles_simple (ν ε : ) (hν : ν > 0) (z : ℂ) :    meromorphicOrderAt (Phi_circ ν ε) z = -1   n : , z = n - I * ν / (2 * π) := by  constructor  · exact fun h  (Phi_circ.poles ν ε hν z).mp (h ▸ by decide)  · rintro n, rfl    set z₀ := (n : ℂ) - I * ν / (2 * π)    have hsub : MeromorphicAt (· - z₀ : ℂ  ℂ) z₀ := by fun_prop    have hf : MeromorphicAt (Phi_circ ν ε) z₀ := (Phi_circ.meromorphic ν ε).meromorphicAt    have heq : (fun z  (z - z₀) * Phi_circ ν ε z) =ᶠ[nhdsWithin z₀ {z₀}ᶜ] ((· - z₀) * Phi_circ ν ε) :=      Filter.Eventually.of_forall fun _  rfl    have hord₀ : meromorphicOrderAt ((· - z₀) * Phi_circ ν ε) z₀ = 0 := by      rw [ tendsto_ne_zero_iff_meromorphicOrderAt_eq_zero (hsub.mul hf)]      exact _, by norm_num, (Phi_circ.residue ν ε hν n).congr' heq    have hord₁ : meromorphicOrderAt (· - z₀) z₀ = (1 : ) := by      rw [meromorphicOrderAt_eq_int_iff hsub]      exact 1, analyticAt_const, one_ne_zero, by simp    rw [meromorphicOrderAt_mul hsub hf, hord₁] at hord₀    obtain m, hm := WithTop.ne_top_iff_exists.mp      (by rintro h; simp [h] at hord₀ : meromorphicOrderAt (Phi_circ ν ε) z₀  ⊤)    rw [ hm] at hord₀     have h1 : ((1 : ) + m : WithTop ) = (1 + m : ) := by push_cast; ring_nf    rw [h1] at hord₀    have : 1 + m = 0 := by exact_mod_cast hord₀    change (m : WithTop ) = (-1 : ); congr 1; omega