This commit is contained in:
Stefan Kebekus 2024-09-11 15:48:43 +02:00
parent b91e3677c0
commit 1e8c5bad0f
2 changed files with 196 additions and 1 deletions

View File

@ -1,5 +1,6 @@
import Mathlib.Analysis.Analytic.IsolatedZeros import Mathlib.Analysis.Analytic.IsolatedZeros
import Mathlib.Analysis.Complex.Basic import Mathlib.Analysis.Complex.Basic
import Mathlib.Analysis.Analytic.Linear
theorem AnalyticAt.order_mul theorem AnalyticAt.order_mul
@ -85,3 +86,97 @@ theorem AnalyticAt.supp_order_toNat
contrapose contrapose
intro h₁f intro h₁f
simp [hf.order_eq_zero_iff.2 h₁f] simp [hf.order_eq_zero_iff.2 h₁f]
theorem ContinuousLinearEquiv.analyticAt
( : ≃L[] ) (z₀ : ) : AnalyticAt (⇑ℓ) z₀ := .toContinuousLinearMap.analyticAt z₀
theorem eventually_nhds_comp_composition
{f₁ f₂ : }
{z₀ : }
(hf : ∀ᶠ (z : ) in nhds ( z₀), f₁ z = f₂ z)
(h : Continuous ) :
∀ᶠ (z : ) in nhds z₀, (f₁ ∘ ) z = (f₂ ∘ ) z := by
obtain ⟨t, h₁t, h₂t, h₃t⟩ := eventually_nhds_iff.1 hf
apply eventually_nhds_iff.2
use ℓ⁻¹' t
constructor
· intro y hy
exact h₁t ( y) hy
· constructor
· apply IsOpen.preimage
exact ContinuousLinearEquiv.continuous
exact h₂t
· exact h₃t
theorem AnalyticAt.order_congr
{f₁ f₂ : }
{z₀ : }
(hf₁ : AnalyticAt f₁ z₀)
(hf₂ : AnalyticAt f₂ z₀)
(hf : ∀ᶠ (z : ) in nhds z₀, f₁ z = f₂ z) :
hf₁.order = hf₂.order := by
sorry
theorem AnalyticAt.order_comp_CLE
( : ≃L[] )
{f : }
{z₀ : }
(hf : AnalyticAt f ( z₀)) :
hf.order = (hf.comp (.analyticAt z₀)).order := by
by_cases h₁f : hf.order =
· rw [h₁f]
rw [AnalyticAt.order_eq_top_iff] at h₁f
let A := eventually_nhds_comp_composition h₁f .continuous
simp at A
have : AnalyticAt (0 : ) z₀ := by apply analyticAt_const
rw [AnalyticAt.order_congr (hf.comp (.analyticAt z₀)) this A]
have : this.order = := by
rw [AnalyticAt.order_eq_top_iff]
simp
rw [this]
· let n := hf.order.toNat
have hn : hf.order = n := Eq.symm (ENat.coe_toNat h₁f)
rw [hn]
rw [AnalyticAt.order_eq_nat_iff] at hn
obtain ⟨g, h₁g, h₂g, h₃g⟩ := hn
have A := eventually_nhds_comp_composition h₃g .continuous
simp only [Function.comp_apply] at A
have : AnalyticAt (fun z ↦ ( z - z₀) ^ n • g ( z) : ) z₀ := by apply analyticAt_const
rw [AnalyticAt.order_congr (hf.comp (.analyticAt z₀)) this A]
simp
rw [AnalyticAt.order_mul]
--rw [hn, AnalyticAt.order_eq_nat_iff]
rw [AnalyticAt.order_eq_nat_iff] at hn
obtain ⟨g, h₁g, h₂g, h₃g⟩ := hn
use g ∘
constructor
· exact h₁g.comp (.analyticAt z₀)
· constructor
· exact h₂g
· rw [eventually_nhds_iff]
rw [eventually_nhds_iff] at h₃g
obtain ⟨t, h₁t, h₂t, h₃t⟩ := h₃g
use ℓ⁻¹' t
constructor
· intro y hy
simp
rw [h₁t ( y) hy]
sorry
· constructor
· apply IsOpen.preimage
exact ContinuousLinearEquiv.continuous
exact h₂t
· exact h₃t

View File

