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

tactic: intro ε hε
state_before: α : Type u_1
ι : Type u_3
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
f : ι → α → E
g : α → E
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
l : Filter ι
hfg : Tendsto (fun n => snorm (f n - g) p μ) l (𝓝 0)
⊢ TendstoInMeasure μ f l g

tactic: replace hfg := ENNReal.Tendsto.const_mul
  (Tendsto.ennrpow_const p.toReal hfg) (Or.inr <| @ENNReal.ofReal_ne_top (1 / ε ^ p.toReal))
state_before: α : Type u_1
ι : Type u_3
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
f : ι → α → E
g : α → E
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
l : Filter ι
hfg : Tendsto (fun n => snorm (f n - g) p μ) l (𝓝 0)
ε : ℝ
hε : 0 < ε
⊢ Tendsto (fun i => ↑↑μ {x | ε ≤ dist (f i x) (g x)}) l (𝓝 0)

tactic: simp only [MulZeroClass.mul_zero,
  ENNReal.zero_rpow_of_pos (ENNReal.toReal_pos hp_ne_zero hp_ne_top)] at hfg
state_before: α : Type u_1
ι : Type u_3
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
f : ι → α → E
g : α → E
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
l : Filter ι
ε : ℝ
hε : 0 < ε
hfg :
  Tendsto (fun b => ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f b - g) p μ ^ ENNReal.toReal p) l
    (𝓝 (ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * 0 ^ ENNReal.toReal p))
⊢ 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_3
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
f : ι → α → E
g : α → E
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
l : Filter ι
ε : ℝ
hε : 0 < ε
hfg : Tendsto (fun b => ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f b - g) p μ ^ ENNReal.toReal p) l (𝓝 0)
⊢ Tendsto (fun i => ↑↑μ {x | ε ≤ dist (f i x) (g x)}) l (𝓝 0)

tactic: intro δ hδ
state_before: α : Type u_1
ι : Type u_3
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
f : ι → α → E
g : α → E
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
l : Filter ι
ε : ℝ
hε : 0 < ε
hfg :
  ∀ (ε_1 : ℝ≥0∞),
    ε_1 > 0 → ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f x - g) p μ ^ ENNReal.toReal p ≤ ε_1
⊢ ∀ (ε_1 : ℝ≥0∞), ε_1 > 0 → ∀ᶠ (x : ι) in l, ↑↑μ {x_1 | ε ≤ dist (f x x_1) (g x_1)} ≤ ε_1

tactic: refine' (hfg δ hδ).mono fun n hn => _
state_before: α : Type u_1
ι : Type u_3
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
f : ι → α → E
g : α → E
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
l : Filter ι
ε : ℝ
hε : 0 < ε
hfg :
  ∀ (ε_1 : ℝ≥0∞),
    ε_1 > 0 → ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f x - g) p μ ^ ENNReal.toReal p ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
⊢ ∀ᶠ (x : ι) in l, ↑↑μ {x_1 | ε ≤ dist (f x x_1) (g x_1)} ≤ δ

tactic: refine' le_trans _ hn
state_before: α : Type u_1
ι : Type u_3
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
f : ι → α → E
g : α → E
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
l : Filter ι
ε : ℝ
hε : 0 < ε
hfg :
  ∀ (ε_1 : ℝ≥0∞),
    ε_1 > 0 → ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f x - g) p μ ^ ENNReal.toReal p ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
n : ι
hn : ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f n - g) p μ ^ ENNReal.toReal p ≤ δ
⊢ ↑↑μ {x | ε ≤ dist (f n x) (g x)} ≤ δ

tactic: rw [ENNReal.ofReal_div_of_pos (Real.rpow_pos_of_pos hε _), ENNReal.ofReal_one, mul_comm,
  mul_one_div, ENNReal.le_div_iff_mul_le _ (Or.inl ENNReal.ofReal_ne_top), mul_comm]
state_before: α : Type u_1
ι : Type u_3
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
f : ι → α → E
g : α → E
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
l : Filter ι
ε : ℝ
hε : 0 < ε
hfg :
  ∀ (ε_1 : ℝ≥0∞),
    ε_1 > 0 → ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f x - g) p μ ^ ENNReal.toReal p ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
n : ι
hn : ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f n - g) p μ ^ ENNReal.toReal p ≤ δ
⊢ ↑↑μ {x | ε ≤ dist (f n x) (g x)} ≤ ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f n - g) p μ ^ ENNReal.toReal p

