nevanlinna/Nevanlinna/harmonicAt_meanValue.lean

132 lines
4.1 KiB
Plaintext
Raw Normal View History

2024-08-15 16:00:25 +02:00
import Mathlib.Analysis.NormedSpace.Pointwise
import Mathlib.Topology.MetricSpace.Thickening
import Mathlib.Analysis.Complex.CauchyIntegral
import Nevanlinna.holomorphic_examples
theorem harmonic_meanValue
{f : }
2024-08-08 14:26:53 +02:00
{z : }
(ρ R : )
2024-08-08 17:45:07 +02:00
(hR : 0 < R)
(hρ : R < ρ)
2024-08-13 16:26:55 +02:00
(hf : ∀ x ∈ Metric.ball z ρ , HarmonicAt f x) :
2024-08-08 14:26:53 +02:00
(∫ (x : ) in (0)..2 * Real.pi, f (circleMap z R x)) = 2 * Real.pi * f z
:= by
2024-08-08 14:26:53 +02:00
obtain ⟨F, h₁F, h₂F⟩ := harmonic_is_realOfHolomorphic (gt_trans hρ hR) hf
2024-08-08 14:26:53 +02:00
have hrρ : Metric.ball z R ⊆ Metric.ball z ρ := by
intro x hx
exact gt_trans hρ hx
2024-08-08 14:26:53 +02:00
have reg₀F : DifferentiableOn F (Metric.ball z ρ) := by
intro x hx
apply DifferentiableAt.differentiableWithinAt
apply HolomorphicAt.differentiableAt (h₁F x _)
exact hx
have reg₁F : DifferentiableOn F (Metric.ball z R) := by
intro x hx
apply DifferentiableAt.differentiableWithinAt
apply HolomorphicAt.differentiableAt (h₁F x _)
exact hrρ hx
have : (∮ (x : ) in C(z, R), (x - z)⁻¹ • F x) = (2 * ↑Real.pi * Complex.I) • F z := by
let s : Set := ∅
let hs : s.Countable := Set.countable_empty
let _ : := 0
2024-08-08 14:26:53 +02:00
have hw : (z : ) ∈ Metric.ball z R := Metric.mem_ball_self hR
have hc : ContinuousOn F (Metric.closedBall z R) := by
apply reg₀F.continuousOn.mono
intro x hx
simp at hx
simp
linarith
have hd : ∀ x ∈ Metric.ball z R \ s, DifferentiableAt F x := by
intro x hx
let A := reg₁F x hx.1
apply A.differentiableAt
apply (IsOpen.mem_nhds_iff ?hs).mpr
exact hx.1
exact Metric.isOpen_ball
let CIF := Complex.circleIntegral_sub_inv_smul_of_differentiable_on_off_countable hs hw hc hd
simp at CIF
assumption
unfold circleIntegral at this
simp_rw [deriv_circleMap] at this
2024-08-08 14:26:53 +02:00
have t₁ {θ : } : (circleMap 0 R θ * Complex.I) • (circleMap 0 R θ)⁻¹ • F (circleMap z R θ) = Complex.I • F (circleMap z R θ) := by
rw [← smul_assoc]
congr 1
simp
nth_rw 1 [mul_comm]
rw [← mul_assoc]
simp
apply inv_mul_cancel
apply circleMap_ne_center
exact Ne.symm (ne_of_lt hR)
2024-08-08 15:04:41 +02:00
have t'₁ {θ : } : circleMap 0 R θ = circleMap z R θ - z := by
exact Eq.symm (circleMap_sub_center z R θ)
simp_rw [← t'₁, t₁] at this
simp at this
2024-08-08 15:04:41 +02:00
have t₂ : Complex.reCLM (-Complex.I * (Complex.I * ∫ (x : ) in (0)..2 * Real.pi, F (circleMap z R x))) = Complex.reCLM (-Complex.I * (2 * ↑Real.pi * Complex.I * F z)) := by
rw [this]
simp at t₂
2024-08-08 15:04:41 +02:00
have xx {x : } : (F (circleMap z R x)).re = f (circleMap z R x) := by
rw [← h₂F]
simp
2024-08-08 15:04:41 +02:00
simp
rw [Complex.dist_eq]
rw [circleMap_sub_center]
simp
rwa [abs_of_nonneg (le_of_lt hR)]
have x₁ {z : } : z.re = Complex.reCLM z := by rfl
rw [x₁] at t₂
rw [← ContinuousLinearMap.intervalIntegral_comp_comm] at t₂
simp at t₂
simp_rw [xx] at t₂
2024-08-08 15:04:41 +02:00
have x₁ {z : } : z.re = Complex.reCLM z := by rfl
rw [x₁] at t₂
have : Complex.reCLM (F z) = f z := by
apply h₂F
simp
exact gt_trans hρ hR
rw [this] at t₂
exact t₂
2024-08-08 15:04:41 +02:00
-- IntervalIntegrable (fun x => F (circleMap 0 1 x)) MeasureTheory.volume 0 (2 * Real.pi)
2024-08-08 15:04:41 +02:00
apply ContinuousOn.intervalIntegrable
apply ContinuousOn.comp reg₀F.continuousOn _
intro θ _
simp
rw [Complex.dist_eq, circleMap_sub_center]
simp
rwa [abs_of_nonneg (le_of_lt hR)]
apply Continuous.continuousOn
exact continuous_circleMap z R
2024-08-15 16:00:25 +02:00
/- Probably not optimal yet. We want a statements that requires harmonicity in
the interior and continuity on the closed ball.
-/
theorem harmonic_meanValue₁
{f : }
{z : }
(R : )
(hR : 0 < R)
(hf : ∀ x ∈ Metric.closedBall z R , HarmonicAt f x) :
(∫ (x : ) in (0)..2 * Real.pi, f (circleMap z R x)) = 2 * Real.pi * f z := by
obtain ⟨e, h₁e, h₂e⟩ := IsCompact.exists_thickening_subset_open (isCompact_closedBall z R) (HarmonicAt_isOpen f) hf
rw [thickening_closedBall] at h₂e
apply harmonic_meanValue (e + R) R
assumption
norm_num
assumption
exact fun x a => h₂e a
assumption
linarith