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

Commit 6dd5e43

Browse files
kex-yRemyDegenne
andcommitted
feat(measure_theory/function/uniform_integrable): conditional expectations form a uniformly integrable class (#15378)
Useful for the L1 martingale convergence theorem. Co-authored-by: RemyDegenne <Remydegenne@gmail.com>
1 parent b8aa28d commit 6dd5e43

File tree

2 files changed

+122
-26
lines changed

2 files changed

+122
-26
lines changed

src/measure_theory/function/conditional_expectation.lean

Lines changed: 113 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Authors: Rémy Degenne
77
import analysis.inner_product_space.projection
88
import measure_theory.function.l2_space
99
import measure_theory.decomposition.radon_nikodym
10+
import measure_theory.function.uniform_integrable
1011

1112
/-! # Conditional expectation
1213
@@ -68,6 +69,9 @@ However, some lemmas also use `𝕜 : is_R_or_C`:
6869
* results about scalar multiplication are stated not only for `ℝ` but also for `𝕜` if we happen to
6970
have `normed_space 𝕜 F`.
7071
72+
TODO: split this file in two with one containing constructions and the other with basic
73+
properties.
74+
7175
## Tags
7276
7377
conditional expectation, conditional expected value
@@ -2145,29 +2149,6 @@ begin
21452149
((condexp_L1_mono hf hg hfg).trans_eq (condexp_ae_eq_condexp_L1 hm _).symm),
21462150
end
21472151

2148-
section real
2149-
2150-
lemma rn_deriv_ae_eq_condexp {hm : m ≤ m0} [hμm : sigma_finite (μ.trim hm)] {f : α → ℝ}
2151-
(hf : integrable f μ) :
2152-
signed_measure.rn_deriv ((μ.with_densityᵥ f).trim hm) (μ.trim hm) =ᵐ[μ] μ[f | m] :=
2153-
begin
2154-
refine ae_eq_condexp_of_forall_set_integral_eq hm hf _ _ _,
2155-
{ exact λ _ _ _, (integrable_of_integrable_trim hm (signed_measure.integrable_rn_deriv
2156-
((μ.with_densityᵥ f).trim hm) (μ.trim hm))).integrable_on },
2157-
{ intros s hs hlt,
2158-
conv_rhs { rw [← hf.with_densityᵥ_trim_eq_integral hm hs,
2159-
← signed_measure.with_densityᵥ_rn_deriv_eq ((μ.with_densityᵥ f).trim hm) (μ.trim hm)
2160-
(hf.with_densityᵥ_trim_absolutely_continuous hm)], },
2161-
rw [with_densityᵥ_apply
2162-
(signed_measure.integrable_rn_deriv ((μ.with_densityᵥ f).trim hm) (μ.trim hm)) hs,
2163-
← set_integral_trim hm _ hs],
2164-
exact (signed_measure.measurable_rn_deriv _ _).strongly_measurable },
2165-
{ exact strongly_measurable.ae_strongly_measurable'
2166-
(signed_measure.measurable_rn_deriv _ _).strongly_measurable },
2167-
end
2168-
2169-
end real
2170-
21712152
section indicator
21722153

21732154
lemma condexp_ae_eq_restrict_zero (hs : measurable_set[m] s) (hf : f =ᵐ[μ.restrict s] 0) :
@@ -2336,6 +2317,115 @@ end
23362317

23372318
end indicator
23382319

2320+
section real
2321+
2322+
lemma rn_deriv_ae_eq_condexp {hm : m ≤ m0} [hμm : sigma_finite (μ.trim hm)] {f : α → ℝ}
2323+
(hf : integrable f μ) :
2324+
signed_measure.rn_deriv ((μ.with_densityᵥ f).trim hm) (μ.trim hm) =ᵐ[μ] μ[f | m] :=
2325+
begin
2326+
refine ae_eq_condexp_of_forall_set_integral_eq hm hf _ _ _,
2327+
{ exact λ _ _ _, (integrable_of_integrable_trim hm (signed_measure.integrable_rn_deriv
2328+
((μ.with_densityᵥ f).trim hm) (μ.trim hm))).integrable_on },
2329+
{ intros s hs hlt,
2330+
conv_rhs { rw [← hf.with_densityᵥ_trim_eq_integral hm hs,
2331+
← signed_measure.with_densityᵥ_rn_deriv_eq ((μ.with_densityᵥ f).trim hm) (μ.trim hm)
2332+
(hf.with_densityᵥ_trim_absolutely_continuous hm)], },
2333+
rw [with_densityᵥ_apply
2334+
(signed_measure.integrable_rn_deriv ((μ.with_densityᵥ f).trim hm) (μ.trim hm)) hs,
2335+
← set_integral_trim hm _ hs],
2336+
exact (signed_measure.measurable_rn_deriv _ _).strongly_measurable },
2337+
{ exact strongly_measurable.ae_strongly_measurable'
2338+
(signed_measure.measurable_rn_deriv _ _).strongly_measurable },
2339+
end
2340+
2341+
/-- TODO: this should be generalized and proved using Jensen's inequality
2342+
for the conditional expectation (not in mathlib yet) .-/
2343+
lemma snorm_one_condexp_le_snorm (f : α → ℝ) :
2344+
snorm (μ[f | m]) 1 μ ≤ snorm f 1 μ :=
2345+
begin
2346+
by_cases hf : integrable f μ,
2347+
swap, { rw [snorm_congr_ae (condexp_undef hf), snorm_zero], exact zero_le _ },
2348+
by_cases hm : m ≤ m0,
2349+
swap, { rw [condexp_of_not_le hm, snorm_zero], exact zero_le _ },
2350+
by_cases hsig : sigma_finite (μ.trim hm),
2351+
swap, { rw [condexp_of_not_sigma_finite hm hsig, snorm_zero], exact zero_le _ },
2352+
calc snorm (μ[f | m]) 1 μ ≤ snorm (μ[|f| | m]) 1 μ :
2353+
begin
2354+
refine snorm_mono_ae _,
2355+
filter_upwards [@condexp_mono _ m m0 _ _ _ _ _ _ _ _ hf hf.abs
2356+
(@ae_of_all _ m0 _ μ (λ x, le_abs_self (f x) : ∀ x, f x ≤ |f x|)),
2357+
eventually_le.trans (condexp_neg f).symm.le
2358+
(@condexp_mono _ m m0 _ _ _ _ _ _ _ _ hf.neg hf.abs
2359+
(@ae_of_all _ m0 _ μ (λ x, neg_le_abs_self (f x) : ∀ x, -f x ≤ |f x|)))] with x hx₁ hx₂,
2360+
exact abs_le_abs hx₁ hx₂,
2361+
end
2362+
... = snorm f 1 μ :
2363+
begin
2364+
rw [snorm_one_eq_lintegral_nnnorm, snorm_one_eq_lintegral_nnnorm,
2365+
← ennreal.to_real_eq_to_real (ne_of_lt integrable_condexp.2) (ne_of_lt hf.2),
2366+
← integral_norm_eq_lintegral_nnnorm
2367+
(strongly_measurable_condexp.mono hm).ae_strongly_measurable,
2368+
← integral_norm_eq_lintegral_nnnorm hf.1],
2369+
simp_rw [real.norm_eq_abs],
2370+
rw ← @integral_condexp _ _ _ _ _ m m0 μ _ hm hsig hf.abs,
2371+
refine integral_congr_ae _,
2372+
have : 0 ≤ᵐ[μ] μ[|f| | m],
2373+
{ rw ← @condexp_zero α ℝ _ _ _ m m0 μ,
2374+
exact condexp_mono (integrable_zero _ _ _) hf.abs
2375+
(@ae_of_all _ m0 _ μ (λ x, abs_nonneg (f x) : ∀ x, 0 ≤ |f x|)) },
2376+
filter_upwards [this] with x hx,
2377+
exact abs_eq_self.2 hx
2378+
end
2379+
end
2380+
2381+
/-- Given a integrable function `g`, the conditional expectations of `g` with respect to
2382+
a sequence of sub-σ-algebras is uniformly integrable. -/
2383+
lemma integrable.uniform_integrable_condexp {ι : Type*} [is_finite_measure μ]
2384+
{g : α → ℝ} (hint : integrable g μ) {ℱ : ι → measurable_space α} (hℱ : ∀ i, ℱ i ≤ m0) :
2385+
uniform_integrable (λ i, μ[g | ℱ i]) 1 μ :=
2386+
begin
2387+
have hmeas : ∀ n, ∀ C, measurable_set {x | C ≤ ∥μ[g | ℱ n] x∥₊} :=
2388+
λ n C, measurable_set_le measurable_const
2389+
(strongly_measurable_condexp.mono (hℱ n)).measurable.nnnorm,
2390+
have hg : mem_ℒp g 1 μ := mem_ℒp_one_iff_integrable.2 hint,
2391+
refine uniform_integrable_of le_rfl ennreal.one_ne_top
2392+
(λ n, strongly_measurable_condexp.mono (hℱ n)) (λ ε hε, _),
2393+
by_cases hne : snorm g 1 μ = 0,
2394+
{ rw snorm_eq_zero_iff hg.1 one_ne_zero at hne,
2395+
refine ⟨0, λ n, (le_of_eq $ (snorm_eq_zero_iff
2396+
((strongly_measurable_condexp.mono (hℱ n)).ae_strongly_measurable.indicator (hmeas n 0))
2397+
one_ne_zero).2 _).trans (zero_le _)⟩,
2398+
filter_upwards [@condexp_congr_ae _ _ _ _ _ (ℱ n) m0 μ _ _ hne] with x hx,
2399+
simp only [zero_le', set.set_of_true, set.indicator_univ, pi.zero_apply, hx, condexp_zero] },
2400+
obtain ⟨δ, hδ, h⟩ := hg.snorm_indicator_le μ le_rfl ennreal.one_ne_top hε,
2401+
set C : ℝ≥0 := ⟨δ, hδ.le⟩⁻¹ * (snorm g 1 μ).to_nnreal with hC,
2402+
have hCpos : 0 < C :=
2403+
mul_pos (nnreal.inv_pos.2 hδ) (ennreal.to_nnreal_pos hne hg.snorm_lt_top.ne),
2404+
have : ∀ n, μ {x : α | C ≤ ∥μ[g | ℱ n] x∥₊} ≤ ennreal.of_real δ,
2405+
{ intro n,
2406+
have := mul_meas_ge_le_pow_snorm' μ one_ne_zero ennreal.one_ne_top
2407+
((@strongly_measurable_condexp _ _ _ _ _ (ℱ n) _ μ g).mono
2408+
(hℱ n)).ae_strongly_measurable C,
2409+
rw [ennreal.one_to_real, ennreal.rpow_one, ennreal.rpow_one, mul_comm,
2410+
← ennreal.le_div_iff_mul_le (or.inl (ennreal.coe_ne_zero.2 hCpos.ne.symm))
2411+
(or.inl ennreal.coe_lt_top.ne)] at this,
2412+
simp_rw [ennreal.coe_le_coe] at this,
2413+
refine this.trans _,
2414+
rw [ennreal.div_le_iff_le_mul (or.inl (ennreal.coe_ne_zero.2 hCpos.ne.symm))
2415+
(or.inl ennreal.coe_lt_top.ne), hC, nonneg.inv_mk, ennreal.coe_mul,
2416+
ennreal.coe_to_nnreal hg.snorm_lt_top.ne, ← mul_assoc, ← ennreal.of_real_eq_coe_nnreal,
2417+
← ennreal.of_real_mul hδ.le, mul_inv_cancel hδ.ne.symm, ennreal.of_real_one, one_mul],
2418+
exact snorm_one_condexp_le_snorm _ },
2419+
refine ⟨C, λ n, le_trans _ (h {x : α | C ≤ ∥μ[g | ℱ n] x∥₊} (hmeas n C) (this n))⟩,
2420+
have hmeasℱ : measurable_set[ℱ n] {x : α | C ≤ ∥μ[g | ℱ n] x∥₊} :=
2421+
@measurable_set_le _ _ _ _ _ (ℱ n) _ _ _ _ _ measurable_const
2422+
(@measurable.nnnorm _ _ _ _ _ (ℱ n) _ strongly_measurable_condexp.measurable),
2423+
rw ← snorm_congr_ae (condexp_indicator hint hmeasℱ),
2424+
exact snorm_one_condexp_le_snorm _,
2425+
end
2426+
2427+
end real
2428+
23392429
end condexp
23402430

23412431
end measure_theory

src/probability/stopping.lean

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ Copyright (c) 2021 Kexing Ying. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Kexing Ying
55
-/
6-
import measure_theory.constructions.borel_space
7-
import measure_theory.function.l1_space
8-
import measure_theory.function.strongly_measurable
6+
import measure_theory.function.conditional_expectation
97
import topology.instances.discrete
108

119
/-!
@@ -220,6 +218,14 @@ instance is_finite_measure.sigma_finite_filtration [preorder ι] (μ : measure
220218
sigma_finite_filtration μ f :=
221219
⟨λ n, by apply_instance⟩
222220

221+
/-- Given a integrable function `g`, the conditional expectations of `g` with respect to a
222+
filtration is uniformly integrable. -/
223+
lemma integrable.uniform_integrable_condexp_filtration
224+
[preorder ι] {μ : measure α} [is_finite_measure μ] {f : filtration ι m}
225+
{g : α → ℝ} (hg : integrable g μ) :
226+
uniform_integrable (λ i, μ[g | f i]) 1 μ :=
227+
hg.uniform_integrable_condexp f.le
228+
223229
section adapted_process
224230

225231
variables [topological_space β] [preorder ι]

0 commit comments

Comments
 (0)