tactic: rw [← ENNReal.ofReal_rpow_of_pos hε]
state_before: α : Type u_1
ι : Type u_3
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
f : ι → α → E
g : α → E
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
l : Filter ι
ε : ℝ
hε : 0 < ε
hfg :
  ∀ (ε_1 : ℝ≥0∞),
    ε_1 > 0 → ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f x - g) p μ ^ ENNReal.toReal p ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
n : ι
hn : ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f n - g) p μ ^ ENNReal.toReal p ≤ δ
⊢ ENNReal.ofReal (ε ^ ENNReal.toReal p) * ↑↑μ {x | ε ≤ dist (f n x) (g x)} ≤ snorm (f n - g) p μ ^ ENNReal.toReal p

tactic: convert mul_meas_ge_le_pow_snorm' μ hp_ne_zero hp_ne_top ((hf n).sub hg).aestronglyMeasurable
    (ENNReal.ofReal ε)
state_before: α : Type u_1
ι : Type u_3
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
f : ι → α → E
g : α → E
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
l : Filter ι
ε : ℝ
hε : 0 < ε
hfg :
  ∀ (ε_1 : ℝ≥0∞),
    ε_1 > 0 → ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f x - g) p μ ^ ENNReal.toReal p ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
n : ι
hn : ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f n - g) p μ ^ ENNReal.toReal p ≤ δ
⊢ ENNReal.ofReal ε ^ ENNReal.toReal p * ↑↑μ {x | ε ≤ dist (f n x) (g x)} ≤ snorm (f n - g) p μ ^ ENNReal.toReal p

tactic: rw [dist_eq_norm, ← ENNReal.ofReal_le_ofReal_iff (norm_nonneg _), ofReal_norm_eq_coe_nnnorm]
state_before: case h.e'_3.h.e'_6.h.e'_3.h.e'_2.h.a
α : Type u_1
ι : Type u_3
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
f : ι → α → E
g : α → E
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
l : Filter ι
ε : ℝ
hε : 0 < ε
hfg :
  ∀ (ε_1 : ℝ≥0∞),
    ε_1 > 0 → ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f x - g) p μ ^ ENNReal.toReal p ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
n : ι
hn : ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f n - g) p μ ^ ENNReal.toReal p ≤ δ
x✝ : α
⊢ ε ≤ dist (f n x✝) (g x✝) ↔ ENNReal.ofReal ε ≤ ↑‖(f n - g) x✝‖₊

tactic: exact Iff.rfl
state_before: case h.e'_3.h.e'_6.h.e'_3.h.e'_2.h.a
α : Type u_1
ι : Type u_3
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
f : ι → α → E
g : α → E
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
l : Filter ι
ε : ℝ
hε : 0 < ε
hfg :
  ∀ (ε_1 : ℝ≥0∞),
    ε_1 > 0 → ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f x - g) p μ ^ ENNReal.toReal p ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
n : ι
hn : ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f n - g) p μ ^ ENNReal.toReal p ≤ δ
x✝ : α
⊢ ENNReal.ofReal ε ≤ ↑‖f n x✝ - g x✝‖₊ ↔ ENNReal.ofReal ε ≤ ↑‖(f n - g) x✝‖₊

tactic: rw [Ne, ENNReal.ofReal_eq_zero, not_le]
state_before: α : Type u_1
ι : Type u_3
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
f : ι → α → E
g : α → E
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
l : Filter ι
ε : ℝ
hε : 0 < ε
hfg :
  ∀ (ε_1 : ℝ≥0∞),
    ε_1 > 0 → ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f x - g) p μ ^ ENNReal.toReal p ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
n : ι
hn : ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f n - g) p μ ^ ENNReal.toReal p ≤ δ
⊢ ENNReal.ofReal (ε ^ ENNReal.toReal p) ≠ 0 ∨ snorm (f n - g) p μ ^ ENNReal.toReal p ≠ 0

tactic: exact Or.inl (Real.rpow_pos_of_pos hε _)
state_before: α : Type u_1
ι : Type u_3
E : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
f : ι → α → E
g : α → E
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hf : ∀ (n : ι), StronglyMeasurable (f n)
hg : StronglyMeasurable g
l : Filter ι
ε : ℝ
hε : 0 < ε
hfg :
  ∀ (ε_1 : ℝ≥0∞),
    ε_1 > 0 → ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f x - g) p μ ^ ENNReal.toReal p ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
n : ι
hn : ENNReal.ofReal (1 / ε ^ ENNReal.toReal p) * snorm (f n - g) p μ ^ ENNReal.toReal p ≤ δ
⊢ 0 < ε ^ ENNReal.toReal p ∨ snorm (f n - g) p μ ^ ENNReal.toReal p ≠ 0