-- Mathlib/Analysis/InnerProductSpace/OfNorm.lean
theorem inner_.norm_sq (x : E) : ‖x‖ ^ 2 = re (inner_ 𝕜 x x)

Proof state:
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
h₁ : ‖x - x‖ = 0
⊢ ‖x + x‖ = 2 • ‖x‖

Tactic:
convert norm_nsmul 𝕜 2 x using 2

Result:
case h.e'_2.h.e'_3
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
h₁ : ‖x - x‖ = 0
⊢ x + x = 2 • x

Proof state:
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
h₁ : ‖x - x‖ = 0
h₂ : ‖x + x‖ = 2 • ‖x‖
⊢ ‖x‖ ^ 2 =
    4 / (4 * 4 + 0 * 0) *
        (‖x + x‖ * ‖x + x‖ - 0 * 0 - (‖x - x‖ * ‖x - x‖ - 0 * 0) +
            ((0 * ‖I • x + x‖ - im I * 0) * ‖I • x + x‖ - (0 * 0 + im I * ‖I • x + x‖) * 0) -
          ((0 * ‖I • x - x‖ - im I * 0) * ‖I • x - x‖ - (0 * 0 + im I * ‖I • x - x‖) * 0)) -
      -0 / (4 * 4 + 0 * 0) *
        (‖x + x‖ * 0 + 0 * ‖x + x‖ - (‖x - x‖ * 0 + 0 * ‖x - x‖) +
            ((0 * ‖I • x + x‖ - im I * 0) * 0 + (0 * 0 + im I * ‖I • x + x‖) * ‖I • x + x‖) -
          ((0 * ‖I • x - x‖ - im I * 0) * 0 + (0 * 0 + im I * ‖I • x - x‖) * ‖I • x - x‖))

Tactic:
rw [h₁, h₂]

Result:
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
h₁ : ‖x - x‖ = 0
h₂ : ‖x + x‖ = 2 • ‖x‖
⊢ ‖x‖ ^ 2 =
    4 / (4 * 4 + 0 * 0) *
        (2 • ‖x‖ * 2 • ‖x‖ - 0 * 0 - (0 * 0 - 0 * 0) +
            ((0 * ‖I • x + x‖ - im I * 0) * ‖I • x + x‖ - (0 * 0 + im I * ‖I • x + x‖) * 0) -
          ((0 * ‖I • x - x‖ - im I * 0) * ‖I • x - x‖ - (0 * 0 + im I * ‖I • x - x‖) * 0)) -
      -0 / (4 * 4 + 0 * 0) *
        (2 • ‖x‖ * 0 + 0 * 2 • ‖x‖ - (0 * 0 + 0 * 0) +
            ((0 * ‖I • x + x‖ - im I * 0) * 0 + (0 * 0 + im I * ‖I • x + x‖) * ‖I • x + x‖) -
          ((0 * ‖I • x - x‖ - im I * 0) * 0 + (0 * 0 + im I * ‖I • x - x‖) * ‖I • x - x‖))

Proof state:
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
⊢ ‖x - x‖ = 0

Tactic:
simp

Result:
no goals

Proof state:
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
⊢ ‖x‖ ^ 2 =
    4 / (4 * 4 + 0 * 0) *
        (‖x + x‖ * ‖x + x‖ - 0 * 0 - (‖x - x‖ * ‖x - x‖ - 0 * 0) +
            ((0 * ‖I • x + x‖ - im I * 0) * ‖I • x + x‖ - (0 * 0 + im I * ‖I • x + x‖) * 0) -
          ((0 * ‖I • x - x‖ - im I * 0) * ‖I • x - x‖ - (0 * 0 + im I * ‖I • x - x‖) * 0)) -
      -0 / (4 * 4 + 0 * 0) *
        (‖x + x‖ * 0 + 0 * ‖x + x‖ - (‖x - x‖ * 0 + 0 * ‖x - x‖) +
            ((0 * ‖I • x + x‖ - im I * 0) * 0 + (0 * 0 + im I * ‖I • x + x‖) * ‖I • x + x‖) -
          ((0 * ‖I • x - x‖ - im I * 0) * 0 + (0 * 0 + im I * ‖I • x - x‖) * ‖I • x - x‖))

Tactic:
have h₁ : ‖x - x‖ = 0 := by simp

Result:
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
h₁ : ‖x - x‖ = 0
⊢ ‖x‖ ^ 2 =
    4 / (4 * 4 + 0 * 0) *
        (‖x + x‖ * ‖x + x‖ - 0 * 0 - (‖x - x‖ * ‖x - x‖ - 0 * 0) +
            ((0 * ‖I • x + x‖ - im I * 0) * ‖I • x + x‖ - (0 * 0 + im I * ‖I • x + x‖) * 0) -
          ((0 * ‖I • x - x‖ - im I * 0) * ‖I • x - x‖ - (0 * 0 + im I * ‖I • x - x‖) * 0)) -
      -0 / (4 * 4 + 0 * 0) *
        (‖x + x‖ * 0 + 0 * ‖x + x‖ - (‖x - x‖ * 0 + 0 * ‖x - x‖) +
            ((0 * ‖I • x + x‖ - im I * 0) * 0 + (0 * 0 + im I * ‖I • x + x‖) * ‖I • x + x‖) -
          ((0 * ‖I • x - x‖ - im I * 0) * 0 + (0 * 0 + im I * ‖I • x - x‖) * ‖I • x - x‖))

