diff --git a/Nevanlinna/stronglyMeromorphicAt.lean b/Nevanlinna/stronglyMeromorphicAt.lean index de7cb10..746355e 100644 --- a/Nevanlinna/stronglyMeromorphicAt.lean +++ b/Nevanlinna/stronglyMeromorphicAt.lean @@ -289,7 +289,7 @@ theorem StronglyMeromorphicAt_of_makeStronglyMeromorphic rwa [WithTop.untop_eq_iff h₂f] -theorem makeStronglyMeromorphic_id +theorem StronglyMeromorphicAt.makeStronglyMeromorphic_id {f : ℂ → ℂ} {z₀ : ℂ} (hf : StronglyMeromorphicAt f z₀) : diff --git a/Nevanlinna/stronglyMeromorphicOn.lean b/Nevanlinna/stronglyMeromorphicOn.lean index 042ea22..ae7ee49 100644 --- a/Nevanlinna/stronglyMeromorphicOn.lean +++ b/Nevanlinna/stronglyMeromorphicOn.lean @@ -74,7 +74,7 @@ theorem makeStronglyMeromorphicOn_changeDiscrete unfold MeromorphicOn.makeStronglyMeromorphicOn by_cases h₂v : v ∈ U · simp [h₂v] - rw [← makeStronglyMeromorphic_id] + rw [← StronglyMeromorphicAt.makeStronglyMeromorphic_id] exact AnalyticAt.stronglyMeromorphicAt (h₂V v hv) · simp [h₂v] diff --git a/Nevanlinna/stronglyMeromorphicOn_eliminate.lean b/Nevanlinna/stronglyMeromorphicOn_eliminate.lean index 0c697bf..aef2fc0 100644 --- a/Nevanlinna/stronglyMeromorphicOn_eliminate.lean +++ b/Nevanlinna/stronglyMeromorphicOn_eliminate.lean @@ -92,90 +92,60 @@ theorem MeromorphicOn.decompose₁ · constructor · exact isOpen_compl_singleton · exact h₁z + have h₃g : (h₁g z₀ hz₀).order = 0 := by + unfold g + let B := m₂ (h₁g₁ z₀ hz₀) + let A := (h₁g₁ z₀ hz₀).order_congr B + rw [← A] + rw [h₂g₁] + have h₄g : AnalyticAt ℂ g z₀ := by + apply h₂g.analytic + rw [h₃g] use g constructor · exact h₁g · constructor - · apply h₂g.analytic - - - sorry + · exact h₄g · 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 + · exact (h₂g.order_eq_zero_iff).mp h₃g + · funext z + by_cases hz : z = z₀ + · rw [hz] + simp + by_cases h : h₁f.divisor z₀ = 0 + · simp [h] + have h₂h₁ : h₁ = 1 := by + funext w + unfold h₁ + simp [h] + have h₃g₁ : g₁ = f := by + unfold g₁ + rw [h₂h₁] + simp + have h₄g₁ : StronglyMeromorphicAt g₁ z₀ := by + rwa [h₃g₁] + let A := h₄g₁.makeStronglyMeromorphic_id + unfold g + rw [← A, h₃g₁] + · have : (0 : ℂ) ^ h₁f.divisor z₀ = (0 : ℂ) := by + exact zero_zpow (h₁f.divisor z₀) h + rw [this] + simp + let A := h₂f.order_eq_zero_iff.not + simp at A + rw [← A] + unfold MeromorphicOn.divisor at h + simp [hz₀] at h + exact h.1 + · simp + let B := m₁ (h₁g₁ z₀ hz₀) z hz + unfold g + rw [← B] + unfold g₁ h₁ + simp [hz] + rw [mul_assoc] + rw [inv_mul_cancel₀] + simp + apply zpow_ne_zero + rwa [sub_ne_zero]