-- Mathlib/Probability/Process/Stopping.lean
theorem measurableSpace_le_of_countable [Countable ι] (hτ : IsStoppingTime f τ) :
    hτ.measurableSpace ≤ m

Proof state:
case h.mp
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
f : Filtration ι m
τ : Ω → ι
inst✝ : Countable ι
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
ω : Ω
⊢ ω ∈ s → ∃ i, ω ∈ s ∩ {ω | τ ω ≤ i}

Tactic:
exact fun hx => ⟨τ ω, hx, le_rfl⟩

Result:
no goals

Proof state:
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
f : Filtration ι m
τ : Ω → ι
inst✝ : Countable ι
hτ : IsStoppingTime f τ
⊢ hτ.measurableSpace ≤ m

Tactic:
intro s hs

Result:
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
f : Filtration ι m
τ : Ω → ι
inst✝ : Countable ι
hτ : IsStoppingTime f τ
s : Set Ω
hs : MeasurableSet s
⊢ MeasurableSet s

Proof state:
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
f : Filtration ι m
τ : Ω → ι
inst✝ : Countable ι
hτ : IsStoppingTime f τ
s : Set Ω
hs : MeasurableSet s
⊢ MeasurableSet s

Tactic:
change ∀ i, MeasurableSet[f i] (s ∩ {ω | τ ω ≤ i}) at hs

Result:
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
f : Filtration ι m
τ : Ω → ι
inst✝ : Countable ι
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
⊢ MeasurableSet s

Proof state:
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
f : Filtration ι m
τ : Ω → ι
inst✝ : Countable ι
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
⊢ s = ⋃ i, s ∩ {ω | τ ω ≤ i}

Tactic:
ext ω

Result:
case h
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
f : Filtration ι m
τ : Ω → ι
inst✝ : Countable ι
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
ω : Ω
⊢ ω ∈ s ↔ ω ∈ ⋃ i, s ∩ {ω | τ ω ≤ i}

Proof state:
case h
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
f : Filtration ι m
τ : Ω → ι
inst✝ : Countable ι
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
ω : Ω
⊢ ω ∈ s ↔ ω ∈ ⋃ i, s ∩ {ω | τ ω ≤ i}

Tactic:
constructor <;> rw [Set.mem_iUnion]

Result:
case h.mp
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
f : Filtration ι m
τ : Ω → ι
inst✝ : Countable ι
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
ω : Ω
⊢ ω ∈ s → ∃ i, ω ∈ s ∩ {ω | τ ω ≤ i}

case h.mpr
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
f : Filtration ι m
τ : Ω → ι
inst✝ : Countable ι
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
ω : Ω
⊢ (∃ i, ω ∈ s ∩ {ω | τ ω ≤ i}) → ω ∈ s

Proof state:
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
f : Filtration ι m
τ : Ω → ι
inst✝ : Countable ι
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
⊢ MeasurableSet (⋃ i, s ∩ {ω | τ ω ≤ i})

Tactic:
exact MeasurableSet.iUnion fun i => f.le i _ (hs i)

Result:
no goals

Proof state:
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
f : Filtration ι m
τ : Ω → ι
inst✝ : Countable ι
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
⊢ MeasurableSet s

Tactic:
rw [(_ : s = ⋃ i, s ∩ {ω | τ ω ≤ i})]

Result:
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
f : Filtration ι m
τ : Ω → ι
inst✝ : Countable ι
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
⊢ MeasurableSet (⋃ i, s ∩ {ω | τ ω ≤ i})

Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
f : Filtration ι m
τ : Ω → ι
inst✝ : Countable ι
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
⊢ s = ⋃ i, s ∩ {ω | τ ω ≤ i}

Proof state:
case h.mpr.intro.intro
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
f : Filtration ι m
τ : Ω → ι
inst✝ : Countable ι
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
ω : Ω
w✝ : ι
hx : ω ∈ s
right✝ : ω ∈ {ω | τ ω ≤ w✝}
⊢ ω ∈ s

Tactic:
exact hx

Result:
no goals

Proof state:
case h.mpr
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
f : Filtration ι m
τ : Ω → ι
inst✝ : Countable ι
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
ω : Ω
⊢ (∃ i, ω ∈ s ∩ {ω | τ ω ≤ i}) → ω ∈ s

Tactic:
rintro ⟨_, hx, _⟩

Result:
case h.mpr.intro.intro
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝¹ : Preorder ι
f : Filtration ι m
τ : Ω → ι
inst✝ : Countable ι
hτ : IsStoppingTime f τ
s : Set Ω
hs : ∀ (i : ι), MeasurableSet (s ∩ {ω | τ ω ≤ i})
ω : Ω
w✝ : ι
hx : ω ∈ s
right✝ : ω ∈ {ω | τ ω ≤ w✝}
⊢ ω ∈ s