Documentation

Mathlib.LinearAlgebra.Matrix.Symmetric

Symmetric matrices #

This file contains the definition and basic results about symmetric matrices.

Main definition #

Tags #

symm, symmetric, matrix

def Matrix.IsSymm {α : Type u_1} {n : Type u_3} (A : Matrix n n α) :

A matrix A : Matrix n n α is "symmetric" if Aᵀ = A.

Equations
Instances For
    theorem Matrix.IsSymm.eq {α : Type u_1} {n : Type u_3} {A : Matrix n n α} (h : A.IsSymm) :
    theorem Matrix.IsSymm.ext_iff {α : Type u_1} {n : Type u_3} {A : Matrix n n α} :
    A.IsSymm ∀ (i j : n), A j i = A i j

    A version of Matrix.ext_iff that unfolds the Matrix.transpose.

    theorem Matrix.IsSymm.ext {α : Type u_1} {n : Type u_3} {A : Matrix n n α} :
    (∀ (i j : n), A j i = A i j)A.IsSymm

    A version of Matrix.ext that unfolds the Matrix.transpose.

    theorem Matrix.IsSymm.apply {α : Type u_1} {n : Type u_3} {A : Matrix n n α} (h : A.IsSymm) (i j : n) :
    A j i = A i j
    theorem Matrix.isSymm_mul_transpose_self {α : Type u_1} {n : Type u_3} [Fintype n] [NonUnitalCommSemiring α] (A : Matrix n n α) :
    theorem Matrix.isSymm_transpose_mul_self {α : Type u_1} {n : Type u_3} [Fintype n] [NonUnitalCommSemiring α] (A : Matrix n n α) :
    theorem Matrix.isSymm_add_transpose_self {α : Type u_1} {n : Type u_3} [AddCommSemigroup α] (A : Matrix n n α) :
    theorem Matrix.isSymm_transpose_add_self {α : Type u_1} {n : Type u_3} [AddCommSemigroup α] (A : Matrix n n α) :
    @[simp]
    theorem Matrix.isSymm_zero {α : Type u_1} {n : Type u_3} [Zero α] :
    @[simp]
    theorem Matrix.isSymm_one {α : Type u_1} {n : Type u_3} [DecidableEq n] [Zero α] [One α] :
    theorem Matrix.IsSymm.pow {α : Type u_1} {n : Type u_3} [CommSemiring α] [Fintype n] [DecidableEq n] {A : Matrix n n α} (h : A.IsSymm) (k : ) :
    (A ^ k).IsSymm
    @[simp]
    theorem Matrix.IsSymm.map {α : Type u_1} {β : Type u_2} {n : Type u_3} {A : Matrix n n α} (h : A.IsSymm) (f : αβ) :
    (A.map f).IsSymm
    @[simp]
    theorem Matrix.isSymm_map_iff {α : Type u_1} {β : Type u_2} {n : Type u_3} {A : Matrix n n α} {f : αβ} (hf : Function.Injective f) :
    theorem Matrix.IsSymm.transpose {α : Type u_1} {n : Type u_3} {A : Matrix n n α} (h : A.IsSymm) :
    @[simp]
    theorem Matrix.isSymm_transpose_iff {α : Type u_1} {n : Type u_3} {A : Matrix n n α} :
    @[simp]
    theorem Matrix.IsSymm.conjTranspose {α : Type u_1} {n : Type u_3} [Star α] {A : Matrix n n α} (h : A.IsSymm) :
    @[simp]
    theorem Matrix.isSymm_conjTranspose_iff {α : Type u_1} {n : Type u_3} [InvolutiveStar α] {A : Matrix n n α} :
    @[simp]
    theorem Matrix.IsSymm.neg {α : Type u_1} {n : Type u_3} [Neg α] {A : Matrix n n α} (h : A.IsSymm) :
    @[simp]
    theorem Matrix.isSymm_neg_iff {α : Type u_1} {n : Type u_3} [InvolutiveNeg α] {A : Matrix n n α} :
    @[simp]
    theorem Matrix.IsSymm.add {α : Type u_1} {n : Type u_3} {A B : Matrix n n α} [Add α] (hA : A.IsSymm) (hB : B.IsSymm) :
    (A + B).IsSymm
    @[simp]
    theorem Matrix.IsSymm.sub {α : Type u_1} {n : Type u_3} {A B : Matrix n n α} [Sub α] (hA : A.IsSymm) (hB : B.IsSymm) :
    (A - B).IsSymm
    @[simp]
    theorem Matrix.IsSymm.smul {α : Type u_1} {n : Type u_3} {R : Type u_5} [SMul R α] {A : Matrix n n α} (h : A.IsSymm) (k : R) :
    (k A).IsSymm
    @[simp]
    theorem Matrix.isSymm_smul_iff {α : Type u_1} {n : Type u_3} {R : Type u_5} [Monoid R] [MulAction R α] {A : Matrix n n α} (k : R) [Invertible k] :
    @[simp]
    theorem Matrix.IsSymm.submatrix {α : Type u_1} {n : Type u_3} {m : Type u_4} {A : Matrix n n α} (h : A.IsSymm) (f : mn) :
    theorem Matrix.IsSymm.reindex {α : Type u_1} {n : Type u_3} {m : Type u_4} {A : Matrix n n α} (h : A.IsSymm) (f : n m) :
    theorem Matrix.isSymm_reindex_iff {α : Type u_1} {n : Type u_3} {m : Type u_4} {A : Matrix n n α} (f : n m) :
    ((reindex f f) A).IsSymm A.IsSymm
    @[simp]
    theorem Matrix.isSymm_diagonal {α : Type u_1} {n : Type u_3} [DecidableEq n] [Zero α] (v : nα) :

    The diagonal matrix diagonal v is symmetric.

    theorem Matrix.IsSymm.fromBlocks {α : Type u_1} {n : Type u_3} {m : Type u_4} {A : Matrix m m α} {B : Matrix m n α} {C : Matrix n m α} {D : Matrix n n α} (hA : A.IsSymm) (hBC : B.transpose = C) (hD : D.IsSymm) :

    A block matrix A.fromBlocks B C D is symmetric, if A and D are symmetric and Bᵀ = C.

    theorem Matrix.isSymm_fromBlocks_iff {α : Type u_1} {n : Type u_3} {m : Type u_4} {A : Matrix m m α} {B : Matrix m n α} {C : Matrix n m α} {D : Matrix n n α} :

    This is the iff version of Matrix.isSymm.fromBlocks.

    theorem Matrix.isSymm_comp_iff {α : Type u_1} {n : Type u_3} {m : Type u_4} {A : Matrix m m (Matrix n n α)} :
    ((comp m m n n α) A).IsSymm A.transpose = A.map fun (x : Matrix n n α) => x.transpose
    theorem Matrix.isSymm_comp_iff_forall {α : Type u_1} {n : Type u_3} {m : Type u_4} {A : Matrix m m (Matrix n n α)} :
    ((comp m m n n α) A).IsSymm ∀ (i j : m) (i' j' : n), A j i j' i' = A i j i' j'