Update analyticOn_zeroSet.lean

This commit is contained in:
Stefan Kebekus 2024-09-10 12:53:34 +02:00
parent f732c82f92
commit fa2e431f4c
1 changed files with 54 additions and 6 deletions

View File

@ -102,7 +102,7 @@ theorem AnalyticOn.eliminateZeros
{U : Set } {U : Set }
{A : Finset U} {A : Finset U}
(hf : AnalyticOn f U) (hf : AnalyticOn f U)
(n : ) : (n : U) :
(∀ a ∈ A, hf.order a = n a) → ∃ (g : ), AnalyticOn g U ∧ (∀ a ∈ A, g a ≠ 0) ∧ ∀ z, f z = (∏ a ∈ A, (z - a) ^ (n a)) • g z := by (∀ a ∈ A, hf.order a = n a) → ∃ (g : ), AnalyticOn g U ∧ (∀ a ∈ A, g a ≠ 0) ∧ ∀ z, f z = (∏ a ∈ A, (z - a) ^ (n a)) • g z := by
apply Finset.induction (α := U) (p := fun A ↦ (∀ a ∈ A, (hf a.1 a.2).order = n a) → ∃ (g : ), AnalyticOn g U ∧ (∀ a ∈ A, g a ≠ 0) ∧ ∀ z, f z = (∏ a ∈ A, (z - a) ^ (n a)) • g z) apply Finset.induction (α := U) (p := fun A ↦ (∀ a ∈ A, (hf a.1 a.2).order = n a) → ∃ (g : ), AnalyticOn g U ∧ (∀ a ∈ A, g a ≠ 0) ∧ ∀ z, f z = (∏ a ∈ A, (z - a) ^ (n a)) • g z)
@ -122,7 +122,7 @@ theorem AnalyticOn.eliminateZeros
rw [← hBinsert b₀ (Finset.mem_insert_self b₀ B)] rw [← hBinsert b₀ (Finset.mem_insert_self b₀ B)]
let φ := fun z ↦ (∏ a ∈ B, (z - a.1) ^ n a.1) let φ := fun z ↦ (∏ a ∈ B, (z - a.1) ^ n a)
have : f = fun z ↦ φ z * g₀ z := by have : f = fun z ↦ φ z * g₀ z := by
funext z funext z
@ -307,7 +307,54 @@ theorem AnalyticOnCompact.eliminateZeros
(h₂U : IsCompact U) (h₂U : IsCompact U)
(h₁f : AnalyticOn f U) (h₁f : AnalyticOn f U)
(h₂f : ∃ u ∈ U, f u ≠ 0) : (h₂f : ∃ u ∈ U, f u ≠ 0) :
∃ (g : ) (A : Finset U), AnalyticOn g U ∧ (∀ z ∈ U, g z ≠ 0) ∧ ∀ z, f z = (∏ a ∈ A, (z - a) ^ (h₁f a a.2).order.toNat) • g z := by ∃ (g : ) (A : Finset U), AnalyticOn g U ∧ (∀ z ∈ U, g z ≠ 0) ∧ ∀ z, f z = (∏ a ∈ A, (z - a) ^ (h₁f.order a).toNat) • g z := by
let A := (finiteZeros h₁U h₂U h₁f h₂f).toFinset
let n : U → := fun z ↦ (h₁f z z.2).order.toNat
have hn : ∀ a ∈ A, (h₁f a a.2).order = n a := by
intro a _
dsimp [n, AnalyticOn.order]
rw [eq_comm]
apply XX h₁U
exact h₂f
obtain ⟨g, h₁g, h₂g, h₃g⟩ := AnalyticOn.eliminateZeros (A := A) h₁f n hn
use g
use A
have inter : ∀ (z : ), f z = (∏ a ∈ A, (z - ↑a) ^ (h₁f (↑a) a.property).order.toNat) • g z := by
intro z
rw [h₃g z]
constructor
· exact h₁g
· constructor
· intro z h₁z
by_cases h₂z : ⟨z, h₁z⟩ ∈ ↑A.toSet
· exact h₂g ⟨z, h₁z⟩ h₂z
· have : f z ≠ 0 := by
by_contra C
have : ⟨z, h₁z⟩ ∈ ↑A.toSet := by
dsimp [A]
simp
exact C
tauto
rw [inter z] at this
exact right_ne_zero_of_smul this
· exact inter
theorem AnalyticOnCompact.eliminateZeros₁
{f : }
{U : Set }
(h₁U : IsPreconnected U)
(h₂U : IsCompact U)
(h₁f : AnalyticOn f U)
(h₂f : ∃ u ∈ U, f u ≠ 0) :
∃ (g : ), AnalyticOn g U ∧ (∀ z ∈ U, g z ≠ 0) ∧ ∀ z, f z = (∏ᶠ a : U, (z - a) ^ (h₁f.order a).toNat) • g z := by
let A := (finiteZeros h₁U h₂U h₁f h₂f).toFinset let A := (finiteZeros h₁U h₂U h₁f h₂f).toFinset
@ -327,9 +374,8 @@ theorem AnalyticOnCompact.eliminateZeros
obtain ⟨g, h₁g, h₂g, h₃g⟩ := AnalyticOn.eliminateZeros (A := A) h₁f n hn obtain ⟨g, h₁g, h₂g, h₃g⟩ := AnalyticOn.eliminateZeros (A := A) h₁f n hn
use g use g
use A
have inter : ∀ (z : ), f z = (∏ a ∈ A, (z - ↑a) ^ (h₁f (↑a) a.property).order.toNat) • g z := by have inter : ∀ (z : ), f z = (∏ a ∈ A, (z - ↑a) ^ (h₁f.order a).toNat) • g z := by
intro z intro z
rw [h₃g z] rw [h₃g z]
congr congr
@ -338,6 +384,7 @@ theorem AnalyticOnCompact.eliminateZeros
dsimp [n] dsimp [n]
simp [a.2] simp [a.2]
constructor constructor
· exact h₁g · exact h₁g
· constructor · constructor
@ -353,4 +400,5 @@ theorem AnalyticOnCompact.eliminateZeros
tauto tauto
rw [inter z] at this rw [inter z] at this
exact right_ne_zero_of_smul this exact right_ne_zero_of_smul this
· exact inter ·
exact inter