Update stronglyMeromorphicOn.lean
This commit is contained in:
parent
ccdbb319f7
commit
306ed1b083
|
@ -38,138 +38,28 @@ theorem StronglyMeromorphicOn.analytic
|
||||||
theorem AnalyticOn.stronglyMeromorphicOn
|
theorem AnalyticOn.stronglyMeromorphicOn
|
||||||
{f : ℂ → ℂ}
|
{f : ℂ → ℂ}
|
||||||
{U : Set ℂ}
|
{U : Set ℂ}
|
||||||
(h₁f : AnalyticOn ℂ f U) :
|
(h₁f : AnalyticOnNhd ℂ f U) :
|
||||||
StronglyMeromorphicOn f U := by
|
StronglyMeromorphicOn f U := by
|
||||||
intro z hz
|
intro z hz
|
||||||
apply AnalyticAt.stronglyMeromorphicAt
|
apply AnalyticAt.stronglyMeromorphicAt
|
||||||
let A := h₁f z hz
|
|
||||||
exact h₁f z hz
|
exact h₁f z hz
|
||||||
|
|
||||||
|
|
||||||
/- Make strongly MeromorphicAt -/
|
/- Make strongly MeromorphicAt -/
|
||||||
noncomputable def MeromorphicAt.makeStronglyMeromorphicAt
|
noncomputable def MeromorphicOn.makeStronglyMeromorphicOn
|
||||||
{f : ℂ → ℂ}
|
{f : ℂ → ℂ}
|
||||||
{z₀ : ℂ}
|
{U : Set ℂ}
|
||||||
(hf : MeromorphicAt f z₀) :
|
(hf : MeromorphicOn f U) :
|
||||||
ℂ → ℂ := by
|
ℂ → ℂ := by
|
||||||
intro z
|
intro z
|
||||||
by_cases z = z₀
|
by_cases hz : z ∈ U
|
||||||
· by_cases h₁f : hf.order = (0 : ℤ)
|
· exact (hf z hz).makeStronglyMeromorphicAt z
|
||||||
· rw [hf.order_eq_int_iff] at h₁f
|
|
||||||
exact (Classical.choose h₁f) z₀
|
|
||||||
· exact 0
|
|
||||||
· exact f z
|
· exact f z
|
||||||
|
|
||||||
|
|
||||||
lemma m₁
|
theorem StronglyMeromorphicOn_of_makeStronglyMeromorphicOn
|
||||||
{f : ℂ → ℂ}
|
{f : ℂ → ℂ}
|
||||||
{z₀ : ℂ}
|
{U : Set ℂ}
|
||||||
(hf : MeromorphicAt f z₀) :
|
(hf : MeromorphicOn f U) :
|
||||||
∀ z ≠ z₀, f z = hf.makeStronglyMeromorphicAt z := by
|
StronglyMeromorphicOn hf.makeStronglyMeromorphicOn U := by
|
||||||
intro z hz
|
sorry
|
||||||
unfold MeromorphicAt.makeStronglyMeromorphicAt
|
|
||||||
simp [hz]
|
|
||||||
|
|
||||||
|
|
||||||
lemma m₂
|
|
||||||
{f : ℂ → ℂ}
|
|
||||||
{z₀ : ℂ}
|
|
||||||
(hf : MeromorphicAt f z₀) :
|
|
||||||
f =ᶠ[𝓝[≠] z₀] hf.makeStronglyMeromorphicAt := by
|
|
||||||
apply eventually_nhdsWithin_of_forall
|
|
||||||
exact fun x a => m₁ hf x a
|
|
||||||
|
|
||||||
|
|
||||||
lemma Mnhds
|
|
||||||
{f g : ℂ → ℂ}
|
|
||||||
{z₀ : ℂ}
|
|
||||||
(h₁ : f =ᶠ[𝓝[≠] z₀] g)
|
|
||||||
(h₂ : f z₀ = g z₀) :
|
|
||||||
f =ᶠ[𝓝 z₀] g := by
|
|
||||||
apply eventually_nhds_iff.2
|
|
||||||
obtain ⟨t, h₁t, h₂t⟩ := eventually_nhds_iff.1 (eventually_nhdsWithin_iff.1 h₁)
|
|
||||||
use t
|
|
||||||
constructor
|
|
||||||
· intro y hy
|
|
||||||
by_cases h₂y : y ∈ ({z₀}ᶜ : Set ℂ)
|
|
||||||
· exact h₁t y hy h₂y
|
|
||||||
· simp at h₂y
|
|
||||||
rwa [h₂y]
|
|
||||||
· exact h₂t
|
|
||||||
|
|
||||||
|
|
||||||
theorem localIdentity
|
|
||||||
{f g : ℂ → ℂ}
|
|
||||||
{z₀ : ℂ}
|
|
||||||
(hf : AnalyticAt ℂ f z₀)
|
|
||||||
(hg : AnalyticAt ℂ g z₀) :
|
|
||||||
f =ᶠ[𝓝[≠] z₀] g → f =ᶠ[𝓝 z₀] g := by
|
|
||||||
intro h
|
|
||||||
let Δ := f - g
|
|
||||||
have : AnalyticAt ℂ Δ z₀ := AnalyticAt.sub hf hg
|
|
||||||
have t₁ : Δ =ᶠ[𝓝[≠] z₀] 0 := by
|
|
||||||
exact Filter.eventuallyEq_iff_sub.mp h
|
|
||||||
|
|
||||||
have : Δ =ᶠ[𝓝 z₀] 0 := by
|
|
||||||
rcases (AnalyticAt.eventually_eq_zero_or_eventually_ne_zero this) with h | h
|
|
||||||
· exact h
|
|
||||||
· have := Filter.EventuallyEq.eventually t₁
|
|
||||||
let A := Filter.eventually_and.2 ⟨this, h⟩
|
|
||||||
let _ := Filter.Eventually.exists A
|
|
||||||
tauto
|
|
||||||
exact Filter.eventuallyEq_iff_sub.mpr this
|
|
||||||
|
|
||||||
|
|
||||||
theorem StronglyMeromorphicAt_of_makeStronglyMeromorphic
|
|
||||||
{f : ℂ → ℂ}
|
|
||||||
{z₀ : ℂ}
|
|
||||||
(hf : MeromorphicAt f z₀) :
|
|
||||||
StronglyMeromorphicAt hf.makeStronglyMeromorphicAt z₀ := by
|
|
||||||
|
|
||||||
by_cases h₂f : hf.order = ⊤
|
|
||||||
· have : hf.makeStronglyMeromorphicAt =ᶠ[𝓝 z₀] 0 := by
|
|
||||||
apply Mnhds
|
|
||||||
· apply Filter.EventuallyEq.trans (Filter.EventuallyEq.symm (m₂ hf))
|
|
||||||
exact (MeromorphicAt.order_eq_top_iff hf).1 h₂f
|
|
||||||
· unfold MeromorphicAt.makeStronglyMeromorphicAt
|
|
||||||
simp [h₂f]
|
|
||||||
|
|
||||||
apply AnalyticAt.stronglyMeromorphicAt
|
|
||||||
rw [analyticAt_congr this]
|
|
||||||
apply analyticAt_const
|
|
||||||
· let n := hf.order.untop h₂f
|
|
||||||
have : hf.order = n := by
|
|
||||||
exact Eq.symm (WithTop.coe_untop hf.order h₂f)
|
|
||||||
rw [hf.order_eq_int_iff] at this
|
|
||||||
obtain ⟨g, h₁g, h₂g, h₃g⟩ := this
|
|
||||||
right
|
|
||||||
use n
|
|
||||||
use g
|
|
||||||
constructor
|
|
||||||
· assumption
|
|
||||||
· constructor
|
|
||||||
· assumption
|
|
||||||
· apply Mnhds
|
|
||||||
· apply Filter.EventuallyEq.trans (Filter.EventuallyEq.symm (m₂ hf))
|
|
||||||
exact h₃g
|
|
||||||
· unfold MeromorphicAt.makeStronglyMeromorphicAt
|
|
||||||
simp
|
|
||||||
by_cases h₃f : hf.order = (0 : ℤ)
|
|
||||||
· let h₄f := (hf.order_eq_int_iff 0).1 h₃f
|
|
||||||
simp [h₃f]
|
|
||||||
obtain ⟨h₁G, h₂G, h₃G⟩ := Classical.choose_spec h₄f
|
|
||||||
simp at h₃G
|
|
||||||
have hn : n = 0 := Eq.symm ((fun {α} {a} {b} h => (WithTop.eq_untop_iff h).mpr) h₂f (id (Eq.symm h₃f)))
|
|
||||||
rw [hn]
|
|
||||||
rw [hn] at h₃g; simp at h₃g
|
|
||||||
simp
|
|
||||||
have : g =ᶠ[𝓝 z₀] (Classical.choose h₄f) := by
|
|
||||||
apply localIdentity h₁g h₁G
|
|
||||||
exact Filter.EventuallyEq.trans (Filter.EventuallyEq.symm h₃g) h₃G
|
|
||||||
rw [Filter.EventuallyEq.eq_of_nhds this]
|
|
||||||
· have : hf.order ≠ 0 := h₃f
|
|
||||||
simp [this]
|
|
||||||
left
|
|
||||||
apply zero_zpow n
|
|
||||||
dsimp [n]
|
|
||||||
rwa [WithTop.untop_eq_iff h₂f]
|
|
||||||
|
|
Loading…
Reference in New Issue