-- Mathlib/Analysis/Normed/Lp/lpSpace.lean
theorem hasSum_single [Fact (1 ≤ p)] (hp : p ≠ ⊤) (f : lp E p) :
    HasSum (fun i : α => lp.single p i (f i : E i)) f

Proof state:
α : Type u_3
E : α → Type u_4
p : ℝ≥0∞
inst✝² : (i : α) → NormedAddCommGroup (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : ↥(lp E p)
hp₀ : 0 < p
hp' : 0 < p.toReal
this : HasSum (fun i => ‖↑f i‖ ^ p.toReal) (‖f‖ ^ p.toReal)
⊢ HasSum (fun i => lp.single p i (↑f i)) f

Tactic:
rw [HasSum, Metric.tendsto_nhds] at this ⊢

Result:
α : Type u_3
E : α → Type u_4
p : ℝ≥0∞
inst✝² : (i : α) → NormedAddCommGroup (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : ↥(lp E p)
hp₀ : 0 < p
hp' : 0 < p.toReal
this : ∀ ε > 0, ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b ∈ x, ‖↑f b‖ ^ p.toReal) (‖f‖ ^ p.toReal) < ε
⊢ ∀ ε > 0, ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b ∈ x, lp.single p b (↑f b)) f < ε

Proof state:
α : Type u_3
E : α → Type u_4
p : ℝ≥0∞
inst✝² : (i : α) → NormedAddCommGroup (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : ↥(lp E p)
hp₀ : 0 < p
hp' : 0 < p.toReal
this✝ : ∀ ε > 0, ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b ∈ x, ‖↑f b‖ ^ p.toReal) (‖f‖ ^ p.toReal) < ε
ε : ℝ
hε : ε > 0
s : Finset α
hs : |‖∑ i ∈ s, lp.single p i (↑f i) - f‖ ^ p.toReal| < ε ^ p.toReal
H : ‖∑ i ∈ s, lp.single p i (↑f i) - f‖ ^ p.toReal = ‖f‖ ^ p.toReal - ∑ i ∈ s, ‖↑f i‖ ^ p.toReal
this : |‖∑ i ∈ s, lp.single p i (↑f i) - f‖ ^ p.toReal| = ‖∑ i ∈ s, lp.single p i (↑f i) - f‖ ^ p.toReal
⊢ ‖∑ b ∈ s, lp.single p b (↑f b) - f‖ ^ p.toReal < ε ^ p.toReal

Tactic:
exact this ▸ hs

Result:
no goals

