Theorem: stronglyMeasurable_of_stronglyMeasurable_union_cover
File: Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic.lean

tactic: refine' ⟨f, fun y => _⟩
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
⊢ StronglyMeasurable f✝

tactic: by_cases hy : y ∈ s
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
⊢ Tendsto (fun n => ↑(f n) y) atTop (𝓝 (f✝ y))

tactic: simpa [hx] using h (mem_univ x)
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : α
hx : ¬x ∈ s
⊢ x ∈ t

tactic: intro x
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
⊢ ∀ (x : β),
    MeasurableSet
      ((fun x =>
          if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
          else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
        {x})

tactic: convert(hs.subtype_image ((hc.approx n).measurableSet_fiber x)).union
    ((ht.subtype_image ((hd.approx n).measurableSet_fiber x)).diff hs)
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
⊢ MeasurableSet
    ((fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
      {x})

tactic: ext1 y
state_before: case h.e'_3
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
⊢ (fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
      {x} =
    Subtype.val '' (↑(StronglyMeasurable.approx hc n) ⁻¹' {x}) ∪
      Subtype.val '' (↑(StronglyMeasurable.approx hd n) ⁻¹' {x}) \ s

tactic: simp only [mem_union, mem_preimage, mem_singleton_iff, mem_image, SetCoe.exists,
  Subtype.coe_mk, exists_and_right, exists_eq_right, mem_diff]
state_before: case h.e'_3.h
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
y : α
⊢ y ∈
      (fun x =>
          if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
          else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
        {x} ↔
    y ∈
      Subtype.val '' (↑(StronglyMeasurable.approx hc n) ⁻¹' {x}) ∪
        Subtype.val '' (↑(StronglyMeasurable.approx hd n) ⁻¹' {x}) \ s

tactic: by_cases hy : y ∈ s
state_before: case h.e'_3.h
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
y : α
⊢ (if hx : y ∈ s then ↑(StronglyMeasurable.approx hc n) { val := y, property := hx }
      else ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) }) =
      x ↔
    (∃ x_1, ↑(StronglyMeasurable.approx hc n) { val := y, property := (_ : y ∈ s) } = x) ∨
      (∃ x_1, ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } = x) ∧ ¬y ∈ s

tactic: rw [dif_pos hy]
state_before: case pos
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
y : α
hy : y ∈ s
⊢ (if hx : y ∈ s then ↑(StronglyMeasurable.approx hc n) { val := y, property := hx }
      else ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) }) =
      x ↔
    (∃ x_1, ↑(StronglyMeasurable.approx hc n) { val := y, property := (_ : y ∈ s) } = x) ∨
      (∃ x_1, ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } = x) ∧ ¬y ∈ s

tactic: simp only [hy, exists_true_left, not_true, and_false_iff, or_false_iff]
state_before: case pos
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
y : α
hy : y ∈ s
⊢ ↑(StronglyMeasurable.approx hc n) { val := y, property := hy } = x ↔
    (∃ x_1, ↑(StronglyMeasurable.approx hc n) { val := y, property := (_ : y ∈ s) } = x) ∨
      (∃ x_1, ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } = x) ∧ ¬y ∈ s

tactic: rw [dif_neg hy]
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
y : α
hy : ¬y ∈ s
⊢ (if hx : y ∈ s then ↑(StronglyMeasurable.approx hc n) { val := y, property := hx }
      else ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) }) =
      x ↔
    (∃ x_1, ↑(StronglyMeasurable.approx hc n) { val := y, property := (_ : y ∈ s) } = x) ∨
      (∃ x_1, ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } = x) ∧ ¬y ∈ s

tactic: have A : y ∈ t := by simpa [hy] using h (mem_univ y)
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
y : α
hy : ¬y ∈ s
⊢ ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } = x ↔
    (∃ x_1, ↑(StronglyMeasurable.approx hc n) { val := y, property := (_ : y ∈ s) } = x) ∨
      (∃ x_1, ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } = x) ∧ ¬y ∈ s

tactic: simp only [A, hy, false_or_iff, IsEmpty.exists_iff, not_false_iff, and_true_iff,
  exists_true_left]
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
y : α
hy : ¬y ∈ s
A : y ∈ t
⊢ ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } = x ↔
    (∃ x_1, ↑(StronglyMeasurable.approx hc n) { val := y, property := (_ : y ∈ s) } = x) ∨
      (∃ x_1, ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } = x) ∧ ¬y ∈ s

tactic: simpa [hy] using h (mem_univ y)
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
x : β
y : α
hy : ¬y ∈ s
⊢ y ∈ t

tactic: apply ((hc.approx n).finite_range.union (hd.approx n).finite_range).subset
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
⊢ Set.Finite
    (range fun x =>
      if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
      else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })

tactic: rintro - ⟨y, rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
⊢ (range fun x =>
      if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
      else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⊆
    range ↑(StronglyMeasurable.approx hc n) ∪ range ↑(StronglyMeasurable.approx hd n)

tactic: dsimp
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
y : α
⊢ (fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })
      y ∈
    range ↑(StronglyMeasurable.approx hc n) ∪ range ↑(StronglyMeasurable.approx hd n)