Proof state:
case h.e'_2.h.e'_3
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
h₁ : ‖x - x‖ = 0
⊢ x + x = 2 • x

Tactic:
module

Result:
no goals

Proof state:
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
h₁ : ‖x - x‖ = 0
⊢ ‖x‖ ^ 2 =
    4 / (4 * 4 + 0 * 0) *
        (‖x + x‖ * ‖x + x‖ - 0 * 0 - (‖x - x‖ * ‖x - x‖ - 0 * 0) +
            ((0 * ‖I • x + x‖ - im I * 0) * ‖I • x + x‖ - (0 * 0 + im I * ‖I • x + x‖) * 0) -
          ((0 * ‖I • x - x‖ - im I * 0) * ‖I • x - x‖ - (0 * 0 + im I * ‖I • x - x‖) * 0)) -
      -0 / (4 * 4 + 0 * 0) *
        (‖x + x‖ * 0 + 0 * ‖x + x‖ - (‖x - x‖ * 0 + 0 * ‖x - x‖) +
            ((0 * ‖I • x + x‖ - im I * 0) * 0 + (0 * 0 + im I * ‖I • x + x‖) * ‖I • x + x‖) -
          ((0 * ‖I • x - x‖ - im I * 0) * 0 + (0 * 0 + im I * ‖I • x - x‖) * ‖I • x - x‖))

Tactic:
have h₂ : ‖x + x‖ = 2 • ‖x‖ := by convert norm_nsmul 𝕜 2 x using 2; module

Result:
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
h₁ : ‖x - x‖ = 0
h₂ : ‖x + x‖ = 2 • ‖x‖
⊢ ‖x‖ ^ 2 =
    4 / (4 * 4 + 0 * 0) *
        (‖x + x‖ * ‖x + x‖ - 0 * 0 - (‖x - x‖ * ‖x - x‖ - 0 * 0) +
            ((0 * ‖I • x + x‖ - im I * 0) * ‖I • x + x‖ - (0 * 0 + im I * ‖I • x + x‖) * 0) -
          ((0 * ‖I • x - x‖ - im I * 0) * ‖I • x - x‖ - (0 * 0 + im I * ‖I • x - x‖) * 0)) -
      -0 / (4 * 4 + 0 * 0) *
        (‖x + x‖ * 0 + 0 * ‖x + x‖ - (‖x - x‖ * 0 + 0 * ‖x - x‖) +
            ((0 * ‖I • x + x‖ - im I * 0) * 0 + (0 * 0 + im I * ‖I • x + x‖) * ‖I • x + x‖) -
          ((0 * ‖I • x - x‖ - im I * 0) * 0 + (0 * 0 + im I * ‖I • x - x‖) * ‖I • x - x‖))

Proof state:
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
h₁ : ‖x - x‖ = 0
h₂ : ‖x + x‖ = 2 • ‖x‖
⊢ ‖x‖ ^ 2 =
    4 / (4 * 4 + 0 * 0) *
        (2 • ‖x‖ * 2 • ‖x‖ - 0 * 0 - (0 * 0 - 0 * 0) +
            ((0 * ‖I • x + x‖ - im I * 0) * ‖I • x + x‖ - (0 * 0 + im I * ‖I • x + x‖) * 0) -
          ((0 * ‖I • x - x‖ - im I * 0) * ‖I • x - x‖ - (0 * 0 + im I * ‖I • x - x‖) * 0)) -
      -0 / (4 * 4 + 0 * 0) *
        (2 • ‖x‖ * 0 + 0 * 2 • ‖x‖ - (0 * 0 + 0 * 0) +
            ((0 * ‖I • x + x‖ - im I * 0) * 0 + (0 * 0 + im I * ‖I • x + x‖) * ‖I • x + x‖) -
          ((0 * ‖I • x - x‖ - im I * 0) * 0 + (0 * 0 + im I * ‖I • x - x‖) * ‖I • x - x‖))

Tactic:
ring

Result:
no goals

Proof state:
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
⊢ ‖x‖ ^ 2 = re (inner_ 𝕜 x x)

Tactic:
simp only [inner_, normSq_apply, ofNat_re, ofNat_im, map_sub, map_add, map_zero, map_mul,
  ofReal_re, ofReal_im, mul_re, inv_re, mul_im, I_re, inv_im]

Result:
𝕜 : Type u_1
inst✝² : RCLike 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
⊢ ‖x‖ ^ 2 =
    4 / (4 * 4 + 0 * 0) *
        (‖x + x‖ * ‖x + x‖ - 0 * 0 - (‖x - x‖ * ‖x - x‖ - 0 * 0) +
            ((0 * ‖I • x + x‖ - im I * 0) * ‖I • x + x‖ - (0 * 0 + im I * ‖I • x + x‖) * 0) -
          ((0 * ‖I • x - x‖ - im I * 0) * ‖I • x - x‖ - (0 * 0 + im I * ‖I • x - x‖) * 0)) -
      -0 / (4 * 4 + 0 * 0) *
        (‖x + x‖ * 0 + 0 * ‖x + x‖ - (‖x - x‖ * 0 + 0 * ‖x - x‖) +
            ((0 * ‖I • x + x‖ - im I * 0) * 0 + (0 * 0 + im I * ‖I • x + x‖) * ‖I • x + x‖) -
          ((0 * ‖I • x - x‖ - im I * 0) * 0 + (0 * 0 + im I * ‖I • x - x‖) * ‖I • x - x‖))