Skip to content

Commit 3e81059

Browse files
committed
refactor: change the definition of the stopped sigma-algebra (leanprover-community#42021)
Change the definition of [MeasureTheory.IsStoppingTime.measurableSpace](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Probability/Process/Stopping.html#MeasureTheory.IsStoppingTime.measurableSpace) to require that it contains only sets that are measurable wrt `⨆ t, f t` where `f` is the filtration. This is what is done for instance in _Semimartingale Theory and Stochastic Calculus_ by He Wang Yan and is needed in the Brownian motion project.
1 parent 8e45b05 commit 3e81059

1 file changed

Lines changed: 24 additions & 11 deletions

File tree

Mathlib/Probability/Process/Stopping.lean

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,7 @@ variable [Preorder ι] {f : Filtration ι m} {τ π : Ω → WithTop ι}
442442
/-- The associated σ-algebra with a stopping time. -/
443443
@[instance_reducible]
444444
protected def measurableSpace (hτ : IsStoppingTime f τ) : MeasurableSpace Ω where
445-
MeasurableSet' s := MeasurableSet s ∧ ∀ i : ι, MeasurableSet[f i] (s ∩ {ω | τ ω ≤ i})
445+
MeasurableSet' s := MeasurableSet[⨆ t, f t] s ∧ ∀ i : ι, MeasurableSet[f i] (s ∩ {ω | τ ω ≤ i})
446446
measurableSet_empty := by simp
447447
measurableSet_compl s hs := by
448448
refine ⟨hs.1.compl, fun i ↦ ?_⟩
@@ -462,7 +462,7 @@ protected def measurableSpace (hτ : IsStoppingTime f τ) : MeasurableSpace Ω w
462462

463463
protected theorem measurableSet (hτ : IsStoppingTime f τ) (s : Set Ω) :
464464
MeasurableSet[hτ.measurableSpace] s
465-
↔ MeasurableSet s ∧ ∀ i : ι, MeasurableSet[f i] (s ∩ {ω | τ ω ≤ i}) :=
465+
↔ MeasurableSet[⨆ t, f t] s ∧ ∀ i : ι, MeasurableSet[f i] (s ∩ {ω | τ ω ≤ i}) :=
466466
Iff.rfl
467467

468468
theorem measurableSpace_mono (hτ : IsStoppingTime f τ) (hπ : IsStoppingTime f π) (hle : τ ≤ π) :
@@ -475,7 +475,11 @@ theorem measurableSpace_mono (hτ : IsStoppingTime f τ) (hπ : IsStoppingTime f
475475
intro hle' _
476476
exact le_trans (hle _) hle'
477477

478-
theorem measurableSpace_le (hτ : IsStoppingTime f τ) : hτ.measurableSpace ≤ m := fun _ hs ↦ hs.1
478+
theorem measurableSpace_le' (hτ : IsStoppingTime f τ) :
479+
hτ.measurableSpace ≤ ⨆ t, f t := fun _ hs ↦ hs.1
480+
481+
theorem measurableSpace_le (hτ : IsStoppingTime f τ) : hτ.measurableSpace ≤ m :=
482+
hτ.measurableSpace_le'.trans (iSup_le f.le)
479483

480484
@[simp]
481485
theorem measurableSpace_const (f : Filtration ι m) (i : ι) :
@@ -485,7 +489,7 @@ theorem measurableSpace_const (f : Filtration ι m) (i : ι) :
485489
constructor <;> intro h
486490
· have h' := h.2 i
487491
simpa only [le_refl, Set.ofPred_true, Set.inter_univ] using h'
488-
· refine ⟨f.le i _ h, fun j ↦ ?_⟩
492+
· refine ⟨le_iSup f i s h, fun j ↦ ?_⟩
489493
by_cases hij : i ≤ j
490494
· norm_cast
491495
simp only [hij, Set.ofPred_true, Set.inter_univ]
@@ -504,7 +508,7 @@ theorem measurableSet_inter_eq_iff (hτ : IsStoppingTime f τ) (s : Set Ω) (i :
504508
rw [hxi]
505509
constructor <;> intro h
506510
· simpa [Set.inter_assoc, this] using h.2 i
507-
· refine ⟨f.le i _ h, fun j ↦ ?_⟩
511+
· refine ⟨le_iSup f i _ h, fun j ↦ ?_⟩
508512
rw [Set.inter_assoc, this]
509513
by_cases hij : i ≤ j
510514
· norm_cast
@@ -550,7 +554,7 @@ variable [LinearOrder ι] {f : Filtration ι m} {τ π : Ω → WithTop ι}
550554

551555
protected theorem measurableSet_le' (hτ : IsStoppingTime f τ) (i : ι) :
552556
MeasurableSet[hτ.measurableSpace] {ω | τ ω ≤ i} := by
553-
refine ⟨f.le i _ (hτ i), fun j ↦ ?_⟩
557+
refine ⟨le_iSup f i _ (hτ i), fun j ↦ ?_⟩
554558
have : {ω : Ω | τ ω ≤ i} ∩ {ω : Ω | τ ω ≤ j} = {ω : Ω | τ ω ≤ min i j} := by
555559
ext1 ω
556560
simp [Set.mem_inter_iff, Set.mem_ofPred_eq]
@@ -649,11 +653,20 @@ protected theorem measurable' [TopologicalSpace ι]
649653
[OrderTopology ι] [SecondCountableTopology ι] (hτ : IsStoppingTime f τ) :
650654
Measurable τ := hτ.measurable.mono (measurableSpace_le hτ) le_rfl
651655

656+
protected theorem measurable_iSup [TopologicalSpace ι]
657+
[OrderTopology ι] [SecondCountableTopology ι] (hτ : IsStoppingTime f τ) :
658+
Measurable[⨆ t, f t] τ := hτ.measurable.mono (measurableSpace_le' hτ) le_rfl
659+
652660
protected lemma measurableSet_eq_top [TopologicalSpace ι]
653661
[OrderTopology ι] [SecondCountableTopology ι] (hτ : IsStoppingTime f τ) :
654662
MeasurableSet {ω | τ ω = ⊤} :=
655663
(measurableSet_singleton _).preimage hτ.measurable'
656664

665+
protected lemma measurableSet_eq_top' [TopologicalSpace ι]
666+
[OrderTopology ι] [SecondCountableTopology ι] (hτ : IsStoppingTime f τ) :
667+
MeasurableSet[⨆ t, f t] {ω | τ ω = ⊤} :=
668+
(measurableSet_singleton _).preimage hτ.measurable_iSup
669+
657670
protected theorem measurable_of_le [TopologicalSpace ι]
658671
[OrderTopology ι] [SecondCountableTopology ι] (hτ : IsStoppingTime f τ) {i : ι}
659672
(hτ_le : ∀ ω, τ ω ≤ i) : Measurable[f i] τ :=
@@ -698,7 +711,7 @@ theorem measurableSet_inter_le [TopologicalSpace ι] [SecondCountableTopology ι
698711
ext ω
699712
by_cases hτi : τ ω ≤ i <;> grind
700713
simp_rw [h_eq]
701-
refine ⟨hs.1.inter (measurableSet_le hτ.measurable' hπ.measurable'), fun i ↦ ?_⟩
714+
refine ⟨hs.1.inter (measurableSet_le hτ.measurable_iSup hπ.measurable_iSup), fun i ↦ ?_⟩
702715
refine ((hs.2 i).inter ((hτ.min hπ) i)).inter ?_
703716
apply @measurableSet_le _ _ _ _ _ (Filtration.seq f i) _ _ _ _ _ ?_ ?_
704717
· exact (hτ.min_const i).measurable_of_le fun _ => min_le_right _ _
@@ -730,7 +743,7 @@ theorem measurableSet_le_stopping_time [TopologicalSpace ι] [SecondCountableTop
730743
[OrderTopology ι] (hτ : IsStoppingTime f τ)
731744
(hπ : IsStoppingTime f π) : MeasurableSet[hτ.measurableSpace] {ω | τ ω ≤ π ω} := by
732745
rw [hτ.measurableSet]
733-
refine ⟨measurableSet_le hτ.measurable' hπ.measurable', fun j ↦ ?_⟩
746+
refine ⟨measurableSet_le hτ.measurable_iSup hπ.measurable_iSup, fun j ↦ ?_⟩
734747
have : {ω | τ ω ≤ π ω} ∩ {ω | τ ω ≤ j} = {ω | min (τ ω) j ≤ min (π ω) j} ∩ {ω | τ ω ≤ j} := by
735748
ext
736749
simpa using fun a b ↦ Std.IsPreorder.le_trans _ _ _ a b
@@ -1056,7 +1069,7 @@ theorem measurable_stoppedValue [PseudoMetrizableSpace β] [MeasurableSpace β]
10561069
exact (h_seq_tendsto t).exists
10571070
rw [this]
10581071
refine MeasurableSet.union ?_ ?_
1059-
· exact MeasurableSet.iUnion fun i ↦ f.le (seq i) _
1072+
· exact MeasurableSet.iUnion fun i ↦ le_iSup f (seq i) _
10601073
(measurableSet_preimage_stoppedValue_inter hf_prog hτ ht (seq i))
10611074
· have : stoppedValue u τ ⁻¹' t ∩ {ω | τ ω = ⊤}
10621075
= (fun ω ↦ u (Classical.arbitrary ι) ω) ⁻¹' t ∩ {ω | τ ω = ⊤} := by
@@ -1066,9 +1079,9 @@ theorem measurable_stoppedValue [PseudoMetrizableSpace β] [MeasurableSpace β]
10661079
intro h
10671080
simp [h]
10681081
rw [this]
1069-
refine MeasurableSet.inter (ht.preimage ?_) hτ.measurableSet_eq_top
1082+
refine MeasurableSet.inter (ht.preimage ?_) hτ.measurableSet_eq_top'
10701083
exact (hf_prog.stronglyAdapted (Classical.arbitrary ι)).measurable.mono
1071-
(f.le (Classical.arbitrary ι)) le_rfl
1084+
(le_iSup f (Classical.arbitrary ι)) le_rfl
10721085

10731086
end Progressive
10741087

0 commit comments

Comments
 (0)