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

Commit a758986

Browse files
committed
feat(measure_theory/integral/set_integral): remove or weaken some integrability assumptions (#18395)
When dealing with integrals on sets, we assume almost always that the set is measurable or null-measurable. However, there are situations where these assumptions can be removed, making the lemmas easier to apply, but at the cost of more involved proofs. We implement this in this PR. As an example, we prove `set_integral_eq_of_subset_of_forall_diff_eq_zero`: if `s` is contained in `t`, and `t` is null-measurable and a function vanishes on `t \ s`, then its integrals on `s` and `t` coincide (no measurability assumptions on `s` or `f`). The special case `t = univ` is especially useful.
1 parent ccf84e0 commit a758986

File tree

10 files changed

+394
-65
lines changed

10 files changed

+394
-65
lines changed

src/analysis/convolution.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ lemma bdd_above.convolution_exists_at' {x₀ : G}
211211
(hf : integrable_on f s μ) (hmg : ae_strongly_measurable g $ map (λ t, x₀ - t) (μ.restrict s)) :
212212
convolution_exists_at f g x₀ L μ :=
213213
begin
214-
rw [convolution_exists_at, ← integrable_on_iff_integrable_of_support_subset h2s hs],
214+
rw [convolution_exists_at, ← integrable_on_iff_integrable_of_support_subset h2s],
215215
set s' := (λ t, - t + x₀) ⁻¹' s,
216216
have : ∀ᵐ (t : G) ∂(μ.restrict s),
217217
‖L (f t) (g (x₀ - t))‖ ≤ s.indicator (λ t, ‖L‖ * ‖f t‖ * ⨆ i : s', ‖g i‖) t,

src/measure_theory/constructions/borel_space.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,11 @@ lemma measurable_set_lt [second_countable_topology α] {f g : δ → α} (hf : m
480480
(hg : measurable g) : measurable_set {a | f a < g a} :=
481481
hf.prod_mk hg measurable_set_lt'
482482

483+
lemma null_measurable_set_lt [second_countable_topology α] {μ : measure δ} {f g : δ → α}
484+
(hf : ae_measurable f μ) (hg : ae_measurable g μ) :
485+
null_measurable_set {a | f a < g a} μ :=
486+
(hf.prod_mk hg).null_measurable measurable_set_lt'
487+
483488
lemma set.ord_connected.measurable_set (h : ord_connected s) : measurable_set s :=
484489
begin
485490
let u := ⋃ (x ∈ s) (y ∈ s), Ioo x y,

src/measure_theory/function/conditional_expectation/basic.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -856,7 +856,7 @@ lemma integral_norm_le_of_forall_fin_meas_integral_eq (hm : m ≤ m0) {f g : α
856856
(hs : measurable_set[m] s) (hμs : μ s ≠ ∞) :
857857
∫ x in s, ‖g x‖ ∂μ ≤ ∫ x in s, ‖f x‖ ∂μ :=
858858
begin
859-
rw [integral_norm_eq_pos_sub_neg (hg.mono hm) hgi, integral_norm_eq_pos_sub_neg hf hfi],
859+
rw [integral_norm_eq_pos_sub_neg hgi, integral_norm_eq_pos_sub_neg hfi],
860860
have h_meas_nonneg_g : measurable_set[m] {x | 0 ≤ g x},
861861
from (@strongly_measurable_const _ _ m _ _).measurable_set_le hg,
862862
have h_meas_nonneg_f : measurable_set {x | 0 ≤ f x},

src/measure_theory/function/l1_space.lean

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -672,6 +672,22 @@ lemma mem_ℒp.integrable {q : ℝ≥0∞} (hq1 : 1 ≤ q) {f : α → β} [is_f
672672
(hfq : mem_ℒp f q μ) : integrable f μ :=
673673
mem_ℒp_one_iff_integrable.mp (hfq.mem_ℒp_of_exponent_le hq1)
674674

675+
/-- A non-quantitative version of Markov inequality for integrable functions: the measure of points
676+
where `‖f x‖ ≥ ε` is finite for all positive `ε`. -/
677+
lemma integrable.measure_ge_lt_top {f : α → β} (hf : integrable f μ) {ε : ℝ} (hε : 0 < ε) :
678+
μ {x | ε ≤ ‖f x‖} < ∞ :=
679+
begin
680+
rw show {x | ε ≤ ‖f x‖} = {x | ennreal.of_real ε ≤ ‖f x‖₊},
681+
by simp only [ennreal.of_real, real.to_nnreal_le_iff_le_coe, ennreal.coe_le_coe, coe_nnnorm],
682+
refine (meas_ge_le_mul_pow_snorm μ one_ne_zero ennreal.one_ne_top hf.1 _).trans_lt _,
683+
{ simpa only [ne.def, ennreal.of_real_eq_zero, not_le] using hε },
684+
apply ennreal.mul_lt_top,
685+
{ simpa only [ennreal.one_to_real, ennreal.rpow_one, ne.def, ennreal.inv_eq_top,
686+
ennreal.of_real_eq_zero, not_le] using hε },
687+
simpa only [ennreal.one_to_real, ennreal.rpow_one]
688+
using (mem_ℒp_one_iff_integrable.2 hf).snorm_ne_top,
689+
end
690+
675691
lemma lipschitz_with.integrable_comp_iff_of_antilipschitz {K K'} {f : α → β} {g : β → γ}
676692
(hg : lipschitz_with K g) (hg' : antilipschitz_with K' g) (g0 : g 0 = 0) :
677693
integrable (g ∘ f) μ ↔ integrable f μ :=

src/measure_theory/function/locally_integrable.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ hf.integrable_on_Ioc
231231
/-- A continuous function with compact support is integrable on the whole space. -/
232232
lemma continuous.integrable_of_has_compact_support
233233
(hf : continuous f) (hcf : has_compact_support f) : integrable f μ :=
234-
(integrable_on_iff_integrable_of_support_subset (subset_tsupport f) measurable_set_closure).mp $
234+
(integrable_on_iff_integrable_of_support_subset (subset_tsupport f)).mp $
235235
hf.continuous_on.integrable_on_compact hcf
236236

237237
end borel

src/measure_theory/function/strongly_measurable/basic.lean

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ open_locale measure_theory
113113

114114
/-! ## Strongly measurable functions -/
115115

116-
lemma strongly_measurable.ae_strongly_measurable {α β} {m0 : measurable_space α}
116+
protected lemma strongly_measurable.ae_strongly_measurable {α β} {m0 : measurable_space α}
117117
[topological_space β] {f : α → β} {μ : measure α} (hf : strongly_measurable f) :
118118
ae_strongly_measurable f μ :=
119119
⟨f, hf, eventually_eq.refl _ _⟩
@@ -1425,6 +1425,41 @@ protected lemma indicator [has_zero β]
14251425
ae_strongly_measurable (s.indicator f) μ :=
14261426
(ae_strongly_measurable_indicator_iff hs).mpr hfm.restrict
14271427

1428+
lemma null_measurable_set_eq_fun {E} [topological_space E] [metrizable_space E]
1429+
{f g : α → E} (hf : ae_strongly_measurable f μ) (hg : ae_strongly_measurable g μ) :
1430+
null_measurable_set {x | f x = g x} μ :=
1431+
begin
1432+
apply (hf.strongly_measurable_mk.measurable_set_eq_fun hg.strongly_measurable_mk)
1433+
.null_measurable_set.congr,
1434+
filter_upwards [hf.ae_eq_mk, hg.ae_eq_mk] with x hfx hgx,
1435+
change (hf.mk f x = hg.mk g x) = (f x = g x),
1436+
simp only [hfx, hgx]
1437+
end
1438+
1439+
lemma null_measurable_set_lt
1440+
[linear_order β] [order_closed_topology β] [pseudo_metrizable_space β]
1441+
{f g : α → β} (hf : ae_strongly_measurable f μ)
1442+
(hg : ae_strongly_measurable g μ) :
1443+
null_measurable_set {a | f a < g a} μ :=
1444+
begin
1445+
apply (hf.strongly_measurable_mk.measurable_set_lt hg.strongly_measurable_mk)
1446+
.null_measurable_set.congr,
1447+
filter_upwards [hf.ae_eq_mk, hg.ae_eq_mk] with x hfx hgx,
1448+
change (hf.mk f x < hg.mk g x) = (f x < g x),
1449+
simp only [hfx, hgx]
1450+
end
1451+
1452+
lemma null_measurable_set_le [preorder β] [order_closed_topology β] [pseudo_metrizable_space β]
1453+
{f g : α → β} (hf : ae_strongly_measurable f μ) (hg : ae_strongly_measurable g μ) :
1454+
null_measurable_set {a | f a ≤ g a} μ :=
1455+
begin
1456+
apply (hf.strongly_measurable_mk.measurable_set_le hg.strongly_measurable_mk)
1457+
.null_measurable_set.congr,
1458+
filter_upwards [hf.ae_eq_mk, hg.ae_eq_mk] with x hfx hgx,
1459+
change (hf.mk f x ≤ hg.mk g x) = (f x ≤ g x),
1460+
simp only [hfx, hgx]
1461+
end
1462+
14281463
lemma _root_.ae_strongly_measurable_of_ae_strongly_measurable_trim {α} {m m0 : measurable_space α}
14291464
{μ : measure α} (hm : m ≤ m0) {f : α → β} (hf : ae_strongly_measurable f (μ.trim hm)) :
14301465
ae_strongly_measurable f μ :=

src/measure_theory/group/arithmetic.lean

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,17 @@ begin
336336
simp_rw [set.mem_set_of_eq, pi.sub_apply, sub_eq_zero],
337337
end
338338

339+
lemma null_measurable_set_eq_fun {E} [measurable_space E] [add_group E]
340+
[measurable_singleton_class E] [has_measurable_sub₂ E] {f g : α → E}
341+
(hf : ae_measurable f μ) (hg : ae_measurable g μ) :
342+
null_measurable_set {x | f x = g x} μ :=
343+
begin
344+
apply (measurable_set_eq_fun hf.measurable_mk hg.measurable_mk).null_measurable_set.congr,
345+
filter_upwards [hf.ae_eq_mk, hg.ae_eq_mk] with x hfx hgx,
346+
change (hf.mk f x = hg.mk g x) = (f x = g x),
347+
simp only [hfx, hgx],
348+
end
349+
339350
lemma measurable_set_eq_fun_of_countable {m : measurable_space α} {E} [measurable_space E]
340351
[measurable_singleton_class E] [countable E] {f g : α → E}
341352
(hf : measurable f) (hg : measurable g) :

src/measure_theory/integral/integrable_on.lean

Lines changed: 74 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -231,12 +231,83 @@ begin
231231
simpa only [set.univ_inter, measurable_set.univ, measure.restrict_apply] using hμs,
232232
end
233233

234-
lemma integrable_on_iff_integrable_of_support_subset {f : α → E} {s : set α}
235-
(h1s : support f ⊆ s) (h2s : measurable_set s) :
234+
/-- If a function is integrable on a set `s` and nonzero there, then the measurable hull of `s` is
235+
well behaved: the restriction of the measure to `to_measurable μ s` coincides with its restriction
236+
to `s`. -/
237+
lemma integrable_on.restrict_to_measurable (hf : integrable_on f s μ) (h's : ∀ x ∈ s, f x ≠ 0) :
238+
μ.restrict (to_measurable μ s) = μ.restrict s :=
239+
begin
240+
rcases exists_seq_strict_anti_tendsto (0 : ℝ) with ⟨u, u_anti, u_pos, u_lim⟩,
241+
let v := λ n, to_measurable (μ.restrict s) {x | u n ≤ ‖f x‖},
242+
have A : ∀ n, μ (s ∩ v n) ≠ ∞,
243+
{ assume n,
244+
rw [inter_comm, ← measure.restrict_apply (measurable_set_to_measurable _ _),
245+
measure_to_measurable],
246+
exact (hf.measure_ge_lt_top (u_pos n)).ne },
247+
apply measure.restrict_to_measurable_of_cover _ A,
248+
assume x hx,
249+
have : 0 < ‖f x‖, by simp only [h's x hx, norm_pos_iff, ne.def, not_false_iff],
250+
obtain ⟨n, hn⟩ : ∃ n, u n < ‖f x‖, from ((tendsto_order.1 u_lim).2 _ this).exists,
251+
refine mem_Union.2 ⟨n, _⟩,
252+
exact subset_to_measurable _ _ hn.le
253+
end
254+
255+
/-- If a function is integrable on a set `s`, and vanishes on `t \ s`, then it is integrable on `t`
256+
if `t` is null-measurable. -/
257+
lemma integrable_on.of_ae_diff_eq_zero (hf : integrable_on f s μ)
258+
(ht : null_measurable_set t μ) (h't : ∀ᵐ x ∂μ, x ∈ t \ s → f x = 0) :
259+
integrable_on f t μ :=
260+
begin
261+
let u := {x ∈ s | f x ≠ 0},
262+
have hu : integrable_on f u μ := hf.mono_set (λ x hx, hx.1),
263+
let v := to_measurable μ u,
264+
have A : integrable_on f v μ,
265+
{ rw [integrable_on, hu.restrict_to_measurable],
266+
{ exact hu },
267+
{ assume x hx, exact hx.2 } },
268+
have B : integrable_on f (t \ v) μ,
269+
{ apply integrable_on_zero.congr,
270+
filter_upwards [ae_restrict_of_ae h't, ae_restrict_mem₀
271+
(ht.diff (measurable_set_to_measurable μ u).null_measurable_set)] with x hxt hx,
272+
by_cases h'x : x ∈ s,
273+
{ by_contra H,
274+
exact hx.2 (subset_to_measurable μ u ⟨h'x, ne.symm H⟩) },
275+
{ exact (hxt ⟨hx.1, h'x⟩).symm, } },
276+
apply (A.union B).mono_set _,
277+
rw union_diff_self,
278+
exact subset_union_right _ _
279+
end
280+
281+
/-- If a function is integrable on a set `s`, and vanishes on `t \ s`, then it is integrable on `t`
282+
if `t` is measurable. -/
283+
lemma integrable_on.of_forall_diff_eq_zero (hf : integrable_on f s μ)
284+
(ht : measurable_set t) (h't : ∀ x ∈ t \ s, f x = 0) :
285+
integrable_on f t μ :=
286+
hf.of_ae_diff_eq_zero ht.null_measurable_set (eventually_of_forall h't)
287+
288+
/-- If a function is integrable on a set `s` and vanishes almost everywhere on its complement,
289+
then it is integrable. -/
290+
lemma integrable_on.integrable_of_ae_not_mem_eq_zero (hf : integrable_on f s μ)
291+
(h't : ∀ᵐ x ∂μ, x ∉ s → f x = 0) : integrable f μ :=
292+
begin
293+
rw ← integrable_on_univ,
294+
apply hf.of_ae_diff_eq_zero null_measurable_set_univ,
295+
filter_upwards [h't] with x hx h'x using hx h'x.2,
296+
end
297+
298+
/-- If a function is integrable on a set `s` and vanishes everywhere on its complement,
299+
then it is integrable. -/
300+
lemma integrable_on.integrable_of_forall_not_mem_eq_zero (hf : integrable_on f s μ)
301+
(h't : ∀ x ∉ s, f x = 0) : integrable f μ :=
302+
hf.integrable_of_ae_not_mem_eq_zero (eventually_of_forall (λ x hx, h't x hx))
303+
304+
lemma integrable_on_iff_integrable_of_support_subset (h1s : support f ⊆ s) :
236305
integrable_on f s μ ↔ integrable f μ :=
237306
begin
238307
refine ⟨λ h, _, λ h, h.integrable_on⟩,
239-
rwa [← indicator_eq_self.2 h1s, integrable_indicator_iff h2s]
308+
apply h.integrable_of_forall_not_mem_eq_zero (λ x hx, _),
309+
contrapose! hx,
310+
exact h1s (mem_support.2 hx),
240311
end
241312

242313
lemma integrable_on_Lp_of_measure_ne_top {E} [normed_add_comm_group E]

0 commit comments

Comments
 (0)