Theorem: LinearMap.IsSymmetric.inner_map_polarization
File: Mathlib/Analysis/InnerProductSpace/Symmetric.lean

tactic: rcases@I_mul_I_ax 𝕜 _ with (h | h)
state_before: 𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
⊢ ⟪T x, y⟫_𝕜 =
    (⟪T (x + y), x + y⟫_𝕜 - ⟪T (x - y), x - y⟫_𝕜 - I * ⟪T (x + I • y), x + I • y⟫_𝕜 +
        I * ⟪T (x - I • y), x - I • y⟫_𝕜) /
      4
state_after: case inl
𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
h : I = 0
⊢ ⟪T x, y⟫_𝕜 =
    (⟪T (x + y), x + y⟫_𝕜 - ⟪T (x - y), x - y⟫_𝕜 - I * ⟪T (x + I • y), x + I • y⟫_𝕜 +
        I * ⟪T (x - I • y), x - I • y⟫_𝕜) /
      4

case inr
𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
h : I * I = -1
⊢ ⟪T x, y⟫_𝕜 =
    (⟪T (x + y), x + y⟫_𝕜 - ⟪T (x - y), x - y⟫_𝕜 - I * ⟪T (x + I • y), x + I • y⟫_𝕜 +
        I * ⟪T (x - I • y), x - I • y⟫_𝕜) /
      4

tactic: simp_rw [h, zero_mul, sub_zero, add_zero, map_add, map_sub, inner_add_left,
  inner_add_right, inner_sub_left, inner_sub_right, hT x, ← inner_conj_symm x (T y)]
state_before: case inl
𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
h : I = 0
⊢ ⟪T x, y⟫_𝕜 =
    (⟪T (x + y), x + y⟫_𝕜 - ⟪T (x - y), x - y⟫_𝕜 - I * ⟪T (x + I • y), x + I • y⟫_𝕜 +
        I * ⟪T (x - I • y), x - I • y⟫_𝕜) /
      4
state_after: case inl
𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
h : I = 0
⊢ (starRingEnd 𝕜) ⟪T y, x⟫_𝕜 =
    (⟪x, T x⟫_𝕜 + (starRingEnd 𝕜) ⟪T y, x⟫_𝕜 + (⟪T y, x⟫_𝕜 + ⟪T y, y⟫_𝕜) -
        (⟪x, T x⟫_𝕜 - (starRingEnd 𝕜) ⟪T y, x⟫_𝕜 - (⟪T y, x⟫_𝕜 - ⟪T y, y⟫_𝕜))) /
      4

tactic: suffices (re ⟪T y, x⟫ : 𝕜) = ⟪T y, x⟫ by
  rw [conj_eq_iff_re.mpr this]
  ring
state_before: case inl
𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
h : I = 0
⊢ (starRingEnd 𝕜) ⟪T y, x⟫_𝕜 =
    (⟪x, T x⟫_𝕜 + (starRingEnd 𝕜) ⟪T y, x⟫_𝕜 + (⟪T y, x⟫_𝕜 + ⟪T y, y⟫_𝕜) -
        (⟪x, T x⟫_𝕜 - (starRingEnd 𝕜) ⟪T y, x⟫_𝕜 - (⟪T y, x⟫_𝕜 - ⟪T y, y⟫_𝕜))) /
      4
state_after: case inl
𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
h : I = 0
⊢ ↑(re ⟪T y, x⟫_𝕜) = ⟪T y, x⟫_𝕜

tactic: rw [← re_add_im ⟪T y, x⟫]
state_before: case inl
𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
h : I = 0
⊢ ↑(re ⟪T y, x⟫_𝕜) = ⟪T y, x⟫_𝕜
state_after: case inl
𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
h : I = 0
⊢ ↑(re (↑(re ⟪T y, x⟫_𝕜) + ↑(im ⟪T y, x⟫_𝕜) * I)) = ↑(re ⟪T y, x⟫_𝕜) + ↑(im ⟪T y, x⟫_𝕜) * I

tactic: simp_rw [h, mul_zero, add_zero]
state_before: case inl
𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
h : I = 0
⊢ ↑(re (↑(re ⟪T y, x⟫_𝕜) + ↑(im ⟪T y, x⟫_𝕜) * I)) = ↑(re ⟪T y, x⟫_𝕜) + ↑(im ⟪T y, x⟫_𝕜) * I
state_after: case inl
𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
h : I = 0
⊢ ↑(re ↑(re ⟪T y, x⟫_𝕜)) = ↑(re ⟪T y, x⟫_𝕜)

tactic: norm_cast
state_before: case inl
𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
h : I = 0
⊢ ↑(re ↑(re ⟪T y, x⟫_𝕜)) = ↑(re ⟪T y, x⟫_𝕜)
state_after: no goals

