-- Mathlib/MeasureTheory/Function/Egorov.lean
theorem tendstoUniformlyOn_diff_iUnionNotConvergentSeq (hε : 0 < ε)
    (hf : ∀ n, StronglyMeasurable (f n)) (hg : StronglyMeasurable g) (hsm : MeasurableSet s)
    (hs : μ s ≠ ∞) (hfg : ∀ᵐ x ∂μ, x ∈ s → Tendsto (fun n => f n x) atTop (𝓝 (g x))) :
    TendstoUniformlyOn f g atTop (s \ Egorov.iUnionNotConvergentSeq hε hf hg hsm hs hfg)

Proof state:
case intro
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝³ : MetricSpace β
μ : Measure α
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝² : SemilatticeSup ι
inst✝¹ : Nonempty ι
inst✝ : Countable ι
hε : 0 < ε
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
hsm : MeasurableSet s
hs : μ s ≠ ⊤
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → Tendsto (fun n => f n x) atTop (𝓝 (g x))
δ : ℝ
hδ : δ > 0
N : ℕ
hN : 1 / (↑N + 1) < δ
n : ι
hn : n ≥ notConvergentSeqLTIndex ⋯ hf hg hsm hs hfg N
x : α
hx : x ∈ s \ iUnionNotConvergentSeq hε hf hg hsm hs hfg
⊢ dist (g x) (f n x) < δ

Tactic:
simp only [Set.mem_diff, Egorov.iUnionNotConvergentSeq, not_exists, Set.mem_iUnion,
  Set.mem_inter_iff, not_and, exists_and_left] at hx

Result:
case intro
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝³ : MetricSpace β
μ : Measure α
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝² : SemilatticeSup ι
inst✝¹ : Nonempty ι
inst✝ : Countable ι
hε : 0 < ε
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
hsm : MeasurableSet s
hs : μ s ≠ ⊤
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → Tendsto (fun n => f n x) atTop (𝓝 (g x))
δ : ℝ
hδ : δ > 0
N : ℕ
hN : 1 / (↑N + 1) < δ
n : ι
hn : n ≥ notConvergentSeqLTIndex ⋯ hf hg hsm hs hfg N
x : α
hx : x ∈ s ∧ (x ∈ s → ∀ (x_1 : ℕ), x ∉ notConvergentSeq f g x_1 (notConvergentSeqLTIndex ⋯ hf hg hsm hs hfg x_1))
⊢ dist (g x) (f n x) < δ

Proof state:
case intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝³ : MetricSpace β
μ : Measure α
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝² : SemilatticeSup ι
inst✝¹ : Nonempty ι
inst✝ : Countable ι
hε : 0 < ε
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
hsm : MeasurableSet s
hs : μ s ≠ ⊤
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → Tendsto (fun n => f n x) atTop (𝓝 (g x))
δ : ℝ
hδ : δ > 0
N : ℕ
hN : 1 / (↑N + 1) < δ
n : ι
hn : n ≥ notConvergentSeqLTIndex ⋯ hf hg hsm hs hfg N
x : α
hxs : x ∈ s
hx : x ∈ s → ∀ (x_1 : ℕ), x ∉ notConvergentSeq f g x_1 (notConvergentSeqLTIndex ⋯ hf hg hsm hs hfg x_1)
⊢ dist (g x) (f n x) < δ

Tactic:
specialize hx hxs N

Result:
case intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝³ : MetricSpace β
μ : Measure α
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝² : SemilatticeSup ι
inst✝¹ : Nonempty ι
inst✝ : Countable ι
hε : 0 < ε
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
hsm : MeasurableSet s
hs : μ s ≠ ⊤
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → Tendsto (fun n => f n x) atTop (𝓝 (g x))
δ : ℝ
hδ : δ > 0
N : ℕ
hN : 1 / (↑N + 1) < δ
n : ι
hn : n ≥ notConvergentSeqLTIndex ⋯ hf hg hsm hs hfg N
x : α
hxs : x ∈ s
hx : x ∉ notConvergentSeq f g N (notConvergentSeqLTIndex ⋯ hf hg hsm hs hfg N)
⊢ dist (g x) (f n x) < δ

Proof state:
case intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝³ : MetricSpace β
μ : Measure α
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝² : SemilatticeSup ι
inst✝¹ : Nonempty ι
inst✝ : Countable ι
hε : 0 < ε
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
hsm : MeasurableSet s
hs : μ s ≠ ⊤
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → Tendsto (fun n => f n x) atTop (𝓝 (g x))
δ : ℝ
hδ : δ > 0
N : ℕ
hN : 1 / (↑N + 1) < δ
n : ι
hn : n ≥ notConvergentSeqLTIndex ⋯ hf hg hsm hs hfg N
x : α
hxs : x ∈ s
hx : ∀ k ≥ notConvergentSeqLTIndex ⋯ hf hg hsm hs hfg N, dist (f k x) (g x) ≤ 1 / (↑N + 1)
⊢ dist (g x) (f n x) < δ

Tactic:
rw [dist_comm]

