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

tactic: intro δ hδ
state_before: α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
inst✝ : NormedAddCommGroup E
f : ι → α → E
g : α → E
l : Filter ι
hfg : Tendsto (fun n => snorm (f n - g) ⊤ μ) l (𝓝 0)
⊢ TendstoInMeasure μ f l g
state_after: α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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: simp only [snorm_exponent_top, snormEssSup] at hfg
state_before: α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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)
state_after: α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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: rw [ENNReal.tendsto_nhds_zero] at hfg ⊢
state_before: α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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)
state_after: α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
inst✝ : NormedAddCommGroup E
f : ι → α → E
g : α → E
l : Filter ι
δ : ℝ
hδ : 0 < δ
hfg : ∀ ε > 0, ∀ᶠ (x : ι) in l, essSup (fun x_1 => ↑‖(f x - g) x_1‖₊) μ ≤ ε
⊢ ∀ ε > 0, ∀ᶠ (x : ι) in l, μ {x_1 | δ ≤ dist (f x x_1) (g x_1)} ≤ ε

tactic: intro ε hε
state_before: α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
inst✝ : NormedAddCommGroup E
f : ι → α → E
g : α → E
l : Filter ι
δ : ℝ
hδ : 0 < δ
hfg : ∀ ε > 0, ∀ᶠ (x : ι) in l, essSup (fun x_1 => ↑‖(f x - g) x_1‖₊) μ ≤ ε
⊢ ∀ ε > 0, ∀ᶠ (x : ι) in l, μ {x_1 | δ ≤ dist (f x x_1) (g x_1)} ≤ ε
state_after: α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
inst✝ : NormedAddCommGroup E
f : ι → α → E
g : α → E
l : Filter ι
δ : ℝ
hδ : 0 < δ
hfg : ∀ ε > 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: 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_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
inst✝ : NormedAddCommGroup E
f : ι → α → E
g : α → E
l : Filter ι
δ : ℝ
hδ : 0 < δ
hfg : ∀ ε > 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)} ≤ ε
state_after: α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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: refine hfg.mono fun n hn => ?_
state_before: α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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)} ≤ ε
state_after: α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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: 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_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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)} ≤ ε
state_after: α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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: 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_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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)} ≤ ε
state_after: α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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: refine ((le_of_eq ?_).trans (ae_lt_of_essSup_lt this).le).trans hε.le
state_before: α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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)} ≤ ε
state_after: α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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: congr with x
state_before: α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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}ᶜ
state_after: case h.e_6.h.h
α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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: 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 h.e_6.h.h
α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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}ᶜ
state_after: case h.e_6.h.h
α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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‖

tactic: rw [← dist_eq_norm (f n x) (g x)]
state_before: case h.e_6.h.h
α : Type u_1
ι : Type u_2
E✝ : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝¹ : NormedAddCommGroup E✝
p : ℝ≥0∞
f✝ : ι → α → E✝
g✝ : α → E✝
E : Type u_4
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‖
state_after: no goals