nevanlinna/Nevanlinna/stronglyMeromorphicOn_elimi...

182 lines
5.1 KiB
Plaintext
Raw Normal View History

2024-11-07 12:08:52 +01:00
import Mathlib.Analysis.Analytic.Meromorphic
import Nevanlinna.analyticAt
import Nevanlinna.divisor
import Nevanlinna.meromorphicAt
import Nevanlinna.meromorphicOn_divisor
import Nevanlinna.stronglyMeromorphicOn
2024-11-12 16:49:07 +01:00
import Nevanlinna.mathlibAddOn
2024-11-07 12:08:52 +01:00
open scoped Interval Topology
open Real Filter MeasureTheory intervalIntegral
2024-11-19 10:07:20 +01:00
lemma untop_eq_untop'
{n : WithTop }
(hn : n ≠ ) :
n.untop' 0 = n.untop hn := by
rw [WithTop.untop'_eq_iff]
simp
2024-11-14 16:18:32 +01:00
2024-11-19 07:16:04 +01:00
theorem MeromorphicOn.decompose₁
{f : }
{U : Set }
{z₀ : }
(hz₀ : z₀ ∈ U)
(h₁f : MeromorphicOn f U)
2024-11-19 10:07:20 +01:00
(h₂f : StronglyMeromorphicAt f z₀)
(h₃f : h₂f.meromorphicAt.order ≠ ) :
2024-11-19 07:16:04 +01:00
∃ g : , (MeromorphicOn g U)
∧ (AnalyticAt g z₀)
∧ (g z₀ ≠ 0)
∧ (f = g * fun z ↦ (z - z₀) ^ (h₁f.divisor z₀)) := by
let h₁ := fun z ↦ (z - z₀) ^ (-h₁f.divisor z₀)
have h₁h₁ : MeromorphicOn h₁ U := by
apply MeromorphicOn.zpow
apply AnalyticOnNhd.meromorphicOn
apply AnalyticOnNhd.sub
exact analyticOnNhd_id
exact analyticOnNhd_const
2024-11-19 08:45:20 +01:00
let n : := (-h₁f.divisor z₀)
have h₂h₁ : (h₁h₁ z₀ hz₀).order = n := by
simp_rw [(h₁h₁ z₀ hz₀).order_eq_int_iff]
use 1
constructor
· apply analyticAt_const
· constructor
· simp
· apply eventually_nhdsWithin_of_forall
intro z hz
simp
2024-11-19 07:16:04 +01:00
let g₁ := f * h₁
have h₁g₁ : MeromorphicOn g₁ U := by
apply h₁f.mul h₁h₁
have h₂g₁ : (h₁g₁ z₀ hz₀).order = 0 := by
2024-11-19 10:07:20 +01:00
rw [(h₁f z₀ hz₀).order_mul (h₁h₁ z₀ hz₀)]
rw [h₂h₁]
unfold n
rw [MeromorphicOn.divisor_def₂ h₁f hz₀ h₃f]
conv =>
left
left
rw [Eq.symm (WithTop.coe_untop (h₁f z₀ hz₀).order h₃f)]
have
(a b c : )
(h : a + b = c) :
(a : WithTop ) + (b : WithTop ) = (c : WithTop ) := by
rw [← h]
simp
rw [this ((h₁f z₀ hz₀).order.untop h₃f) (-(h₁f z₀ hz₀).order.untop h₃f) 0]
simp
ring
2024-11-19 07:16:04 +01:00
let g := (h₁g₁ z₀ hz₀).makeStronglyMeromorphicAt
have h₂g : StronglyMeromorphicAt g z₀ := by
2024-11-19 10:07:20 +01:00
exact StronglyMeromorphicAt_of_makeStronglyMeromorphic (h₁g₁ z₀ hz₀)
have h₁g : MeromorphicOn g U := by
intro z hz
by_cases h₁z : z = z₀
· rw [h₁z]
apply h₂g.meromorphicAt
· apply (h₁g₁ z hz).congr
rw [eventuallyEq_nhdsWithin_iff]
rw [eventually_nhds_iff]
use {z₀}ᶜ
constructor
· intro y h₁y h₂y
let A := m₁ (h₁g₁ z₀ hz₀) y h₁y
unfold g
rw [← A]
· constructor
· exact isOpen_compl_singleton
· exact h₁z
2024-11-19 07:16:04 +01:00
use g
constructor
· exact h₁g
· constructor
· apply h₂g.analytic
2024-11-19 10:07:20 +01:00
2024-11-19 07:16:04 +01:00
sorry
· constructor
· sorry
· sorry
2024-11-11 16:50:49 +01:00
2024-11-07 12:08:52 +01:00
theorem MeromorphicOn.decompose
{f : }
{U : Set }
(h₁U : IsConnected U)
(h₂U : IsCompact U)
(h₁f : MeromorphicOn f U)
(h₂f : ∃ z₀ ∈ U, f z₀ ≠ 0) :
∃ g : , (AnalyticOnNhd g U)
∧ (∀ z ∈ U, g z ≠ 0)
2024-11-13 14:31:45 +01:00
∧ (Set.EqOn h₁f.makeStronglyMeromorphicOn ((∏ᶠ p, fun z ↦ (z - p) ^ (h₁f.divisor p)) * g) U) := by
2024-11-07 16:10:37 +01:00
let g₁ : := f * (fun z ↦ ∏ᶠ p, (z - p) ^ (h₁f.divisor p))
2024-11-08 12:05:49 +01:00
have h₁g₁ : MeromorphicOn g₁ U := by
sorry
2024-11-07 16:10:37 +01:00
let g := h₁g₁.makeStronglyMeromorphicOn
2024-11-08 12:05:49 +01:00
have h₁g : MeromorphicOn g U := by
sorry
have h₂g : ∀ z : U, (h₁g z.1 z.2).order = 0 := by
sorry
have h₃g : StronglyMeromorphicOn g U := by
sorry
2024-11-07 16:10:37 +01:00
have h₄g : AnalyticOnNhd g U := by
intro z hz
apply StronglyMeromorphicAt.analytic (h₃g z hz)
rw [h₂g ⟨z, hz⟩]
use g
constructor
· exact h₄g
· constructor
· intro z hz
rw [← (h₄g z hz).order_eq_zero_iff]
2024-11-08 08:40:58 +01:00
have A := (h₄g z hz).meromorphicAt_order
rw [h₂g ⟨z, hz⟩] at A
2024-11-08 12:00:37 +01:00
have t₀ : (h₄g z hz).order ≠ := by
by_contra hC
rw [hC] at A
tauto
have t₁ : ∃ n : , (h₄g z hz).order = n := by
exact Option.ne_none_iff_exists'.mp t₀
obtain ⟨n, hn⟩ := t₁
rw [hn] at A
apply WithTopCoe
rw [eq_comm]
rw [hn]
exact A
2024-11-07 16:10:37 +01:00
· intro z hz
2024-11-11 16:50:49 +01:00
have t₀ : ∀ᶠ x in 𝓝[≠] z, AnalyticAt f x := by
sorry
have t₂ : ∀ᶠ x in 𝓝[≠] z, h₁f.divisor z = 0 := by
sorry
have t₁ : ∀ᶠ x in 𝓝[≠] z, AnalyticAt (fun z => ∏ᶠ (p : ), (z - p) ^ h₁f.divisor p * g z) x := by
sorry
2024-11-12 16:58:07 +01:00
apply Filter.EventuallyEq.eq_of_nhds
apply StronglyMeromorphicAt.localIdentity
2024-11-13 14:31:45 +01:00
· exact StronglyMeromorphicOn_of_makeStronglyMeromorphic h₁f z hz
· right
use h₁f.divisor z
2024-11-14 06:49:15 +01:00
use (∏ᶠ p : ({z}ᶜ : Set ), (fun x ↦ (x - p.1) ^ h₁f.divisor p.1)) * g
2024-11-13 14:31:45 +01:00
constructor
· apply AnalyticAt.mul₁
2024-11-13 16:12:25 +01:00
· apply analyticAt_finprod
intro w
2024-11-14 06:49:15 +01:00
2024-11-13 14:31:45 +01:00
sorry
· apply (h₃g z hz).analytic
rw [h₂g ⟨z, hz⟩]
· constructor
· sorry
· sorry
2024-11-07 16:10:37 +01:00
sorry