tactic: rw [conj_eq_iff_re.mpr this]
state_before: 𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
h : I = 0
this : ↑(re ⟪T y, x⟫_𝕜) = ⟪T y, x⟫_𝕜
⊢ (starRingEnd 𝕜) ⟪T y, x⟫_𝕜 =
    (⟪x, T x⟫_𝕜 + (starRingEnd 𝕜) ⟪T y, x⟫_𝕜 + (⟪T y, x⟫_𝕜 + ⟪T y, y⟫_𝕜) -
        (⟪x, T x⟫_𝕜 - (starRingEnd 𝕜) ⟪T y, x⟫_𝕜 - (⟪T y, x⟫_𝕜 - ⟪T y, y⟫_𝕜))) /
      4
state_after: 𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
h : I = 0
this : ↑(re ⟪T y, x⟫_𝕜) = ⟪T y, x⟫_𝕜
⊢ ⟪T y, x⟫_𝕜 =
    (⟪x, T x⟫_𝕜 + ⟪T y, x⟫_𝕜 + (⟪T y, x⟫_𝕜 + ⟪T y, y⟫_𝕜) - (⟪x, T x⟫_𝕜 - ⟪T y, x⟫_𝕜 - (⟪T y, x⟫_𝕜 - ⟪T y, y⟫_𝕜))) / 4

tactic: ring
state_before: 𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
h : I = 0
this : ↑(re ⟪T y, x⟫_𝕜) = ⟪T y, x⟫_𝕜
⊢ ⟪T y, x⟫_𝕜 =
    (⟪x, T x⟫_𝕜 + ⟪T y, x⟫_𝕜 + (⟪T y, x⟫_𝕜 + ⟪T y, y⟫_𝕜) - (⟪x, T x⟫_𝕜 - ⟪T y, x⟫_𝕜 - (⟪T y, x⟫_𝕜 - ⟪T y, y⟫_𝕜))) / 4
state_after: no goals

tactic: simp_rw [map_add, map_sub, inner_add_left, inner_add_right, inner_sub_left, inner_sub_right,
  LinearMap.map_smul, inner_smul_left, inner_smul_right, RCLike.conj_I, mul_add, mul_sub,
  sub_sub, ← mul_assoc, mul_neg, h, neg_neg, one_mul, neg_one_mul]
state_before: case inr
𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
h : I * I = -1
⊢ ⟪T x, y⟫_𝕜 =
    (⟪T (x + y), x + y⟫_𝕜 - ⟪T (x - y), x - y⟫_𝕜 - I * ⟪T (x + I • y), x + I • y⟫_𝕜 +
        I * ⟪T (x - I • y), x - I • y⟫_𝕜) /
      4
state_after: case inr
𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
h : I * I = -1
⊢ ⟪T x, y⟫_𝕜 =
    (⟪T x, x⟫_𝕜 + ⟪T x, y⟫_𝕜 + (⟪T y, x⟫_𝕜 + ⟪T y, y⟫_𝕜) -
          (⟪T x, x⟫_𝕜 - (⟪T x, y⟫_𝕜 + (⟪T y, x⟫_𝕜 - ⟪T y, y⟫_𝕜)) +
            (I * ⟪T x, x⟫_𝕜 + -⟪T x, y⟫_𝕜 + (⟪T y, x⟫_𝕜 + I * ⟪T y, y⟫_𝕜))) +
        (I * ⟪T x, x⟫_𝕜 - (-⟪T x, y⟫_𝕜 + (⟪T y, x⟫_𝕜 - I * ⟪T y, y⟫_𝕜)))) /
      4

tactic: ring
state_before: case inr
𝕜 : Type u_1
E : Type u_2
E' : Type u_3
F : Type u_4
G : Type u_5
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : NormedAddCommGroup E'
inst✝ : InnerProductSpace ℝ E'
T : E →ₗ[𝕜] E
hT : T.IsSymmetric
x y : E
h : I * I = -1
⊢ ⟪T x, y⟫_𝕜 =
    (⟪T x, x⟫_𝕜 + ⟪T x, y⟫_𝕜 + (⟪T y, x⟫_𝕜 + ⟪T y, y⟫_𝕜) -
          (⟪T x, x⟫_𝕜 - (⟪T x, y⟫_𝕜 + (⟪T y, x⟫_𝕜 - ⟪T y, y⟫_𝕜)) +
            (I * ⟪T x, x⟫_𝕜 + -⟪T x, y⟫_𝕜 + (⟪T y, x⟫_𝕜 + I * ⟪T y, y⟫_𝕜))) +
        (I * ⟪T x, x⟫_𝕜 - (-⟪T x, y⟫_𝕜 + (⟪T y, x⟫_𝕜 - I * ⟪T y, y⟫_𝕜)))) /
      4
state_after: no goals