tactic: by_cases hy : y ∈ s
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
y : α
⊢ (if hx : y ∈ s then ↑(StronglyMeasurable.approx hc n) { val := y, property := hx }
    else ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) }) ∈
    range ↑(StronglyMeasurable.approx hc n) ∪ range ↑(StronglyMeasurable.approx hd n)

tactic: left
state_before: case pos
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
y : α
hy : y ∈ s
⊢ (if hx : y ∈ s then ↑(StronglyMeasurable.approx hc n) { val := y, property := hx }
    else ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) }) ∈
    range ↑(StronglyMeasurable.approx hc n) ∪ range ↑(StronglyMeasurable.approx hd n)

tactic: rw [dif_pos hy]
state_before: case pos.h
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
y : α
hy : y ∈ s
⊢ (if hx : y ∈ s then ↑(StronglyMeasurable.approx hc n) { val := y, property := hx }
    else ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) }) ∈
    range ↑(StronglyMeasurable.approx hc n)

tactic: exact mem_range_self _
state_before: case pos.h
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
y : α
hy : y ∈ s
⊢ ↑(StronglyMeasurable.approx hc n) { val := y, property := hy } ∈ range ↑(StronglyMeasurable.approx hc n)

tactic: right
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
y : α
hy : ¬y ∈ s
⊢ (if hx : y ∈ s then ↑(StronglyMeasurable.approx hc n) { val := y, property := hx }
    else ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) }) ∈
    range ↑(StronglyMeasurable.approx hc n) ∪ range ↑(StronglyMeasurable.approx hd n)

tactic: rw [dif_neg hy]
state_before: case neg.h
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
y : α
hy : ¬y ∈ s
⊢ (if hx : y ∈ s then ↑(StronglyMeasurable.approx hc n) { val := y, property := hx }
    else ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) }) ∈
    range ↑(StronglyMeasurable.approx hd n)

tactic: exact mem_range_self _
state_before: case neg.h
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f ↑a
hd : StronglyMeasurable fun a => f ↑a
n : ℕ
y : α
hy : ¬y ∈ s
⊢ ↑(StronglyMeasurable.approx hd n) { val := y, property := (_ : y ∈ t) } ∈ range ↑(StronglyMeasurable.approx hd n)

tactic: convert hc.tendsto_approx ⟨y, hy⟩ using 1
state_before: case pos
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
hy : y ∈ s
⊢ Tendsto (fun n => ↑(f n) y) atTop (𝓝 (f✝ y))

tactic: ext1 n
state_before: case h.e'_3
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
hy : y ∈ s
⊢ (fun n => ↑(f n) y) = fun n => ↑(StronglyMeasurable.approx hc n) { val := y, property := hy }

tactic: simp only [dif_pos hy, SimpleFunc.apply_mk]
state_before: case h.e'_3.h
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
hy : y ∈ s
n : ℕ
⊢ ↑(f n) y = ↑(StronglyMeasurable.approx hc n) { val := y, property := hy }

tactic: have A : y ∈ t := by simpa [hy] using h (mem_univ y)
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
hy : ¬y ∈ s
⊢ Tendsto (fun n => ↑(f n) y) atTop (𝓝 (f✝ y))

tactic: convert hd.tendsto_approx ⟨y, A⟩ using 1
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
hy : ¬y ∈ s
A : y ∈ t
⊢ Tendsto (fun n => ↑(f n) y) atTop (𝓝 (f✝ y))

tactic: ext1 n
state_before: case h.e'_3
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
hy : ¬y ∈ s
A : y ∈ t
⊢ (fun n => ↑(f n) y) = fun n => ↑(StronglyMeasurable.approx hd n) { val := y, property := A }

tactic: simp only [dif_neg hy, SimpleFunc.apply_mk]
state_before: case h.e'_3.h
α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
hy : ¬y ∈ s
A : y ∈ t
n : ℕ
⊢ ↑(f n) y = ↑(StronglyMeasurable.approx hd n) { val := y, property := A }

tactic: simpa [hy] using h (mem_univ y)
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.197809
ι : Type ?u.197812
inst✝¹ : Countable ι
f✝¹ g : α → β
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f✝ : α → β
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
h : univ ⊆ s ∪ t
hc : StronglyMeasurable fun a => f✝ ↑a
hd : StronglyMeasurable fun a => f✝ ↑a
f : ℕ → α →ₛ β :=
  fun n =>
    {
      toFun := fun x =>
        if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
        else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) },
      measurableSet_fiber' :=
        (_ :
          ∀ (x : β),
            MeasurableSet
              ((fun x =>
                  if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
                  else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) }) ⁻¹'
                {x})),
      finite_range' :=
        (_ :
          Set.Finite
            (range fun x =>
              if hx : x ∈ s then ↑(StronglyMeasurable.approx hc n) { val := x, property := hx }
              else ↑(StronglyMeasurable.approx hd n) { val := x, property := (_ : x ∈ t) })) }
y : α
hy : ¬y ∈ s
⊢ y ∈ t