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

tactic: refine isStoppingTime_of_measurableSet_eq fun j => ?_
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ : Ω → ℕ
hτ : IsStoppingTime f τ
i : ℕ
⊢ IsStoppingTime f fun ω => τ ω + i
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ : Ω → ℕ
hτ : IsStoppingTime f τ
i j : ℕ
⊢ MeasurableSet {ω | τ ω + i = j}

tactic: by_cases hij : i ≤ j
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ : Ω → ℕ
hτ : IsStoppingTime f τ
i j : ℕ
⊢ MeasurableSet {ω | τ ω + i = j}
state_after: case pos
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ : Ω → ℕ
hτ : IsStoppingTime f τ
i j : ℕ
hij : i ≤ j
⊢ MeasurableSet {ω | τ ω + i = j}

case neg
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ : Ω → ℕ
hτ : IsStoppingTime f τ
i j : ℕ
hij : ¬i ≤ j
⊢ MeasurableSet {ω | τ ω + i = j}

tactic: simp_rw [eq_comm, ← Nat.sub_eq_iff_eq_add hij, eq_comm]
state_before: case pos
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ : Ω → ℕ
hτ : IsStoppingTime f τ
i j : ℕ
hij : i ≤ j
⊢ MeasurableSet {ω | τ ω + i = j}
state_after: case pos
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ : Ω → ℕ
hτ : IsStoppingTime f τ
i j : ℕ
hij : i ≤ j
⊢ MeasurableSet {ω | τ ω = j - i}

tactic: exact f.mono (j.sub_le i) _ (hτ.measurableSet_eq (j - i))
state_before: case pos
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ : Ω → ℕ
hτ : IsStoppingTime f τ
i j : ℕ
hij : i ≤ j
⊢ MeasurableSet {ω | τ ω = j - i}
state_after: no goals

tactic: rw [not_le] at hij
state_before: case neg
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ : Ω → ℕ
hτ : IsStoppingTime f τ
i j : ℕ
hij : ¬i ≤ j
⊢ MeasurableSet {ω | τ ω + i = j}
state_after: case neg
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ : Ω → ℕ
hτ : IsStoppingTime f τ
i j : ℕ
hij : j < i
⊢ MeasurableSet {ω | τ ω + i = j}

tactic: convert @MeasurableSet.empty _ (f.1 j)
state_before: case neg
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ : Ω → ℕ
hτ : IsStoppingTime f τ
i j : ℕ
hij : j < i
⊢ MeasurableSet {ω | τ ω + i = j}
state_after: case h.e'_3
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ : Ω → ℕ
hτ : IsStoppingTime f τ
i j : ℕ
hij : j < i
⊢ {ω | τ ω + i = j} = ∅

tactic: ext ω
state_before: case h.e'_3
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ : Ω → ℕ
hτ : IsStoppingTime f τ
i j : ℕ
hij : j < i
⊢ {ω | τ ω + i = j} = ∅
state_after: case h.e'_3.h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ : Ω → ℕ
hτ : IsStoppingTime f τ
i j : ℕ
hij : j < i
ω : Ω
⊢ ω ∈ {ω | τ ω + i = j} ↔ ω ∈ ∅

tactic: simp only [Set.mem_empty_iff_false, iff_false_iff, Set.mem_setOf]
state_before: case h.e'_3.h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ : Ω → ℕ
hτ : IsStoppingTime f τ
i j : ℕ
hij : j < i
ω : Ω
⊢ ω ∈ {ω | τ ω + i = j} ↔ ω ∈ ∅
state_after: case h.e'_3.h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ : Ω → ℕ
hτ : IsStoppingTime f τ
i j : ℕ
hij : j < i
ω : Ω
⊢ ¬τ ω + i = j

tactic: omega
state_before: case h.e'_3.h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
f : Filtration ℕ m
τ : Ω → ℕ
hτ : IsStoppingTime f τ
i j : ℕ
hij : j < i
ω : Ω
⊢ ¬τ ω + i = j
state_after: no goals