Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 270c644

Browse files
committed
feat(measure_theory): add ae_measurable.sum_measure (#10271)
Also add a few supporting lemmas.
1 parent c062d9e commit 270c644

File tree

2 files changed

+96
-40
lines changed

2 files changed

+96
-40
lines changed

src/measure_theory/measurable_space.lean

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,10 @@ hf ht
186186
lemma subsingleton.measurable [subsingleton α] {f : α → β} : measurable f :=
187187
λ s hs, @subsingleton.measurable_set α _ _ _
188188

189+
@[nontriviality, measurability]
190+
lemma measurable_of_subsingleton_codomain [subsingleton β] (f : α → β) : measurable f :=
191+
λ s hs, subsingleton.set_cases measurable_set.empty measurable_set.univ s
192+
189193
@[measurability]
190194
lemma measurable.piecewise {s : set α} {_ : decidable_pred (∈ s)} {f g : α → β}
191195
(hs : measurable_set s) (hf : measurable f) (hg : measurable g) :
@@ -214,11 +218,7 @@ hf.piecewise hs measurable_const
214218
lemma measurable_one [has_one α] : measurable (1 : β → α) := @measurable_const _ _ _ _ 1
215219

216220
lemma measurable_of_empty [is_empty α] (f : α → β) : measurable f :=
217-
begin
218-
assume s hs,
219-
convert measurable_set.empty,
220-
exact eq_empty_of_is_empty _,
221-
end
221+
subsingleton.measurable
222222

223223
lemma measurable_of_empty_codomain [is_empty β] (f : α → β) : measurable f :=
224224
by { haveI := function.is_empty f, exact measurable_of_empty f }

src/measure_theory/measure/measure_space.lean

Lines changed: 91 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -923,15 +923,21 @@ begin
923923
apply measure_union_le
924924
end
925925

926-
lemma restrict_Union_apply [encodable ι] {s : ι → set α} (hd : pairwise (disjoint on s))
926+
lemma restrict_Union_apply_ae [encodable ι] {s : ι → set α}
927+
(hd : pairwise (λ i j, μ (s i ∩ s j) = 0))
927928
(hm : ∀ i, measurable_set (s i)) {t : set α} (ht : measurable_set t) :
928929
μ.restrict (⋃ i, s i) t = ∑' i, μ.restrict (s i) t :=
929930
begin
930931
simp only [restrict_apply, ht, inter_Union],
931-
exact measure_Union (λ i j hij, (hd i j hij).mono inf_le_right inf_le_right)
932-
(λ i, ht.inter (hm i))
932+
exact measure_Union_of_null_inter (λ i, ht.inter (hm _)) (λ i j hne, measure_mono_null
933+
(inter_subset_inter (inter_subset_right _ _) (inter_subset_right _ _)) (hd i j hne))
933934
end
934935

936+
lemma restrict_Union_apply [encodable ι] {s : ι → set α} (hd : pairwise (disjoint on s))
937+
(hm : ∀ i, measurable_set (s i)) {t : set α} (ht : measurable_set t) :
938+
μ.restrict (⋃ i, s i) t = ∑' i, μ.restrict (s i) t :=
939+
restrict_Union_apply_ae (λ i j hij, by simp [set.disjoint_iff_inter_eq_empty.1 (hd i j hij)]) hm ht
940+
935941
lemma restrict_Union_apply_eq_supr [encodable ι] {s : ι → set α}
936942
(hm : ∀ i, measurable_set (s i)) (hd : directed (⊆) s) {t : set α} (ht : measurable_set t) :
937943
μ.restrict (⋃ i, s i) t = ⨆ i, μ.restrict (s i) t :=
@@ -1196,6 +1202,30 @@ to_measure_apply _ _ hs
11961202
lemma le_sum (μ : ι → measure α) (i : ι) : μ i ≤ sum μ :=
11971203
λ s hs, by simp only [sum_apply μ hs, ennreal.le_tsum i]
11981204

1205+
@[simp] lemma sum_apply_eq_zero [encodable ι] {μ : ι → measure α} {s : set α} :
1206+
sum μ s = 0 ↔ ∀ i, μ i s = 0 :=
1207+
begin
1208+
refine ⟨λ h i, nonpos_iff_eq_zero.1 $ h ▸ le_iff'.1 (le_sum μ i) _, λ h, nonpos_iff_eq_zero.1 _⟩,
1209+
rcases exists_measurable_superset_forall_eq μ s with ⟨t, hst, htm, ht⟩,
1210+
calc sum μ s ≤ sum μ t : measure_mono hst
1211+
... = 0 : by simp *
1212+
end
1213+
1214+
lemma sum_apply_eq_zero' {μ : ι → measure α} {s : set α} (hs : measurable_set s) :
1215+
sum μ s = 0 ↔ ∀ i, μ i s = 0 :=
1216+
by simp [hs]
1217+
1218+
lemma ae_sum_iff [encodable ι] {μ : ι → measure α} {p : α → Prop} :
1219+
(∀ᵐ x ∂(sum μ), p x) ↔ ∀ i, ∀ᵐ x ∂(μ i), p x :=
1220+
sum_apply_eq_zero
1221+
1222+
lemma ae_sum_iff' {μ : ι → measure α} {p : α → Prop} (h : measurable_set {x | p x}) :
1223+
(∀ᵐ x ∂(sum μ), p x) ↔ ∀ i, ∀ᵐ x ∂(μ i), p x :=
1224+
sum_apply_eq_zero' h.compl
1225+
1226+
@[simp] lemma ae_sum_eq [encodable ι] (μ : ι → measure α) : (sum μ).ae = ⨆ i, (μ i).ae :=
1227+
filter.ext $ λ s, ae_sum_iff.trans mem_supr.symm
1228+
11991229
@[simp] lemma sum_bool (f : bool → measure α) : sum f = f tt + f ff :=
12001230
ext $ λ s hs, by simp [hs, tsum_fintype]
12011231

@@ -1237,6 +1267,11 @@ by simpa using (map_eq_sum μ id measurable_id).symm
12371267
omit m0
12381268
end sum
12391269

1270+
lemma restrict_Union_ae [encodable ι] {s : ι → set α} (hd : pairwise (λ i j, μ (s i ∩ s j) = 0))
1271+
(hm : ∀ i, measurable_set (s i)) :
1272+
μ.restrict (⋃ i, s i) = sum (λ i, μ.restrict (s i)) :=
1273+
ext $ λ t ht, by simp only [sum_apply _ ht, restrict_Union_apply_ae hd hm ht]
1274+
12401275
lemma restrict_Union [encodable ι] {s : ι → set α} (hd : pairwise (disjoint on s))
12411276
(hm : ∀ i, measurable_set (s i)) :
12421277
μ.restrict (⋃ i, s i) = sum (λ i, μ.restrict (s i)) :=
@@ -2702,6 +2737,10 @@ variables [measurable_space α] [measurable_space β]
27022737
lemma subsingleton.ae_measurable [subsingleton α] : ae_measurable f μ :=
27032738
subsingleton.measurable.ae_measurable
27042739

2740+
@[nontriviality, measurability]
2741+
lemma ae_measurable_of_subsingleton_codomain [subsingleton β] : ae_measurable f μ :=
2742+
(measurable_of_subsingleton_codomain f).ae_measurable
2743+
27052744
@[simp, measurability] lemma ae_measurable_zero_measure : ae_measurable f (0 : measure α) :=
27062745
begin
27072746
nontriviality α, inhabit α,
@@ -2728,34 +2767,57 @@ lemma ae_inf_principal_eq_mk {s} (h : ae_measurable f (μ.restrict s)) :
27282767
f =ᶠ[μ.ae ⊓ 𝓟 s] h.mk f :=
27292768
le_ae_restrict h.ae_eq_mk
27302769

2770+
@[measurability]
2771+
lemma sum_measure [encodable ι] {μ : ι → measure α} (h : ∀ i, ae_measurable f (μ i)) :
2772+
ae_measurable f (sum μ) :=
2773+
begin
2774+
nontriviality β, inhabit β,
2775+
set s : ι → set α := λ i, to_measurable (μ i) {x | f x ≠ (h i).mk f x},
2776+
have hsμ : ∀ i, μ i (s i) = 0,
2777+
{ intro i, rw measure_to_measurable, exact (h i).ae_eq_mk },
2778+
have hsm : measurable_set (⋂ i, s i),
2779+
from measurable_set.Inter (λ i, measurable_set_to_measurable _ _),
2780+
have hs : ∀ i x, x ∉ s i → f x = (h i).mk f x,
2781+
{ intros i x hx, contrapose! hx, exact subset_to_measurable _ _ hx },
2782+
set g : α → β := (⋂ i, s i).piecewise (const α (default β)) f,
2783+
refine ⟨g, measurable_of_restrict_of_restrict_compl hsm _ _, ae_sum_iff.mpr $ λ i, _⟩,
2784+
{ rw [restrict_piecewise], simp only [set.restrict, const], exact measurable_const },
2785+
{ rw [restrict_piecewise_compl, compl_Inter],
2786+
intros t ht,
2787+
refine ⟨⋃ i, ((h i).mk f ⁻¹' t) ∩ (s i)ᶜ, measurable_set.Union $
2788+
λ i, (measurable_mk _ ht).inter (measurable_set_to_measurable _ _).compl, _⟩,
2789+
ext ⟨x, hx⟩,
2790+
simp only [mem_preimage, mem_Union, subtype.coe_mk, set.restrict, mem_inter_eq,
2791+
mem_compl_iff] at hx ⊢,
2792+
split,
2793+
{ rintro ⟨i, hxt, hxs⟩, rwa hs _ _ hxs },
2794+
{ rcases hx with ⟨i, hi⟩, rw hs _ _ hi, exact λ h, ⟨i, h, hi⟩ } },
2795+
{ refine measure_mono_null (λ x (hx : f x ≠ g x), _) (hsμ i),
2796+
contrapose! hx, refine (piecewise_eq_of_not_mem _ _ _ _).symm,
2797+
exact λ h, hx (mem_Inter.1 h i) }
2798+
end
2799+
2800+
@[simp] lemma _root_.ae_measurable_sum_measure_iff [encodable ι] {μ : ι → measure α} :
2801+
ae_measurable f (sum μ) ↔ ∀ i, ae_measurable f (μ i) :=
2802+
⟨λ h i, h.mono_measure (le_sum _ _), sum_measure⟩
2803+
2804+
@[simp] lemma _root_.ae_measurable_add_measure_iff :
2805+
ae_measurable f (μ + ν) ↔ ae_measurable f μ ∧ ae_measurable f ν :=
2806+
by { rw [← sum_cond, ae_measurable_sum_measure_iff, bool.forall_bool, and.comm], refl }
2807+
27312808
@[measurability]
27322809
lemma add_measure {f : α → β} (hμ : ae_measurable f μ) (hν : ae_measurable f ν) :
27332810
ae_measurable f (μ + ν) :=
2734-
begin
2735-
let s := {x | f x ≠ hμ.mk f x},
2736-
have : μ s = 0 := hμ.ae_eq_mk,
2737-
obtain ⟨t, st, t_meas, μt⟩ : ∃ t, s ⊆ t ∧ measurable_set t ∧ μ t = 0 :=
2738-
exists_measurable_superset_of_null this,
2739-
let g : α → β := t.piecewise (hν.mk f) (hμ.mk f),
2740-
refine ⟨g, measurable.piecewise t_meas hν.measurable_mk hμ.measurable_mk, _⟩,
2741-
change μ {x | f x ≠ g x} + ν {x | f x ≠ g x} = 0,
2742-
suffices : μ {x | f x ≠ g x} = 0 ∧ ν {x | f x ≠ g x} = 0, by simp [this.1, this.2],
2743-
have ht : {x | f x ≠ g x} ⊆ t,
2744-
{ assume x hx,
2745-
by_contra h,
2746-
simp only [g, h, mem_set_of_eq, ne.def, not_false_iff, piecewise_eq_of_not_mem] at hx,
2747-
exact h (st hx) },
2748-
split,
2749-
{ have : μ {x | f x ≠ g x} ≤ μ t := measure_mono ht,
2750-
rw μt at this,
2751-
exact le_antisymm this bot_le },
2752-
{ have : {x | f x ≠ g x} ⊆ {x | f x ≠ hν.mk f x},
2753-
{ assume x hx,
2754-
simpa [ht hx, g] using hx },
2755-
apply le_antisymm _ bot_le,
2756-
calc ν {x | f x ≠ g x} ≤ ν {x | f x ≠ hν.mk f x} : measure_mono this
2757-
... = 0 : hν.ae_eq_mk }
2758-
end
2811+
ae_measurable_add_measure_iff.2 ⟨hμ, hν⟩
2812+
2813+
@[measurability]
2814+
protected lemma Union [encodable ι] {s : ι → set α} (h : ∀ i, ae_measurable f (μ.restrict (s i))) :
2815+
ae_measurable f (μ.restrict (⋃ i, s i)) :=
2816+
(sum_measure h).mono_measure $ restrict_Union_le
2817+
2818+
@[simp] lemma _root_.ae_measurable_Union_iff [encodable ι] {s : ι → set α} :
2819+
ae_measurable f (μ.restrict (⋃ i, s i)) ↔ ∀ i, ae_measurable f (μ.restrict (s i)) :=
2820+
⟨λ h i, h.mono_measure $ restrict_mono (subset_Union _ _) le_rfl, ae_measurable.Union⟩
27592821

27602822
@[measurability]
27612823
lemma smul_measure (h : ae_measurable f μ) (c : ℝ≥0∞) :
@@ -2779,7 +2841,7 @@ lemma prod_mk {γ : Type*} [measurable_space γ] {f : α → β} {g : α → γ}
27792841
lemma subtype_mk (h : ae_measurable f μ) {s : set β} {hfs : ∀ x, f x ∈ s} (hs : measurable_set s) :
27802842
ae_measurable (cod_restrict f s hfs) μ :=
27812843
begin
2782-
casesI is_empty_or_nonempty α, { exact (measurable_of_empty _).ae_measurable }, inhabit α,
2844+
nontriviality α, inhabit α,
27832845
rcases h with ⟨g, hgm, hg⟩,
27842846
rcases hs.exists_measurable_proj ⟨f (default α), hfs _⟩ with ⟨π, hπm, hπ⟩,
27852847
refine ⟨π ∘ g, hπm.comp hgm, hg.mono $ λ x hx, _⟩,
@@ -2820,12 +2882,6 @@ lemma ae_measurable_restrict_iff_comap_subtype {s : set α} (hs : measurable_set
28202882
ae_measurable f (μ.restrict s) ↔ ae_measurable (f ∘ coe : s → β) (comap coe μ) :=
28212883
by rw [← map_comap_subtype_coe hs, (measurable_embedding.subtype_coe hs).ae_measurable_map_iff]
28222884

2823-
@[simp] lemma ae_measurable_add_measure_iff :
2824-
ae_measurable f (μ + ν) ↔ ae_measurable f μ ∧ ae_measurable f ν :=
2825-
⟨λ h, ⟨h.mono_measure (measure.le_add_right (le_refl _)),
2826-
h.mono_measure (measure.le_add_left (le_refl _))⟩,
2827-
λ h, h.1.add_measure h.2
2828-
28292885
@[simp, to_additive] lemma ae_measurable_one [has_one β] : ae_measurable (λ a : α, (1 : β)) μ :=
28302886
measurable_one.ae_measurable
28312887

0 commit comments

Comments
 (0)