-- Mathlib/MeasureTheory/Function/ConvergenceInMeasure.lean
theorem tendstoInMeasure_of_tendsto_eLpNorm_of_stronglyMeasurable (hp_ne_zero : p ≠ 0)
    (hp_ne_top : p ≠ ∞) (hf : ∀ n, StronglyMeasurable (f n)) (hg : StronglyMeasurable g)
    {l : Filter ι} (hfg : Tendsto (fun n => eLpNorm (f n - g) p μ) l (𝓝 0)) :
    TendstoInMeasure μ f l g

Proof state:
α : Type u_1
ι : Type u_2
E : Type u_4
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, ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f x - g) p μ ^ p.toReal ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
n : ι
hn : ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f n - g) p μ ^ p.toReal ≤ δ
⊢ μ {x | ε ≤ dist (f n x) (g x)} ≤ ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f n - g) p μ ^ p.toReal

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]

Result:
α : Type u_1
ι : Type u_2
E : Type u_4
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, ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f x - g) p μ ^ p.toReal ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
n : ι
hn : ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f n - g) p μ ^ p.toReal ≤ δ
⊢ ENNReal.ofReal (ε ^ p.toReal) * μ {x | ε ≤ dist (f n x) (g x)} ≤ eLpNorm (f n - g) p μ ^ p.toReal

α : Type u_1
ι : Type u_2
E : Type u_4
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, ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f x - g) p μ ^ p.toReal ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
n : ι
hn : ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f n - g) p μ ^ p.toReal ≤ δ
⊢ ENNReal.ofReal (ε ^ p.toReal) ≠ 0 ∨ eLpNorm (f n - g) p μ ^ p.toReal ≠ 0

Proof state:
case h.e'_3.h.e'_6.h.e'_6.h.e'_2.h.a
α : Type u_1
ι : Type u_2
E : Type u_4
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, ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f x - g) p μ ^ p.toReal ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
n : ι
hn : ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f n - g) p μ ^ p.toReal ≤ δ
x✝ : α
⊢ ε ≤ dist (f n x✝) (g x✝) ↔ ENNReal.ofReal ε ≤ ↑‖(f n - g) x✝‖₊

Tactic:
rw [dist_eq_norm, ← ENNReal.ofReal_le_ofReal_iff (norm_nonneg _), ofReal_norm_eq_enorm]

Result:
case h.e'_3.h.e'_6.h.e'_6.h.e'_2.h.a
α : Type u_1
ι : Type u_2
E : Type u_4
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, ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f x - g) p μ ^ p.toReal ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
n : ι
hn : ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f n - g) p μ ^ p.toReal ≤ δ
x✝ : α
⊢ ENNReal.ofReal ε ≤ ‖f n x✝ - g x✝‖ₑ ↔ ENNReal.ofReal ε ≤ ↑‖(f n - g) x✝‖₊

Proof state:
α : Type u_1
ι : Type u_2
E : Type u_4
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, ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f x - g) p μ ^ p.toReal ≤ ε_1
⊢ ∀ ε_1 > 0, ∀ᶠ (x : ι) in l, μ {x_1 | ε ≤ dist (f x x_1) (g x_1)} ≤ ε_1

Tactic:
intro δ hδ

Result:
α : Type u_1
ι : Type u_2
E : Type u_4
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, ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f x - g) p μ ^ p.toReal ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
⊢ ∀ᶠ (x : ι) in l, μ {x_1 | ε ≤ dist (f x x_1) (g x_1)} ≤ δ

Proof state:
α : Type u_1
ι : Type u_2
E : Type u_4
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, ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f x - g) p μ ^ p.toReal ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
⊢ ∀ᶠ (x : ι) in l, μ {x_1 | ε ≤ dist (f x x_1) (g x_1)} ≤ δ

Tactic:
refine (hfg δ hδ).mono fun n hn => ?_

Result:
α : Type u_1
ι : Type u_2
E : Type u_4
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, ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f x - g) p μ ^ p.toReal ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
n : ι
hn : ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f n - g) p μ ^ p.toReal ≤ δ
⊢ μ {x | ε ≤ dist (f n x) (g x)} ≤ δ

Proof state:
α : Type u_1
ι : Type u_2
E : Type u_4
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 / ε ^ p.toReal) * eLpNorm (f b - g) p μ ^ p.toReal) l
    (𝓝 (ENNReal.ofReal (1 / ε ^ p.toReal) * 0 ^ p.toReal))
⊢ Tendsto (fun i => μ {x | ε ≤ dist (f i x) (g x)}) l (𝓝 0)

Tactic:
simp only [mul_zero,
  ENNReal.zero_rpow_of_pos (ENNReal.toReal_pos hp_ne_zero hp_ne_top)] at hfg

Result:
α : Type u_1
ι : Type u_2
E : Type u_4
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 / ε ^ p.toReal) * eLpNorm (f b - g) p μ ^ p.toReal) l (𝓝 0)
⊢ Tendsto (fun i => μ {x | ε ≤ dist (f i x) (g x)}) l (𝓝 0)

Proof state:
α : Type u_1
ι : Type u_2
E : Type u_4
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, ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f x - g) p μ ^ p.toReal ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
n : ι
hn : ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f n - g) p μ ^ p.toReal ≤ δ
⊢ ENNReal.ofReal ε ^ p.toReal * μ {x | ε ≤ dist (f n x) (g x)} ≤ eLpNorm (f n - g) p μ ^ p.toReal

Tactic:
convert mul_meas_ge_le_pow_eLpNorm' μ hp_ne_zero hp_ne_top ((hf n).sub hg).aestronglyMeasurable
    (ENNReal.ofReal ε)

Result:
case h.e'_3.h.e'_6.h.e'_6.h.e'_2.h.a
α : Type u_1
ι : Type u_2
E : Type u_4
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, ∀ᶠ (x : ι) in l, ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f x - g) p μ ^ p.toReal ≤ ε_1
δ : ℝ≥0∞
hδ : δ > 0
n : ι
hn : ENNReal.ofReal (1 / ε ^ p.toReal) * eLpNorm (f n - g) p μ ^ p.toReal ≤ δ
x✝ : α
⊢ ε ≤ dist (f n x✝) (g x✝) ↔ ENNReal.ofReal ε ≤ ↑‖(f n - g) x✝‖₊