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
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