Theorem: OrthogonalFamily.norm_sq_diff_sum
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rw [← Finset.sum_sdiff_sub_sum_sdiff, sub_eq_add_neg, ← Finset.sum_neg_distrib]
state_before: 𝕜 : Type u_4
E : Type u_2
F : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace ℝ F
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
⊢ ‖∑ i in s₁, ↑(V i) (f i) - ∑ i in s₂, ↑(V i) (f i)‖ ^ 2 = ∑ i in s₁ \ s₂, ‖f i‖ ^ 2 + ∑ i in s₂ \ s₁, ‖f i‖ ^ 2

tactic: let F : ∀ i, G i := fun i => if i ∈ s₁ then f i else -f i
state_before: 𝕜 : Type u_4
E : Type u_2
F : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace ℝ F
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
⊢ ‖∑ x in s₁ \ s₂, ↑(V x) (f x) + ∑ x in s₂ \ s₁, -↑(V x) (f x)‖ ^ 2 =
    ∑ i in s₁ \ s₂, ‖f i‖ ^ 2 + ∑ i in s₂ \ s₁, ‖f i‖ ^ 2

tactic: have hF₁ : ∀ i ∈ s₁ \ s₂, F i = f i := fun i hi => if_pos (Finset.sdiff_subset _ _ hi)
state_before: 𝕜 : Type u_4
E : Type u_2
F✝ : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F✝
inst✝² : InnerProductSpace ℝ F✝
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
F : (i : ι) → G i := fun i => if i ∈ s₁ then f i else -f i
⊢ ‖∑ x in s₁ \ s₂, ↑(V x) (f x) + ∑ x in s₂ \ s₁, -↑(V x) (f x)‖ ^ 2 =
    ∑ i in s₁ \ s₂, ‖f i‖ ^ 2 + ∑ i in s₂ \ s₁, ‖f i‖ ^ 2

tactic: have hF₂ : ∀ i ∈ s₂ \ s₁, F i = -f i := fun i hi => if_neg (Finset.mem_sdiff.mp hi).2
state_before: 𝕜 : Type u_4
E : Type u_2
F✝ : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F✝
inst✝² : InnerProductSpace ℝ F✝
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
F : (i : ι) → G i := fun i => if i ∈ s₁ then f i else -f i
hF₁ : ∀ (i : ι), i ∈ s₁ \ s₂ → F i = f i
⊢ ‖∑ x in s₁ \ s₂, ↑(V x) (f x) + ∑ x in s₂ \ s₁, -↑(V x) (f x)‖ ^ 2 =
    ∑ i in s₁ \ s₂, ‖f i‖ ^ 2 + ∑ i in s₂ \ s₁, ‖f i‖ ^ 2

tactic: have hF : ∀ i, ‖F i‖ = ‖f i‖ := by
  intro i
  dsimp only
  split_ifs <;> simp only [eq_self_iff_true, norm_neg]
state_before: 𝕜 : Type u_4
E : Type u_2
F✝ : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F✝
inst✝² : InnerProductSpace ℝ F✝
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
F : (i : ι) → G i := fun i => if i ∈ s₁ then f i else -f i
hF₁ : ∀ (i : ι), i ∈ s₁ \ s₂ → F i = f i
hF₂ : ∀ (i : ι), i ∈ s₂ \ s₁ → F i = -f i
⊢ ‖∑ x in s₁ \ s₂, ↑(V x) (f x) + ∑ x in s₂ \ s₁, -↑(V x) (f x)‖ ^ 2 =
    ∑ i in s₁ \ s₂, ‖f i‖ ^ 2 + ∑ i in s₂ \ s₁, ‖f i‖ ^ 2

tactic: have :
  ‖(∑ i in s₁ \ s₂, V i (F i)) + ∑ i in s₂ \ s₁, V i (F i)‖ ^ 2 =
    (∑ i in s₁ \ s₂, ‖F i‖ ^ 2) + ∑ i in s₂ \ s₁, ‖F i‖ ^ 2 := by
  have hs : Disjoint (s₁ \ s₂) (s₂ \ s₁) := disjoint_sdiff_sdiff
  simpa only [Finset.sum_union hs] using hV.norm_sum F (s₁ \ s₂ ∪ s₂ \ s₁)
