Theorem: MeasureTheory.IsStoppingTime.add
File: Mathlib/Probability/Process/Stopping.lean

tactic: intro i
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ π : Ω → ℕ
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
⊢ IsStoppingTime f (τ + π)
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ π : Ω → ℕ
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
i : ℕ
⊢ MeasurableSet {ω | (τ + π) ω ≤ i}

tactic: rw [(_ : {ω | (τ + π) ω ≤ i} = ⋃ k ≤ i, {ω | π ω = k} ∩ {ω | τ ω + k ≤ i})]
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ π : Ω → ℕ
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
i : ℕ
⊢ MeasurableSet {ω | (τ + π) ω ≤ i}
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ π : Ω → ℕ
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
i : ℕ
⊢ MeasurableSet (⋃ k, ⋃ (_ : k ≤ i), {ω | π ω = k} ∩ {ω | τ ω + k ≤ i})

Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ π : Ω → ℕ
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
i : ℕ
⊢ {ω | (τ + π) ω ≤ i} = ⋃ k, ⋃ (_ : k ≤ i), {ω | π ω = k} ∩ {ω | τ ω + k ≤ i}

tactic: ext ω
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ π : Ω → ℕ
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
i : ℕ
⊢ {ω | (τ + π) ω ≤ i} = ⋃ k, ⋃ (_ : k ≤ i), {ω | π ω = k} ∩ {ω | τ ω + k ≤ i}
state_after: case h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ π : Ω → ℕ
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
i : ℕ
ω : Ω
⊢ ω ∈ {ω | (τ + π) ω ≤ i} ↔ ω ∈ ⋃ k, ⋃ (_ : k ≤ i), {ω | π ω = k} ∩ {ω | τ ω + k ≤ i}

tactic: simp only [Pi.add_apply, Set.mem_setOf_eq, Set.mem_iUnion, Set.mem_inter_iff, exists_prop]
state_before: case h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ π : Ω → ℕ
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
i : ℕ
ω : Ω
⊢ ω ∈ {ω | (τ + π) ω ≤ i} ↔ ω ∈ ⋃ k, ⋃ (_ : k ≤ i), {ω | π ω = k} ∩ {ω | τ ω + k ≤ i}
state_after: case h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ π : Ω → ℕ
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
i : ℕ
ω : Ω
⊢ τ ω + π ω ≤ i ↔ ∃ i_1 ≤ i, π ω = i_1 ∧ τ ω + i_1 ≤ i

tactic: refine ⟨fun h => ⟨π ω, by omega, rfl, h⟩, ?_⟩
state_before: case h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ π : Ω → ℕ
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
i : ℕ
ω : Ω
⊢ τ ω + π ω ≤ i ↔ ∃ i_1 ≤ i, π ω = i_1 ∧ τ ω + i_1 ≤ i
state_after: case h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ π : Ω → ℕ
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
i : ℕ
ω : Ω
⊢ (∃ i_1 ≤ i, π ω = i_1 ∧ τ ω + i_1 ≤ i) → τ ω + π ω ≤ i

tactic: rintro ⟨j, hj, rfl, h⟩
state_before: case h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ π : Ω → ℕ
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
i : ℕ
ω : Ω
⊢ (∃ i_1 ≤ i, π ω = i_1 ∧ τ ω + i_1 ≤ i) → τ ω + π ω ≤ i
state_after: case h.intro.intro.intro
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ π : Ω → ℕ
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
i : ℕ
ω : Ω
hj : π ω ≤ i
h : τ ω + π ω ≤ i
⊢ τ ω + π ω ≤ i

tactic: assumption
state_before: case h.intro.intro.intro
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ π : Ω → ℕ
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
i : ℕ
ω : Ω
hj : π ω ≤ i
h : τ ω + π ω ≤ i
⊢ τ ω + π ω ≤ i
state_after: no goals

tactic: exact MeasurableSet.iUnion fun k =>
  MeasurableSet.iUnion fun hk => (hπ.measurableSet_eq_le hk).inter (hτ.add_const_nat i)
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ π : Ω → ℕ
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
i : ℕ
⊢ MeasurableSet (⋃ k, ⋃ (_ : k ≤ i), {ω | π ω = k} ∩ {ω | τ ω + k ≤ i})
state_after: no goals

tactic: omega
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ π : Ω → ℕ
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
i : ℕ
ω : Ω
h : τ ω + π ω ≤ i
⊢ π ω ≤ i
state_after: no goals