theorem
Matrix.IsHermitian.smul_selfAdjoint
{n : Type u_1}
{š : Type u_2}
[RCLike š]
{A : Matrix n n š}
(hA : A.IsHermitian)
{c : š}
(hc : IsSelfAdjoint c)
:
(c ⢠A).IsHermitian
theorem
Matrix.IsHermitian.smul_im_zero
{n : Type u_1}
{š : Type u_2}
[RCLike š]
{A : Matrix n n š}
(hA : A.IsHermitian)
{c : š}
(h : RCLike.im c = 0)
:
(c ⢠A).IsHermitian
theorem
Matrix.IsHermitian.smul_real
{n : Type u_1}
{š : Type u_2}
[RCLike š]
{A : Matrix n n š}
(hA : A.IsHermitian)
(c : ā)
:
(c ⢠A).IsHermitian
def
Matrix.IsHermitian.HermitianSubspace
(n : Type u_3)
(š : Type u_4)
[Fintype n]
[RCLike š]
:
Equations
- Matrix.IsHermitian.HermitianSubspace n š = { carrier := {A : Matrix n n š | A.IsHermitian}, add_mem' := āÆ, zero_mem' := āÆ, smul_mem' := ⯠}
Instances For
theorem
Matrix.IsHermitian.sum_eigenvalues_eq_trace
{n : Type u_1}
{š : Type u_2}
[RCLike š]
[DecidableEq n]
{A : Matrix n n š}
(hA : A.IsHermitian)
[Fintype n]
:
The sum of the eigenvalues of a Hermitian matrix is equal to its trace.
theorem
Matrix.IsHermitian.eigenvalues_zero_eq_zero
{n : Type u_1}
{š : Type u_2}
[RCLike š]
[DecidableEq n]
{A : Matrix n n š}
(hA : A.IsHermitian)
[Fintype n]
(h : ā (i : n), hA.eigenvalues i = 0)
:
If all eigenvalues are equal to zero, then the matrix is zero.
theorem
Matrix.kroneckerMap_conjTranspose
{R : Type u_3}
{m : Type u_4}
{n : Type u_1}
[CommRing R]
[StarRing R]
(A : Matrix m m R)
(B : Matrix n n R)
:
(kroneckerMap (fun (x1 x2 : R) => x1 * x2) A B).conjTranspose = kroneckerMap (fun (x1 x2 : R) => x1 * x2) A.conjTranspose B.conjTranspose
theorem
Matrix.kroneckerMap_IsHermitian
{R : Type u_3}
{m : Type u_4}
{n : Type u_1}
[CommRing R]
[StarRing R]
{A : Matrix m m R}
{B : Matrix n n R}
(hA : A.IsHermitian)
(hB : B.IsHermitian)
:
(kroneckerMap (fun (x1 x2 : R) => x1 * x2) A B).IsHermitian
theorem
Matrix.PosSemidef.diag_nonneg
{m : Type u_3}
{š : Type u_5}
[Fintype m]
[RCLike š]
{A : Matrix m m š}
(hA : A.PosSemidef)
(i : m)
:
theorem
Matrix.PosSemidef.outer_self_conj
{n : Type u_4}
{š : Type u_5}
[Fintype n]
[RCLike š]
(v : n ā š)
:
(vecMulVec v ((starRingEnd (n ā š)) v)).PosSemidef
theorem
Matrix.PosSemidef.convex_cone
{m : Type u_3}
{š : Type u_5}
[Fintype m]
[RCLike š]
{A B : Matrix m m š}
(hA : A.PosSemidef)
(hB : B.PosSemidef)
{cā cā : š}
(hcā : 0 ⤠cā)
(hcā : 0 ⤠cā)
:
(cā ⢠A + cā ⢠B).PosSemidef
theorem
Matrix.PosSemidef.stdBasisMatrix_iff_eq
{m : Type u_3}
{š : Type u_5}
[Fintype m]
[RCLike š]
[dm : DecidableEq m]
(i j : m)
{c : š}
(hc : 0 < c)
:
A standard basis matrix (with a positive entry) is positive semidefinite iff the entry is on the diagonal.
theorem
Matrix.PosSemidef.PosSemidef_kronecker
{m : Type u_3}
{n : Type u_4}
{š : Type u_5}
[Fintype m]
[Fintype n]
[RCLike š]
[dn : DecidableEq n]
{A : Matrix m m š}
{B : Matrix n n š}
(hA : A.PosSemidef)
(hB : B.PosSemidef)
:
(kroneckerMap (fun (x1 x2 : š) => x1 * x2) A B).PosSemidef
theorem
Matrix.PosSemidef.nonneg_smul
{m : Type u_3}
{š : Type u_5}
[Fintype m]
[RCLike š]
{A : Matrix m m š}
{c : š}
(hA : A.PosSemidef)
(hc : 0 ⤠c)
:
(c ⢠A).PosSemidef
theorem
Matrix.PosSemidef.pos_smul
{m : Type u_3}
{š : Type u_5}
[Fintype m]
[RCLike š]
{A : Matrix m m š}
{c : š}
(hA : (c ⢠A).PosSemidef)
(hc : 0 < c)
:
theorem
Matrix.PosSemidef.nonneg_smul_Real_smul
{m : Type u_3}
{š : Type u_5}
[Fintype m]
[RCLike š]
{A : Matrix m m š}
{c : ā}
(hA : A.PosSemidef)
(hc : 0 ⤠c)
:
(c ⢠A).PosSemidef
theorem
Matrix.PosSemidef.pos_Real_smul
{m : Type u_3}
{š : Type u_5}
[Fintype m]
[RCLike š]
{A : Matrix m m š}
{c : ā}
(hA : (c ⢠A).PosSemidef)
(hc : 0 < c)
:
theorem
Matrix.PosDef.toLin_ker_eq_bot
{n : Type u_3}
{š : Type u_5}
[Fintype n]
[RCLike š]
[DecidableEq n]
{A : Matrix n n š}
(hA : A.PosDef)
:
theorem
Matrix.PosDef.of_toLin_ker_eq_bot
{n : Type u_3}
{š : Type u_5}
[Fintype n]
[RCLike š]
[DecidableEq n]
{A : Matrix n n š}
(hA : LinearMap.ker (toLin' A) = ā„)
(hAā : A.PosSemidef)
:
A.PosDef
theorem
Matrix.PosDef.ker_range_antitone
{d : Type u_6}
[Fintype d]
[DecidableEq d]
{A B : Matrix d d ā}
(hA : A.IsHermitian)
(hB : B.IsHermitian)
:
instance
Matrix.PosSemidef.instOrderedCancelAddCommMonoid
{n : Type u_3}
{š : Type u_5}
[Fintype n]
[RCLike š]
:
IsOrderedCancelAddMonoid (Matrix n n š)
instance
Matrix.PosSemidef.instStarOrderedRing
{n : Type u_3}
{š : Type u_5}
[Fintype n]
[RCLike š]
:
StarOrderedRing (Matrix n n š)
Basically, the instance states A ⤠B ā B = A + Sį““ * S
theorem
Matrix.PosSemidef.le_of_nonneg_imp
{n : Type u_3}
{š : Type u_5}
[Fintype n]
[RCLike š]
{A B : Matrix n n š}
{R : Type u_6}
[AddCommGroup R]
[PartialOrder R]
[IsOrderedAddMonoid R]
(f : Matrix n n š ā+ R)
(h : ā (A : Matrix n n š), A.PosSemidef ā 0 ⤠f A)
:
theorem
Matrix.PosSemidef.le_of_nonneg_imp'
{n : Type u_3}
{š : Type u_5}
[Fintype n]
[RCLike š]
{R : Type u_6}
[AddCommGroup R]
[PartialOrder R]
[IsOrderedAddMonoid R]
{x y : R}
(f : R ā+ Matrix n n š)
(h : ā (x : R), 0 ⤠x ā (f x).PosSemidef)
:
theorem
Matrix.PosSemidef.nonneg_iff_eigenvalue_nonneg
{n : Type u_3}
{š : Type u_5}
[Fintype n]
[RCLike š]
{A : Matrix n n š}
(hA : A.IsHermitian)
[DecidableEq n]
:
theorem
Matrix.PosSemidef.diagonal_monotone
{n : Type u_3}
{š : Type u_5}
[Fintype n]
[RCLike š]
[DecidableEq n]
:
theorem
Matrix.PosSemidef.le_smul_one_of_eigenvalues_iff
{n : Type u_3}
{š : Type u_5}
[Fintype n]
[RCLike š]
{A : Matrix n n š}
[DecidableEq n]
(hA : A.IsHermitian)
(c : ā)
:
theorem
Matrix.PosSemidef.smul_one_le_of_eigenvalues_iff
{n : Type u_3}
{š : Type u_5}
[Fintype n]
[RCLike š]
{A : Matrix n n š}
[DecidableEq n]
(hA : A.IsHermitian)
(c : ā)
:
@[simp]
theorem
Matrix.traceRight_trace
{R : Type u_5}
{dā : Type u_4}
{dā : Type u_3}
[AddCommMonoid R]
[Fintype dā]
[Fintype dā]
(A : Matrix (dā Ć dā) (dā Ć dā) R)
:
theorem
Matrix.IsHermitian.traceLeft
{R : Type u_5}
{d : Type u_4}
[AddCommMonoid R]
[Fintype d]
[StarAddMonoid R]
{dā : Type u_3}
{A : Matrix (d Ć dā) (d Ć dā) R}
(hA : A.IsHermitian)
:
theorem
Matrix.IsHermitian.traceRight
{R : Type u_5}
{d : Type u_4}
[AddCommMonoid R]
[Fintype d]
[StarAddMonoid R]
{dā : Type u_3}
{A : Matrix (dā Ć d) (dā Ć d) R}
(hA : A.IsHermitian)
:
theorem
Matrix.PosSemidef.traceLeft
{š : Type u_2}
[RCLike š]
{dā : Type u_3}
{dā : Type u_4}
{A : Matrix (dā Ć dā) (dā Ć dā) š}
[Fintype dā]
[Fintype dā]
[DecidableEq dā]
(hA : A.PosSemidef)
:
theorem
Matrix.PosSemidef.traceRight
{š : Type u_2}
[RCLike š]
{dā : Type u_3}
{dā : Type u_4}
{A : Matrix (dā Ć dā) (dā Ć dā) š}
[Fintype dā]
[Fintype dā]
[DecidableEq dā]
(hA : A.PosSemidef)
:
theorem
Matrix.PosDef.kron
{dā : Type u_3}
{dā : Type u_4}
{š : Type u_5}
[Fintype dā]
[DecidableEq dā]
[Fintype dā]
[DecidableEq dā]
[RCLike š]
{A : Matrix dā dā š}
{B : Matrix dā dā š}
(hA : A.PosDef)
(hB : B.PosDef)
:
(kroneckerMap (fun (x1 x2 : š) => x1 * x2) A B).PosDef
theorem
Matrix.PosDef.submatrix
{dā : Type u_3}
{dā : Type u_4}
{š : Type u_5}
[Fintype dā]
[DecidableEq dā]
[Fintype dā]
[DecidableEq dā]
[RCLike š]
{M : Matrix dā dā š}
(hM : M.PosDef)
{e : dā ā dā}
(he : Function.Injective e)
:
theorem
Matrix.PosDef.reindex
{dā : Type u_3}
{dā : Type u_4}
{š : Type u_5}
[Fintype dā]
[DecidableEq dā]
[Fintype dā]
[DecidableEq dā]
[RCLike š]
{M : Matrix dā dā š}
(hM : M.PosDef)
(e : dā ā dā)
:
((Matrix.reindex e e) M).PosDef
@[simp]
theorem
Matrix.PosDef.reindex_iff
{dā : Type u_3}
{dā : Type u_4}
{š : Type u_5}
[Fintype dā]
[DecidableEq dā]
[Fintype dā]
[DecidableEq dā]
[RCLike š]
{M : Matrix dā dā š}
(e : dā ā dā)
:
theorem
Matrix.PosSemidef.rsmul
{n : Type u_3}
[Fintype n]
{M : Matrix n n ā}
(hM : M.PosSemidef)
{c : ā}
(hc : 0 ⤠c)
:
(c ⢠M).PosSemidef
theorem
Matrix.PosDef_iff_eigenvalues'
{d : Type u_3}
{š : Type u_4}
[Fintype d]
[DecidableEq d]
[RCLike š]
(M : Matrix d d š)
:
theorem
Matrix.IsHermitian.charpoly_roots_eq_eigenvalues
{d : Type u_3}
{š : Type u_4}
[Fintype d]
[DecidableEq d]
[RCLike š]
{M : Matrix d d š}
(hM : M.IsHermitian)
:
theorem
Multiset.map_univ_eq_iff
{α : Type u_5}
{β : Type u_6}
[Fintype α]
[DecidableEq β]
(f g : α ā β)
:
theorem
Matrix.IsHermitian.cfc_eigenvalues
{d : Type u_3}
{š : Type u_4}
[Fintype d]
[DecidableEq d]
[RCLike š]
{M : Matrix d d š}
(hM : M.IsHermitian)
(f : ā ā ā)
:
ā (e : d ā d), eigenvalues ⯠= f ā hM.eigenvalues ā āe
@[simp]
theorem
Matrix.toEuclideanLin_one
{α : Type u_3}
{n : Type u_4}
[RCLike α]
[Fintype n]
[DecidableEq n]
:
theorem
Matrix.PosSemidef.pos_of_mem_spectrum
{d : Type u_3}
{š : Type u_4}
[Fintype d]
[DecidableEq d]
[RCLike š]
{A : Matrix d d š}
(hA : A.PosSemidef)
(r : ā)
:
theorem
Matrix.spectrum_prod
{d : Type u_3}
{dā : Type u_4}
[Fintype d]
[DecidableEq d]
[Fintype dā]
[DecidableEq dā]
{A : Matrix d d ā}
{B : Matrix dā dā ā}
(hA : A.IsHermitian)
(hB : B.IsHermitian)
: