Theorem: Matrix.isHermitian_iff_isSymmetric
File: Mathlib/LinearAlgebra/Matrix/Hermitian.lean

tactic: rw [LinearMap.IsSymmetric, (WithLp.equiv 2 (n → α)).symm.surjective.forall₂]
state_before: α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝³ : RCLike α
inst✝² : RCLike β
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix n n α
⊢ A.IsHermitian ↔ (toEuclideanLin A).IsSymmetric
state_after: α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝³ : RCLike α
inst✝² : RCLike β
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix n n α
⊢ A.IsHermitian ↔
    ∀ (x₁ x₂ : n → α),
      ⟪(toEuclideanLin A) ((WithLp.equiv 2 (n → α)).symm x₁), (WithLp.equiv 2 (n → α)).symm x₂⟫_α =
        ⟪(WithLp.equiv 2 (n → α)).symm x₁, (toEuclideanLin A) ((WithLp.equiv 2 (n → α)).symm x₂)⟫_α

tactic: simp only [toEuclideanLin_piLp_equiv_symm, EuclideanSpace.inner_piLp_equiv_symm, toLin'_apply,
  star_mulVec, dotProduct_mulVec]
state_before: α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝³ : RCLike α
inst✝² : RCLike β
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix n n α
⊢ A.IsHermitian ↔
    ∀ (x₁ x₂ : n → α),
      ⟪(toEuclideanLin A) ((WithLp.equiv 2 (n → α)).symm x₁), (WithLp.equiv 2 (n → α)).symm x₂⟫_α =
        ⟪(WithLp.equiv 2 (n → α)).symm x₁, (toEuclideanLin A) ((WithLp.equiv 2 (n → α)).symm x₂)⟫_α
state_after: α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝³ : RCLike α
inst✝² : RCLike β
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix n n α
⊢ A.IsHermitian ↔ ∀ (x₁ x₂ : n → α), star x₁ ᵥ* Aᴴ ⬝ᵥ x₂ = star x₁ ᵥ* A ⬝ᵥ x₂

tactic: constructor
state_before: α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝³ : RCLike α
inst✝² : RCLike β
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix n n α
⊢ A.IsHermitian ↔ ∀ (x₁ x₂ : n → α), star x₁ ᵥ* Aᴴ ⬝ᵥ x₂ = star x₁ ᵥ* A ⬝ᵥ x₂
state_after: case mp
α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝³ : RCLike α
inst✝² : RCLike β
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix n n α
⊢ A.IsHermitian → ∀ (x₁ x₂ : n → α), star x₁ ᵥ* Aᴴ ⬝ᵥ x₂ = star x₁ ᵥ* A ⬝ᵥ x₂

case mpr
α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝³ : RCLike α
inst✝² : RCLike β
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix n n α
⊢ (∀ (x₁ x₂ : n → α), star x₁ ᵥ* Aᴴ ⬝ᵥ x₂ = star x₁ ᵥ* A ⬝ᵥ x₂) → A.IsHermitian

tactic: rintro (h : Aᴴ = A) x y
state_before: case mp
α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝³ : RCLike α
inst✝² : RCLike β
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix n n α
⊢ A.IsHermitian → ∀ (x₁ x₂ : n → α), star x₁ ᵥ* Aᴴ ⬝ᵥ x₂ = star x₁ ᵥ* A ⬝ᵥ x₂
state_after: case mp
α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝³ : RCLike α
inst✝² : RCLike β
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix n n α
h : Aᴴ = A
x y : n → α
⊢ star x ᵥ* Aᴴ ⬝ᵥ y = star x ᵥ* A ⬝ᵥ y

tactic: rw [h]
state_before: case mp
α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝³ : RCLike α
inst✝² : RCLike β
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix n n α
h : Aᴴ = A
x y : n → α
⊢ star x ᵥ* Aᴴ ⬝ᵥ y = star x ᵥ* A ⬝ᵥ y
state_after: no goals

tactic: intro h
state_before: case mpr
α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝³ : RCLike α
inst✝² : RCLike β
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix n n α
⊢ (∀ (x₁ x₂ : n → α), star x₁ ᵥ* Aᴴ ⬝ᵥ x₂ = star x₁ ᵥ* A ⬝ᵥ x₂) → A.IsHermitian
state_after: case mpr
α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝³ : RCLike α
inst✝² : RCLike β
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix n n α
h : ∀ (x₁ x₂ : n → α), star x₁ ᵥ* Aᴴ ⬝ᵥ x₂ = star x₁ ᵥ* A ⬝ᵥ x₂
⊢ A.IsHermitian

tactic: ext i j
state_before: case mpr
α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝³ : RCLike α
inst✝² : RCLike β
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix n n α
h : ∀ (x₁ x₂ : n → α), star x₁ ᵥ* Aᴴ ⬝ᵥ x₂ = star x₁ ᵥ* A ⬝ᵥ x₂
⊢ A.IsHermitian
state_after: case mpr.a
α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝³ : RCLike α
inst✝² : RCLike β
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix n n α
h : ∀ (x₁ x₂ : n → α), star x₁ ᵥ* Aᴴ ⬝ᵥ x₂ = star x₁ ᵥ* A ⬝ᵥ x₂
i j : n
⊢ Aᴴ i j = A i j

tactic: simpa only [(Pi.single_star i 1).symm, ← star_mulVec, mul_one, dotProduct_single,
  single_vecMul, star_one, one_mul] using h (Pi.single i 1) (Pi.single j 1)
state_before: case mpr.a
α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
A✝ : Matrix n n α
inst✝³ : RCLike α
inst✝² : RCLike β
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix n n α
h : ∀ (x₁ x₂ : n → α), star x₁ ᵥ* Aᴴ ⬝ᵥ x₂ = star x₁ ᵥ* A ⬝ᵥ x₂
i j : n
⊢ Aᴴ i j = A i j
state_after: no goals