Theorem: real_inner_add_sub_eq_zero_iff
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: conv_rhs => rw [← mul_self_inj_of_nonneg (norm_nonneg _) (norm_nonneg _)]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
⊢ ⟪x + y, x - y⟫_ℝ = 0 ↔ ‖x‖ = ‖y‖
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
⊢ ⟪x + y, x - y⟫_ℝ = 0 ↔ ‖x‖ * ‖x‖ = ‖y‖ * ‖y‖

tactic: simp only [← @inner_self_eq_norm_mul_norm ℝ, inner_add_left, inner_sub_right, real_inner_comm y x,
  sub_eq_zero, re_to_real]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
⊢ ⟪x + y, x - y⟫_ℝ = 0 ↔ ‖x‖ * ‖x‖ = ‖y‖ * ‖y‖
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
⊢ ⟪x, x⟫_ℝ + ⟪y, x⟫_ℝ = ⟪y, x⟫_ℝ + ⟪y, y⟫_ℝ ↔ ⟪x, x⟫_ℝ = ⟪y, y⟫_ℝ

tactic: constructor
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
⊢ ⟪x, x⟫_ℝ + ⟪y, x⟫_ℝ = ⟪y, x⟫_ℝ + ⟪y, y⟫_ℝ ↔ ⟪x, x⟫_ℝ = ⟪y, y⟫_ℝ
state_after: case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
⊢ ⟪x, x⟫_ℝ + ⟪y, x⟫_ℝ = ⟪y, x⟫_ℝ + ⟪y, y⟫_ℝ → ⟪x, x⟫_ℝ = ⟪y, y⟫_ℝ

case mpr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
⊢ ⟪x, x⟫_ℝ = ⟪y, y⟫_ℝ → ⟪x, x⟫_ℝ + ⟪y, x⟫_ℝ = ⟪y, x⟫_ℝ + ⟪y, y⟫_ℝ

tactic: intro h
state_before: case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
⊢ ⟪x, x⟫_ℝ + ⟪y, x⟫_ℝ = ⟪y, x⟫_ℝ + ⟪y, y⟫_ℝ → ⟪x, x⟫_ℝ = ⟪y, y⟫_ℝ
state_after: case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
h : ⟪x, x⟫_ℝ + ⟪y, x⟫_ℝ = ⟪y, x⟫_ℝ + ⟪y, y⟫_ℝ
⊢ ⟪x, x⟫_ℝ = ⟪y, y⟫_ℝ

tactic: rw [add_comm] at h
state_before: case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
h : ⟪x, x⟫_ℝ + ⟪y, x⟫_ℝ = ⟪y, x⟫_ℝ + ⟪y, y⟫_ℝ
⊢ ⟪x, x⟫_ℝ = ⟪y, y⟫_ℝ
state_after: case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
h : ⟪y, x⟫_ℝ + ⟪x, x⟫_ℝ = ⟪y, x⟫_ℝ + ⟪y, y⟫_ℝ
⊢ ⟪x, x⟫_ℝ = ⟪y, y⟫_ℝ

tactic: linarith
state_before: case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
h : ⟪y, x⟫_ℝ + ⟪x, x⟫_ℝ = ⟪y, x⟫_ℝ + ⟪y, y⟫_ℝ
⊢ ⟪x, x⟫_ℝ = ⟪y, y⟫_ℝ
state_after: no goals

tactic: intro h
state_before: case mpr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
⊢ ⟪x, x⟫_ℝ = ⟪y, y⟫_ℝ → ⟪x, x⟫_ℝ + ⟪y, x⟫_ℝ = ⟪y, x⟫_ℝ + ⟪y, y⟫_ℝ
state_after: case mpr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
h : ⟪x, x⟫_ℝ = ⟪y, y⟫_ℝ
⊢ ⟪x, x⟫_ℝ + ⟪y, x⟫_ℝ = ⟪y, x⟫_ℝ + ⟪y, y⟫_ℝ

tactic: linarith
state_before: case mpr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : F
h : ⟪x, x⟫_ℝ = ⟪y, y⟫_ℝ
⊢ ⟪x, x⟫_ℝ + ⟪y, x⟫_ℝ = ⟪y, x⟫_ℝ + ⟪y, y⟫_ℝ
state_after: no goals