state_before: 𝕜 : Type u_4
E : Type u_2
F✝ : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F✝
inst✝² : InnerProductSpace ℝ F✝
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
F : (i : ι) → G i := fun i => if i ∈ s₁ then f i else -f i
hF₁ : ∀ (i : ι), i ∈ s₁ \ s₂ → F i = f i
hF₂ : ∀ (i : ι), i ∈ s₂ \ s₁ → F i = -f i
hF : ∀ (i : ι), ‖F i‖ = ‖f i‖
⊢ ‖∑ x in s₁ \ s₂, ↑(V x) (f x) + ∑ x in s₂ \ s₁, -↑(V x) (f x)‖ ^ 2 =
    ∑ i in s₁ \ s₂, ‖f i‖ ^ 2 + ∑ i in s₂ \ s₁, ‖f i‖ ^ 2

tactic: convert this using 4
state_before: 𝕜 : Type u_4
E : Type u_2
F✝ : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F✝
inst✝² : InnerProductSpace ℝ F✝
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
F : (i : ι) → G i := fun i => if i ∈ s₁ then f i else -f i
hF₁ : ∀ (i : ι), i ∈ s₁ \ s₂ → F i = f i
hF₂ : ∀ (i : ι), i ∈ s₂ \ s₁ → F i = -f i
hF : ∀ (i : ι), ‖F i‖ = ‖f i‖
this :
  ‖∑ i in s₁ \ s₂, ↑(V i) (F i) + ∑ i in s₂ \ s₁, ↑(V i) (F i)‖ ^ 2 =
    ∑ i in s₁ \ s₂, ‖F i‖ ^ 2 + ∑ i in s₂ \ s₁, ‖F i‖ ^ 2
⊢ ‖∑ x in s₁ \ s₂, ↑(V x) (f x) + ∑ x in s₂ \ s₁, -↑(V x) (f x)‖ ^ 2 =
    ∑ i in s₁ \ s₂, ‖f i‖ ^ 2 + ∑ i in s₂ \ s₁, ‖f i‖ ^ 2

tactic: intro i
state_before: 𝕜 : Type u_4
E : Type u_2
F✝ : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F✝
inst✝² : InnerProductSpace ℝ F✝
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
F : (i : ι) → G i := fun i => if i ∈ s₁ then f i else -f i
hF₁ : ∀ (i : ι), i ∈ s₁ \ s₂ → F i = f i
hF₂ : ∀ (i : ι), i ∈ s₂ \ s₁ → F i = -f i
⊢ ∀ (i : ι), ‖F i‖ = ‖f i‖

tactic: dsimp only
state_before: 𝕜 : Type u_4
E : Type u_2
F✝ : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F✝
inst✝² : InnerProductSpace ℝ F✝
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
F : (i : ι) → G i := fun i => if i ∈ s₁ then f i else -f i
hF₁ : ∀ (i : ι), i ∈ s₁ \ s₂ → F i = f i
hF₂ : ∀ (i : ι), i ∈ s₂ \ s₁ → F i = -f i
i : ι
⊢ ‖F i‖ = ‖f i‖

tactic: split_ifs <;> simp only [eq_self_iff_true, norm_neg]
state_before: 𝕜 : Type u_4
E : Type u_2
F✝ : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F✝
inst✝² : InnerProductSpace ℝ F✝
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
F : (i : ι) → G i := fun i => if i ∈ s₁ then f i else -f i
hF₁ : ∀ (i : ι), i ∈ s₁ \ s₂ → F i = f i
hF₂ : ∀ (i : ι), i ∈ s₂ \ s₁ → F i = -f i
i : ι
⊢ ‖if i ∈ s₁ then f i else -f i‖ = ‖f i‖

