Skip to content

Commit 69bf692

Browse files
committed
feat: Lipschitz function criterion for weak convergence of probability measures (#30742)
Weak convergence of probability measures is equivalent to the property that the integrals of every bounded Lipschitz function converge to the integral of the function against the limit measure. Co-authored-by: Remy Degenne <remydegenne@gmail.com>
1 parent d7739e4 commit 69bf692

File tree

2 files changed

+103
-1
lines changed

2 files changed

+103
-1
lines changed

Mathlib/MeasureTheory/Measure/HasOuterApproxClosed.lean

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ theorem measure_of_cont_bdd_of_tendsto_indicator
104104

105105
/-- The integrals of thickened indicators of a closed set against a finite measure tend to the
106106
measure of the closed set if the thickening radii tend to zero. -/
107-
theorem tendsto_lintegral_thickenedIndicator_of_isClosed {Ω : Type*} [MeasurableSpace Ω]
107+
theorem tendsto_lintegral_thickenedIndicator_of_isClosed {Ω : Type*} {mΩ : MeasurableSpace Ω}
108108
[PseudoEMetricSpace Ω] [OpensMeasurableSpace Ω] (μ : Measure Ω) [IsFiniteMeasure μ] {F : Set Ω}
109109
(F_closed : IsClosed F) {δs : ℕ → ℝ} (δs_pos : ∀ n, 0 < δs n)
110110
(δs_lim : Tendsto δs atTop (𝓝 0)) :
@@ -115,6 +115,36 @@ theorem tendsto_lintegral_thickenedIndicator_of_isClosed {Ω : Type*} [Measurabl
115115
have key := thickenedIndicator_tendsto_indicator_closure δs_pos δs_lim F
116116
rwa [F_closed.closure_eq] at key
117117

118+
/-- A thickened indicator is integrable. -/
119+
lemma integrable_thickenedIndicator {Ω : Type*} {mΩ : MeasurableSpace Ω}
120+
[PseudoEMetricSpace Ω] [OpensMeasurableSpace Ω] {μ : Measure Ω} [IsFiniteMeasure μ] (F : Set Ω)
121+
{δ : ℝ} (δ_pos : 0 < δ) :
122+
Integrable (fun ω ↦ (thickenedIndicator δ_pos F ω : ℝ)) μ := by
123+
refine .of_bound (by fun_prop) 1 (ae_of_all _ fun x ↦ ?_)
124+
simpa using thickenedIndicator_le_one δ_pos F x
125+
126+
/-- The integrals of thickened indicators of a closed set against a finite measure tend to the
127+
measure of the closed set if the thickening radii tend to zero. -/
128+
lemma tendsto_integral_thickenedIndicator_of_isClosed {Ω : Type*} {mΩ : MeasurableSpace Ω}
129+
[PseudoEMetricSpace Ω] [OpensMeasurableSpace Ω] (μ : Measure Ω) [IsFiniteMeasure μ] {F : Set Ω}
130+
(F_closed : IsClosed F) {δs : ℕ → ℝ} (δs_pos : ∀ (n : ℕ), 0 < δs n)
131+
(δs_lim : Tendsto δs atTop (𝓝 0)) :
132+
Tendsto (fun n : ℕ ↦ ∫ ω, (thickenedIndicator (δs_pos n) F ω : ℝ) ∂μ) atTop (𝓝 (μ.real F)) := by
133+
-- we switch to the `lintegral` formulation and apply the corresponding lemma there
134+
let fs : ℕ → Ω → ℝ := fun n ω ↦ thickenedIndicator (δs_pos n) F ω
135+
have h := tendsto_lintegral_thickenedIndicator_of_isClosed μ F_closed δs_pos δs_lim
136+
have h_eq (n : ℕ) : ∫⁻ ω, thickenedIndicator (δs_pos n) F ω ∂μ
137+
= ENNReal.ofReal (∫ ω, fs n ω ∂μ) := by
138+
rw [lintegral_coe_eq_integral]
139+
exact integrable_thickenedIndicator F (δs_pos _)
140+
simp_rw [h_eq] at h
141+
rw [Measure.real_def]
142+
have h_eq' : (fun n ↦ ∫ ω, fs n ω ∂μ) = fun n ↦ (ENNReal.ofReal (∫ ω, fs n ω ∂μ)).toReal := by
143+
ext n
144+
rw [ENNReal.toReal_ofReal]
145+
exact integral_nonneg fun x ↦ by simp [fs]
146+
rwa [h_eq', ENNReal.tendsto_toReal_iff (by simp) (by finiteness)]
147+
118148
end MeasureTheory -- namespace
119149

120150
end auxiliary -- section

Mathlib/MeasureTheory/Measure/Portmanteau.lean

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -640,8 +640,80 @@ theorem tendsto_of_forall_isClosed_limsup_le
640640
exact (limsup_comp (fun i ↦ μs i F) u _).trans_le
641641
(limsup_le_limsup_of_le hu (by isBoundedDefault) ⟨1, by simp⟩)
642642

643+
lemma tendsto_of_forall_isClosed_limsup_real_le' {L : Filter ι} [L.IsCountablyGenerated]
644+
(h : ∀ F : Set Ω, IsClosed F →
645+
limsup (fun i ↦ (μs i : Measure Ω).real F) L ≤ (μ : Measure Ω).real F) :
646+
Tendsto μs L (𝓝 μ) := by
647+
refine tendsto_of_forall_isClosed_limsup_le' fun F hF ↦ ?_
648+
rcases L.eq_or_neBot with rfl | hne
649+
· simp
650+
specialize h F hF
651+
simp only [Measure.real_def] at h
652+
rwa [ENNReal.limsup_toReal_eq (b := 1) (by simp) (.of_forall fun i ↦ prob_le_one),
653+
ENNReal.toReal_le_toReal _ (by finiteness)] at h
654+
refine ne_top_of_le_ne_top (b := 1) (by simp) ?_
655+
refine limsup_le_of_le ?_ (.of_forall fun i ↦ prob_le_one)
656+
exact isCoboundedUnder_le_of_le L (x := 0) (by simp)
657+
643658
end Closed
644659

660+
section Lipschitz
661+
662+
/-- Weak convergence of probability measures is equivalent to the property that the integrals of
663+
every bounded Lipschitz function converge to the integral of the function against
664+
the limit measure. -/
665+
theorem tendsto_iff_forall_lipschitz_integral_tendsto {γ Ω : Type*} {mΩ : MeasurableSpace Ω}
666+
[PseudoEMetricSpace Ω] [OpensMeasurableSpace Ω] {F : Filter γ} [F.IsCountablyGenerated]
667+
{μs : γ → ProbabilityMeasure Ω} {μ : ProbabilityMeasure Ω} :
668+
Tendsto μs F (𝓝 μ) ↔
669+
∀ f : Ω → ℝ, (∃ (C : ℝ), ∀ x y, dist (f x) (f y) ≤ C) → (∃ L, LipschitzWith L f) →
670+
Tendsto (fun i ↦ ∫ ω, f ω ∂(μs i)) F (𝓝 (∫ ω, f ω ∂μ)) := by
671+
constructor
672+
· -- A bounded Lipschitz function is in particular a bounded continuous function, and we already
673+
-- know that weak convergence implies convergence of their integrals
674+
intro h f hf_bounded hf_lip
675+
simp_rw [ProbabilityMeasure.tendsto_iff_forall_integral_tendsto] at h
676+
let f' : BoundedContinuousFunction Ω ℝ :=
677+
{ toFun := f
678+
continuous_toFun := hf_lip.choose_spec.continuous
679+
map_bounded' := hf_bounded }
680+
simpa using h f'
681+
-- To prove the other direction, we prove convergence of the measure of closed sets.
682+
-- We approximate the indicator function of a closed set by bounded Lipschitz functions.
683+
rcases F.eq_or_neBot with rfl | hne
684+
· simp
685+
refine fun h ↦ tendsto_of_forall_isClosed_limsup_real_le' fun s hs ↦ ?_
686+
refine le_of_forall_pos_le_add fun ε ε_pos ↦ ?_
687+
let fs : ℕ → Ω → ℝ := fun n ω ↦ thickenedIndicator (δ := (1 : ℝ) / (n + 1)) (by positivity) s ω
688+
have key₁ : Tendsto (fun n ↦ ∫ ω, fs n ω ∂μ) atTop (𝓝 ((μ : Measure Ω).real s)) :=
689+
tendsto_integral_thickenedIndicator_of_isClosed μ hs (δs := fun n ↦ (1 : ℝ) / (n + 1))
690+
(fun _ ↦ by positivity) tendsto_one_div_add_atTop_nhds_zero_nat
691+
have room₁ : (μ : Measure Ω).real s < (μ : Measure Ω).real s + ε / 2 := by simp [ε_pos]
692+
obtain ⟨M, hM⟩ := eventually_atTop.mp <| key₁.eventually_lt_const room₁
693+
have key₂ : Tendsto (fun i ↦ ∫ ω, fs M ω ∂(μs i)) F (𝓝 (∫ ω, fs M ω ∂μ)) :=
694+
h (fs M) ⟨1, fun x y ↦ ?_⟩
695+
⟨_, lipschitzWith_thickenedIndicator (δ := (1 : ℝ) / (M + 1)) (by positivity) s⟩
696+
swap
697+
· simp only [Real.dist_eq, abs_le]
698+
have h1 x : fs M x ≤ 1 := thickenedIndicator_le_one _ _ _
699+
have h2 x : 0 ≤ fs M x := by simp [fs]
700+
grind
701+
have room₂ : ∫ a, fs M a ∂μ < ∫ a, fs M a ∂μ + ε / 2 := by simp [ε_pos]
702+
have ev_near : ∀ᶠ x in F, (μs x : Measure Ω).real s ≤ ∫ a, fs M a ∂μ + ε / 2 := by
703+
refine (key₂.eventually_le_const room₂).mono fun x hx ↦ le_trans ?_ hx
704+
rw [← integral_indicator_one hs.measurableSet]
705+
refine integral_mono ?_ (integrable_thickenedIndicator _ _) ?_
706+
· exact (integrable_indicator_iff hs.measurableSet).mpr (integrable_const _).integrableOn
707+
· have h : _ ≤ fs M :=
708+
indicator_le_thickenedIndicator (δ := (1 : ℝ) / (M + 1)) (by positivity) s
709+
simpa using h
710+
apply (Filter.limsup_le_of_le ?_ ev_near).trans
711+
· apply (add_le_add (hM M rfl.le).le (le_refl (ε / 2))).trans_eq
712+
ring
713+
· exact isCoboundedUnder_le_of_le F (x := 0) (by simp)
714+
715+
end Lipschitz
716+
645717
section convergenceCriterion
646718

647719
open scoped Finset

0 commit comments

Comments
 (0)