Theorem: MeasureTheory.tendstoInMeasure_of_tendsto_snorm_top
File: Mathlib/MeasureTheory/Function/ConvergenceInMeasure.lean

tactic: intro δ hδ
state_before: α : Type u_3
ι : Type u_2
E✝ : Type ?u.53469
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ι → α → E
g : α → E
l : Filter ι
hfg : Tendsto (fun n => snorm (f n - g) ⊤ μ) l (𝓝 0)
⊢ TendstoInMeasure μ f l g

tactic: simp only [snorm_exponent_top, snormEssSup] at hfg
state_before: α : Type u_3
ι : Type u_2
E✝ : Type ?u.53469
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ι → α → E
g : α → E
l : Filter ι
hfg : Tendsto (fun n => snorm (f n - g) ⊤ μ) l (𝓝 0)
δ : ℝ
hδ : 0 < δ
⊢ Tendsto (fun i => ↑↑μ {x | δ ≤ dist (f i x) (g x)}) l (𝓝 0)

tactic: rw [ENNReal.tendsto_nhds_zero] at hfg⊢
state_before: α : Type u_3
ι : Type u_2
E✝ : Type ?u.53469
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ι → α → E
g : α → E
l : Filter ι
δ : ℝ
hδ : 0 < δ
hfg : Tendsto (fun n => essSup (fun x => ↑‖(f n - g) x‖₊) μ) l (𝓝 0)
⊢ Tendsto (fun i => ↑↑μ {x | δ ≤ dist (f i x) (g x)}) l (𝓝 0)

tactic: intro ε hε
state_before: α : Type u_3
ι : Type u_2
E✝ : Type ?u.53469
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ι → α → E
g : α → E
l : Filter ι
δ : ℝ
hδ : 0 < δ
hfg : ∀ (ε : ℝ≥0∞), ε > 0 → ∀ᶠ (x : ι) in l, essSup (fun x_1 => ↑‖(f x - g) x_1‖₊) μ ≤ ε
⊢ ∀ (ε : ℝ≥0∞), ε > 0 → ∀ᶠ (x : ι) in l, ↑↑μ {x_1 | δ ≤ dist (f x x_1) (g x_1)} ≤ ε

tactic: specialize hfg (ENNReal.ofReal δ / 2)
    (ENNReal.div_pos_iff.2 ⟨(ENNReal.ofReal_pos.2 hδ).ne.symm, ENNReal.two_ne_top⟩)
state_before: α : Type u_3
ι : Type u_2
E✝ : Type ?u.53469
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ι → α → E
g : α → E
l : Filter ι
δ : ℝ
hδ : 0 < δ
hfg : ∀ (ε : ℝ≥0∞), ε > 0 → ∀ᶠ (x : ι) in l, essSup (fun x_1 => ↑‖(f x - g) x_1‖₊) μ ≤ ε
ε : ℝ≥0∞
hε : ε > 0
⊢ ∀ᶠ (x : ι) in l, ↑↑μ {x_1 | δ ≤ dist (f x x_1) (g x_1)} ≤ ε

tactic: refine' hfg.mono fun n hn => _
state_before: α : Type u_3
ι : Type u_2
E✝ : Type ?u.53469
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ι → α → E
g : α → E
l : Filter ι
δ : ℝ
hδ : 0 < δ
ε : ℝ≥0∞
hε : ε > 0
hfg : ∀ᶠ (x : ι) in l, essSup (fun x_1 => ↑‖(f x - g) x_1‖₊) μ ≤ ENNReal.ofReal δ / 2
⊢ ∀ᶠ (x : ι) in l, ↑↑μ {x_1 | δ ≤ dist (f x x_1) (g x_1)} ≤ ε

tactic: simp only [true_and_iff, gt_iff_lt, ge_iff_le, zero_tsub, zero_le, zero_add, Set.mem_Icc,
  Pi.sub_apply] at *
state_before: α : Type u_3
ι : Type u_2
E✝ : Type ?u.53469
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ι → α → E
g : α → E
l : Filter ι
δ : ℝ
hδ : 0 < δ
ε : ℝ≥0∞
hε : ε > 0
hfg : ∀ᶠ (x : ι) in l, essSup (fun x_1 => ↑‖(f x - g) x_1‖₊) μ ≤ ENNReal.ofReal δ / 2
n : ι
hn : essSup (fun x => ↑‖(f n - g) x‖₊) μ ≤ ENNReal.ofReal δ / 2
⊢ ↑↑μ {x | δ ≤ dist (f n x) (g x)} ≤ ε

