-- Mathlib/Probability/Process/Stopping.lean
theorem measurableSet_eq_stopping_time [AddGroup ι] [TopologicalSpace ι] [MeasurableSpace ι]
    [BorelSpace ι] [OrderTopology ι] [MeasurableSingletonClass ι] [SecondCountableTopology ι]
    [MeasurableSub₂ ι] (hτ : IsStoppingTime f τ) (hπ : IsStoppingTime f π) :
    MeasurableSet[hτ.measurableSpace] {ω | τ ω = π ω}

Proof state:
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁸ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝⁷ : AddGroup ι
inst✝⁶ : TopologicalSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : BorelSpace ι
inst✝³ : OrderTopology ι
inst✝² : MeasurableSingletonClass ι
inst✝¹ : SecondCountableTopology ι
inst✝ : MeasurableSub₂ ι
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
j : ι
this : {ω | τ ω = π ω} ∩ {ω | τ ω ≤ j} = {ω | τ ω ⊓ j = π ω ⊓ j} ∩ {ω | τ ω ≤ j} ∩ {ω | π ω ≤ j}
⊢ MeasurableSet {ω | τ ω ⊓ j = π ω ⊓ j}

Tactic:
apply measurableSet_eq_fun

Result:
case hf
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁸ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝⁷ : AddGroup ι
inst✝⁶ : TopologicalSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : BorelSpace ι
inst✝³ : OrderTopology ι
inst✝² : MeasurableSingletonClass ι
inst✝¹ : SecondCountableTopology ι
inst✝ : MeasurableSub₂ ι
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
j : ι
this : {ω | τ ω = π ω} ∩ {ω | τ ω ≤ j} = {ω | τ ω ⊓ j = π ω ⊓ j} ∩ {ω | τ ω ≤ j} ∩ {ω | π ω ≤ j}
⊢ Measurable fun x => τ x ⊓ j

case hg
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁸ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝⁷ : AddGroup ι
inst✝⁶ : TopologicalSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : BorelSpace ι
inst✝³ : OrderTopology ι
inst✝² : MeasurableSingletonClass ι
inst✝¹ : SecondCountableTopology ι
inst✝ : MeasurableSub₂ ι
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
j : ι
this : {ω | τ ω = π ω} ∩ {ω | τ ω ≤ j} = {ω | τ ω ⊓ j = π ω ⊓ j} ∩ {ω | τ ω ≤ j} ∩ {ω | π ω ≤ j}
⊢ Measurable fun x => π x ⊓ j

Proof state:
case h
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁸ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝⁷ : AddGroup ι
inst✝⁶ : TopologicalSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : BorelSpace ι
inst✝³ : OrderTopology ι
inst✝² : MeasurableSingletonClass ι
inst✝¹ : SecondCountableTopology ι
inst✝ : MeasurableSub₂ ι
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
j : ι
ω : Ω
⊢ ω ∈ {ω | τ ω = π ω} ∩ {ω | τ ω ≤ j} ↔ ω ∈ {ω | τ ω ⊓ j = π ω ⊓ j} ∩ {ω | τ ω ≤ j} ∩ {ω | π ω ≤ j}

Tactic:
simp only [Set.mem_inter_iff, Set.mem_setOf_eq]

Result:
case h
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁸ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝⁷ : AddGroup ι
inst✝⁶ : TopologicalSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : BorelSpace ι
inst✝³ : OrderTopology ι
inst✝² : MeasurableSingletonClass ι
inst✝¹ : SecondCountableTopology ι
inst✝ : MeasurableSub₂ ι
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
j : ι
ω : Ω
⊢ τ ω = π ω ∧ τ ω ≤ j ↔ (τ ω ⊓ j = π ω ⊓ j ∧ τ ω ≤ j) ∧ π ω ≤ j

Proof state:
case h.refine_3.intro
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁸ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝⁷ : AddGroup ι
inst✝⁶ : TopologicalSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : BorelSpace ι
inst✝³ : OrderTopology ι
inst✝² : MeasurableSingletonClass ι
inst✝¹ : SecondCountableTopology ι
inst✝ : MeasurableSub₂ ι
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
j : ι
ω : Ω
h' : τ ω ⊓ j = π ω ⊓ j ∧ τ ω ≤ j
hσ_le : π ω ≤ j
⊢ τ ω = π ω

Tactic:
obtain ⟨h_eq, hτ_le⟩ := h'

Result:
case h.refine_3.intro.intro
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁸ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝⁷ : AddGroup ι
inst✝⁶ : TopologicalSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : BorelSpace ι
inst✝³ : OrderTopology ι
inst✝² : MeasurableSingletonClass ι
inst✝¹ : SecondCountableTopology ι
inst✝ : MeasurableSub₂ ι
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
j : ι
ω : Ω
hσ_le : π ω ≤ j
h_eq : τ ω ⊓ j = π ω ⊓ j
hτ_le : τ ω ≤ j
⊢ τ ω = π ω