Result:
case intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝³ : MetricSpace β
μ : Measure α
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝² : SemilatticeSup ι
inst✝¹ : Nonempty ι
inst✝ : Countable ι
hε : 0 < ε
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
hsm : MeasurableSet s
hs : μ s ≠ ⊤
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → Tendsto (fun n => f n x) atTop (𝓝 (g x))
δ : ℝ
hδ : δ > 0
N : ℕ
hN : 1 / (↑N + 1) < δ
n : ι
hn : n ≥ notConvergentSeqLTIndex ⋯ hf hg hsm hs hfg N
x : α
hxs : x ∈ s
hx : ∀ k ≥ notConvergentSeqLTIndex ⋯ hf hg hsm hs hfg N, dist (f k x) (g x) ≤ 1 / (↑N + 1)
⊢ dist (f n x) (g x) < δ

Proof state:
case intro
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝³ : MetricSpace β
μ : Measure α
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝² : SemilatticeSup ι
inst✝¹ : Nonempty ι
inst✝ : Countable ι
hε : 0 < ε
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
hsm : MeasurableSet s
hs : μ s ≠ ⊤
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → Tendsto (fun n => f n x) atTop (𝓝 (g x))
δ : ℝ
hδ : δ > 0
N : ℕ
hN : 1 / (↑N + 1) < δ
⊢ ∀ᶠ (n : ι) in atTop, ∀ x ∈ s \ iUnionNotConvergentSeq hε hf hg hsm hs hfg, dist (g x) (f n x) < δ

Tactic:
rw [eventually_atTop]

Result:
case intro
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝³ : MetricSpace β
μ : Measure α
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝² : SemilatticeSup ι
inst✝¹ : Nonempty ι
inst✝ : Countable ι
hε : 0 < ε
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
hsm : MeasurableSet s
hs : μ s ≠ ⊤
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → Tendsto (fun n => f n x) atTop (𝓝 (g x))
δ : ℝ
hδ : δ > 0
N : ℕ
hN : 1 / (↑N + 1) < δ
⊢ ∃ a, ∀ b ≥ a, ∀ x ∈ s \ iUnionNotConvergentSeq hε hf hg hsm hs hfg, dist (g x) (f b x) < δ

Proof state:
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝³ : MetricSpace β
μ : Measure α
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝² : SemilatticeSup ι
inst✝¹ : Nonempty ι
inst✝ : Countable ι
hε : 0 < ε
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
hsm : MeasurableSet s
hs : μ s ≠ ⊤
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → Tendsto (fun n => f n x) atTop (𝓝 (g x))
⊢ ∀ ε_1 > 0, ∀ᶠ (n : ι) in atTop, ∀ x ∈ s \ iUnionNotConvergentSeq hε hf hg hsm hs hfg, dist (g x) (f n x) < ε_1

Tactic:
intro δ hδ

Result:
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝³ : MetricSpace β
μ : Measure α
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝² : SemilatticeSup ι
inst✝¹ : Nonempty ι
inst✝ : Countable ι
hε : 0 < ε
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
hsm : MeasurableSet s
hs : μ s ≠ ⊤
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → Tendsto (fun n => f n x) atTop (𝓝 (g x))
δ : ℝ
hδ : δ > 0
⊢ ∀ᶠ (n : ι) in atTop, ∀ x ∈ s \ iUnionNotConvergentSeq hε hf hg hsm hs hfg, dist (g x) (f n x) < δ

Proof state:
case intro
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝³ : MetricSpace β
μ : Measure α
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝² : SemilatticeSup ι
inst✝¹ : Nonempty ι
inst✝ : Countable ι
hε : 0 < ε
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
hsm : MeasurableSet s
hs : μ s ≠ ⊤
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → Tendsto (fun n => f n x) atTop (𝓝 (g x))
δ : ℝ
hδ : δ > 0
N : ℕ
hN : 1 / (↑N + 1) < δ
⊢ ∃ a, ∀ b ≥ a, ∀ x ∈ s \ iUnionNotConvergentSeq hε hf hg hsm hs hfg, dist (g x) (f b x) < δ

Tactic:
refine ⟨Egorov.notConvergentSeqLTIndex (half_pos hε) hf hg hsm hs hfg N, fun n hn x hx => ?_⟩

Result:
case intro
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
inst✝³ : MetricSpace β
μ : Measure α
s : Set α
ε : ℝ
f : ι → α → β
g : α → β
inst✝² : SemilatticeSup ι
inst✝¹ : Nonempty ι
inst✝ : Countable ι
hε : 0 < ε
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
hsm : MeasurableSet s
hs : μ s ≠ ⊤
hfg : ∀ᵐ (x : α) ∂μ, x ∈ s → Tendsto (fun n => f n x) atTop (𝓝 (g x))
δ : ℝ
hδ : δ > 0
N : ℕ
hN : 1 / (↑N + 1) < δ
n : ι
hn : n ≥ notConvergentSeqLTIndex ⋯ hf hg hsm hs hfg N
x : α
hx : x ∈ s \ iUnionNotConvergentSeq hε hf hg hsm hs hfg
⊢ dist (g x) (f n x) < δ