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

Commit a95b442

Browse files
committed
feat(probability/martingale): Doob's maximal inequality (#14737)
1 parent bd9c307 commit a95b442

File tree

4 files changed

+167
-1
lines changed

4 files changed

+167
-1
lines changed

src/measure_theory/integral/set_integral.lean

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,14 @@ lemma set_integral_mono_set (hfi : integrable_on f t μ) (hf : 0 ≤ᵐ[μ.restr
448448
∫ x in s, f x ∂μ ≤ ∫ x in t, f x ∂μ :=
449449
integral_mono_measure (measure.restrict_mono_ae hst) hf hfi
450450

451+
lemma set_integral_ge_of_const_le {c : ℝ} (hs : measurable_set s) (hμs : μ s ≠ ∞)
452+
(hf : ∀ x ∈ s, c ≤ f x) (hfint : integrable_on (λ (x : α), f x) s μ) :
453+
c * (μ s).to_real ≤ ∫ x in s, f x ∂μ :=
454+
begin
455+
rw [mul_comm, ← smul_eq_mul, ← set_integral_const c],
456+
exact set_integral_mono_on (integrable_on_const.2 (or.inr hμs.lt_top)) hfint hs hf,
457+
end
458+
451459
end mono
452460

453461
section nonneg

src/measure_theory/lattice.lean

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,3 +197,34 @@ include m
197197
end measurable_inf₂
198198

199199
end inf
200+
201+
section semilattice_sup
202+
203+
open finset
204+
205+
variables {δ : Type*} [measurable_space δ] [semilattice_sup α] [has_measurable_sup₂ α]
206+
207+
@[measurability] lemma finset.measurable_sup' {ι : Type*} {s : finset ι} (hs : s.nonempty)
208+
{f : ι → δ → α} (hf : ∀ n ∈ s, measurable (f n)) :
209+
measurable (s.sup' hs f) :=
210+
finset.sup'_induction hs _ (λ f hf g hg, hf.sup hg) (λ n hn, hf n hn)
211+
212+
@[measurability] lemma finset.measurable_range_sup'
213+
{f : ℕ → δ → α} {n : ℕ} (hf : ∀ k ≤ n, measurable (f k)) :
214+
measurable ((range (n + 1)).sup' nonempty_range_succ f) :=
215+
begin
216+
simp_rw ← nat.lt_succ_iff at hf,
217+
refine finset.measurable_sup' _ _,
218+
simpa [finset.mem_range],
219+
end
220+
221+
@[measurability] lemma finset.measurable_range_sup''
222+
{f : ℕ → δ → α} {n : ℕ} (hf : ∀ k ≤ n, measurable (f k)) :
223+
measurable (λ x, (range (n + 1)).sup' nonempty_range_succ (λ k, f k x)) :=
224+
begin
225+
convert finset.measurable_range_sup' hf,
226+
ext x,
227+
simp,
228+
end
229+
230+
end semilattice_sup

src/probability/hitting_time.lean

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,17 @@ begin
181181
λ hj, f.mono hj.2 _ ((hu j).measurable hs)) }
182182
end
183183

184+
lemma stopped_value_hitting_mem [conditionally_complete_linear_order ι] [is_well_order ι (<)]
185+
{u : ι → α → β} {s : set β} {n m : ι} {x : α} (h : ∃ j ∈ set.Icc n m, u j x ∈ s) :
186+
stopped_value u (hitting u s n m) x ∈ s :=
187+
begin
188+
simp only [stopped_value, hitting, if_pos h],
189+
obtain ⟨j, hj₁, hj₂⟩ := h,
190+
have : Inf (set.Icc n m ∩ {i | u i x ∈ s}) ∈ set.Icc n m ∩ {i | u i x ∈ s} :=
191+
Inf_mem (set.nonempty_of_mem ⟨hj₁, hj₂⟩),
192+
exact this.2,
193+
end
194+
184195
section complete_lattice
185196

186197
variables [complete_lattice ι] {u : ι → α → β} {s : set β} {f : filtration ι m}

src/probability/martingale.lean

Lines changed: 117 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Rémy Degenne, Kexing Ying
55
-/
66
import probability.notation
7-
import probability.stopping
7+
import probability.hitting_time
88

99
/-!
1010
# Martingales
@@ -488,6 +488,122 @@ lemma submartingale_iff_expected_stopped_value_mono [is_finite_measure μ]
488488
⟨λ hf _ _ hτ hπ hle ⟨N, hN⟩, hf.expected_stopped_value_mono hτ hπ hle hN,
489489
submartingale_of_expected_stopped_value_mono hadp hint⟩
490490

491+
section maximal
492+
493+
open finset
494+
495+
lemma smul_le_stopped_value_hitting [is_finite_measure μ]
496+
{f : ℕ → α → ℝ} (hsub : submartingale f 𝒢 μ) {ε : ℝ≥0} (n : ℕ) :
497+
ε • μ {x | (ε : ℝ) ≤ (range (n + 1)).sup' nonempty_range_succ (λ k, f k x)} ≤
498+
ennreal.of_real (∫ x in {x | (ε : ℝ) ≤ (range (n + 1)).sup' nonempty_range_succ (λ k, f k x)},
499+
stopped_value f (hitting f {y : ℝ | ↑ε ≤ y} 0 n) x ∂μ) :=
500+
begin
501+
have hn : set.Icc 0 n = {k | k ≤ n},
502+
{ ext x, simp },
503+
have : ∀ x, ((ε : ℝ) ≤ (range (n + 1)).sup' nonempty_range_succ (λ k, f k x)) →
504+
(ε : ℝ) ≤ stopped_value f (hitting f {y : ℝ | ↑ε ≤ y} 0 n) x,
505+
{ intros x hx,
506+
simp_rw [le_sup'_iff, mem_range, nat.lt_succ_iff] at hx,
507+
refine stopped_value_hitting_mem _,
508+
simp only [set.mem_set_of_eq, exists_prop, hn],
509+
exact let ⟨j, hj₁, hj₂⟩ := hx in ⟨j, hj₁, hj₂⟩ },
510+
have h := set_integral_ge_of_const_le (measurable_set_le measurable_const
511+
(finset.measurable_range_sup'' (λ n _, (hsub.strongly_measurable n).measurable.le (𝒢.le n))))
512+
(measure_ne_top _ _) this
513+
(integrable.integrable_on (integrable_stopped_value (hitting_is_stopping_time
514+
hsub.adapted measurable_set_Ici) hsub.integrable hitting_le)),
515+
rw [ennreal.le_of_real_iff_to_real_le, ennreal.to_real_smul],
516+
{ exact h },
517+
{ exact ennreal.mul_ne_top (by simp) (measure_ne_top _ _) },
518+
{ exact le_trans (mul_nonneg ε.coe_nonneg ennreal.to_real_nonneg) h }
519+
end
520+
521+
/-- **Doob's maximal inequality**: Given a non-negative submartingale `f`, for all `ε : ℝ≥0`,
522+
we have `ε • μ {ε ≤ f* n} ≤ ∫ x in {ε ≤ f* n}, f n` where `f* n x = max_{k ≤ n}, f k x`.
523+
524+
In some literature, the Doob's maximal inequality refers to what we call Doob's Lp inequality
525+
(which is a corollary of this lemma and will be proved in an upcomming PR). -/
526+
lemma maximal_ineq [is_finite_measure μ]
527+
{f : ℕ → α → ℝ} (hsub : submartingale f 𝒢 μ) (hnonneg : 0 ≤ f) {ε : ℝ≥0} (n : ℕ) :
528+
ε • μ {x | (ε : ℝ) ≤ (range (n + 1)).sup' nonempty_range_succ (λ k, f k x)} ≤
529+
ennreal.of_real (∫ x in {x | (ε : ℝ) ≤ (range (n + 1)).sup' nonempty_range_succ (λ k, f k x)},
530+
f n x ∂μ) :=
531+
begin
532+
suffices : ε • μ {x | (ε : ℝ) ≤ (range (n + 1)).sup' nonempty_range_succ (λ k, f k x)} +
533+
ennreal.of_real (∫ x in {x | ((range (n + 1)).sup' nonempty_range_succ (λ k, f k x)) < ε},
534+
f n x ∂μ) ≤ ennreal.of_real (μ[f n]),
535+
{ have hadd : ennreal.of_real (∫ (x : α), f n x ∂μ) =
536+
ennreal.of_real (∫ (x : α) in
537+
{x : α | ↑ε ≤ ((range (n + 1)).sup' nonempty_range_succ (λ k, f k x))}, f n x ∂μ) +
538+
ennreal.of_real (∫ (x : α) in
539+
{x : α | ((range (n + 1)).sup' nonempty_range_succ (λ k, f k x)) < ↑ε}, f n x ∂μ),
540+
{ rw [← ennreal.of_real_add, ← integral_union],
541+
{ conv_lhs { rw ← integral_univ },
542+
convert rfl,
543+
ext x,
544+
change (ε : ℝ) ≤ _ ∨ _ < (ε : ℝ) ↔ _,
545+
simp only [le_or_lt, true_iff] },
546+
{ rintro x ⟨hx₁ : _ ≤ _, hx₂ : _ < _⟩,
547+
exact (not_le.2 hx₂) hx₁ },
548+
{ exact (measurable_set_lt (finset.measurable_range_sup''
549+
(λ n _, (hsub.strongly_measurable n).measurable.le (𝒢.le n))) measurable_const) },
550+
exacts [(hsub.integrable _).integrable_on, (hsub.integrable _).integrable_on,
551+
integral_nonneg (hnonneg _), integral_nonneg (hnonneg _)] },
552+
rwa [hadd, ennreal.add_le_add_iff_right ennreal.of_real_ne_top] at this },
553+
calc ε • μ {x | (ε : ℝ) ≤ (range (n + 1)).sup' nonempty_range_succ (λ k, f k x)}
554+
+ ennreal.of_real (∫ x in {x | ((range (n + 1)).sup' nonempty_range_succ (λ k, f k x)) < ε},
555+
f n x ∂μ)
556+
≤ ennreal.of_real (∫ x in {x | (ε : ℝ) ≤ (range (n + 1)).sup' nonempty_range_succ (λ k, f k x)},
557+
stopped_value f (hitting f {y : ℝ | ↑ε ≤ y} 0 n) x ∂μ)
558+
+ ennreal.of_real (∫ x in {x | ((range (n + 1)).sup' nonempty_range_succ (λ k, f k x)) < ε},
559+
stopped_value f (hitting f {y : ℝ | ↑ε ≤ y} 0 n) x ∂μ) :
560+
begin
561+
refine add_le_add (smul_le_stopped_value_hitting hsub _)
562+
(ennreal.of_real_le_of_real (set_integral_mono_on (hsub.integrable n).integrable_on
563+
(integrable.integrable_on (integrable_stopped_value
564+
(hitting_is_stopping_time hsub.adapted measurable_set_Ici) hsub.integrable hitting_le))
565+
(measurable_set_lt (finset.measurable_range_sup''
566+
(λ n _, (hsub.strongly_measurable n).measurable.le (𝒢.le n))) measurable_const) _)),
567+
intros x hx,
568+
rw set.mem_set_of_eq at hx,
569+
have : hitting f {y : ℝ | ↑ε ≤ y} 0 n x = n,
570+
{ simp only [hitting, set.mem_set_of_eq, exists_prop, pi.coe_nat, nat.cast_id,
571+
ite_eq_right_iff, forall_exists_index, and_imp],
572+
intros m hm hεm,
573+
exact false.elim ((not_le.2 hx)
574+
((le_sup'_iff _).2 ⟨m, mem_range.2 (nat.lt_succ_of_le hm.2), hεm⟩)) },
575+
simp_rw [stopped_value, this],
576+
end
577+
... = ennreal.of_real (∫ x, stopped_value f (hitting f {y : ℝ | ↑ε ≤ y} 0 n) x ∂μ) :
578+
begin
579+
rw [← ennreal.of_real_add, ← integral_union],
580+
{ conv_rhs { rw ← integral_univ },
581+
convert rfl,
582+
ext x,
583+
change _ ↔ (ε : ℝ) ≤ _ ∨ _ < (ε : ℝ),
584+
simp only [le_or_lt, iff_true] },
585+
{ rintro x ⟨hx₁ : _ ≤ _, hx₂ : _ < _⟩,
586+
exact (not_le.2 hx₂) hx₁ },
587+
{ exact (measurable_set_lt (finset.measurable_range_sup''
588+
(λ n _, (hsub.strongly_measurable n).measurable.le (𝒢.le n))) measurable_const) },
589+
{ exact (integrable.integrable_on (integrable_stopped_value
590+
(hitting_is_stopping_time hsub.adapted measurable_set_Ici) hsub.integrable hitting_le)) },
591+
{ exact (integrable.integrable_on (integrable_stopped_value
592+
(hitting_is_stopping_time hsub.adapted measurable_set_Ici) hsub.integrable hitting_le)) },
593+
exacts [integral_nonneg (λ x, hnonneg _ _), integral_nonneg (λ x, hnonneg _ _)],
594+
end
595+
... ≤ ennreal.of_real (μ[f n]) :
596+
begin
597+
refine ennreal.of_real_le_of_real _,
598+
rw ← stopped_value_const f n,
599+
exact hsub.expected_stopped_value_mono
600+
(hitting_is_stopping_time hsub.adapted measurable_set_Ici)
601+
(is_stopping_time_const _ _) (λ x, hitting_le x) (λ x, le_rfl : ∀ x, n ≤ n),
602+
end
603+
end
604+
605+
end maximal
606+
491607
end nat
492608

493609
end measure_theory

0 commit comments

Comments
 (0)