Proof state:
case h.refine_3.intro.intro
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁸ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝⁷ : AddGroup ι
inst✝⁶ : TopologicalSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : BorelSpace ι
inst✝³ : OrderTopology ι
inst✝² : MeasurableSingletonClass ι
inst✝¹ : SecondCountableTopology ι
inst✝ : MeasurableSub₂ ι
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
j : ι
ω : Ω
hσ_le : π ω ≤ j
h_eq : τ ω ⊓ j = π ω ⊓ j
hτ_le : τ ω ≤ j
⊢ τ ω = π ω

Tactic:
rwa [min_eq_left hτ_le, min_eq_left hσ_le] at h_eq

Result:
no goals

Proof state:
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁸ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝⁷ : AddGroup ι
inst✝⁶ : TopologicalSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : BorelSpace ι
inst✝³ : OrderTopology ι
inst✝² : MeasurableSingletonClass ι
inst✝¹ : SecondCountableTopology ι
inst✝ : MeasurableSub₂ ι
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
j : ι
this : {ω | τ ω = π ω} ∩ {ω | τ ω ≤ j} = {ω | τ ω ⊓ j = π ω ⊓ j} ∩ {ω | τ ω ≤ j} ∩ {ω | π ω ≤ j}
⊢ MeasurableSet ({ω | τ ω ⊓ j = π ω ⊓ j} ∩ {ω | τ ω ≤ j} ∩ {ω | π ω ≤ j})

Tactic:
refine
  MeasurableSet.inter (MeasurableSet.inter ?_ (hτ.measurableSet_le j)) (hπ.measurableSet_le j)

Result:
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁸ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝⁷ : AddGroup ι
inst✝⁶ : TopologicalSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : BorelSpace ι
inst✝³ : OrderTopology ι
inst✝² : MeasurableSingletonClass ι
inst✝¹ : SecondCountableTopology ι
inst✝ : MeasurableSub₂ ι
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
j : ι
this : {ω | τ ω = π ω} ∩ {ω | τ ω ≤ j} = {ω | τ ω ⊓ j = π ω ⊓ j} ∩ {ω | τ ω ≤ j} ∩ {ω | π ω ≤ j}
⊢ MeasurableSet {ω | τ ω ⊓ j = π ω ⊓ j}

Proof state:
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁸ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝⁷ : AddGroup ι
inst✝⁶ : TopologicalSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : BorelSpace ι
inst✝³ : OrderTopology ι
inst✝² : MeasurableSingletonClass ι
inst✝¹ : SecondCountableTopology ι
inst✝ : MeasurableSub₂ ι
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
⊢ ∀ (i : ι), MeasurableSet ({ω | τ ω = π ω} ∩ {ω | τ ω ≤ i})

Tactic:
intro j

Result:
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁸ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝⁷ : AddGroup ι
inst✝⁶ : TopologicalSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : BorelSpace ι
inst✝³ : OrderTopology ι
inst✝² : MeasurableSingletonClass ι
inst✝¹ : SecondCountableTopology ι
inst✝ : MeasurableSub₂ ι
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
j : ι
⊢ MeasurableSet ({ω | τ ω = π ω} ∩ {ω | τ ω ≤ j})

Proof state:
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁸ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝⁷ : AddGroup ι
inst✝⁶ : TopologicalSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : BorelSpace ι
inst✝³ : OrderTopology ι
inst✝² : MeasurableSingletonClass ι
inst✝¹ : SecondCountableTopology ι
inst✝ : MeasurableSub₂ ι
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
⊢ MeasurableSet {ω | τ ω = π ω}

Tactic:
rw [hτ.measurableSet]

Result:
Ω : Type u_1
ι : Type u_3
m : MeasurableSpace Ω
inst✝⁸ : LinearOrder ι
f : Filtration ι m
τ π : Ω → ι
inst✝⁷ : AddGroup ι
inst✝⁶ : TopologicalSpace ι
inst✝⁵ : MeasurableSpace ι
inst✝⁴ : BorelSpace ι
inst✝³ : OrderTopology ι
inst✝² : MeasurableSingletonClass ι
inst✝¹ : SecondCountableTopology ι
inst✝ : MeasurableSub₂ ι
hτ : IsStoppingTime f τ
hπ : IsStoppingTime f π
⊢ ∀ (i : ι), MeasurableSet ({ω | τ ω = π ω} ∩ {ω | τ ω ≤ i})