Skip to content

Commit 85fcdf8

Browse files
committed
feat: measurable union of a family of measurable sets (leanprover-community#34680)
Needed for leanprover-community#34055 Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr>
1 parent f19297b commit 85fcdf8

1 file changed

Lines changed: 45 additions & 0 deletions

File tree

Mathlib/MeasureTheory/Measure/Typeclasses/SFinite.lean

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ We introduce the following typeclasses for measures:
2222
namespace MeasureTheory
2323

2424
open Set Filter Function Measure MeasurableSpace NNReal ENNReal
25+
open scoped Topology
2526

2627
variable {α β ι : Type*} {m0 : MeasurableSpace α} [MeasurableSpace β] {μ ν : Measure α}
2728
{s t : Set α} {a : α}
@@ -316,6 +317,50 @@ theorem countable_meas_level_set_pos {α β : Type*} {_ : MeasurableSpace α} {
316317
(g_mble : Measurable g) : Set.Countable { t : β | 0 < μ { a : α | g a = t } } :=
317318
countable_meas_level_set_pos₀ g_mble.nullMeasurable
318319

320+
private lemma exists_ae_subset_biUnion_countable_of_isFiniteMeasure [IsFiniteMeasure μ]
321+
{C : Set (Set α)} (hC : ∀ s ∈ C, MeasurableSet s) :
322+
∃ D ⊆ C, D.Countable ∧ ∀ s ∈ C, s ≤ᵐ[μ] (⋃₀ D) := by
323+
let m := ⨆ D ∈ {D : Set (Set α) | D ⊆ C ∧ D.Countable}, μ (⋃₀ D)
324+
obtain ⟨D, D_mem, hD⟩ : ∃ D ∈ {D : Set (Set α) | D ⊆ C ∧ D.Countable}, μ (⋃₀ D) = m := by
325+
rcases eq_bot_or_bot_lt m with hm | hm
326+
· exact ⟨∅, by simp, by simp [hm]⟩
327+
obtain ⟨u, -, u_mem, u_lim⟩ :
328+
∃ u : ℕ → ℝ≥0∞, StrictMono u ∧ (∀ n, u n ∈ Ioo 0 m) ∧ Tendsto u atTop (𝓝 m) :=
329+
exists_seq_strictMono_tendsto' hm
330+
have A n : ∃ D ∈ {D : Set (Set α) | D ⊆ C ∧ D.Countable}, u n < μ (⋃₀ D) :=
331+
lt_biSup_iff.1 (u_mem n).2
332+
choose! D D_mem huD using A
333+
have hD : ⋃ n, D n ∈ {D | D ⊆ C ∧ D.Countable} := by simp; grind
334+
refine ⟨⋃ n, D n, hD, ?_⟩
335+
apply le_antisymm (le_biSup (f := fun D ↦ μ (⋃₀ D)) hD)
336+
apply le_of_tendsto' u_lim (fun n ↦ (huD n).le.trans ?_)
337+
exact measure_mono (fun x hx ↦ by simp at hx ⊢; grind)
338+
refine ⟨D, by grind, by grind, fun s hs ↦ union_ae_eq_right_iff_ae_subset.mp ?_⟩
339+
symm
340+
apply ae_eq_of_ae_subset_of_measure_ge subset_union_right.eventuallyLE
341+
· rw [hD, show s ∪ ⋃₀ D = ⋃₀ (D ∪ {s}) by simp]
342+
apply le_biSup (f := fun D ↦ μ (⋃₀ D))
343+
simp [D_mem.2, insert_subset_iff, hs, D_mem.1]
344+
· exact (MeasurableSet.sUnion D_mem.2 (by grind)).nullMeasurableSet
345+
· simp
346+
347+
variable (μ) in
348+
/-- Given a family of measurable sets, its measurable union is its union modulo sets of measure
349+
zero. It is well defined up to measure 0. For instance, the measurable union of all the singleton
350+
sets in `ℝ` is empty (while the usual union would be the whole space).
351+
This lemma shows the existence of a measurable union, writing it as the union of a countable
352+
subfamily. -/
353+
lemma exists_ae_subset_biUnion_countable [SFinite μ]
354+
{C : Set (Set α)} (hC : ∀ s ∈ C, MeasurableSet s) :
355+
∃ D ⊆ C, D.Countable ∧ ∀ s ∈ C, s ≤ᵐ[μ] (⋃₀ D) := by
356+
have A n : ∃ D ⊆ C, D.Countable ∧ ∀ s ∈ C, s ≤ᵐ[sfiniteSeq μ n] (⋃₀ D) :=
357+
exists_ae_subset_biUnion_countable_of_isFiniteMeasure hC
358+
choose D DC D_count hD using A
359+
refine ⟨⋃ n, D n, by simp [DC], by simp [D_count], fun s hs ↦ ?_⟩
360+
rw [← sum_sfiniteSeq μ]
361+
apply ae_sum_iff.2 (fun n ↦ (hD n s hs).trans ?_)
362+
exact HasSubset.Subset.eventuallyLE (fun x hx ↦ by simp at hx ⊢; grind)
363+
319364
/-- If a measure `μ` is the sum of a countable family `mₙ`, and a set `t` has finite measure for
320365
each `mₙ`, then its measurable superset `toMeasurable μ t` (which has the same measure as `t`)
321366
satisfies, for any measurable set `s`, the equality `μ (toMeasurable μ t ∩ s) = μ (t ∩ s)`. -/

0 commit comments

Comments
 (0)