tactic: have hs : Disjoint (s₁ \ s₂) (s₂ \ s₁) := disjoint_sdiff_sdiff
state_before: 𝕜 : Type u_4
E : Type u_2
F✝ : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F✝
inst✝² : InnerProductSpace ℝ F✝
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
F : (i : ι) → G i := fun i => if i ∈ s₁ then f i else -f i
hF₁ : ∀ (i : ι), i ∈ s₁ \ s₂ → F i = f i
hF₂ : ∀ (i : ι), i ∈ s₂ \ s₁ → F i = -f i
hF : ∀ (i : ι), ‖F i‖ = ‖f i‖
⊢ ‖∑ i in s₁ \ s₂, ↑(V i) (F i) + ∑ i in s₂ \ s₁, ↑(V i) (F i)‖ ^ 2 =
    ∑ i in s₁ \ s₂, ‖F i‖ ^ 2 + ∑ i in s₂ \ s₁, ‖F i‖ ^ 2

tactic: simpa only [Finset.sum_union hs] using hV.norm_sum F (s₁ \ s₂ ∪ s₂ \ s₁)
state_before: 𝕜 : Type u_4
E : Type u_2
F✝ : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F✝
inst✝² : InnerProductSpace ℝ F✝
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
F : (i : ι) → G i := fun i => if i ∈ s₁ then f i else -f i
hF₁ : ∀ (i : ι), i ∈ s₁ \ s₂ → F i = f i
hF₂ : ∀ (i : ι), i ∈ s₂ \ s₁ → F i = -f i
hF : ∀ (i : ι), ‖F i‖ = ‖f i‖
hs : Disjoint (s₁ \ s₂) (s₂ \ s₁)
⊢ ‖∑ i in s₁ \ s₂, ↑(V i) (F i) + ∑ i in s₂ \ s₁, ↑(V i) (F i)‖ ^ 2 =
    ∑ i in s₁ \ s₂, ‖F i‖ ^ 2 + ∑ i in s₂ \ s₁, ‖F i‖ ^ 2

tactic: refine' Finset.sum_congr rfl fun i hi => _
state_before: case h.e'_2.h.e'_5.h.e'_3.h.e'_5
𝕜 : Type u_4
E : Type u_2
F✝ : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F✝
inst✝² : InnerProductSpace ℝ F✝
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
F : (i : ι) → G i := fun i => if i ∈ s₁ then f i else -f i
hF₁ : ∀ (i : ι), i ∈ s₁ \ s₂ → F i = f i
hF₂ : ∀ (i : ι), i ∈ s₂ \ s₁ → F i = -f i
hF : ∀ (i : ι), ‖F i‖ = ‖f i‖
this :
  ‖∑ i in s₁ \ s₂, ↑(V i) (F i) + ∑ i in s₂ \ s₁, ↑(V i) (F i)‖ ^ 2 =
    ∑ i in s₁ \ s₂, ‖F i‖ ^ 2 + ∑ i in s₂ \ s₁, ‖F i‖ ^ 2
⊢ ∑ x in s₁ \ s₂, ↑(V x) (f x) = ∑ i in s₁ \ s₂, ↑(V i) (F i)

tactic: simp only [hF₁ i hi]
state_before: case h.e'_2.h.e'_5.h.e'_3.h.e'_5
𝕜 : Type u_4
E : Type u_2
F✝ : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F✝
inst✝² : InnerProductSpace ℝ F✝
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
F : (i : ι) → G i := fun i => if i ∈ s₁ then f i else -f i
hF₁ : ∀ (i : ι), i ∈ s₁ \ s₂ → F i = f i
hF₂ : ∀ (i : ι), i ∈ s₂ \ s₁ → F i = -f i
hF : ∀ (i : ι), ‖F i‖ = ‖f i‖
this :
  ‖∑ i in s₁ \ s₂, ↑(V i) (F i) + ∑ i in s₂ \ s₁, ↑(V i) (F i)‖ ^ 2 =
    ∑ i in s₁ \ s₂, ‖F i‖ ^ 2 + ∑ i in s₂ \ s₁, ‖F i‖ ^ 2
i : ι
hi : i ∈ s₁ \ s₂
⊢ ↑(V i) (f i) = ↑(V i) (F i)

