Skip to content

Commit f06f028

Browse files
committed
feat(Integral/CircleIntegral): add a convergence theorem (leanprover-community#39204)
From the Riemann mapping theorem project.
1 parent 23fc279 commit f06f028

2 files changed

Lines changed: 43 additions & 0 deletions

File tree

Mathlib/MeasureTheory/Integral/CircleIntegral.lean

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,28 @@ theorem circleIntegral_def_Icc (f : ℂ → E) (c : ℂ) (R : ℝ) :
367367
rw [circleIntegral, intervalIntegral.integral_of_le Real.two_pi_pos.le,
368368
Measure.restrict_congr_set Ioc_ae_eq_Icc]
369369

370+
/-- If a sequence of continuous functions converges uniformly on the circle,
371+
then their circle integrals converge to the circle integral of the limit function. -/
372+
theorem _root_.TendstoUniformlyOn.tendsto_circleIntegral_of_continuousOn
373+
{ι : Type*} {f : ι → ℂ → E} {g : ℂ → E} {c : ℂ} {R : ℝ}
374+
{l : Filter ι} [l.IsCountablyGenerated] (hR : 0 ≤ R)
375+
(hf : ∀ᶠ i in l, ContinuousOn (f i) (sphere c R)) (h : TendstoUniformlyOn f g l (sphere c R)) :
376+
Tendsto (fun n ↦ ∮ z in C(c, R), f n z) l (𝓝 (∮ z in C(c, R), g z)) := by
377+
apply TendstoUniformlyOn.tendsto_intervalIntegral_of_continuousOn
378+
· refine hf.mono fun i hi ↦ .smul ?_ (hi.comp ?_ ?_)
379+
· rw [funext (deriv_circleMap _ _)]
380+
fun_prop
381+
· fun_prop
382+
· simp [hR, MapsTo]
383+
· rw [Metric.tendstoUniformlyOn_iff] at h ⊢
384+
simp only [dist_smul₀, deriv_circleMap, norm_mul, norm_I, norm_circleMap_zero,
385+
abs_of_nonneg hR, mul_one]
386+
intro ε hε
387+
rcases exists_pos_mul_lt hε R with ⟨δ, hδ₀, hRδ⟩
388+
refine (h δ hδ₀).mono fun i hi x hx ↦ ?_
389+
grw [hi (circleMap c R x) (by simp [hR])]
390+
exact hRδ
391+
370392
namespace circleIntegral
371393

372394
@[simp]

Mathlib/MeasureTheory/Integral/DominatedConvergence.lean

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ module
77

88
public import Mathlib.MeasureTheory.Constructions.Polish.StronglyMeasurable
99
public import Mathlib.MeasureTheory.Integral.IntervalIntegral.Basic
10+
import Mathlib.Topology.Algebra.IsUniformGroup.Order
1011

1112
/-!
1213
# The dominated convergence theorem
@@ -221,6 +222,26 @@ nonrec theorem tendsto_integral_filter_of_dominated_convergence {ι} {l : Filter
221222
exact tendsto_const_nhds.smul <|
222223
tendsto_integral_filter_of_dominated_convergence bound hF_meas h_bound bound_integrable h_lim
223224

225+
theorem _root_.TendstoUniformlyOn.tendsto_intervalIntegral_of_continuousOn
226+
{l : Filter ι} [l.IsCountablyGenerated] {F : ι → ℝ → E}
227+
[IsLocallyFiniteMeasure μ] (hF : ∀ᶠ i in l, ContinuousOn (F i) [[a, b]])
228+
(h_lim : TendstoUniformlyOn F f l [[a, b]]) :
229+
Tendsto (fun n => ∫ x in a..b, F n x ∂μ) l (𝓝 <| ∫ x in a..b, f x ∂μ) := by
230+
rcases l.eq_or_neBot with rfl | hl
231+
· simp
232+
rcases isCompact_uIcc.bddAbove_image (h_lim.continuousOn hF.frequently).norm with ⟨C, hC⟩
233+
apply tendsto_integral_filter_of_dominated_convergence (bound := fun _ ↦ C + 1)
234+
case hF_meas =>
235+
exact hF.mono fun i hi ↦ hi.mono uIoc_subset_uIcc |>.aestronglyMeasurable measurableSet_uIoc
236+
case h_bound =>
237+
have := uniformContinuous_norm.comp_tendstoUniformlyOn h_lim
238+
|>.eventually_forall_le (show C < C + 1 by simp) (by simpa [upperBounds] using hC)
239+
exact this.mono fun i hi ↦ .of_forall fun x hx ↦ hi x <| uIoc_subset_uIcc hx
240+
case bound_integrable =>
241+
exact intervalIntegrable_const
242+
case h_lim =>
243+
exact .of_forall fun x hx ↦ h_lim.tendsto_at <| uIoc_subset_uIcc hx
244+
224245
/-- Lebesgue dominated convergence theorem for parametric interval integrals. -/
225246
nonrec theorem hasSum_integral_of_dominated_convergence {ι} [Countable ι] {F : ι → ℝ → E}
226247
(bound : ι → ℝ → ℝ) (hF_meas : ∀ n, AEStronglyMeasurable (F n) (μ.restrict (Ι a b)))

0 commit comments

Comments
 (0)