Theorem: LinearMap.isSymmetric_iff_inner_map_self_real
File: Mathlib/Analysis/InnerProductSpace/Symmetric.lean

tactic: constructor
state_before: 𝕜 : Type ?u.76973
E : Type ?u.76976
E' : Type ?u.76979
F : Type ?u.76982
G : Type ?u.76985
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : InnerProductSpace 𝕜 F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 G
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace ℝ E'
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℂ V
T : V →ₗ[ℂ] V
⊢ IsSymmetric T ↔ ∀ (v : V), ↑(starRingEnd ℂ) (inner (↑T v) v) = inner (↑T v) v

tactic: intro hT v
state_before: case mp
𝕜 : Type ?u.76973
E : Type ?u.76976
E' : Type ?u.76979
F : Type ?u.76982
G : Type ?u.76985
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : InnerProductSpace 𝕜 F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 G
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace ℝ E'
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℂ V
T : V →ₗ[ℂ] V
⊢ IsSymmetric T → ∀ (v : V), ↑(starRingEnd ℂ) (inner (↑T v) v) = inner (↑T v) v

tactic: apply IsSymmetric.conj_inner_sym hT
state_before: case mp
𝕜 : Type ?u.76973
E : Type ?u.76976
E' : Type ?u.76979
F : Type ?u.76982
G : Type ?u.76985
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : InnerProductSpace 𝕜 F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 G
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace ℝ E'
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℂ V
T : V →ₗ[ℂ] V
hT : IsSymmetric T
v : V
⊢ ↑(starRingEnd ℂ) (inner (↑T v) v) = inner (↑T v) v

tactic: intro h x y
state_before: case mpr
𝕜 : Type ?u.76973
E : Type ?u.76976
E' : Type ?u.76979
F : Type ?u.76982
G : Type ?u.76985
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : InnerProductSpace 𝕜 F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 G
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace ℝ E'
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℂ V
T : V →ₗ[ℂ] V
⊢ (∀ (v : V), ↑(starRingEnd ℂ) (inner (↑T v) v) = inner (↑T v) v) → IsSymmetric T

tactic: rw [← inner_conj_symm x (T y)]
state_before: case mpr
𝕜 : Type ?u.76973
E : Type ?u.76976
E' : Type ?u.76979
F : Type ?u.76982
G : Type ?u.76985
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : InnerProductSpace 𝕜 F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 G
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace ℝ E'
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℂ V
T : V →ₗ[ℂ] V
h : ∀ (v : V), ↑(starRingEnd ℂ) (inner (↑T v) v) = inner (↑T v) v
x y : V
⊢ inner (↑T x) y = inner x (↑T y)

tactic: rw [inner_map_polarization T x y]
state_before: case mpr
𝕜 : Type ?u.76973
E : Type ?u.76976
E' : Type ?u.76979
F : Type ?u.76982
G : Type ?u.76985
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : InnerProductSpace 𝕜 F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 G
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace ℝ E'
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℂ V
T : V →ₗ[ℂ] V
h : ∀ (v : V), ↑(starRingEnd ℂ) (inner (↑T v) v) = inner (↑T v) v
x y : V
⊢ inner (↑T x) y = ↑(starRingEnd ℂ) (inner (↑T y) x)

