Theorem: MeasureTheory.Lp.tendsto_Lp_iff_tendsto_ℒp''
File: Mathlib/MeasureTheory/Function/LpSpace.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
ι : Type u_5
fi : Filter ι
inst✝ : Fact (1 ≤ p)
f : ι → α → E
f_ℒp : ∀ (n : ι), Memℒp (f n) p μ
f_lim : α → E
f_lim_ℒp : Memℒp f_lim p μ
⊢ Tendsto (fun n => Memℒp.toLp (f n) ⋯) fi (𝓝 (Memℒp.toLp f_lim f_lim_ℒp)) ↔
    Tendsto (fun n => eLpNorm (f n - f_lim) p μ) fi (𝓝 0)
state_after: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
ι : Type u_5
fi : Filter ι
inst✝ : Fact (1 ≤ p)
f : ι → α → E
f_ℒp : ∀ (n : ι), Memℒp (f n) p μ
f_lim : α → E
f_lim_ℒp : Memℒp f_lim p μ
⊢ Tendsto (fun n => eLpNorm (↑↑(Memℒp.toLp (f n) ⋯) - ↑↑(Memℒp.toLp f_lim f_lim_ℒp)) p μ) fi (𝓝 0) ↔
    Tendsto (fun n => eLpNorm (f n - f_lim) p μ) fi (𝓝 0)
