Theorem: lp.hasSum_single
File: Mathlib/Analysis/NormedSpace/lpSpace.lean

tactic: have hp₀ : 0 < p := zero_lt_one.trans_le Fact.out
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁵ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.961936
inst✝⁴ : NormedRing 𝕜
inst✝³ : (i : α) → Module 𝕜 (E i)
inst✝² : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : { x // x ∈ lp E p }
⊢ HasSum (fun i => lp.single p i (↑f i)) f

tactic: have hp' : 0 < p.toReal := ENNReal.toReal_pos hp₀.ne' hp
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁵ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.961936
inst✝⁴ : NormedRing 𝕜
inst✝³ : (i : α) → Module 𝕜 (E i)
inst✝² : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : { x // x ∈ lp E p }
hp₀ : 0 < p
⊢ HasSum (fun i => lp.single p i (↑f i)) f

tactic: have := lp.hasSum_norm hp' f
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁵ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.961936
inst✝⁴ : NormedRing 𝕜
inst✝³ : (i : α) → Module 𝕜 (E i)
inst✝² : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : { x // x ∈ lp E p }
hp₀ : 0 < p
hp' : 0 < ENNReal.toReal p
⊢ HasSum (fun i => lp.single p i (↑f i)) f

tactic: rw [HasSum, Metric.tendsto_nhds] at this⊢
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁵ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.961936
inst✝⁴ : NormedRing 𝕜
inst✝³ : (i : α) → Module 𝕜 (E i)
inst✝² : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : { x // x ∈ lp E p }
hp₀ : 0 < p
hp' : 0 < ENNReal.toReal p
this : HasSum (fun i => ‖↑f i‖ ^ ENNReal.toReal p) (‖f‖ ^ ENNReal.toReal p)
⊢ HasSum (fun i => lp.single p i (↑f i)) f

tactic: intro ε hε
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁵ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.961936
inst✝⁴ : NormedRing 𝕜
inst✝³ : (i : α) → Module 𝕜 (E i)
inst✝² : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : { x // x ∈ lp E p }
hp₀ : 0 < p
hp' : 0 < ENNReal.toReal p
this :
  ∀ (ε : ℝ),
    ε > 0 → ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b in x, ‖↑f b‖ ^ ENNReal.toReal p) (‖f‖ ^ ENNReal.toReal p) < ε
⊢ ∀ (ε : ℝ), ε > 0 → ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b in x, lp.single p b (↑f b)) f < ε

tactic: refine' (this _ (Real.rpow_pos_of_pos hε p.toReal)).mono _
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁵ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.961936
inst✝⁴ : NormedRing 𝕜
inst✝³ : (i : α) → Module 𝕜 (E i)
inst✝² : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : { x // x ∈ lp E p }
hp₀ : 0 < p
hp' : 0 < ENNReal.toReal p
this :
  ∀ (ε : ℝ),
    ε > 0 → ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b in x, ‖↑f b‖ ^ ENNReal.toReal p) (‖f‖ ^ ENNReal.toReal p) < ε
ε : ℝ
hε : ε > 0
⊢ ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b in x, lp.single p b (↑f b)) f < ε

tactic: intro s hs
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁵ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.961936
inst✝⁴ : NormedRing 𝕜
inst✝³ : (i : α) → Module 𝕜 (E i)
inst✝² : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : { x // x ∈ lp E p }
hp₀ : 0 < p
hp' : 0 < ENNReal.toReal p
this :
  ∀ (ε : ℝ),
    ε > 0 → ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b in x, ‖↑f b‖ ^ ENNReal.toReal p) (‖f‖ ^ ENNReal.toReal p) < ε
ε : ℝ
hε : ε > 0
⊢ ∀ (x : Finset α),
    dist (∑ b in x, ‖↑f b‖ ^ ENNReal.toReal p) (‖f‖ ^ ENNReal.toReal p) < ε ^ ENNReal.toReal p →
      dist (∑ b in x, lp.single p b (↑f b)) f < ε

tactic: rw [← Real.rpow_lt_rpow_iff dist_nonneg (le_of_lt hε) hp']
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁵ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.961936
inst✝⁴ : NormedRing 𝕜
inst✝³ : (i : α) → Module 𝕜 (E i)
inst✝² : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : { x // x ∈ lp E p }
hp₀ : 0 < p
hp' : 0 < ENNReal.toReal p
this :
  ∀ (ε : ℝ),
    ε > 0 → ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b in x, ‖↑f b‖ ^ ENNReal.toReal p) (‖f‖ ^ ENNReal.toReal p) < ε
ε : ℝ
hε : ε > 0
s : Finset α
hs : dist (∑ b in s, ‖↑f b‖ ^ ENNReal.toReal p) (‖f‖ ^ ENNReal.toReal p) < ε ^ ENNReal.toReal p
⊢ dist (∑ b in s, lp.single p b (↑f b)) f < ε

tactic: rw [dist_comm] at hs
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁵ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.961936
inst✝⁴ : NormedRing 𝕜
inst✝³ : (i : α) → Module 𝕜 (E i)
inst✝² : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : { x // x ∈ lp E p }
hp₀ : 0 < p
hp' : 0 < ENNReal.toReal p
this :
  ∀ (ε : ℝ),
    ε > 0 → ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b in x, ‖↑f b‖ ^ ENNReal.toReal p) (‖f‖ ^ ENNReal.toReal p) < ε
ε : ℝ
hε : ε > 0
s : Finset α
hs : dist (∑ b in s, ‖↑f b‖ ^ ENNReal.toReal p) (‖f‖ ^ ENNReal.toReal p) < ε ^ ENNReal.toReal p
⊢ dist (∑ b in s, lp.single p b (↑f b)) f ^ ENNReal.toReal p < ε ^ ENNReal.toReal p

tactic: simp only [dist_eq_norm, Real.norm_eq_abs] at hs⊢
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁵ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.961936
inst✝⁴ : NormedRing 𝕜
inst✝³ : (i : α) → Module 𝕜 (E i)
inst✝² : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : { x // x ∈ lp E p }
hp₀ : 0 < p
hp' : 0 < ENNReal.toReal p
this :
  ∀ (ε : ℝ),
    ε > 0 → ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b in x, ‖↑f b‖ ^ ENNReal.toReal p) (‖f‖ ^ ENNReal.toReal p) < ε
ε : ℝ
hε : ε > 0
s : Finset α
hs : dist (‖f‖ ^ ENNReal.toReal p) (∑ b in s, ‖↑f b‖ ^ ENNReal.toReal p) < ε ^ ENNReal.toReal p
⊢ dist (∑ b in s, lp.single p b (↑f b)) f ^ ENNReal.toReal p < ε ^ ENNReal.toReal p

tactic: have H : ‖(∑ i in s, lp.single p i (f i : E i)) - f‖ ^ p.toReal =
    ‖f‖ ^ p.toReal - ∑ i in 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
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁵ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.961936
inst✝⁴ : NormedRing 𝕜
inst✝³ : (i : α) → Module 𝕜 (E i)
inst✝² : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : { x // x ∈ lp E p }
hp₀ : 0 < p
hp' : 0 < ENNReal.toReal p
this :
  ∀ (ε : ℝ),
    ε > 0 → ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b in x, ‖↑f b‖ ^ ENNReal.toReal p) (‖f‖ ^ ENNReal.toReal p) < ε
ε : ℝ
hε : ε > 0
s : Finset α
hs : abs (‖f‖ ^ ENNReal.toReal p - ∑ x in s, ‖↑f x‖ ^ ENNReal.toReal p) < ε ^ ENNReal.toReal p
⊢ ‖∑ x in s, lp.single p x (↑f x) - f‖ ^ ENNReal.toReal p < ε ^ ENNReal.toReal p

tactic: rw [← H] at hs
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁵ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.961936
inst✝⁴ : NormedRing 𝕜
inst✝³ : (i : α) → Module 𝕜 (E i)
inst✝² : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : { x // x ∈ lp E p }
hp₀ : 0 < p
hp' : 0 < ENNReal.toReal p
this :
  ∀ (ε : ℝ),
    ε > 0 → ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b in x, ‖↑f b‖ ^ ENNReal.toReal p) (‖f‖ ^ ENNReal.toReal p) < ε
ε : ℝ
hε : ε > 0
s : Finset α
hs : abs (‖f‖ ^ ENNReal.toReal p - ∑ x in s, ‖↑f x‖ ^ ENNReal.toReal p) < ε ^ ENNReal.toReal p
H :
  ‖∑ i in s, lp.single p i (↑f i) - f‖ ^ ENNReal.toReal p = ‖f‖ ^ ENNReal.toReal p - ∑ i in s, ‖↑f i‖ ^ ENNReal.toReal p
⊢ ‖∑ x in s, lp.single p x (↑f x) - f‖ ^ ENNReal.toReal p < ε ^ ENNReal.toReal p

tactic: have : |‖(∑ i in s, lp.single p i (f i : E i)) - f‖ ^ p.toReal| =
    ‖(∑ i in s, lp.single p i (f i : E i)) - f‖ ^ p.toReal := by
  simp only [Real.abs_rpow_of_nonneg (norm_nonneg _), abs_norm]
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁵ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.961936
inst✝⁴ : NormedRing 𝕜
inst✝³ : (i : α) → Module 𝕜 (E i)
inst✝² : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : { x // x ∈ lp E p }
hp₀ : 0 < p
hp' : 0 < ENNReal.toReal p
this :
  ∀ (ε : ℝ),
    ε > 0 → ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b in x, ‖↑f b‖ ^ ENNReal.toReal p) (‖f‖ ^ ENNReal.toReal p) < ε
ε : ℝ
hε : ε > 0
s : Finset α
hs : abs (‖∑ i in s, lp.single p i (↑f i) - f‖ ^ ENNReal.toReal p) < ε ^ ENNReal.toReal p
H :
  ‖∑ i in s, lp.single p i (↑f i) - f‖ ^ ENNReal.toReal p = ‖f‖ ^ ENNReal.toReal p - ∑ i in s, ‖↑f i‖ ^ ENNReal.toReal p
⊢ ‖∑ x in s, lp.single p x (↑f x) - f‖ ^ ENNReal.toReal p < ε ^ ENNReal.toReal p

tactic: exact this ▸ hs
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁵ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.961936
inst✝⁴ : NormedRing 𝕜
inst✝³ : (i : α) → Module 𝕜 (E i)
inst✝² : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : { x // x ∈ lp E p }
hp₀ : 0 < p
hp' : 0 < ENNReal.toReal p
this✝ :
  ∀ (ε : ℝ),
    ε > 0 → ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b in x, ‖↑f b‖ ^ ENNReal.toReal p) (‖f‖ ^ ENNReal.toReal p) < ε
ε : ℝ
hε : ε > 0
s : Finset α
hs : abs (‖∑ i in s, lp.single p i (↑f i) - f‖ ^ ENNReal.toReal p) < ε ^ ENNReal.toReal p
H :
  ‖∑ i in s, lp.single p i (↑f i) - f‖ ^ ENNReal.toReal p = ‖f‖ ^ ENNReal.toReal p - ∑ i in s, ‖↑f i‖ ^ ENNReal.toReal p
this :
  abs (‖∑ i in s, lp.single p i (↑f i) - f‖ ^ ENNReal.toReal p) =
    ‖∑ i in s, lp.single p i (↑f i) - f‖ ^ ENNReal.toReal p
⊢ ‖∑ x in s, lp.single p x (↑f x) - f‖ ^ ENNReal.toReal p < ε ^ ENNReal.toReal p

tactic: 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
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁵ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.961936
inst✝⁴ : NormedRing 𝕜
inst✝³ : (i : α) → Module 𝕜 (E i)
inst✝² : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : { x // x ∈ lp E p }
hp₀ : 0 < p
hp' : 0 < ENNReal.toReal p
this :
  ∀ (ε : ℝ),
    ε > 0 → ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b in x, ‖↑f b‖ ^ ENNReal.toReal p) (‖f‖ ^ ENNReal.toReal p) < ε
ε : ℝ
hε : ε > 0
s : Finset α
hs : abs (‖f‖ ^ ENNReal.toReal p - ∑ x in s, ‖↑f x‖ ^ ENNReal.toReal p) < ε ^ ENNReal.toReal p
⊢ ‖∑ i in s, lp.single p i (↑f i) - f‖ ^ ENNReal.toReal p = ‖f‖ ^ ENNReal.toReal p - ∑ i in s, ‖↑f i‖ ^ ENNReal.toReal p

tactic: simp only [Real.abs_rpow_of_nonneg (norm_nonneg _), abs_norm]
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁵ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.961936
inst✝⁴ : NormedRing 𝕜
inst✝³ : (i : α) → Module 𝕜 (E i)
inst✝² : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝¹ : DecidableEq α
inst✝ : Fact (1 ≤ p)
hp : p ≠ ⊤
f : { x // x ∈ lp E p }
hp₀ : 0 < p
hp' : 0 < ENNReal.toReal p
this :
  ∀ (ε : ℝ),
    ε > 0 → ∀ᶠ (x : Finset α) in Filter.atTop, dist (∑ b in x, ‖↑f b‖ ^ ENNReal.toReal p) (‖f‖ ^ ENNReal.toReal p) < ε
ε : ℝ
hε : ε > 0
s : Finset α
hs : abs (‖∑ i in s, lp.single p i (↑f i) - f‖ ^ ENNReal.toReal p) < ε ^ ENNReal.toReal p
H :
  ‖∑ i in s, lp.single p i (↑f i) - f‖ ^ ENNReal.toReal p = ‖f‖ ^ ENNReal.toReal p - ∑ i in s, ‖↑f i‖ ^ ENNReal.toReal p
⊢ abs (‖∑ i in s, lp.single p i (↑f i) - f‖ ^ ENNReal.toReal p) =
    ‖∑ i in s, lp.single p i (↑f i) - f‖ ^ ENNReal.toReal p