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

Commit 7468d8d

Browse files
committed
feat(measure_theory/integral/lebesgue): weaken assumptions for with_density lemmas (#11711)
We state more precise versions of some lemmas about the measure `μ.with_density f`, making it possible to remove some assumptions down the road. For instance, the lemma ```lean integrable g (μ.with_density f) ↔ integrable (λ x, g x * (f x).to_real) μ ``` currently requires the measurability of `g`, while we can completely remove it with the new lemmas. We also make `lintegral` irreducible.
1 parent 0c0ab69 commit 7468d8d

File tree

6 files changed

+352
-46
lines changed

6 files changed

+352
-46
lines changed

src/measure_theory/constructions/borel_space.lean

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1810,6 +1810,23 @@ begin
18101810
{ exact tendsto_const_nhds, },
18111811
end
18121812

1813+
lemma ae_measurable_of_unif_approx {μ : measure α} {g : α → β}
1814+
(hf : ∀ ε > (0 : ℝ), ∃ (f : α → β), ae_measurable f μ ∧ ∀ᵐ x ∂μ, dist (f x) (g x) ≤ ε) :
1815+
ae_measurable g μ :=
1816+
begin
1817+
obtain ⟨u, u_anti, u_pos, u_lim⟩ :
1818+
∃ (u : ℕ → ℝ), strict_anti u ∧ (∀ (n : ℕ), 0 < u n) ∧ tendsto u at_top (𝓝 0) :=
1819+
exists_seq_strict_anti_tendsto (0 : ℝ),
1820+
choose f Hf using λ (n : ℕ), hf (u n) (u_pos n),
1821+
have : ∀ᵐ x ∂μ, tendsto (λ n, f n x) at_top (𝓝 (g x)),
1822+
{ have : ∀ᵐ x ∂ μ, ∀ n, dist (f n x) (g x) ≤ u n := ae_all_iff.2 (λ n, (Hf n).2),
1823+
filter_upwards [this],
1824+
assume x hx,
1825+
rw tendsto_iff_dist_tendsto_zero,
1826+
exact squeeze_zero (λ n, dist_nonneg) hx u_lim },
1827+
exact ae_measurable_of_tendsto_metric_ae (λ n, (Hf n).1) this,
1828+
end
1829+
18131830
lemma measurable_of_tendsto_metric_ae {μ : measure α} [μ.is_complete] {f : ℕ → α → β} {g : α → β}
18141831
(hf : ∀ n, measurable (f n))
18151832
(h_ae_tendsto : ∀ᵐ x ∂μ, filter.at_top.tendsto (λ n, f n x) (𝓝 (g x))) :

src/measure_theory/function/ae_eq_of_integral.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ lemma ae_fin_strongly_measurable.ae_nonneg_of_forall_set_integral_nonneg {f : α
307307
begin
308308
let t := hf.sigma_finite_set,
309309
suffices : 0 ≤ᵐ[μ.restrict t] f,
310-
from ae_of_ae_restrict_of_ae_restrict_compl this hf.ae_eq_zero_compl.symm.le,
310+
from ae_of_ae_restrict_of_ae_restrict_compl _ this hf.ae_eq_zero_compl.symm.le,
311311
haveI : sigma_finite (μ.restrict t) := hf.sigma_finite_restrict,
312312
refine ae_nonneg_of_forall_set_integral_nonneg_of_sigma_finite (λ s hs hμts, _)
313313
(λ s hs hμts, _),
@@ -432,7 +432,7 @@ lemma ae_fin_strongly_measurable.ae_eq_zero_of_forall_set_integral_eq_zero {f :
432432
begin
433433
let t := hf.sigma_finite_set,
434434
suffices : f =ᵐ[μ.restrict t] 0,
435-
from ae_of_ae_restrict_of_ae_restrict_compl this hf.ae_eq_zero_compl,
435+
from ae_of_ae_restrict_of_ae_restrict_compl _ this hf.ae_eq_zero_compl,
436436
haveI : sigma_finite (μ.restrict t) := hf.sigma_finite_restrict,
437437
refine ae_eq_zero_of_forall_set_integral_eq_of_sigma_finite _ _,
438438
{ intros s hs hμs,
@@ -492,7 +492,7 @@ begin
492492
exact eventually_of_forall htf_zero, },
493493
have hf_meas_m : @measurable _ _ m _ f, from hf.measurable,
494494
suffices : f =ᵐ[μ.restrict t] 0,
495-
from ae_of_ae_restrict_of_ae_restrict_compl this htf_zero,
495+
from ae_of_ae_restrict_of_ae_restrict_compl _ this htf_zero,
496496
refine measure_eq_zero_of_trim_eq_zero hm _,
497497
refine ae_eq_zero_of_forall_set_integral_eq_of_sigma_finite _ _,
498498
{ intros s hs hμs,

src/measure_theory/function/l1_space.lean

Lines changed: 46 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -592,34 +592,57 @@ end
592592
lemma of_real_to_real_ae_eq {f : α → ℝ≥0∞} (hf : ∀ᵐ x ∂μ, f x < ∞) :
593593
(λ x, ennreal.of_real (f x).to_real) =ᵐ[μ] f :=
594594
begin
595-
rw ae_iff at hf,
596-
rw [filter.eventually_eq, ae_iff],
597-
have : {x | ¬ ennreal.of_real (f x).to_real = f x} = {x | f x = ∞},
598-
{ ext x,
599-
simp only [ne.def, set.mem_set_of_eq],
600-
split; intro hx,
601-
{ by_contra hntop,
602-
exact hx (ennreal.of_real_to_real hntop) },
603-
{ rw hx, simp } },
604-
rw this,
605-
simpa using hf,
595+
filter_upwards [hf],
596+
assume x hx,
597+
simp only [hx.ne, of_real_to_real, ne.def, not_false_iff],
598+
end
599+
600+
lemma coe_to_nnreal_ae_eq {f : α → ℝ≥0∞} (hf : ∀ᵐ x ∂μ, f x < ∞) :
601+
(λ x, ((f x).to_nnreal : ℝ≥0∞)) =ᵐ[μ] f :=
602+
begin
603+
filter_upwards [hf],
604+
assume x hx,
605+
simp only [hx.ne, ne.def, not_false_iff, coe_to_nnreal],
606+
end
607+
608+
lemma integrable_with_density_iff_integrable_smul
609+
{E : Type*} [normed_group E] [normed_space ℝ E] [second_countable_topology E]
610+
[measurable_space E] [borel_space E]
611+
{f : α → ℝ≥0} (hf : measurable f) {g : α → E} :
612+
integrable g (μ.with_density (λ x, (f x : ℝ≥0∞))) ↔ integrable (λ x, (f x : ℝ) • g x) μ :=
613+
begin
614+
by_cases H : ae_measurable (λ (x : α), (f x : ℝ) • g x) μ,
615+
{ simp only [integrable, ae_measurable_with_density_iff hf, has_finite_integral, H, true_and],
616+
rw lintegral_with_density_eq_lintegral_mul₀' hf.coe_nnreal_ennreal.ae_measurable,
617+
{ congr',
618+
ext1 x,
619+
simp only [nnnorm_smul, nnreal.nnnorm_eq, coe_mul, pi.mul_apply] },
620+
{ rw ae_measurable_with_density_ennreal_iff hf,
621+
convert H.nnnorm.coe_nnreal_ennreal,
622+
ext1 x,
623+
simp only [nnnorm_smul, nnreal.nnnorm_eq, coe_mul] } },
624+
{ simp only [integrable, ae_measurable_with_density_iff hf, H, false_and] }
625+
end
626+
627+
lemma integrable_with_density_iff_integrable_smul'
628+
{E : Type*} [normed_group E] [normed_space ℝ E] [second_countable_topology E]
629+
[measurable_space E] [borel_space E]
630+
{f : α → ℝ≥0∞} (hf : measurable f) (hflt : ∀ᵐ x ∂μ, f x < ∞) {g : α → E} :
631+
integrable g (μ.with_density f) ↔ integrable (λ x, (f x).to_real • g x) μ :=
632+
begin
633+
rw [← with_density_congr_ae (coe_to_nnreal_ae_eq hflt),
634+
integrable_with_density_iff_integrable_smul],
635+
{ refl },
636+
{ exact hf.ennreal_to_nnreal },
606637
end
607638

608639
lemma integrable_with_density_iff {f : α → ℝ≥0∞} (hf : measurable f)
609-
(hflt : ∀ᵐ x ∂μ, f x < ∞) {g : α → ℝ} (hg : measurable g) :
640+
(hflt : ∀ᵐ x ∂μ, f x < ∞) {g : α → ℝ} :
610641
integrable g (μ.with_density f) ↔ integrable (λ x, g x * (f x).to_real) μ :=
611642
begin
612-
simp only [integrable, has_finite_integral, hg.ae_measurable.mul hf.ae_measurable.ennreal_to_real,
613-
hg.ae_measurable, true_and, coe_mul, normed_field.nnnorm_mul],
614-
suffices h_int_eq : ∫⁻ a, ∥g a∥₊ ∂μ.with_density f = ∫⁻ a, ∥g a∥₊ * ∥(f a).to_real∥₊ ∂μ,
615-
by rw h_int_eq,
616-
rw lintegral_with_density_eq_lintegral_mul _ hf hg.nnnorm.coe_nnreal_ennreal,
617-
refine lintegral_congr_ae _,
618-
rw mul_comm,
619-
refine filter.eventually_eq.mul (ae_eq_refl _) ((of_real_to_real_ae_eq hflt).symm.trans _),
620-
convert ae_eq_refl _,
621-
ext1 x,
622-
exact real.ennnorm_eq_of_real ennreal.to_real_nonneg,
643+
have : (λ x, g x * (f x).to_real) = (λ x, (f x).to_real • g x), by simp [mul_comm],
644+
rw this,
645+
exact integrable_with_density_iff_integrable_smul' hf hflt,
623646
end
624647

625648
lemma mem_ℒ1_to_real_of_lintegral_ne_top

0 commit comments

Comments
 (0)