tactic: rw [Lp.tendsto_Lp_iff_tendsto_ℒp' (fun n => (f_ℒp n).toLp (f n)) (f_lim_ℒp.toLp f_lim)]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
ι : Type u_5
fi : Filter ι
inst✝ : Fact (1 ≤ p)
f : ι → α → E
f_ℒp : ∀ (n : ι), Memℒp (f n) p μ
f_lim : α → E
f_lim_ℒp : Memℒp f_lim p μ
⊢ Tendsto (fun n => eLpNorm (↑↑(Memℒp.toLp (f n) ⋯) - ↑↑(Memℒp.toLp f_lim f_lim_ℒp)) p μ) fi (𝓝 0) ↔
    Tendsto (fun n => eLpNorm (f n - f_lim) p μ) fi (𝓝 0)
state_after: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
ι : Type u_5
fi : Filter ι
inst✝ : Fact (1 ≤ p)
f : ι → α → E
f_ℒp : ∀ (n : ι), Memℒp (f n) p μ
f_lim : α → E
f_lim_ℒp : Memℒp f_lim p μ
n : ι
⊢ eLpNorm (↑↑(Memℒp.toLp (f n) ⋯) - ↑↑(Memℒp.toLp f_lim f_lim_ℒp)) p μ = eLpNorm (f n - f_lim) p μ
tactic: refine Filter.tendsto_congr fun n => ?_
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
ι : Type u_5
fi : Filter ι
inst✝ : Fact (1 ≤ p)
f : ι → α → E
f_ℒp : ∀ (n : ι), Memℒp (f n) p μ
f_lim : α → E
f_lim_ℒp : Memℒp f_lim p μ
n : ι
⊢ eLpNorm (↑↑(Memℒp.toLp (f n) ⋯) - ↑↑(Memℒp.toLp f_lim f_lim_ℒp)) p μ = eLpNorm (f n - f_lim) p μ
state_after: case hfg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
ι : Type u_5
fi : Filter ι
inst✝ : Fact (1 ≤ p)
f : ι → α → E
f_ℒp : ∀ (n : ι), Memℒp (f n) p μ
f_lim : α → E
f_lim_ℒp : Memℒp f_lim p μ
n : ι
⊢ ↑↑(Memℒp.toLp (f n) ⋯) - ↑↑(Memℒp.toLp f_lim f_lim_ℒp) =ᶠ[ae μ] f n - f_lim
tactic: apply eLpNorm_congr_ae
state_before: case hfg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
ι : Type u_5
fi : Filter ι
inst✝ : Fact (1 ≤ p)
f : ι → α → E
f_ℒp : ∀ (n : ι), Memℒp (f n) p μ
f_lim : α → E
f_lim_ℒp : Memℒp f_lim p μ
n : ι
⊢ ↑↑(Memℒp.toLp (f n) ⋯) - ↑↑(Memℒp.toLp f_lim f_lim_ℒp) =ᶠ[ae μ] f n - f_lim
state_after: case h
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
ι : Type u_5
fi : Filter ι
inst✝ : Fact (1 ≤ p)
f : ι → α → E
f_ℒp : ∀ (n : ι), Memℒp (f n) p μ
f_lim : α → E
f_lim_ℒp : Memℒp f_lim p μ
n : ι
a✝ : α
hx₁ : ↑↑(Memℒp.toLp (f n - f_lim) ⋯) a✝ = (f n - f_lim) a✝
hx₂ :
  ↑↑(Memℒp.toLp (f n) ⋯ - Memℒp.toLp f_lim f_lim_ℒp) a✝ = (↑↑(Memℒp.toLp (f n) ⋯) - ↑↑(Memℒp.toLp f_lim f_lim_ℒp)) a✝
⊢ (↑↑(Memℒp.toLp (f n) ⋯) - ↑↑(Memℒp.toLp f_lim f_lim_ℒp)) a✝ = (f n - f_lim) a✝
tactic: filter_upwards [((f_ℒp n).sub f_lim_ℒp).coeFn_toLp,
    Lp.coeFn_sub ((f_ℒp n).toLp (f n)) (f_lim_ℒp.toLp f_lim)] with _ hx₁ hx₂
state_before: case h
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
ι : Type u_5
fi : Filter ι
inst✝ : Fact (1 ≤ p)
f : ι → α → E
f_ℒp : ∀ (n : ι), Memℒp (f n) p μ
f_lim : α → E
f_lim_ℒp : Memℒp f_lim p μ
n : ι
a✝ : α
hx₁ : ↑↑(Memℒp.toLp (f n - f_lim) ⋯) a✝ = (f n - f_lim) a✝
hx₂ :
  ↑↑(Memℒp.toLp (f n) ⋯ - Memℒp.toLp f_lim f_lim_ℒp) a✝ = (↑↑(Memℒp.toLp (f n) ⋯) - ↑↑(Memℒp.toLp f_lim f_lim_ℒp)) a✝
⊢ (↑↑(Memℒp.toLp (f n) ⋯) - ↑↑(Memℒp.toLp f_lim f_lim_ℒp)) a✝ = (f n - f_lim) a✝
state_after: case h
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
ι : Type u_5
fi : Filter ι
inst✝ : Fact (1 ≤ p)
f : ι → α → E
f_ℒp : ∀ (n : ι), Memℒp (f n) p μ
f_lim : α → E
f_lim_ℒp : Memℒp f_lim p μ
n : ι
a✝ : α
hx₁ : ↑↑(Memℒp.toLp (f n - f_lim) ⋯) a✝ = (f n - f_lim) a✝
hx₂ :
  ↑↑(Memℒp.toLp (f n) ⋯ - Memℒp.toLp f_lim f_lim_ℒp) a✝ = (↑↑(Memℒp.toLp (f n) ⋯) - ↑↑(Memℒp.toLp f_lim f_lim_ℒp)) a✝
⊢ ↑↑(Memℒp.toLp (f n) ⋯ - Memℒp.toLp f_lim f_lim_ℒp) a✝ = (f n - f_lim) a✝
tactic: rw [← hx₂]
state_before: case h
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
ι : Type u_5
fi : Filter ι
inst✝ : Fact (1 ≤ p)
f : ι → α → E
f_ℒp : ∀ (n : ι), Memℒp (f n) p μ
f_lim : α → E
f_lim_ℒp : Memℒp f_lim p μ
n : ι
a✝ : α
hx₁ : ↑↑(Memℒp.toLp (f n - f_lim) ⋯) a✝ = (f n - f_lim) a✝
hx₂ :
  ↑↑(Memℒp.toLp (f n) ⋯ - Memℒp.toLp f_lim f_lim_ℒp) a✝ = (↑↑(Memℒp.toLp (f n) ⋯) - ↑↑(Memℒp.toLp f_lim f_lim_ℒp)) a✝
⊢ ↑↑(Memℒp.toLp (f n) ⋯ - Memℒp.toLp f_lim f_lim_ℒp) a✝ = (f n - f_lim) a✝
state_after: no goals
tactic: exact hx₁