tactic: refine' Finset.sum_congr rfl fun i hi => _
state_before: case h.e'_2.h.e'_5.h.e'_3.h.e'_6
𝕜 : Type u_4
E : Type u_2
F✝ : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F✝
inst✝² : InnerProductSpace ℝ F✝
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
F : (i : ι) → G i := fun i => if i ∈ s₁ then f i else -f i
hF₁ : ∀ (i : ι), i ∈ s₁ \ s₂ → F i = f i
hF₂ : ∀ (i : ι), i ∈ s₂ \ s₁ → F i = -f i
hF : ∀ (i : ι), ‖F i‖ = ‖f i‖
this :
  ‖∑ i in s₁ \ s₂, ↑(V i) (F i) + ∑ i in s₂ \ s₁, ↑(V i) (F i)‖ ^ 2 =
    ∑ i in s₁ \ s₂, ‖F i‖ ^ 2 + ∑ i in s₂ \ s₁, ‖F i‖ ^ 2
⊢ ∑ x in s₂ \ s₁, -↑(V x) (f x) = ∑ i in s₂ \ s₁, ↑(V i) (F i)

tactic: simp only [hF₂ i hi, LinearIsometry.map_neg]
state_before: case h.e'_2.h.e'_5.h.e'_3.h.e'_6
𝕜 : Type u_4
E : Type u_2
F✝ : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F✝
inst✝² : InnerProductSpace ℝ F✝
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
F : (i : ι) → G i := fun i => if i ∈ s₁ then f i else -f i
hF₁ : ∀ (i : ι), i ∈ s₁ \ s₂ → F i = f i
hF₂ : ∀ (i : ι), i ∈ s₂ \ s₁ → F i = -f i
hF : ∀ (i : ι), ‖F i‖ = ‖f i‖
this :
  ‖∑ i in s₁ \ s₂, ↑(V i) (F i) + ∑ i in s₂ \ s₁, ↑(V i) (F i)‖ ^ 2 =
    ∑ i in s₁ \ s₂, ‖F i‖ ^ 2 + ∑ i in s₂ \ s₁, ‖F i‖ ^ 2
i : ι
hi : i ∈ s₂ \ s₁
⊢ -↑(V i) (f i) = ↑(V i) (F i)

tactic: simp only [hF]
state_before: case h.e'_3.h.e'_5.a.h.e'_5
𝕜 : Type u_4
E : Type u_2
F✝ : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F✝
inst✝² : InnerProductSpace ℝ F✝
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
F : (i : ι) → G i := fun i => if i ∈ s₁ then f i else -f i
hF₁ : ∀ (i : ι), i ∈ s₁ \ s₂ → F i = f i
hF₂ : ∀ (i : ι), i ∈ s₂ \ s₁ → F i = -f i
hF : ∀ (i : ι), ‖F i‖ = ‖f i‖
this :
  ‖∑ i in s₁ \ s₂, ↑(V i) (F i) + ∑ i in s₂ \ s₁, ↑(V i) (F i)‖ ^ 2 =
    ∑ i in s₁ \ s₂, ‖F i‖ ^ 2 + ∑ i in s₂ \ s₁, ‖F i‖ ^ 2
x✝ : ι
a✝ : x✝ ∈ s₁ \ s₂
⊢ ‖f x✝‖ = ‖F x✝‖

tactic: simp only [hF]
state_before: case h.e'_3.h.e'_6.a.h.e'_5
𝕜 : Type u_4
E : Type u_2
F✝ : Type ?u.3696068
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : NormedAddCommGroup F✝
inst✝² : InnerProductSpace ℝ F✝
dec_E : DecidableEq E
ι : Type u_1
dec_ι : DecidableEq ι
G : ι → Type u_3
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
f : (i : ι) → G i
s₁ s₂ : Finset ι
F : (i : ι) → G i := fun i => if i ∈ s₁ then f i else -f i
hF₁ : ∀ (i : ι), i ∈ s₁ \ s₂ → F i = f i
hF₂ : ∀ (i : ι), i ∈ s₂ \ s₁ → F i = -f i
hF : ∀ (i : ι), ‖F i‖ = ‖f i‖
this :
  ‖∑ i in s₁ \ s₂, ↑(V i) (F i) + ∑ i in s₂ \ s₁, ↑(V i) (F i)‖ ^ 2 =
    ∑ i in s₁ \ s₂, ‖F i‖ ^ 2 + ∑ i in s₂ \ s₁, ‖F i‖ ^ 2
x✝ : ι
a✝ : x✝ ∈ s₂ \ s₁
⊢ ‖f x✝‖ = ‖F x✝‖