tactic: simp only [starRingEnd_apply, star_div', star_sub, star_add, star_mul]
state_before: case mpr
𝕜 : Type ?u.76973
E : Type ?u.76976
E' : Type ?u.76979
F : Type ?u.76982
G : Type ?u.76985
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : InnerProductSpace 𝕜 F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 G
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace ℝ E'
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℂ V
T : V →ₗ[ℂ] V
h : ∀ (v : V), ↑(starRingEnd ℂ) (inner (↑T v) v) = inner (↑T v) v
x y : V
⊢ inner (↑T x) y =
    ↑(starRingEnd ℂ)
      ((inner (↑T (x + y)) (x + y) - inner (↑T (x - y)) (x - y) +
            Complex.I * inner (↑T (x + Complex.I • y)) (x + Complex.I • y) -
          Complex.I * inner (↑T (x - Complex.I • y)) (x - Complex.I • y)) /
        4)

tactic: simp only [← starRingEnd_apply]
state_before: case mpr
𝕜 : Type ?u.76973
E : Type ?u.76976
E' : Type ?u.76979
F : Type ?u.76982
G : Type ?u.76985
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : InnerProductSpace 𝕜 F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 G
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace ℝ E'
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℂ V
T : V →ₗ[ℂ] V
h : ∀ (v : V), ↑(starRingEnd ℂ) (inner (↑T v) v) = inner (↑T v) v
x y : V
⊢ inner (↑T x) y =
    (star (inner (↑T (x + y)) (x + y)) - star (inner (↑T (x - y)) (x - y)) +
          star (inner (↑T (x + Complex.I • y)) (x + Complex.I • y)) * star Complex.I -
        star (inner (↑T (x - Complex.I • y)) (x - Complex.I • y)) * star Complex.I) /
      star 4

tactic: rw [h (x + y), h (x - y), h (x + Complex.I • y), h (x - Complex.I • y)]
state_before: case mpr
𝕜 : Type ?u.76973
E : Type ?u.76976
E' : Type ?u.76979
F : Type ?u.76982
G : Type ?u.76985
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : InnerProductSpace 𝕜 F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 G
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace ℝ E'
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℂ V
T : V →ₗ[ℂ] V
h : ∀ (v : V), ↑(starRingEnd ℂ) (inner (↑T v) v) = inner (↑T v) v
x y : V
⊢ inner (↑T x) y =
    (↑(starRingEnd ℂ) (inner (↑T (x + y)) (x + y)) - ↑(starRingEnd ℂ) (inner (↑T (x - y)) (x - y)) +
          ↑(starRingEnd ℂ) (inner (↑T (x + Complex.I • y)) (x + Complex.I • y)) * ↑(starRingEnd ℂ) Complex.I -
        ↑(starRingEnd ℂ) (inner (↑T (x - Complex.I • y)) (x - Complex.I • y)) * ↑(starRingEnd ℂ) Complex.I) /
      ↑(starRingEnd ℂ) 4

tactic: simp only [Complex.conj_I]
state_before: case mpr
𝕜 : Type ?u.76973
E : Type ?u.76976
E' : Type ?u.76979
F : Type ?u.76982
G : Type ?u.76985
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : InnerProductSpace 𝕜 F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 G
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace ℝ E'
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℂ V
T : V →ₗ[ℂ] V
h : ∀ (v : V), ↑(starRingEnd ℂ) (inner (↑T v) v) = inner (↑T v) v
x y : V
⊢ inner (↑T x) y =
    (inner (↑T (x + y)) (x + y) - inner (↑T (x - y)) (x - y) +
          inner (↑T (x + Complex.I • y)) (x + Complex.I • y) * ↑(starRingEnd ℂ) Complex.I -
        inner (↑T (x - Complex.I • y)) (x - Complex.I • y) * ↑(starRingEnd ℂ) Complex.I) /
      ↑(starRingEnd ℂ) 4

tactic: rw [inner_map_polarization']
state_before: case mpr
𝕜 : Type ?u.76973
E : Type ?u.76976
E' : Type ?u.76979
F : Type ?u.76982
G : Type ?u.76985
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : InnerProductSpace 𝕜 F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 G
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace ℝ E'
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℂ V
T : V →ₗ[ℂ] V
h : ∀ (v : V), ↑(starRingEnd ℂ) (inner (↑T v) v) = inner (↑T v) v
x y : V
⊢ inner (↑T x) y =
    (inner (↑T (x + y)) (x + y) - inner (↑T (x - y)) (x - y) +
          inner (↑T (x + Complex.I • y)) (x + Complex.I • y) * -Complex.I -
        inner (↑T (x - Complex.I • y)) (x - Complex.I • y) * -Complex.I) /
      ↑(starRingEnd ℂ) 4

tactic: norm_num
state_before: case mpr
𝕜 : Type ?u.76973
E : Type ?u.76976
E' : Type ?u.76979
F : Type ?u.76982
G : Type ?u.76985
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : InnerProductSpace 𝕜 F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 G
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace ℝ E'
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℂ V
T : V →ₗ[ℂ] V
h : ∀ (v : V), ↑(starRingEnd ℂ) (inner (↑T v) v) = inner (↑T v) v
x y : V
⊢ (inner (↑T (x + y)) (x + y) - inner (↑T (x - y)) (x - y) -
          Complex.I * inner (↑T (x + Complex.I • y)) (x + Complex.I • y) +
        Complex.I * inner (↑T (x - Complex.I • y)) (x - Complex.I • y)) /
      4 =
    (inner (↑T (x + y)) (x + y) - inner (↑T (x - y)) (x - y) +
          inner (↑T (x + Complex.I • y)) (x + Complex.I • y) * -Complex.I -
        inner (↑T (x - Complex.I • y)) (x - Complex.I • y) * -Complex.I) /
      ↑(starRingEnd ℂ) 4

tactic: ring
state_before: case mpr
𝕜 : Type ?u.76973
E : Type ?u.76976
E' : Type ?u.76979
F : Type ?u.76982
G : Type ?u.76985
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : InnerProductSpace 𝕜 F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 G
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace ℝ E'
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℂ V
T : V →ₗ[ℂ] V
h : ∀ (v : V), ↑(starRingEnd ℂ) (inner (↑T v) v) = inner (↑T v) v
x y : V
⊢ (inner (↑T x + ↑T y) (x + y) - inner (↑T x - ↑T y) (x - y) -
          Complex.I * inner (↑T x + Complex.I • ↑T y) (x + Complex.I • y) +
        Complex.I * inner (↑T x - Complex.I • ↑T y) (x - Complex.I • y)) /
      4 =
    (inner (↑T x + ↑T y) (x + y) - inner (↑T x - ↑T y) (x - y) +
          -(inner (↑T x + Complex.I • ↑T y) (x + Complex.I • y) * Complex.I) +
        inner (↑T x - Complex.I • ↑T y) (x - Complex.I • y) * Complex.I) /
      4