@ -11,7 +11,7 @@ open Real
theorem jensen_case_R_eq_one theorem jensen_case_R_eq_one
(f : ) (f : )
(h₁f : AnalyticOn f (Metric.closedBall (0 : ) 1)) (h₁f : AnalyticOn f (Metric.closedBall 0 1))
(h₂f : f 0 ≠ 0) : (h₂f : f 0 ≠ 0) :
log ‖f 0‖ = -∑ᶠ s, (h₁f.order s).toNat * log (‖s.1‖⁻¹) + (2 * π)⁻¹ * ∫ (x : ) in (0)..(2 * π), log ‖f (circleMap 0 1 x)‖ := by log ‖f 0‖ = -∑ᶠ s, (h₁f.order s).toNat * log (‖s.1‖⁻¹) + (2 * π)⁻¹ * ∫ (x : ) in (0)..(2 * π), log ‖f (circleMap 0 1 x)‖ := by
@ -284,3 +284,103 @@ theorem jensen_case_R_eq_one
simp simp
apply h₂F apply h₂F
simp simp
lemma const_mul_circleMap_zero
{R θ : } :
circleMap 0 R θ = R * circleMap 0 1 θ := by
rw [circleMap_zero, circleMap_zero]
simp
theorem jensen
{R : }
(hR : 0 < R)
(f : )
(h₁f : AnalyticOn f (Metric.closedBall 0 R))
(h₂f : f 0 ≠ 0) :
log ‖f 0‖ = -∑ᶠ s, (h₁f.order s).toNat * log (R * ‖s.1‖⁻¹) + (2 * π)⁻¹ * ∫ (x : ) in (0)..(2 * π), log ‖f (circleMap 0 R x)‖ := by
let F := fun z ↦ f (R • z)
have h₁F : AnalyticOn F (Metric.closedBall 0 1) := by
apply AnalyticOn.comp (t := Metric.closedBall 0 R)
exact h₁f
sorry
have h₂F : F 0 ≠ 0 := by sorry
let A := jensen_case_R_eq_one F h₁F h₂F
dsimp [F] at A
simp
rw [mul_zero] at A
rw [A]
simp
simp_rw [← const_mul_circleMap_zero]
simp
let e : (Metric.closedBall (0 : ) 1) → (Metric.closedBall (0 : ) R) := by
intro ⟨x, hx⟩
have hy : R • x ∈ Metric.closedBall (0 : ) R := by
simp
simp at hx
have : R = |R| := by exact Eq.symm (abs_of_pos hR)
rw [← this]
norm_num
calc R * Complex.abs x
_ ≤ R * 1 := by exact (mul_le_mul_iff_of_pos_left hR).mpr hx
_ = R := by simp
exact ⟨R • x, hy⟩
let e' : (Metric.closedBall (0 : ) R) → (Metric.closedBall (0 : ) 1) := by
intro ⟨x, hx⟩
have hy : R⁻¹ • x ∈ Metric.closedBall (0 : ) 1 := by
simp
simp at hx
have : R = |R| := by exact Eq.symm (abs_of_pos hR)
rw [← this]
norm_num
calc R⁻¹ * Complex.abs x
_ ≤ R⁻¹ * R := by
apply mul_le_mul_of_nonneg_left hx
apply inv_nonneg.mpr
exact abs_eq_self.mp (id (Eq.symm this))
_ = 1 := by
apply inv_mul_cancel₀
exact Ne.symm (ne_of_lt hR)
exact ⟨R⁻¹ • x, hy⟩
apply finsum_eq_of_bijective e
apply Function.bijective_iff_has_inverse.mpr
use e'
constructor
· apply Function.leftInverse_iff_comp.mpr
funext x
dsimp only [e, e', id_eq, eq_mp_eq_cast, Function.comp_apply]
conv =>
left
arg 1
rw [← smul_assoc, smul_eq_mul]
rw [inv_mul_cancel₀ (Ne.symm (ne_of_lt hR))]
rw [one_smul]
· apply Function.rightInverse_iff_comp.mpr
funext x
dsimp only [e, e', id_eq, eq_mp_eq_cast, Function.comp_apply]
conv =>
left
arg 1
rw [← smul_assoc, smul_eq_mul]
rw [mul_inv_cancel₀ (Ne.symm (ne_of_lt hR))]
rw [one_smul]
intro x
simp
sorry