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

tactic: refine' ((hasSum_norm hp f).sub (hasSum_norm hp (f - ∑ i in s, lp.single p i (f i)))).unique _
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁴ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.935439
inst✝³ : NormedRing 𝕜
inst✝² : (i : α) → Module 𝕜 (E i)
inst✝¹ : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝ : DecidableEq α
hp : 0 < ENNReal.toReal p
f : { x // x ∈ lp E p }
s : Finset α
⊢ ‖f‖ ^ ENNReal.toReal p - ‖f - ∑ i in s, lp.single p i (↑f i)‖ ^ ENNReal.toReal p = ∑ i in s, ‖↑f i‖ ^ ENNReal.toReal p

tactic: let F : α → ℝ := fun i => ‖f i‖ ^ p.toReal - ‖(f - ∑ i in s, lp.single p i (f i)) i‖ ^ p.toReal
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁴ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.935439
inst✝³ : NormedRing 𝕜
inst✝² : (i : α) → Module 𝕜 (E i)
inst✝¹ : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝ : DecidableEq α
hp : 0 < ENNReal.toReal p
f : { x // x ∈ lp E p }
s : Finset α
⊢ HasSum (fun b => ‖↑f b‖ ^ ENNReal.toReal p - ‖↑(f - ∑ i in s, lp.single p i (↑f i)) b‖ ^ ENNReal.toReal p)
    (∑ i in s, ‖↑f i‖ ^ ENNReal.toReal p)

tactic: have hF : ∀ (i) (_ : i ∉ s), F i = 0 := by
  intro i hi
  suffices ‖f i‖ ^ p.toReal - ‖f i - ite (i ∈ s) (f i) 0‖ ^ p.toReal = 0 by
    simpa only [coeFn_sum, lp.single_apply, coeFn_sub, Pi.sub_apply, Finset.sum_apply,
      Finset.sum_dite_eq] using this
  simp only [if_neg hi, sub_zero, sub_self]
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁴ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.935439
inst✝³ : NormedRing 𝕜
inst✝² : (i : α) → Module 𝕜 (E i)
inst✝¹ : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝ : DecidableEq α
hp : 0 < ENNReal.toReal p
f : { x // x ∈ lp E p }
s : Finset α
F : α → ℝ := fun i => ‖↑f i‖ ^ ENNReal.toReal p - ‖↑(f - ∑ i in s, lp.single p i (↑f i)) i‖ ^ ENNReal.toReal p
⊢ HasSum (fun b => ‖↑f b‖ ^ ENNReal.toReal p - ‖↑(f - ∑ i in s, lp.single p i (↑f i)) b‖ ^ ENNReal.toReal p)
    (∑ i in s, ‖↑f i‖ ^ ENNReal.toReal p)

tactic: have hF' : ∀ i ∈ s, F i = ‖f i‖ ^ p.toReal := by
  intro i hi
  simp only [coeFn_sum, lp.single_apply, if_pos hi, sub_self, eq_self_iff_true, coeFn_sub,
    Pi.sub_apply, Finset.sum_apply, Finset.sum_dite_eq, sub_eq_self]
  simp [Real.zero_rpow hp.ne']
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁴ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.935439
inst✝³ : NormedRing 𝕜
inst✝² : (i : α) → Module 𝕜 (E i)
inst✝¹ : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝ : DecidableEq α
hp : 0 < ENNReal.toReal p
f : { x // x ∈ lp E p }
s : Finset α
F : α → ℝ := fun i => ‖↑f i‖ ^ ENNReal.toReal p - ‖↑(f - ∑ i in s, lp.single p i (↑f i)) i‖ ^ ENNReal.toReal p
hF : ∀ (i : α), ¬i ∈ s → F i = 0
⊢ HasSum (fun b => ‖↑f b‖ ^ ENNReal.toReal p - ‖↑(f - ∑ i in s, lp.single p i (↑f i)) b‖ ^ ENNReal.toReal p)
    (∑ i in s, ‖↑f i‖ ^ ENNReal.toReal p)

tactic: have : HasSum F (∑ i in s, F i) := hasSum_sum_of_ne_finset_zero hF
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁴ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.935439
inst✝³ : NormedRing 𝕜
inst✝² : (i : α) → Module 𝕜 (E i)
inst✝¹ : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝ : DecidableEq α
hp : 0 < ENNReal.toReal p
f : { x // x ∈ lp E p }
s : Finset α
F : α → ℝ := fun i => ‖↑f i‖ ^ ENNReal.toReal p - ‖↑(f - ∑ i in s, lp.single p i (↑f i)) i‖ ^ ENNReal.toReal p
hF : ∀ (i : α), ¬i ∈ s → F i = 0
hF' : ∀ (i : α), i ∈ s → F i = ‖↑f i‖ ^ ENNReal.toReal p
⊢ HasSum (fun b => ‖↑f b‖ ^ ENNReal.toReal p - ‖↑(f - ∑ i in s, lp.single p i (↑f i)) b‖ ^ ENNReal.toReal p)
    (∑ i in s, ‖↑f i‖ ^ ENNReal.toReal p)

tactic: rwa [Finset.sum_congr rfl hF'] at this
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁴ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.935439
inst✝³ : NormedRing 𝕜
inst✝² : (i : α) → Module 𝕜 (E i)
inst✝¹ : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝ : DecidableEq α
hp : 0 < ENNReal.toReal p
f : { x // x ∈ lp E p }
s : Finset α
F : α → ℝ := fun i => ‖↑f i‖ ^ ENNReal.toReal p - ‖↑(f - ∑ i in s, lp.single p i (↑f i)) i‖ ^ ENNReal.toReal p
hF : ∀ (i : α), ¬i ∈ s → F i = 0
hF' : ∀ (i : α), i ∈ s → F i = ‖↑f i‖ ^ ENNReal.toReal p
this : HasSum F (∑ i in s, F i)
⊢ HasSum (fun b => ‖↑f b‖ ^ ENNReal.toReal p - ‖↑(f - ∑ i in s, lp.single p i (↑f i)) b‖ ^ ENNReal.toReal p)
    (∑ i in s, ‖↑f i‖ ^ ENNReal.toReal p)

tactic: intro i hi
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁴ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.935439
inst✝³ : NormedRing 𝕜
inst✝² : (i : α) → Module 𝕜 (E i)
inst✝¹ : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝ : DecidableEq α
hp : 0 < ENNReal.toReal p
f : { x // x ∈ lp E p }
s : Finset α
F : α → ℝ := fun i => ‖↑f i‖ ^ ENNReal.toReal p - ‖↑(f - ∑ i in s, lp.single p i (↑f i)) i‖ ^ ENNReal.toReal p
⊢ ∀ (i : α), ¬i ∈ s → F i = 0

tactic: suffices ‖f i‖ ^ p.toReal - ‖f i - ite (i ∈ s) (f i) 0‖ ^ p.toReal = 0 by
  simpa only [coeFn_sum, lp.single_apply, coeFn_sub, Pi.sub_apply, Finset.sum_apply,
    Finset.sum_dite_eq] using this
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁴ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.935439
inst✝³ : NormedRing 𝕜
inst✝² : (i : α) → Module 𝕜 (E i)
inst✝¹ : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝ : DecidableEq α
hp : 0 < ENNReal.toReal p
f : { x // x ∈ lp E p }
s : Finset α
F : α → ℝ := fun i => ‖↑f i‖ ^ ENNReal.toReal p - ‖↑(f - ∑ i in s, lp.single p i (↑f i)) i‖ ^ ENNReal.toReal p
i : α
hi : ¬i ∈ s
⊢ F i = 0

tactic: simp only [if_neg hi, sub_zero, sub_self]
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁴ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.935439
inst✝³ : NormedRing 𝕜
inst✝² : (i : α) → Module 𝕜 (E i)
inst✝¹ : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝ : DecidableEq α
hp : 0 < ENNReal.toReal p
f : { x // x ∈ lp E p }
s : Finset α
F : α → ℝ := fun i => ‖↑f i‖ ^ ENNReal.toReal p - ‖↑(f - ∑ i in s, lp.single p i (↑f i)) i‖ ^ ENNReal.toReal p
i : α
hi : ¬i ∈ s
⊢ ‖↑f i‖ ^ ENNReal.toReal p - ‖↑f i - if i ∈ s then ↑f i else 0‖ ^ ENNReal.toReal p = 0

tactic: simpa only [coeFn_sum, lp.single_apply, coeFn_sub, Pi.sub_apply, Finset.sum_apply,
  Finset.sum_dite_eq] using this
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁴ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.935439
inst✝³ : NormedRing 𝕜
inst✝² : (i : α) → Module 𝕜 (E i)
inst✝¹ : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝ : DecidableEq α
hp : 0 < ENNReal.toReal p
f : { x // x ∈ lp E p }
s : Finset α
F : α → ℝ := fun i => ‖↑f i‖ ^ ENNReal.toReal p - ‖↑(f - ∑ i in s, lp.single p i (↑f i)) i‖ ^ ENNReal.toReal p
i : α
hi : ¬i ∈ s
this : ‖↑f i‖ ^ ENNReal.toReal p - ‖↑f i - if i ∈ s then ↑f i else 0‖ ^ ENNReal.toReal p = 0
⊢ F i = 0

tactic: intro i hi
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁴ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.935439
inst✝³ : NormedRing 𝕜
inst✝² : (i : α) → Module 𝕜 (E i)
inst✝¹ : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝ : DecidableEq α
hp : 0 < ENNReal.toReal p
f : { x // x ∈ lp E p }
s : Finset α
F : α → ℝ := fun i => ‖↑f i‖ ^ ENNReal.toReal p - ‖↑(f - ∑ i in s, lp.single p i (↑f i)) i‖ ^ ENNReal.toReal p
hF : ∀ (i : α), ¬i ∈ s → F i = 0
⊢ ∀ (i : α), i ∈ s → F i = ‖↑f i‖ ^ ENNReal.toReal p

tactic: simp only [coeFn_sum, lp.single_apply, if_pos hi, sub_self, eq_self_iff_true, coeFn_sub,
  Pi.sub_apply, Finset.sum_apply, Finset.sum_dite_eq, sub_eq_self]
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁴ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.935439
inst✝³ : NormedRing 𝕜
inst✝² : (i : α) → Module 𝕜 (E i)
inst✝¹ : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝ : DecidableEq α
hp : 0 < ENNReal.toReal p
f : { x // x ∈ lp E p }
s : Finset α
F : α → ℝ := fun i => ‖↑f i‖ ^ ENNReal.toReal p - ‖↑(f - ∑ i in s, lp.single p i (↑f i)) i‖ ^ ENNReal.toReal p
hF : ∀ (i : α), ¬i ∈ s → F i = 0
i : α
hi : i ∈ s
⊢ F i = ‖↑f i‖ ^ ENNReal.toReal p

tactic: simp [Real.zero_rpow hp.ne']
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝⁴ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.935439
inst✝³ : NormedRing 𝕜
inst✝² : (i : α) → Module 𝕜 (E i)
inst✝¹ : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝ : DecidableEq α
hp : 0 < ENNReal.toReal p
f : { x // x ∈ lp E p }
s : Finset α
F : α → ℝ := fun i => ‖↑f i‖ ^ ENNReal.toReal p - ‖↑(f - ∑ i in s, lp.single p i (↑f i)) i‖ ^ ENNReal.toReal p
hF : ∀ (i : α), ¬i ∈ s → F i = 0
i : α
hi : i ∈ s
⊢ ‖0‖ ^ ENNReal.toReal p = 0