Update holomorphic_zero.lean

This commit is contained in:
Stefan Kebekus 2024-08-19 12:09:21 +02:00
parent 97293e3a60
commit ec79ed7ba1
1 changed files with 111 additions and 15 deletions

View File

@ -1,3 +1,5 @@
import Init.Classical
import Mathlib.Analysis.Analytic.Meromorphic
import Mathlib.Topology.ContinuousOn import Mathlib.Topology.ContinuousOn
import Mathlib.Analysis.Analytic.IsolatedZeros import Mathlib.Analysis.Analytic.IsolatedZeros
import Nevanlinna.holomorphic import Nevanlinna.holomorphic
@ -247,7 +249,7 @@ theorem zeroDivisor_finiteOnCompact
{U : Set } {U : Set }
(hU : IsPreconnected U) (hU : IsPreconnected U)
(h₁f : AnalyticOn f U) (h₁f : AnalyticOn f U)
(h₂f : ∃ z ∈ U, f z ≠ 0) (h₂f : ∃ z ∈ U, f z ≠ 0) -- not needed!
(h₂U : IsCompact U) : (h₂U : IsCompact U) :
Set.Finite (U ∩ Function.support (zeroDivisor f)) := by Set.Finite (U ∩ Function.support (zeroDivisor f)) := by
@ -268,26 +270,120 @@ theorem zeroDivisor_finiteOnCompact
exact Set.inter_subset_right exact Set.inter_subset_right
theorem AnalyticOn.order_eq_nat_iff
{f : }
{U : Set }
{z₀ : }
(hf : AnalyticOn f U)
(hz₀ : z₀ ∈ U)
(n : ) :
(hf z₀ hz₀).order = ↑n → ∃ (g : ), AnalyticOn g U ∧ g z₀ ≠ 0 ∧ ∀ z ∈ U, f z = (z - z₀) ^ n • g z := by
intro hn
obtain ⟨gloc, h₁gloc, h₂gloc, h₃gloc⟩ := (AnalyticAt.order_eq_nat_iff (hf z₀ hz₀) n).1 hn
let g : := fun z ↦ if hz : z = z₀ then gloc z₀ else (f z) / (z - z₀) ^ n
have t₀ : ∀ᶠ (z : ) in nhds z₀, g z = gloc z := by
rw [eventually_nhds_iff]
rw [eventually_nhds_iff] at h₃gloc
obtain ⟨t, h₁t, h₂t, h₃t⟩ := h₃gloc
use t
constructor
· intro y h₁y
by_cases h₂y : y = z₀
· dsimp [g]; simp [h₂y]
· dsimp [g]; simp [h₂y]
rw [div_eq_iff_mul_eq, eq_comm, mul_comm]
exact h₁t y h₁y
norm_num
rw [sub_eq_zero]
tauto
· constructor
· assumption
· assumption
have t₁ {z₁ : } : z₁ ≠ z₀ → ∀ᶠ (z : ) in nhds z₁, g z = f z / (z - z₀) ^ n := by
intro hz₁
rw [eventually_nhds_iff]
use {z₀}ᶜ
constructor
· intro y hy
simp at hy
dsimp [g]
simp [hy]
· constructor
· exact isOpen_compl_singleton
· tauto
use g
constructor
· -- AnalyticOn g U
intro z h₁z
by_cases h₂z : z = z₀
· rw [h₂z]
apply AnalyticAt.congr h₁gloc
exact Filter.EventuallyEq.symm t₀
· simp_rw [eq_comm] at t₁
apply AnalyticAt.congr _ (t₁ h₂z)
apply AnalyticAt.div
exact hf z h₁z
apply AnalyticAt.pow
apply AnalyticAt.sub
apply analyticAt_id
exact analyticAt_const
simp
rw [sub_eq_zero]
tauto
theorem eliminatingZeros theorem eliminatingZeros
{f : } {f : }
{z₀ : } {U : Set }
{R : } (h₁U : IsPreconnected U)
(h₁f : ∀ z ∈ Metric.closedBall z₀ R, HolomorphicAt f z) (h₂U : IsCompact U)
(h₂f : ∃ z ∈ Metric.ball z₀ R, f z ≠ 0) : (h₁f : AnalyticOn f U)
∃ F : , ∀ z ∈ Metric.ball z₀ R, (HolomorphicAt F z) ∧ (f z = (F z) * ∏ᶠ a ∈ Metric.ball z₀ R, (z - a) ^ (zeroDivisor f a) ) := by (h₂f : ∃ z ∈ U, f z ≠ 0) :
∃ F : , (AnalyticOn F U) ∧ (f = F * ∏ᶠ a ∈ (U ∩ (zeroDivisor f).support), fun z ↦ (z - a) ^ (zeroDivisor f a)) := by
have hs := zeroDivisor_finiteOnCompact h₁U h₁f h₂f h₂U
rw [finprod_mem_eq_finite_toFinset_prod _ hs]
let A := hs.card_eq
let F : := by let F : := by
intro z intro z
if hz : z ∈ (Metric.closedBall z₀ R) ∩ Function.support (zeroDivisor f) then if hz : z ∈ U ∩ (zeroDivisor f).support then
exact 0 exact (Classical.choose (zeroDivisor_support_iff.1 hz.2).2.2) z
else else
exact f z * (∏ᶠ a ∈ Metric.ball z₀ R, (z - a) ^ (zeroDivisor f a))⁻¹ exact (f z) / ∏ i ∈ hs.toFinset, (z - i) ^ zeroDivisor f i
use F use F
intro z hz constructor
by_cases h₂z : z ∈ (Metric.closedBall z₀ R) ∩ Function.support (zeroDivisor f) · intro z h₁z
· -- Positive case by_cases h₂z : z ∈ (zeroDivisor f).support
sorry · -- case: z ∈ Function.support (zeroDivisor f)
have : z ∈ U ∩ (zeroDivisor f).support := by exact Set.mem_inter h₁z h₂z
· -- Negative case
sorry sorry
· sorry
have : MeromorphicOn F U := by
apply MeromorphicOn.div
exact AnalyticOn.meromorphicOn h₁f
apply AnalyticOn.meromorphicOn
apply Finset.analyticOn_prod
intro n hn
apply AnalyticOn.pow
apply AnalyticOn.sub
exact analyticOn_id
exact analyticOn_const
--use F
sorry