File: Mathlib/LinearAlgebra/Matrix/Symmetric.lean

full_name: Matrix.IsSymm
code: /-- A matrix `A : Matrix n n α` is "symmetric" if `Aᵀ = A`. -/
def IsSymm (A : Matrix n n α) : Prop 
goal: Prop

full_name: Matrix.instDecidableIsSymmOfEqTranspose
code: instance (A : Matrix n n α) [Decidable (Aᵀ = A)] : Decidable (IsSymm A) 
goal: Decidable A.IsSymm

full_name: Matrix.IsSymm.eq
code: theorem IsSymm.eq {A : Matrix n n α} (h : A.IsSymm) : Aᵀ = A 
goal: A.transpose = A

full_name: Matrix.IsSymm.ext_iff
code: /-- A version of `Matrix.ext_iff` that unfolds the `Matrix.transpose`. -/
theorem IsSymm.ext_iff {A : Matrix n n α} : A.IsSymm ↔ ∀ i j, A j i = A i j 
goal: A.IsSymm ↔ ∀ (i j : n), A j i = A i j

full_name: Matrix.IsSymm.ext
code: /-- A version of `Matrix.ext` that unfolds the `Matrix.transpose`. -/
-- @[ext] -- Porting note: removed attribute
theorem IsSymm.ext {A : Matrix n n α} : (∀ i j, A j i = A i j) → A.IsSymm 
goal: (∀ (i j : n), A j i = A i j) → A.IsSymm

full_name: Matrix.IsSymm.apply
code: theorem IsSymm.apply {A : Matrix n n α} (h : A.IsSymm) (i j : n) : A j i = A i j 
goal: A j i = A i j

full_name: Matrix.isSymm_mul_transpose_self
code: theorem isSymm_mul_transpose_self [Fintype n] [CommSemiring α] (A : Matrix n n α) :
    (A * Aᵀ).IsSymm 
goal: (A * A.transpose).IsSymm

full_name: Matrix.isSymm_transpose_mul_self
code: theorem isSymm_transpose_mul_self [Fintype n] [CommSemiring α] (A : Matrix n n α) :
    (Aᵀ * A).IsSymm 
goal: (A.transpose * A).IsSymm

full_name: Matrix.isSymm_add_transpose_self
code: theorem isSymm_add_transpose_self [AddCommSemigroup α] (A : Matrix n n α) : (A + Aᵀ).IsSymm 
goal: (A + A.transpose).IsSymm

full_name: Matrix.isSymm_transpose_add_self
code: theorem isSymm_transpose_add_self [AddCommSemigroup α] (A : Matrix n n α) : (Aᵀ + A).IsSymm 
goal: (A.transpose + A).IsSymm

full_name: Matrix.isSymm_zero
code: @[simp]
theorem isSymm_zero [Zero α] : (0 : Matrix n n α).IsSymm 
goal: Matrix.IsSymm 0

full_name: Matrix.isSymm_one
code: @[simp]
theorem isSymm_one [DecidableEq n] [Zero α] [One α] : (1 : Matrix n n α).IsSymm 
goal: Matrix.IsSymm 1

full_name: Matrix.IsSymm.pow
code: theorem IsSymm.pow [CommSemiring α] [Fintype n] [DecidableEq n] {A : Matrix n n α} (h : A.IsSymm)
    (k : ℕ) :
    (A ^ k).IsSymm 
goal: (A ^ k).IsSymm

full_name: Matrix.IsSymm.map
code: @[simp]
theorem IsSymm.map {A : Matrix n n α} (h : A.IsSymm) (f : α → β) : (A.map f).IsSymm 
goal: (A.map f).IsSymm

full_name: Matrix.IsSymm.transpose
code: @[simp]
theorem IsSymm.transpose {A : Matrix n n α} (h : A.IsSymm) : Aᵀ.IsSymm 
goal: A.transpose.IsSymm

full_name: Matrix.IsSymm.conjTranspose
code: @[simp]
theorem IsSymm.conjTranspose [Star α] {A : Matrix n n α} (h : A.IsSymm) : Aᴴ.IsSymm 
goal: A.conjTranspose.IsSymm

full_name: Matrix.IsSymm.neg
code: @[simp]
theorem IsSymm.neg [Neg α] {A : Matrix n n α} (h : A.IsSymm) : (-A).IsSymm 
goal: (-A).IsSymm

full_name: Matrix.IsSymm.add
code: @[simp]
theorem IsSymm.add {A B : Matrix n n α} [Add α] (hA : A.IsSymm) (hB : B.IsSymm) : (A + B).IsSymm 
goal: (A + B).IsSymm

full_name: Matrix.IsSymm.sub
code: @[simp]
theorem IsSymm.sub {A B : Matrix n n α} [Sub α] (hA : A.IsSymm) (hB : B.IsSymm) : (A - B).IsSymm 
goal: (A - B).IsSymm

full_name: Matrix.IsSymm.smul
code: @[simp]
theorem IsSymm.smul [SMul R α] {A : Matrix n n α} (h : A.IsSymm) (k : R) : (k • A).IsSymm 
goal: (k • A).IsSymm

full_name: Matrix.IsSymm.submatrix
code: @[simp]
theorem IsSymm.submatrix {A : Matrix n n α} (h : A.IsSymm) (f : m → n) : (A.submatrix f f).IsSymm 
goal: (A.submatrix f f).IsSymm

full_name: Matrix.isSymm_diagonal
code: /-- The diagonal matrix `diagonal v` is symmetric. -/
@[simp]
theorem isSymm_diagonal [DecidableEq n] [Zero α] (v : n → α) : (diagonal v).IsSymm 
goal: (Matrix.diagonal v).IsSymm

full_name: Matrix.IsSymm.fromBlocks
code: /-- A block matrix `A.fromBlocks B C D` is symmetric,
    if `A` and `D` are symmetric and `Bᵀ = C`. -/
theorem IsSymm.fromBlocks {A : Matrix m m α} {B : Matrix m n α} {C : Matrix n m α}
    {D : Matrix n n α} (hA : A.IsSymm) (hBC : Bᵀ = C) (hD : D.IsSymm) :
    (A.fromBlocks B C D).IsSymm 
goal: (Matrix.fromBlocks A B C D).IsSymm

full_name: Matrix.isSymm_fromBlocks_iff
code: /-- This is the `iff` version of `Matrix.isSymm.fromBlocks`. -/
theorem isSymm_fromBlocks_iff {A : Matrix m m α} {B : Matrix m n α} {C : Matrix n m α}
    {D : Matrix n n α} : (A.fromBlocks B C D).IsSymm ↔ A.IsSymm ∧ Bᵀ = C ∧ Cᵀ = B ∧ D.IsSymm 
goal: (Matrix.fromBlocks A B C D).IsSymm ↔ A.IsSymm ∧ B.transpose = C ∧ C.transpose = B ∧ D.IsSymm