working...
This commit is contained in:
parent
b038a5f47f
commit
6fb627dad3
|
@ -93,7 +93,6 @@ theorem MeromorphicOn.open_of_order_neq_top
|
||||||
· exact h₃t'
|
· exact h₃t'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
theorem MeromorphicOn.clopen_of_order_eq_top
|
theorem MeromorphicOn.clopen_of_order_eq_top
|
||||||
{f : ℂ → ℂ}
|
{f : ℂ → ℂ}
|
||||||
{U : Set ℂ}
|
{U : Set ℂ}
|
||||||
|
@ -104,3 +103,29 @@ theorem MeromorphicOn.clopen_of_order_eq_top
|
||||||
· rw [← isOpen_compl_iff]
|
· rw [← isOpen_compl_iff]
|
||||||
exact open_of_order_neq_top h₁f
|
exact open_of_order_neq_top h₁f
|
||||||
· exact open_of_order_eq_top h₁f
|
· exact open_of_order_eq_top h₁f
|
||||||
|
|
||||||
|
|
||||||
|
theorem MeromorphicOn.order_ne_top
|
||||||
|
{U : Set ℂ}
|
||||||
|
(hU : IsConnected U)
|
||||||
|
(h₁f : StronglyMeromorphicOn f U)
|
||||||
|
(h₂f : ∃ u : U, f u ≠ 0) :
|
||||||
|
∀ u : U, (h₁f u u.2).meromorphicAt.order ≠ ⊤ := by
|
||||||
|
|
||||||
|
let A := h₁f.meromorphicOn.clopen_of_order_eq_top
|
||||||
|
have : PreconnectedSpace U := by
|
||||||
|
apply isPreconnected_iff_preconnectedSpace.mp
|
||||||
|
exact IsConnected.isPreconnected hU
|
||||||
|
rw [isClopen_iff] at A
|
||||||
|
rcases A with h|h
|
||||||
|
· intro u
|
||||||
|
have : u ∉ (∅ : Set U) := by exact fun a => a
|
||||||
|
rw [← h] at this
|
||||||
|
simp at this
|
||||||
|
tauto
|
||||||
|
· obtain ⟨u, hu⟩ := h₂f
|
||||||
|
have : u ∈ (Set.univ : Set U) := by trivial
|
||||||
|
rw [← h] at this
|
||||||
|
simp at this
|
||||||
|
rw [(h₁f u u.2).order_eq_zero_iff.2 hu] at this
|
||||||
|
tauto
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import Nevanlinna.meromorphicOn_divisor
|
||||||
import Nevanlinna.stronglyMeromorphicAt
|
import Nevanlinna.stronglyMeromorphicAt
|
||||||
import Mathlib.Algebra.BigOperators.Finprod
|
import Mathlib.Algebra.BigOperators.Finprod
|
||||||
|
|
||||||
|
@ -79,44 +80,13 @@ theorem makeStronglyMeromorphicOn_changeDiscrete
|
||||||
· simp [h₂v]
|
· simp [h₂v]
|
||||||
|
|
||||||
|
|
||||||
theorem stronglyMeromorphicOn_ratlPolynomial
|
theorem analyticAt_ratlPolynomial₁
|
||||||
{U : Set ℂ}
|
{z : ℂ}
|
||||||
(d : ℂ → ℤ) :
|
(d : ℂ → ℤ)
|
||||||
StronglyMeromorphicOn (∏ᶠ u, fun z ↦ (z - u) ^ d u) U := by
|
(P : Finset ℂ) :
|
||||||
by_cases hd : (Function.mulSupport fun u z => (z - u) ^ d u).Finite
|
z ∉ P → AnalyticAt ℂ (∏ u ∈ P, fun z ↦ (z - u) ^ d u) z := by
|
||||||
· rw [finprod_eq_prod _ hd]
|
intro hz
|
||||||
intro z h₁z
|
|
||||||
by_cases h₂z : d z = 0
|
|
||||||
· apply AnalyticAt.stronglyMeromorphicAt
|
|
||||||
rw [Finset.prod_fn]
|
rw [Finset.prod_fn]
|
||||||
apply Finset.analyticAt_prod
|
|
||||||
intro u hu
|
|
||||||
by_cases huz : u = z
|
|
||||||
· rw [← huz] at h₂z
|
|
||||||
rw [h₂z]
|
|
||||||
simp
|
|
||||||
exact analyticAt_const
|
|
||||||
· apply AnalyticAt.zpow
|
|
||||||
apply AnalyticAt.sub
|
|
||||||
apply analyticAt_id
|
|
||||||
apply analyticAt_const
|
|
||||||
rwa [sub_ne_zero, ne_comm]
|
|
||||||
· have : z ∈ hd.toFinset := by
|
|
||||||
simp
|
|
||||||
by_contra hCon
|
|
||||||
have A : 0 ≠ (1 : ℂ → ℂ) z := by simp
|
|
||||||
rw [← hCon] at A
|
|
||||||
simp only [sub_self] at A
|
|
||||||
rw [ne_comm] at A
|
|
||||||
rw [zpow_ne_zero_iff] at A
|
|
||||||
tauto
|
|
||||||
exact h₂z
|
|
||||||
rw [← Finset.mul_prod_erase hd.toFinset _ this]
|
|
||||||
right
|
|
||||||
use d z
|
|
||||||
use ∏ x ∈ hd.toFinset.erase z, fun z => (z - x) ^ d x
|
|
||||||
constructor
|
|
||||||
· rw [Finset.prod_fn]
|
|
||||||
apply Finset.analyticAt_prod
|
apply Finset.analyticAt_prod
|
||||||
intro u hu
|
intro u hu
|
||||||
apply AnalyticAt.zpow
|
apply AnalyticAt.zpow
|
||||||
|
@ -124,34 +94,60 @@ theorem stronglyMeromorphicOn_ratlPolynomial
|
||||||
apply analyticAt_id
|
apply analyticAt_id
|
||||||
apply analyticAt_const
|
apply analyticAt_const
|
||||||
rw [sub_ne_zero, ne_comm]
|
rw [sub_ne_zero, ne_comm]
|
||||||
by_contra hCon
|
exact ne_of_mem_of_not_mem hu hz
|
||||||
simp at hu
|
|
||||||
tauto
|
|
||||||
|
theorem stronglyMeromorphicOn_ratlPolynomial₂
|
||||||
|
{U : Set ℂ}
|
||||||
|
(d : ℂ → ℤ)
|
||||||
|
(P : Finset ℂ) :
|
||||||
|
StronglyMeromorphicOn (∏ u ∈ P, fun z ↦ (z - u) ^ d u) U := by
|
||||||
|
|
||||||
|
intro z hz
|
||||||
|
by_cases h₂z : z ∈ P
|
||||||
|
· rw [← Finset.mul_prod_erase P _ h₂z]
|
||||||
|
right
|
||||||
|
use d z
|
||||||
|
use ∏ x ∈ P.erase z, fun z => (z - x) ^ d x
|
||||||
|
constructor
|
||||||
|
· have : z ∉ P.erase z := Finset.not_mem_erase z P
|
||||||
|
apply analyticAt_ratlPolynomial₁ d (P.erase z) this
|
||||||
· constructor
|
· constructor
|
||||||
· simp only [Finset.prod_apply]
|
· simp only [Finset.prod_apply]
|
||||||
rw [Finset.prod_ne_zero_iff]
|
rw [Finset.prod_ne_zero_iff]
|
||||||
intro u hu
|
intro u hu
|
||||||
rw [zpow_ne_zero_iff]
|
apply zpow_ne_zero
|
||||||
rw [sub_ne_zero]
|
rw [sub_ne_zero]
|
||||||
by_contra hCon
|
by_contra hCon
|
||||||
rw [hCon] at hu
|
rw [hCon] at hu
|
||||||
let A := Finset.not_mem_erase u hd.toFinset
|
let A := Finset.not_mem_erase u P
|
||||||
tauto
|
|
||||||
--
|
|
||||||
have : u ∈ hd.toFinset := by
|
|
||||||
exact Finset.mem_of_mem_erase hu
|
|
||||||
simp at this
|
|
||||||
by_contra hCon
|
|
||||||
rw [hCon] at this
|
|
||||||
simp at this
|
|
||||||
tauto
|
tauto
|
||||||
· exact Filter.Eventually.of_forall (congrFun rfl)
|
· exact Filter.Eventually.of_forall (congrFun rfl)
|
||||||
|
· apply AnalyticAt.stronglyMeromorphicAt
|
||||||
|
exact analyticAt_ratlPolynomial₁ d P (z := z) h₂z
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
theorem stronglyMeromorphicOn_ratlPolynomial₃
|
||||||
|
{U : Set ℂ}
|
||||||
|
(d : ℂ → ℤ) :
|
||||||
|
StronglyMeromorphicOn (∏ᶠ u, fun z ↦ (z - u) ^ d u) U := by
|
||||||
|
by_cases hd : (Function.mulSupport fun u z => (z - u) ^ d u).Finite
|
||||||
|
· rw [finprod_eq_prod _ hd]
|
||||||
|
apply stronglyMeromorphicOn_ratlPolynomial₂ (U := U) d hd.toFinset
|
||||||
· rw [finprod_of_infinite_mulSupport hd]
|
· rw [finprod_of_infinite_mulSupport hd]
|
||||||
apply AnalyticOn.stronglyMeromorphicOn
|
apply AnalyticOn.stronglyMeromorphicOn
|
||||||
apply analyticOnNhd_const
|
apply analyticOnNhd_const
|
||||||
|
|
||||||
|
|
||||||
|
theorem stronglyMeromorphicOn_divisor_ratlPolynomial
|
||||||
|
{U : Set ℂ}
|
||||||
|
(d : ℂ → ℤ)
|
||||||
|
(hd : Set.Finite d.support) :
|
||||||
|
(stronglyMeromorphicOn_ratlPolynomial₃ d (U := U)).meromorphicOn.divisor = d := by
|
||||||
|
sorry
|
||||||
|
|
||||||
|
|
||||||
theorem makeStronglyMeromorphicOn_changeDiscrete'
|
theorem makeStronglyMeromorphicOn_changeDiscrete'
|
||||||
{f : ℂ → ℂ}
|
{f : ℂ → ℂ}
|
||||||
{U : Set ℂ}
|
{U : Set ℂ}
|
||||||
|
|
|
@ -8,7 +8,6 @@ import Nevanlinna.meromorphicOn_divisor
|
||||||
import Nevanlinna.stronglyMeromorphicOn
|
import Nevanlinna.stronglyMeromorphicOn
|
||||||
import Nevanlinna.mathlibAddOn
|
import Nevanlinna.mathlibAddOn
|
||||||
|
|
||||||
|
|
||||||
open scoped Interval Topology
|
open scoped Interval Topology
|
||||||
open Real Filter MeasureTheory intervalIntegral
|
open Real Filter MeasureTheory intervalIntegral
|
||||||
|
|
||||||
|
@ -304,27 +303,10 @@ theorem MeromorphicOn.decompose₃
|
||||||
∃ g : ℂ → ℂ, (MeromorphicOn g U)
|
∃ g : ℂ → ℂ, (MeromorphicOn g U)
|
||||||
∧ (AnalyticOn ℂ g U)
|
∧ (AnalyticOn ℂ g U)
|
||||||
∧ (∀ u : U, g u ≠ 0)
|
∧ (∀ u : U, g u ≠ 0)
|
||||||
∧ (f = g * ∏ᶠ u : U, fun z ↦ (z - u.1) ^ (h₁f.meromorphicOn.divisor u.1)) := by
|
∧ (f = g * ∏ᶠ u, fun z ↦ (z - u) ^ (h₁f.meromorphicOn.divisor u)) := by
|
||||||
|
|
||||||
have h₃f : ∀ u : U, (h₁f u u.2).meromorphicAt.order ≠ ⊤ := by
|
have h₃f : ∀ u : U, (h₁f u u.2).meromorphicAt.order ≠ ⊤ := by
|
||||||
let A := h₁f.meromorphicOn.clopen_of_order_eq_top
|
apply MeromorphicOn.order_ne_top h₂U h₁f h₂f
|
||||||
have : PreconnectedSpace U := by
|
|
||||||
apply isPreconnected_iff_preconnectedSpace.mp
|
|
||||||
exact IsConnected.isPreconnected h₂U
|
|
||||||
rw [isClopen_iff] at A
|
|
||||||
rcases A with h|h
|
|
||||||
· intro u
|
|
||||||
have : u ∉ (∅ : Set U) := by exact fun a => a
|
|
||||||
rw [← h] at this
|
|
||||||
simp at this
|
|
||||||
tauto
|
|
||||||
· obtain ⟨u, hu⟩ := h₂f
|
|
||||||
let A := (h₁f u u.2).order_eq_zero_iff.2 hu
|
|
||||||
have : u ∈ (Set.univ : Set U) := by trivial
|
|
||||||
rw [← h] at this
|
|
||||||
simp at this
|
|
||||||
rw [A] at this
|
|
||||||
tauto
|
|
||||||
|
|
||||||
have h₄f : Set.Finite (Function.support h₁f.meromorphicOn.divisor) := by
|
have h₄f : Set.Finite (Function.support h₁f.meromorphicOn.divisor) := by
|
||||||
exact h₁f.meromorphicOn.divisor.finiteSupport h₁U
|
exact h₁f.meromorphicOn.divisor.finiteSupport h₁U
|
||||||
|
@ -336,34 +318,14 @@ theorem MeromorphicOn.decompose₃
|
||||||
apply h₃f
|
apply h₃f
|
||||||
|
|
||||||
obtain ⟨g, h₁g, h₂g, h₃g, h₄g⟩ := MeromorphicOn.decompose₂ h₁f (P := P) hP
|
obtain ⟨g, h₁g, h₂g, h₃g, h₄g⟩ := MeromorphicOn.decompose₂ h₁f (P := P) hP
|
||||||
|
|
||||||
let h := ∏ p ∈ P, fun z => (z - p.1) ^ h₁f.meromorphicOn.divisor p.1
|
let h := ∏ p ∈ P, fun z => (z - p.1) ^ h₁f.meromorphicOn.divisor p.1
|
||||||
|
|
||||||
have h₂h : StronglyMeromorphicOn h U := by
|
have h₂h : StronglyMeromorphicOn h U := by
|
||||||
-- WARNING: This is a general lemma we should add!
|
unfold h
|
||||||
intro u hu
|
apply stronglyMeromorphicOn_ratlPolynomial₂
|
||||||
right
|
|
||||||
by_cases h₁u : ⟨u, hu⟩ ∈ P
|
|
||||||
· sorry
|
|
||||||
· use 0
|
|
||||||
use h
|
|
||||||
simp only [zpow_zero, smul_eq_mul, one_mul, eventually_true, and_true]
|
|
||||||
constructor
|
|
||||||
·
|
|
||||||
sorry
|
|
||||||
· unfold h
|
|
||||||
simp only [Finset.prod_apply]
|
|
||||||
rw [Finset.prod_ne_zero_iff]
|
|
||||||
intro p hp
|
|
||||||
apply zpow_ne_zero
|
|
||||||
rw [sub_ne_zero]
|
|
||||||
by_contra hCon
|
|
||||||
have : ⟨u, hu⟩ = p := by
|
|
||||||
exact SetCoe.ext hCon
|
|
||||||
rw [← this] at hp
|
|
||||||
tauto
|
|
||||||
|
|
||||||
|
|
||||||
have h₁h : MeromorphicOn h U := by
|
have h₁h : MeromorphicOn h U := by
|
||||||
sorry
|
exact StronglyMeromorphicOn.meromorphicOn h₂h
|
||||||
have h₃h : h₁h.divisor = h₁f.meromorphicOn.divisor := by
|
have h₃h : h₁h.divisor = h₁f.meromorphicOn.divisor := by
|
||||||
sorry
|
sorry
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue