diff --git a/Nevanlinna/meromorphicOn_divisor.lean b/Nevanlinna/meromorphicOn_divisor.lean index 83e2e71..46c8cc4 100644 --- a/Nevanlinna/meromorphicOn_divisor.lean +++ b/Nevanlinna/meromorphicOn_divisor.lean @@ -74,3 +74,29 @@ noncomputable def MeromorphicOn.divisor simp · simp [h₃y] · tauto + + +theorem MeromorphicOn.divisor_def₁ + {f : ℂ → ℂ} + {U : Set ℂ} + {z : ℂ} + (hf : MeromorphicOn f U) + (hz : z ∈ U) : + hf.divisor z = ((hf z hz).order.untop' 0 : ℤ) := by + unfold MeromorphicOn.divisor + simp [hz] + + +theorem MeromorphicOn.divisor_def₂ + {f : ℂ → ℂ} + {U : Set ℂ} + {z : ℂ} + (hf : MeromorphicOn f U) + (hz : z ∈ U) + (h₂f : (hf z hz).order ≠ ⊤) : + hf.divisor z = (hf z hz).order.untop h₂f := by + unfold MeromorphicOn.divisor + simp [hz] + rw [WithTop.untop'_eq_iff] + left + exact Eq.symm (WithTop.coe_untop (hf z hz).order h₂f) diff --git a/Nevanlinna/stronglyMeromorphicOn_eliminate.lean b/Nevanlinna/stronglyMeromorphicOn_eliminate.lean index 55977ca..0c697bf 100644 --- a/Nevanlinna/stronglyMeromorphicOn_eliminate.lean +++ b/Nevanlinna/stronglyMeromorphicOn_eliminate.lean @@ -10,6 +10,13 @@ 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 : ℂ → ℂ} @@ -17,7 +24,8 @@ theorem MeromorphicOn.decompose₁ {z₀ : ℂ} (hz₀ : z₀ ∈ U) (h₁f : MeromorphicOn f U) - (h₂f : StronglyMeromorphicAt f z₀) : + (h₂f : StronglyMeromorphicAt f z₀) + (h₃f : h₂f.meromorphicAt.order ≠ ⊤) : ∃ g : ℂ → ℂ, (MeromorphicOn g U) ∧ (AnalyticAt ℂ g z₀) ∧ (g z₀ ≠ 0) @@ -46,20 +54,52 @@ theorem MeromorphicOn.decompose₁ have h₁g₁ : MeromorphicOn g₁ U := by apply h₁f.mul h₁h₁ have h₂g₁ : (h₁g₁ z₀ hz₀).order = 0 := by - let A := (h₁g₁ z₀ hz₀).order_mul (h₁h₁ z₀ hz₀) + 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 - sorry let g := (h₁g₁ z₀ hz₀).makeStronglyMeromorphicAt - have h₁g : MeromorphicOn g U := by - sorry have h₂g : StronglyMeromorphicAt g z₀ := by - sorry + 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