tactic: have : essSup (fun x : α => (‖f n x - g x‖₊ : ℝ≥0∞)) μ < ENNReal.ofReal δ :=
  lt_of_le_of_lt hn
    (ENNReal.half_lt_self (ENNReal.ofReal_pos.2 hδ).ne.symm ENNReal.ofReal_lt_top.ne)
state_before: α : Type u_3
ι : Type u_2
E✝ : Type ?u.53469
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ι → α → E
g : α → E
l : Filter ι
δ : ℝ
hδ : 0 < δ
ε : ℝ≥0∞
hfg : ∀ᶠ (x : ι) in l, essSup (fun x_1 => ↑‖f x x_1 - g x_1‖₊) μ ≤ ENNReal.ofReal δ / 2
n : ι
hn : essSup (fun x => ↑‖f n x - g x‖₊) μ ≤ ENNReal.ofReal δ / 2
hε : 0 < ε
⊢ ↑↑μ {x | δ ≤ dist (f n x) (g x)} ≤ ε

tactic: refine' ((le_of_eq _).trans (ae_lt_of_essSup_lt this).le).trans hε.le
state_before: α : Type u_3
ι : Type u_2
E✝ : Type ?u.53469
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ι → α → E
g : α → E
l : Filter ι
δ : ℝ
hδ : 0 < δ
ε : ℝ≥0∞
hfg : ∀ᶠ (x : ι) in l, essSup (fun x_1 => ↑‖f x x_1 - g x_1‖₊) μ ≤ ENNReal.ofReal δ / 2
n : ι
hn : essSup (fun x => ↑‖f n x - g x‖₊) μ ≤ ENNReal.ofReal δ / 2
hε : 0 < ε
this : essSup (fun x => ↑‖f n x - g x‖₊) μ < ENNReal.ofReal δ
⊢ ↑↑μ {x | δ ≤ dist (f n x) (g x)} ≤ ε

tactic: congr with x
state_before: α : Type u_3
ι : Type u_2
E✝ : Type ?u.53469
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ι → α → E
g : α → E
l : Filter ι
δ : ℝ
hδ : 0 < δ
ε : ℝ≥0∞
hfg : ∀ᶠ (x : ι) in l, essSup (fun x_1 => ↑‖f x x_1 - g x_1‖₊) μ ≤ ENNReal.ofReal δ / 2
n : ι
hn : essSup (fun x => ↑‖f n x - g x‖₊) μ ≤ ENNReal.ofReal δ / 2
hε : 0 < ε
this : essSup (fun x => ↑‖f n x - g x‖₊) μ < ENNReal.ofReal δ
⊢ ↑↑μ {x | δ ≤ dist (f n x) (g x)} = ↑↑μ ({x | (fun y => ↑‖f n y - g y‖₊ < ENNReal.ofReal δ) x}ᶜ)

tactic: simp only [ENNReal.ofReal_le_iff_le_toReal ENNReal.coe_lt_top.ne, ENNReal.coe_toReal, not_lt,
  coe_nnnorm, Set.mem_setOf_eq, Set.mem_compl_iff]
state_before: case e_a.h
α : Type u_3
ι : Type u_2
E✝ : Type ?u.53469
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ι → α → E
g : α → E
l : Filter ι
δ : ℝ
hδ : 0 < δ
ε : ℝ≥0∞
hfg : ∀ᶠ (x : ι) in l, essSup (fun x_1 => ↑‖f x x_1 - g x_1‖₊) μ ≤ ENNReal.ofReal δ / 2
n : ι
hn : essSup (fun x => ↑‖f n x - g x‖₊) μ ≤ ENNReal.ofReal δ / 2
hε : 0 < ε
this : essSup (fun x => ↑‖f n x - g x‖₊) μ < ENNReal.ofReal δ
x : α
⊢ x ∈ {x | δ ≤ dist (f n x) (g x)} ↔ x ∈ {x | (fun y => ↑‖f n y - g y‖₊ < ENNReal.ofReal δ) x}ᶜ

tactic: rw [← dist_eq_norm (f n x) (g x)]
state_before: case e_a.h
α : Type u_3
ι : Type u_2
E✝ : Type ?u.53469
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ι → α → E
g : α → E
l : Filter ι
δ : ℝ
hδ : 0 < δ
ε : ℝ≥0∞
hfg : ∀ᶠ (x : ι) in l, essSup (fun x_1 => ↑‖f x x_1 - g x_1‖₊) μ ≤ ENNReal.ofReal δ / 2
n : ι
hn : essSup (fun x => ↑‖f n x - g x‖₊) μ ≤ ENNReal.ofReal δ / 2
hε : 0 < ε
this : essSup (fun x => ↑‖f n x - g x‖₊) μ < ENNReal.ofReal δ
x : α
⊢ δ ≤ dist (f n x) (g x) ↔ δ ≤ ‖f n x - g x‖