Theorem: MeasureTheory.stronglyMeasurable_stoppedValue_of_le
File: Mathlib/Probability/Process/Stopping.lean

Proof steps:
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁶ : LinearOrder ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : TopologicalSpace ι
inst✝³ : OrderTopology ι
inst✝² : SecondCountableTopology ι
inst✝¹ : BorelSpace ι
inst✝ : TopologicalSpace β
u : ι → Ω → β
τ : Ω → ι
f : Filtration ι m
h : ProgMeasurable f u
hτ : IsStoppingTime f τ
n : ι
hτ_le : ∀ (ω : Ω), τ ω ≤ n
⊢ StronglyMeasurable (stoppedValue u τ)
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁶ : LinearOrder ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : TopologicalSpace ι
inst✝³ : OrderTopology ι
inst✝² : SecondCountableTopology ι
inst✝¹ : BorelSpace ι
inst✝ : TopologicalSpace β
u : ι → Ω → β
τ : Ω → ι
f : Filtration ι m
h : ProgMeasurable f u
hτ : IsStoppingTime f τ
n : ι
hτ_le : ∀ (ω : Ω), τ ω ≤ n
this : stoppedValue u τ = (fun p => u (↑p.1) p.2) ∘ fun ω => (⟨τ ω, ⋯⟩, ω)
⊢ StronglyMeasurable (stoppedValue u τ)
tactic: have : stoppedValue u τ =
      (fun p : Set.Iic n × Ω => u (↑p.fst) p.snd) ∘ fun ω => (⟨τ ω, hτ_le ω⟩, ω) := by
    ext1 ω; simp only [stoppedValue, Function.comp_apply, Subtype.coe_mk]
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁶ : LinearOrder ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : TopologicalSpace ι
inst✝³ : OrderTopology ι
inst✝² : SecondCountableTopology ι
inst✝¹ : BorelSpace ι
inst✝ : TopologicalSpace β
u : ι → Ω → β
τ : Ω → ι
f : Filtration ι m
h : ProgMeasurable f u
hτ : IsStoppingTime f τ
n : ι
hτ_le : ∀ (ω : Ω), τ ω ≤ n
this : stoppedValue u τ = (fun p => u (↑p.1) p.2) ∘ fun ω => (⟨τ ω, ⋯⟩, ω)
⊢ StronglyMeasurable (stoppedValue u τ)
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁶ : LinearOrder ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : TopologicalSpace ι
inst✝³ : OrderTopology ι
inst✝² : SecondCountableTopology ι
inst✝¹ : BorelSpace ι
inst✝ : TopologicalSpace β
u : ι → Ω → β
τ : Ω → ι
f : Filtration ι m
h : ProgMeasurable f u
hτ : IsStoppingTime f τ
n : ι
hτ_le : ∀ (ω : Ω), τ ω ≤ n
this : stoppedValue u τ = (fun p => u (↑p.1) p.2) ∘ fun ω => (⟨τ ω, ⋯⟩, ω)
⊢ StronglyMeasurable ((fun p => u (↑p.1) p.2) ∘ fun ω => (⟨τ ω, ⋯⟩, ω))
tactic: rw [this]
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁶ : LinearOrder ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : TopologicalSpace ι
inst✝³ : OrderTopology ι
inst✝² : SecondCountableTopology ι
inst✝¹ : BorelSpace ι
inst✝ : TopologicalSpace β
u : ι → Ω → β
τ : Ω → ι
f : Filtration ι m
h : ProgMeasurable f u
hτ : IsStoppingTime f τ
n : ι
hτ_le : ∀ (ω : Ω), τ ω ≤ n
this : stoppedValue u τ = (fun p => u (↑p.1) p.2) ∘ fun ω => (⟨τ ω, ⋯⟩, ω)
⊢ StronglyMeasurable ((fun p => u (↑p.1) p.2) ∘ fun ω => (⟨τ ω, ⋯⟩, ω))
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁶ : LinearOrder ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : TopologicalSpace ι
inst✝³ : OrderTopology ι
inst✝² : SecondCountableTopology ι
inst✝¹ : BorelSpace ι
inst✝ : TopologicalSpace β
u : ι → Ω → β
τ : Ω → ι
f : Filtration ι m
h : ProgMeasurable f u
hτ : IsStoppingTime f τ
n : ι
hτ_le : ∀ (ω : Ω), τ ω ≤ n
this : stoppedValue u τ = (fun p => u (↑p.1) p.2) ∘ fun ω => (⟨τ ω, ⋯⟩, ω)
⊢ Measurable fun ω => (⟨τ ω, ⋯⟩, ω)
tactic: refine StronglyMeasurable.comp_measurable (h n) ?_
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁶ : LinearOrder ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : TopologicalSpace ι
inst✝³ : OrderTopology ι
inst✝² : SecondCountableTopology ι
inst✝¹ : BorelSpace ι
inst✝ : TopologicalSpace β
u : ι → Ω → β
τ : Ω → ι
f : Filtration ι m
h : ProgMeasurable f u
hτ : IsStoppingTime f τ
n : ι
hτ_le : ∀ (ω : Ω), τ ω ≤ n
this : stoppedValue u τ = (fun p => u (↑p.1) p.2) ∘ fun ω => (⟨τ ω, ⋯⟩, ω)
⊢ Measurable fun ω => (⟨τ ω, ⋯⟩, ω)
state_after: no goals
tactic: exact (hτ.measurable_of_le hτ_le).subtype_mk.prod_mk measurable_id