Proof state:
α : Type u_3
E : α → Type u_4
p : ℝ≥0∞
inst✝² : (i : α) → NormedAddCommGroup (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : ↥(lp E p)
hp₀ : 0 < p
⊢ HasSum (fun i => lp.single p i (↑f i)) f

Tactic:
have hp' : 0 < p.toReal := ENNReal.toReal_pos hp₀.ne' hp

Result:
α : Type u_3
E : α → Type u_4
p : ℝ≥0∞
inst✝² : (i : α) → NormedAddCommGroup (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : ↥(lp E p)
hp₀ : 0 < p
hp' : 0 < p.toReal
⊢ HasSum (fun i => lp.single p i (↑f i)) f

Proof state:
α : Type u_3
E : α → Type u_4
p : ℝ≥0∞
inst✝² : (i : α) → NormedAddCommGroup (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : ↥(lp E p)
⊢ HasSum (fun i => lp.single p i (↑f i)) f

Tactic:
have hp₀ : 0 < p := zero_lt_one.trans_le Fact.out

Result:
α : Type u_3
E : α → Type u_4
p : ℝ≥0∞
inst✝² : (i : α) → NormedAddCommGroup (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : ↥(lp E p)
hp₀ : 0 < p
⊢ HasSum (fun i => lp.single p i (↑f i)) f

Proof state:
α : Type u_3
E : α → Type u_4
p : ℝ≥0∞
inst✝² : (i : α) → NormedAddCommGroup (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : ↥(lp E p)
hp₀ : 0 < p
hp' : 0 < p.toReal
this : ∀ ε > 0, ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b ∈ x, ‖↑f b‖ ^ p.toReal) (‖f‖ ^ p.toReal) < ε
ε : ℝ
hε : ε > 0
s : Finset α
hs : |‖∑ i ∈ s, lp.single p i (↑f i) - f‖ ^ p.toReal| < ε ^ p.toReal
H : ‖∑ i ∈ s, lp.single p i (↑f i) - f‖ ^ p.toReal = ‖f‖ ^ p.toReal - ∑ i ∈ s, ‖↑f i‖ ^ p.toReal
⊢ |‖∑ i ∈ s, lp.single p i (↑f i) - f‖ ^ p.toReal| = ‖∑ i ∈ s, lp.single p i (↑f i) - f‖ ^ p.toReal

Tactic:
simp only [Real.abs_rpow_of_nonneg (norm_nonneg _), abs_norm]

Result:
no goals

Proof state:
α : Type u_3
E : α → Type u_4
p : ℝ≥0∞
inst✝² : (i : α) → NormedAddCommGroup (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : ↥(lp E p)
hp₀ : 0 < p
hp' : 0 < p.toReal
this : ∀ ε > 0, ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b ∈ x, ‖↑f b‖ ^ p.toReal) (‖f‖ ^ p.toReal) < ε
ε : ℝ
hε : ε > 0
s : Finset α
hs : dist (‖f‖ ^ p.toReal) (∑ b ∈ s, ‖↑f b‖ ^ p.toReal) < ε ^ p.toReal
⊢ dist (∑ b ∈ s, lp.single p b (↑f b)) f ^ p.toReal < ε ^ p.toReal

Tactic:
simp only [dist_eq_norm, Real.norm_eq_abs] at hs ⊢

Result:
α : Type u_3
E : α → Type u_4
p : ℝ≥0∞
inst✝² : (i : α) → NormedAddCommGroup (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : ↥(lp E p)
hp₀ : 0 < p
hp' : 0 < p.toReal
this : ∀ ε > 0, ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b ∈ x, ‖↑f b‖ ^ p.toReal) (‖f‖ ^ p.toReal) < ε
ε : ℝ
hε : ε > 0
s : Finset α
hs : |‖f‖ ^ p.toReal - ∑ b ∈ s, ‖↑f b‖ ^ p.toReal| < ε ^ p.toReal
⊢ ‖∑ b ∈ s, lp.single p b (↑f b) - f‖ ^ p.toReal < ε ^ p.toReal

Proof state:
α : Type u_3
E : α → Type u_4
p : ℝ≥0∞
inst✝² : (i : α) → NormedAddCommGroup (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : ↥(lp E p)
hp₀ : 0 < p
hp' : 0 < p.toReal
this : ∀ ε > 0, ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b ∈ x, ‖↑f b‖ ^ p.toReal) (‖f‖ ^ p.toReal) < ε
ε : ℝ
hε : ε > 0
s : Finset α
hs : |‖f‖ ^ p.toReal - ∑ b ∈ s, ‖↑f b‖ ^ p.toReal| < ε ^ p.toReal
⊢ ‖∑ b ∈ s, lp.single p b (↑f b) - f‖ ^ p.toReal < ε ^ p.toReal

Tactic:
have H : ‖(∑ i ∈ s, lp.single p i (f i : E i)) - f‖ ^ p.toReal =
    ‖f‖ ^ p.toReal - ∑ i ∈ s, ‖f i‖ ^ p.toReal := by
  simpa only [coeFn_neg, Pi.neg_apply, lp.single_neg, Finset.sum_neg_distrib, neg_sub_neg,
    norm_neg, _root_.norm_neg] using lp.norm_compl_sum_single hp' (-f) s

Result:
α : Type u_3
E : α → Type u_4
p : ℝ≥0∞
inst✝² : (i : α) → NormedAddCommGroup (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : ↥(lp E p)
hp₀ : 0 < p
hp' : 0 < p.toReal
this : ∀ ε > 0, ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b ∈ x, ‖↑f b‖ ^ p.toReal) (‖f‖ ^ p.toReal) < ε
ε : ℝ
hε : ε > 0
s : Finset α
hs : |‖f‖ ^ p.toReal - ∑ b ∈ s, ‖↑f b‖ ^ p.toReal| < ε ^ p.toReal
H : ‖∑ i ∈ s, lp.single p i (↑f i) - f‖ ^ p.toReal = ‖f‖ ^ p.toReal - ∑ i ∈ s, ‖↑f i‖ ^ p.toReal
⊢ ‖∑ b ∈ s, lp.single p b (↑f b) - f‖ ^ p.toReal < ε ^ p.toReal

Proof state:
α : Type u_3
E : α → Type u_4
p : ℝ≥0∞
inst✝² : (i : α) → NormedAddCommGroup (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : ↥(lp E p)
hp₀ : 0 < p
hp' : 0 < p.toReal
this : ∀ ε > 0, ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b ∈ x, ‖↑f b‖ ^ p.toReal) (‖f‖ ^ p.toReal) < ε
ε : ℝ
hε : ε > 0
⊢ ∀ (x : Finset α),
    dist (∑ b ∈ x, ‖↑f b‖ ^ p.toReal) (‖f‖ ^ p.toReal) < ε ^ p.toReal → dist (∑ b ∈ x, lp.single p b (↑f b)) f < ε

Tactic:
intro s hs

Result:
α : Type u_3
E : α → Type u_4
p : ℝ≥0∞
inst✝² : (i : α) → NormedAddCommGroup (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : ↥(lp E p)
hp₀ : 0 < p
hp' : 0 < p.toReal
this : ∀ ε > 0, ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b ∈ x, ‖↑f b‖ ^ p.toReal) (‖f‖ ^ p.toReal) < ε
ε : ℝ
hε : ε > 0
s : Finset α
hs : dist (∑ b ∈ s, ‖↑f b‖ ^ p.toReal) (‖f‖ ^ p.toReal) < ε ^ p.toReal
⊢ dist (∑ b ∈ s, lp.single p b (↑f b)) f < ε