English
A function is meromorphic in normal form at x iff it is analytic at x or it has a pole at x with negative order and value 0.
Русский
Функция мероморфна в нормальной форме в точке x тогда и только тогда, когда она аналитична в x или имеет полюс в x с отрицательным порядком и значением 0.
LaTeX
$$$\text{MeromorphicNFAt } f x \;\Leftrightarrow\; \text{AnalyticAt } f x \;\lor\; \bigl( \text{MeromorphicAt } f x \wedge \text{meromorphicOrderAt } f x < 0 \wedge f x = 0 \bigr)$$$
Lean4
/-- A meromorphic function has normal form at `x` iff it is either analytic
there, or if it has a pole at `x` and takes the default value `0`. -/
theorem meromorphicNFAt_iff_analyticAt_or :
MeromorphicNFAt f x ↔ AnalyticAt 𝕜 f x ∨ (MeromorphicAt f x ∧ meromorphicOrderAt f x < 0 ∧ f x = 0) :=
by
constructor
· rintro (h | ⟨n, g, h₁g, h₂g, h₃g⟩)
· simp [(analyticAt_congr h).2 analyticAt_const]
· have hf : MeromorphicAt f x :=
by
apply MeromorphicAt.congr _ (h₃g.filter_mono nhdsWithin_le_nhds).symm
fun_prop
have : meromorphicOrderAt f x = n := by
rw [meromorphicOrderAt_eq_int_iff hf]
use g, h₁g, h₂g
exact eventually_nhdsWithin_of_eventually_nhds h₃g
by_cases hn : 0 ≤ n
· left
rw [analyticAt_congr h₃g]
apply (AnalyticAt.zpow_nonneg (by fun_prop) hn).smul h₁g
· right
use hf
simp [this, WithTop.coe_lt_zero.2 (not_le.1 hn), h₃g.eq_of_nhds, zero_zpow n (ne_of_not_le hn).symm]
· rintro (h | ⟨h₁, h₂, h₃⟩)
· by_cases h₂f : analyticOrderAt f x = ⊤
· rw [analyticOrderAt_eq_top] at h₂f
tauto
· right
use analyticOrderNatAt f x
have : analyticOrderAt f x ≠ ⊤ := h₂f
rw [← ENat.coe_toNat_eq_self, eq_comm, h.analyticOrderAt_eq_natCast] at this
obtain ⟨g, h₁g, h₂g, h₃g⟩ := this
use g, h₁g, h₂g
simpa
· right
lift meromorphicOrderAt f x to ℤ using LT.lt.ne_top h₂ with n hn
obtain ⟨g, h₁g, h₂g, h₃g⟩ := (meromorphicOrderAt_eq_int_iff h₁).1 hn.symm
use n, g, h₁g, h₂g
filter_upwards [eventually_nhdsWithin_iff.1 h₃g]
intro z hz
by_cases h₁z : z = x
· simp only [h₁z, Pi.smul_apply', Pi.pow_apply, sub_self]
rw [h₃]
apply (smul_eq_zero_of_left (zero_zpow n _) (g x)).symm
by_contra hCon
simp [hCon] at h₂
· exact hz h₁z