nevanlinna/Nevanlinna/stronglyMeromorphicOn_elimi...

182 lines
5.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Mathlib.Analysis.Analytic.Meromorphic
import Nevanlinna.analyticAt
import Nevanlinna.divisor
import Nevanlinna.meromorphicAt
import Nevanlinna.meromorphicOn_divisor
import Nevanlinna.stronglyMeromorphicOn
import Nevanlinna.mathlibAddOn
open scoped Interval Topology
open Real Filter MeasureTheory intervalIntegral
lemma untop_eq_untop'
{n : WithTop }
(hn : n ≠ ) :
n.untop' 0 = n.untop hn := by
rw [WithTop.untop'_eq_iff]
simp
theorem MeromorphicOn.decompose₁
{f : }
{U : Set }
{z₀ : }
(hz₀ : z₀ ∈ U)
(h₁f : MeromorphicOn f U)
(h₂f : StronglyMeromorphicAt f z₀)
(h₃f : h₂f.meromorphicAt.order ≠ ) :
∃ 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
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
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
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
let g := (h₁g₁ z₀ hz₀).makeStronglyMeromorphicAt
have h₂g : StronglyMeromorphicAt g z₀ := by
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
use g
constructor
· exact h₁g
· constructor
· apply h₂g.analytic
sorry
· constructor
· sorry
· sorry
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)
∧ (Set.EqOn h₁f.makeStronglyMeromorphicOn ((∏ᶠ p, fun z ↦ (z - p) ^ (h₁f.divisor p)) * g) U) := by
let g₁ : := f * (fun z ↦ ∏ᶠ p, (z - p) ^ (h₁f.divisor p))
have h₁g₁ : MeromorphicOn g₁ U := by
sorry
let g := h₁g₁.makeStronglyMeromorphicOn
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
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]
have A := (h₄g z hz).meromorphicAt_order
rw [h₂g ⟨z, hz⟩] at A
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
· intro z hz
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
apply Filter.EventuallyEq.eq_of_nhds
apply StronglyMeromorphicAt.localIdentity
· exact StronglyMeromorphicOn_of_makeStronglyMeromorphic h₁f z hz
· right
use h₁f.divisor z
use (∏ᶠ p : ({z}ᶜ : Set ), (fun x ↦ (x - p.1) ^ h₁f.divisor p.1)) * g
constructor
· apply AnalyticAt.mul₁
· apply analyticAt_finprod
intro w
sorry
· apply (h₃g z hz).analytic
rw [h₂g ⟨z, hz⟩]
· constructor
· sorry
· sorry
sorry