Theorem: reflection_sub
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

tactic: set R : F ≃ₗᵢ[ℝ] F := reflection (ℝ ∙ v - w)ᗮ
state_before: 𝕜 : Type ?u.915894
E : Type ?u.915897
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace F
v w : F
h : ‖v‖ = ‖w‖
⊢ ↑(reflection (Submodule.span ℝ {v - w})ᗮ) v = w

tactic: suffices R v + R v = w + w by
  apply smul_right_injective F (by norm_num : (2 : ℝ) ≠ 0)
  simpa [two_smul] using this
state_before: 𝕜 : Type ?u.915894
E : Type ?u.915897
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace F
v w : F
h : ‖v‖ = ‖w‖
R : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {v - w})ᗮ
⊢ ↑R v = w

tactic: have h₁ : R (v - w) = -(v - w) := reflection_orthogonalComplement_singleton_eq_neg (v - w)
state_before: 𝕜 : Type ?u.915894
E : Type ?u.915897
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace F
v w : F
h : ‖v‖ = ‖w‖
R : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {v - w})ᗮ
⊢ ↑R v + ↑R v = w + w

tactic: have h₂ : R (v + w) = v + w := by
  apply reflection_mem_subspace_eq_self
  rw [Submodule.mem_orthogonal_singleton_iff_inner_left]
  rw [real_inner_add_sub_eq_zero_iff]
  exact h
state_before: 𝕜 : Type ?u.915894
E : Type ?u.915897
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace F
v w : F
h : ‖v‖ = ‖w‖
R : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {v - w})ᗮ
h₁ : ↑R (v - w) = -(v - w)
⊢ ↑R v + ↑R v = w + w

tactic: apply smul_right_injective F (by norm_num : (2 : ℝ) ≠ 0)
state_before: 𝕜 : Type ?u.915894
E : Type ?u.915897
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace F
v w : F
h : ‖v‖ = ‖w‖
R : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {v - w})ᗮ
this : ↑R v + ↑R v = w + w
⊢ ↑R v = w

tactic: simpa [two_smul] using this
state_before: case a
𝕜 : Type ?u.915894
E : Type ?u.915897
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace F
v w : F
h : ‖v‖ = ‖w‖
R : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {v - w})ᗮ
this : ↑R v + ↑R v = w + w
⊢ (fun x x_1 => x • x_1) 2 (↑R v) = (fun x x_1 => x • x_1) 2 w

tactic: norm_num
state_before: 𝕜 : Type ?u.915894
E : Type ?u.915897
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace F
v w : F
h : ‖v‖ = ‖w‖
R : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {v - w})ᗮ
this : ↑R v + ↑R v = w + w
⊢ 2 ≠ 0

tactic: apply reflection_mem_subspace_eq_self
state_before: 𝕜 : Type ?u.915894
E : Type ?u.915897
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace F
v w : F
h : ‖v‖ = ‖w‖
R : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {v - w})ᗮ
h₁ : ↑R (v - w) = -(v - w)
⊢ ↑R (v + w) = v + w

tactic: rw [Submodule.mem_orthogonal_singleton_iff_inner_left]
state_before: case hx
𝕜 : Type ?u.915894
E : Type ?u.915897
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace F
v w : F
h : ‖v‖ = ‖w‖
R : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {v - w})ᗮ
h₁ : ↑R (v - w) = -(v - w)
⊢ v + w ∈ (Submodule.span ℝ {v - w})ᗮ

tactic: rw [real_inner_add_sub_eq_zero_iff]
state_before: case hx
𝕜 : Type ?u.915894
E : Type ?u.915897
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace F
v w : F
h : ‖v‖ = ‖w‖
R : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {v - w})ᗮ
h₁ : ↑R (v - w) = -(v - w)
⊢ inner (v + w) (v - w) = 0

tactic: exact h
state_before: case hx
𝕜 : Type ?u.915894
E : Type ?u.915897
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace F
v w : F
h : ‖v‖ = ‖w‖
R : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {v - w})ᗮ
h₁ : ↑R (v - w) = -(v - w)
⊢ ‖v‖ = ‖w‖

tactic: simp
state_before: case h.e'_2
𝕜 : Type ?u.915894
E : Type ?u.915897
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace F
v w : F
h : ‖v‖ = ‖w‖
R : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {v - w})ᗮ
h₁ : ↑R (v - w) = -(v - w)
h₂ : ↑R (v + w) = v + w
⊢ ↑R v + ↑R v = ↑R (v + w) + ↑R (v - w)

tactic: abel
state_before: case h.e'_3
𝕜 : Type ?u.915894
E : Type ?u.915897
F : Type u_1
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace F
v w : F
h : ‖v‖ = ‖w‖
R : F ≃ₗᵢ[ℝ] F := reflection (Submodule.span ℝ {v - w})ᗮ
h₁ : ↑R (v - w) = -(v - w)
h₂ : ↑R (v + w) = v + w
⊢ w + w = v + w + -(v - w)