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

Commit 1ee91a5

Browse files
kex-yRemyDegenne
andcommitted
feat(probability_theory/stopping): define progressively measurable processes (#11350)
* Define progressively measurable processes (`prog_measurable`), which is the correct strengthening of `adapted` to get that the stopped process is also progressively measurable. * Prove that an adapted continuous process is progressively measurable. For discrete time processes, progressively measurable is equivalent to `adapted` . This PR also changes some measurable_space arguments in `measurable_space.lean` from typeclass arguments to implicit. Co-authored-by: RemyDegenne <Remydegenne@gmail.com>
1 parent e871be2 commit 1ee91a5

File tree

4 files changed

+332
-111
lines changed

4 files changed

+332
-111
lines changed

src/measure_theory/function/conditional_expectation.lean

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ variables (F)
215215
def Lp_meas_subgroup (m : measurable_space α) [measurable_space α] (p : ℝ≥0∞) (μ : measure α) :
216216
add_subgroup (Lp F p μ) :=
217217
{ carrier := {f : (Lp F p μ) | ae_measurable' m f μ} ,
218-
zero_mem' := ⟨(0 : α → F), @measurable_zero _ α m _ _, Lp.coe_fn_zero _ _ _⟩,
218+
zero_mem' := ⟨(0 : α → F), @measurable_zero _ α _ m _, Lp.coe_fn_zero _ _ _⟩,
219219
add_mem' := λ f g hf hg, (hf.add hg).congr (Lp.coe_fn_add f g).symm,
220220
neg_mem' := λ f hf, ae_measurable'.congr hf.neg (Lp.coe_fn_neg f).symm, }
221221

@@ -226,7 +226,7 @@ def Lp_meas [opens_measurable_space 𝕜] (m : measurable_space α) [measurable_
226226
(μ : measure α) :
227227
submodule 𝕜 (Lp F p μ) :=
228228
{ carrier := {f : (Lp F p μ) | ae_measurable' m f μ} ,
229-
zero_mem' := ⟨(0 : α → F), @measurable_zero _ α m _ _, Lp.coe_fn_zero _ _ _⟩,
229+
zero_mem' := ⟨(0 : α → F), @measurable_zero _ α _ m _, Lp.coe_fn_zero _ _ _⟩,
230230
add_mem' := λ f g hf hg, (hf.add hg).congr (Lp.coe_fn_add f g).symm,
231231
smul_mem' := λ c f hf, (hf.const_smul c).congr (Lp.coe_fn_smul c f).symm, }
232232
variables {F 𝕜}
@@ -1575,7 +1575,7 @@ begin
15751575
exact ae_measurable'_condexp_L1_clm _, },
15761576
{ rw condexp_L1_undef hf,
15771577
refine ae_measurable'.congr _ (coe_fn_zero _ _ _).symm,
1578-
exact measurable.ae_measurable' (@measurable_zero _ _ m _ _), },
1578+
exact measurable.ae_measurable' (@measurable_zero _ _ _ m _), },
15791579
end
15801580

15811581
lemma integrable_condexp_L1 (f : α → F') : integrable (condexp_L1 hm μ f) μ :=
@@ -1676,7 +1676,7 @@ begin
16761676
end
16771677

16781678
@[simp] lemma condexp_zero : μ[(0 : α → F')|m,hm] = 0 :=
1679-
condexp_of_measurable (@measurable_zero _ _ m _ _) (integrable_zero _ _ _)
1679+
condexp_of_measurable (@measurable_zero _ _ _ m _) (integrable_zero _ _ _)
16801680

16811681
lemma measurable_condexp : measurable[m] (μ[f|m,hm]) :=
16821682
begin

src/measure_theory/function/strongly_measurable.lean

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -594,4 +594,37 @@ lemma Lp.fin_strongly_measurable (f : Lp G p μ) (hp_ne_zero : p ≠ 0) (hp_ne_t
594594

595595
end second_countable_topology
596596

597+
lemma measurable_uncurry_of_continuous_of_measurable {α β ι : Type*} [emetric_space ι]
598+
[measurable_space ι] [second_countable_topology ι] [opens_measurable_space ι]
599+
{mβ : measurable_space β} [metric_space β] [borel_space β]
600+
{m : measurable_space α} {u : ι → α → β}
601+
(hu_cont : ∀ x, continuous (λ i, u i x)) (h : ∀ i, measurable (u i)) :
602+
measurable (function.uncurry u) :=
603+
begin
604+
obtain ⟨t_sf, ht_sf⟩ : ∃ t : ℕ → simple_func ι ι, ∀ j x,
605+
tendsto (λ n, u (t n j) x) at_top (𝓝 $ u j x),
606+
{ have h_str_meas : strongly_measurable (id : ι → ι), from strongly_measurable_id,
607+
refine ⟨h_str_meas.approx, λ j x, _⟩,
608+
exact ((hu_cont x).tendsto j).comp (h_str_meas.tendsto_approx j), },
609+
let U := λ (n : ℕ) (p : ι × α), u (t_sf n p.fst) p.snd,
610+
have h_tendsto : tendsto U at_top (𝓝 (λ p, u p.fst p.snd)),
611+
{ rw tendsto_pi_nhds,
612+
exact λ p, ht_sf p.fst p.snd, },
613+
refine measurable_of_tendsto_metric (λ n, _) h_tendsto,
614+
have h_meas : measurable (λ (p : (t_sf n).range × α), u ↑p.fst p.snd),
615+
{ have : (λ (p : ↥((t_sf n).range) × α), u ↑(p.fst) p.snd)
616+
= (λ (p : α × ((t_sf n).range)), u ↑(p.snd) p.fst) ∘ prod.swap,
617+
by refl,
618+
rw [this, @measurable_swap_iff α ↥((t_sf n).range) β m],
619+
haveI : encodable (t_sf n).range, from fintype.encodable ↥(t_sf n).range,
620+
exact measurable_from_prod_encodable (λ j, h j), },
621+
have : (λ p : ι × α, u (t_sf n p.fst) p.snd)
622+
= (λ p : ↥(t_sf n).range × α, u p.fst p.snd)
623+
∘ (λ p : ι × α, (⟨t_sf n p.fst, simple_func.mem_range_self _ _⟩, p.snd)),
624+
{ refl, },
625+
simp_rw [U, this],
626+
refine h_meas.comp (measurable.prod_mk _ measurable_snd),
627+
exact ((t_sf n).measurable.comp measurable_fst).subtype_mk,
628+
end
629+
597630
end measure_theory

src/measure_theory/measurable_space.lean

Lines changed: 60 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,10 @@ lemma measurable_generate_from [measurable_space α] {s : set (set β)} {f : α
174174
(h : ∀ t ∈ s, measurable_set (f ⁻¹' t)) : @measurable _ _ _ (generate_from s) f :=
175175
measurable.of_le_map $ generate_from_le h
176176

177-
variables [measurable_space β] [measurable_space γ] {f g : α → β}
177+
variables {f g : α → β}
178178

179179
section typeclass_measurable_space
180-
variable [measurable_space α]
180+
variables [measurable_space α] [measurable_space β] [measurable_space γ]
181181

182182
@[nontriviality, measurability]
183183
lemma subsingleton.measurable [subsingleton α] : measurable f :=
@@ -212,18 +212,21 @@ lemma measurable_of_fintype [fintype α] [measurable_singleton_class α] (f : α
212212

213213
end typeclass_measurable_space
214214

215-
variable {m : measurable_space α}
215+
variables {m : measurable_space α}
216216
include m
217217

218+
@[measurability] lemma measurable.iterate {f : α → α} (hf : measurable f) : ∀ n, measurable (f^[n])
219+
| 0 := measurable_id
220+
| (n+1) := (measurable.iterate n).comp hf
221+
222+
variables {mβ : measurable_space β}
223+
include
224+
218225
@[measurability]
219226
lemma measurable_set_preimage {t : set β} (hf : measurable f) (ht : measurable_set t) :
220227
measurable_set (f ⁻¹' t) :=
221228
hf ht
222229

223-
@[measurability] lemma measurable.iterate {f : α → α} (hf : measurable f) : ∀ n, measurable (f^[n])
224-
| 0 := measurable_id
225-
| (n+1) := (measurable.iterate n).comp hf
226-
227230
@[measurability]
228231
lemma measurable.piecewise {_ : decidable_pred (∈ s)} (hs : measurable_set s)
229232
(hf : measurable f) (hg : measurable g) :
@@ -274,8 +277,6 @@ end measurable_functions
274277

275278
section constructions
276279

277-
variables [measurable_space β] [measurable_space γ]
278-
279280
instance : measurable_space empty := ⊤
280281
instance : measurable_space punit := ⊤ -- this also works for `unit`
281282
instance : measurable_space bool := ⊤
@@ -290,7 +291,7 @@ instance : measurable_singleton_class ℕ := ⟨λ _, trivial⟩
290291
instance : measurable_singleton_class ℤ := ⟨λ _, trivial⟩
291292
instance : measurable_singleton_class ℚ := ⟨λ _, trivial⟩
292293

293-
lemma measurable_to_encodable [measurable_space α] [encodable α] {f : β → α}
294+
lemma measurable_to_encodable [measurable_space α] [encodable α] [measurable_space β] {f : β → α}
294295
(h : ∀ y, measurable_set (f ⁻¹' {f y})) :
295296
measurable f :=
296297
begin
@@ -342,7 +343,7 @@ end
342343
end nat
343344

344345
section quotient
345-
variables [measurable_space α]
346+
variables [measurable_space α] [measurable_space β]
346347

347348
instance {α} {r : α → α → Prop} [m : measurable_space α] : measurable_space (quot r) :=
348349
m.map (quot.mk r)
@@ -410,10 +411,20 @@ instance {p : α → Prop} [measurable_singleton_class α] : measurable_singleto
410411

411412
end
412413

413-
variables {m : measurable_space α}
414+
variables {m : measurable_space α} {mβ : measurable_space β}
414415

415416
include m
416417

418+
lemma measurable_set.subtype_image {s : set α} {t : set s}
419+
(hs : measurable_set s) : measurable_set t → measurable_set ((coe : s → α) '' t)
420+
| ⟨u, (hu : measurable_set u), (eq : coe ⁻¹' u = t)⟩ :=
421+
begin
422+
rw [← eq, subtype.image_preimage_coe],
423+
exact hu.inter hs
424+
end
425+
426+
include
427+
417428
@[measurability] lemma measurable.subtype_coe {p : β → Prop} {f : α → subtype p}
418429
(hf : measurable f) :
419430
measurable (λ a : α, (f a : β)) :=
@@ -424,14 +435,6 @@ lemma measurable.subtype_mk {p : β → Prop} {f : α → β} (hf : measurable f
424435
measurable (λ x, (⟨f x, h x⟩ : subtype p)) :=
425436
λ t ⟨s, hs⟩, hs.2by simp only [← preimage_comp, (∘), subtype.coe_mk, hf hs.1]
426437

427-
lemma measurable_set.subtype_image {s : set α} {t : set s}
428-
(hs : measurable_set s) : measurable_set t → measurable_set ((coe : s → α) '' t)
429-
| ⟨u, (hu : measurable_set u), (eq : coe ⁻¹' u = t)⟩ :=
430-
begin
431-
rw [← eq, subtype.image_preimage_coe],
432-
exact hu.inter hs
433-
end
434-
435438
lemma measurable_of_measurable_union_cover
436439
{f : α → β} (s t : set α) (hs : measurable_set s) (ht : measurable_set t) (h : univ ⊆ s ∪ t)
437440
(hc : measurable (λ a : s, f a)) (hd : measurable (λ a : t, f a)) :
@@ -473,18 +476,25 @@ end subtype
473476

474477
section prod
475478

476-
instance {α β} [m₁ : measurable_space α] [m₂ : measurable_space β] : measurable_space (α × β) :=
479+
/-- A `measurable_space` structure on the product of two measurable spaces. -/
480+
def measurable_space.prod {α β} (m₁ : measurable_space α) (m₂ : measurable_space β) :
481+
measurable_space (α × β) :=
477482
m₁.comap prod.fst ⊔ m₂.comap prod.snd
478483

479-
@[measurability] lemma measurable_fst [measurable_space α] : measurable (prod.fst : α × β → α) :=
484+
instance {α β} [m₁ : measurable_space α] [m₂ : measurable_space β] : measurable_space (α × β) :=
485+
m₁.prod m₂
486+
487+
@[measurability] lemma measurable_fst [measurable_space α] [measurable_space β] :
488+
measurable (prod.fst : α × β → α) :=
480489
measurable.of_comap_le le_sup_left
481490

482-
@[measurability] lemma measurable_snd [measurable_space α] : measurable (prod.snd : α × β → β) :=
491+
@[measurability] lemma measurable_snd [measurable_space α] [measurable_space β] :
492+
measurable (prod.snd : α × β → β) :=
483493
measurable.of_comap_le le_sup_right
484494

485-
variables {m : measurable_space α}
495+
variables {m : measurable_space α} {mβ : measurable_space β} {mγ : measurable_space γ}
486496

487-
include m
497+
include m mβ mγ
488498

489499
lemma measurable.fst {f : α → β × γ} (hf : measurable f) :
490500
measurable (λ a : α, (f a).1) :=
@@ -500,19 +510,24 @@ measurable.of_le_map $ sup_le
500510
(by { rw [measurable_space.comap_le_iff_le_map, measurable_space.map_comp], exact hf₁ })
501511
(by { rw [measurable_space.comap_le_iff_le_map, measurable_space.map_comp], exact hf₂ })
502512

503-
lemma measurable.prod_mk {f : α → β} {g : α → γ} (hf : measurable f) (hg : measurable g) :
513+
lemma measurable.prod_mk {β γ} {mβ : measurable_space β}
514+
{mγ : measurable_space γ} {f : α → β} {g : α → γ} (hf : measurable f) (hg : measurable g) :
504515
measurable (λ a : α, (f a, g a)) :=
505516
measurable.prod hf hg
506517

518+
lemma measurable.prod_map [measurable_space δ] {f : α → β} {g : γ → δ} (hf : measurable f)
519+
(hg : measurable g) : measurable (prod.map f g) :=
520+
(hf.comp measurable_fst).prod_mk (hg.comp measurable_snd)
521+
522+
omit
523+
507524
lemma measurable_prod_mk_left {x : α} : measurable (@prod.mk _ β x) :=
508525
measurable_const.prod_mk measurable_id
509526

510527
lemma measurable_prod_mk_right {y : β} : measurable (λ x : α, (x, y)) :=
511528
measurable_id.prod_mk measurable_const
512529

513-
lemma measurable.prod_map [measurable_space δ] {f : α → β} {g : γ → δ} (hf : measurable f)
514-
(hg : measurable g) : measurable (prod.map f g) :=
515-
(hf.comp measurable_fst).prod_mk (hg.comp measurable_snd)
530+
include
516531

517532
lemma measurable.of_uncurry_left {f : α → β → γ} (hf : measurable (uncurry f)) {x : α} :
518533
measurable (f x) :=
@@ -522,22 +537,20 @@ lemma measurable.of_uncurry_right {f : α → β → γ} (hf : measurable (uncur
522537
measurable (λ x, f x y) :=
523538
hf.comp measurable_prod_mk_right
524539

525-
omit m
526-
527-
lemma measurable_prod [measurable_space α] {f : α → β × γ} : measurable f ↔
540+
lemma measurable_prod {f : α → β × γ} : measurable f ↔
528541
measurable (λ a, (f a).1) ∧ measurable (λ a, (f a).2) :=
529542
⟨λ hf, ⟨measurable_fst.comp hf, measurable_snd.comp hf⟩, λ h, measurable.prod h.1 h.2
530543

531-
@[measurability] lemma measurable_swap [measurable_space α] :
544+
omit
545+
546+
@[measurability] lemma measurable_swap :
532547
measurable (prod.swap : α × β → β × α) :=
533548
measurable.prod measurable_snd measurable_fst
534549

535-
lemma measurable_swap_iff [measurable_space α] {f : α × β → γ} :
550+
lemma measurable_swap_iff {mγ : measurable_space γ} {f : α × β → γ} :
536551
measurable (f ∘ prod.swap) ↔ measurable f :=
537552
⟨λ hf, by { convert hf.comp measurable_swap, ext ⟨x, y⟩, refl }, λ hf, hf.comp measurable_swap⟩
538553

539-
include m
540-
541554
@[measurability]
542555
lemma measurable_set.prod {s : set α} {t : set β} (hs : measurable_set s) (ht : measurable_set t) :
543556
measurable_set (s ×ˢ t) :=
@@ -565,11 +578,8 @@ lemma measurable_set_swap_iff {s : set (α × β)} :
565578
measurable_set (prod.swap ⁻¹' s) ↔ measurable_set s :=
566579
⟨λ hs, by { convert measurable_swap hs, ext ⟨x, y⟩, refl }, λ hs, measurable_swap hs⟩
567580

568-
omit m
569-
570-
lemma measurable_from_prod_encodable
571-
[measurable_space α] [encodable β] [measurable_singleton_class β]
572-
{f : α × β → γ} (hf : ∀ y, measurable (λ x, f (x, y))) :
581+
lemma measurable_from_prod_encodable [encodable β] [measurable_singleton_class β]
582+
{mγ : measurable_space γ} {f : α × β → γ} (hf : ∀ y, measurable (λ x, f (x, y))) :
573583
measurable f :=
574584
begin
575585
intros s hs,
@@ -780,24 +790,27 @@ m₁.map sum.inl ⊓ m₂.map sum.inr
780790

781791
section sum
782792

783-
@[measurability] lemma measurable_inl [measurable_space α] : measurable (@sum.inl α β) :=
793+
@[measurability] lemma measurable_inl [measurable_space α] [measurable_space β] :
794+
measurable (@sum.inl α β) :=
784795
measurable.of_le_map inf_le_left
785796

786-
@[measurability] lemma measurable_inr [measurable_space α] : measurable (@sum.inr α β) :=
797+
@[measurability] lemma measurable_inr [measurable_space α] [measurable_space β] :
798+
measurable (@sum.inr α β) :=
787799
measurable.of_le_map inf_le_right
788800

789-
variables {m : measurable_space α}
801+
variables {m : measurable_space α} {mβ : measurable_space β}
790802

791-
include m
803+
include m
792804

793-
lemma measurable_sum {f : α ⊕ β → γ}
805+
lemma measurable_sum {mγ : measurable_space γ} {f : α ⊕ β → γ}
794806
(hl : measurable (f ∘ sum.inl)) (hr : measurable (f ∘ sum.inr)) : measurable f :=
795807
measurable.of_comap_le $ le_inf
796808
(measurable_space.comap_le_iff_le_map.2 $ hl)
797809
(measurable_space.comap_le_iff_le_map.2 $ hr)
798810

799811
@[measurability]
800-
lemma measurable.sum_elim {f : α → γ} {g : β → γ} (hf : measurable f) (hg : measurable g) :
812+
lemma measurable.sum_elim {mγ : measurable_space γ} {f : α → γ} {g : β → γ}
813+
(hf : measurable f) (hg : measurable g) :
801814
measurable (sum.elim f g) :=
802815
measurable_sum hf hg
803816

0 commit comments

Comments
 (0)