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.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}
[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.pos_smul
{m : Type u_3}
{š : Type u_5}
[RCLike š]
{A : Matrix m m š}
{c : š}
(hA : (c ⢠A).PosSemidef)
(hc : 0 < c)
:
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 : (toLin' A).ker = ā„)
(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)
:
(toEuclideanLin A).ker ⤠(toEuclideanLin B).ker ā (toEuclideanLin B).range ⤠(toEuclideanLin A).range
theorem
Matrix.PosSemidef.le_of_nonneg_imp
{n : Type u_3}
{š : Type u_5}
[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}
[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}
[RCLike š]
[DecidableEq n]
:
theorem
Matrix.PosSemidef.diagonal_mono
{n : Type u_3}
{š : Type u_5}
[RCLike š]
[DecidableEq n]
{dā dā : 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.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
theorem
Matrix.IsHermitian.eigenvalues_eq_of_unitary_similarity_diagonal
{d : Type u_5}
{š : Type u_6}
[Fintype d]
[DecidableEq d]
[RCLike š]
{A : Matrix d d š}
(hA : A.IsHermitian)
{U : Matrix d d š}
(hU : U ā unitaryGroup d š)
{f : d ā ā}
(h : A = (U * diagonal fun (i : d) => ā(f i)) * U.conjTranspose)
:
ā (Ļ : d ā d), hA.eigenvalues ā āĻ = f
If a Hermitian matrix A is unitarily similar to a diagonal matrix with real entries f, then the eigenvalues of A are a permutation of f.
@[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
{š : Type u_2}
[RCLike š]
{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)
:
theorem
Matrix.IsHermitian.spectrum_eq_image_eigenvalues
{n : Type u_1}
[DecidableEq n]
[Fintype n]
{A : Matrix n n ā}
(hA : A.IsHermitian)
:
theorem
Matrix.IsHermitian.card_spectrum_eq_image
{n : Type u_1}
[DecidableEq n]
[Fintype n]
{A : Matrix n n ā}
(hA : A.IsHermitian)
[Fintype ā(spectrum ā A)]
:
theorem
Matrix.IsHermitian.sub_iInf_eignevalues
{d : Type u_3}
[Fintype d]
[DecidableEq d]
{A : Matrix d d ā}
(hA : A.IsHermitian)
:
(A - iInf hA.eigenvalues ⢠1).PosSemidef
theorem
Matrix.IsHermitian.iInf_eigenvalues_le_dotProduct_mulVec
{d : Type u_3}
[Fintype d]
[DecidableEq d]
{A : Matrix d d ā}
(hA : A.IsHermitian)
(v : d ā ā)
:
theorem
Matrix.IsHermitian.iInf_eigenvalues_le_of_posSemidef
{d : Type u_3}
[Fintype d]
[DecidableEq d]
{A B : Matrix d d ā}
(hAB : (B - A).PosSemidef)
(hA : A.IsHermitian)
(hB : B.IsHermitian)
:
theorem
Matrix.IsHermitian.iInf_eigenvalues_le
{d : Type u_3}
[Fintype d]
[DecidableEq d]
{A B : Matrix d d ā}
(hAB : A ⤠B)
(hA : A.IsHermitian)
(hB : B.IsHermitian)
:
theorem
Matrix.IsHermitian.iInf_eigenvalues_smul_one_le
{d : Type u_3}
[Fintype d]
[DecidableEq d]
{A : Matrix d d ā}
(hA : A.IsHermitian)
:
theorem
Matrix.IsHermitian.spectrum_subset_Ici_of_sub
{d : Type u_3}
{š : Type u_4}
[Fintype d]
[DecidableEq d]
[RCLike š]
{A x : Matrix d d š}
(hA : A.IsHermitian)
(hl : (x - A).PosSemidef)
:
theorem
Matrix.IsHermitian.spectrum_subset_Iic_of_sub
{d : Type u_3}
{š : Type u_4}
[Fintype d]
[DecidableEq d]
[RCLike š]
{A x : Matrix d d š}
(hA : A.IsHermitian)
(hl : (A - x).PosSemidef)
:
theorem
Matrix.IsHermitian.spectrum_subset_of_mem_Icc
{d : Type u_3}
{š : Type u_4}
[Fintype d]
[DecidableEq d]
[RCLike š]
{A B x : Matrix d d š}
(hA : A.IsHermitian)
(hB : B.IsHermitian)
(hl : (x - A).PosSemidef)
(hr : (B - x).PosSemidef)
:
theorem
Matrix.traceRight_eq_traceLeft_reindex
{n : Type u_3}
{m : Type u_4}
{R : Type u_5}
[Fintype m]
[AddCommMonoid R]
(M : Matrix (n Ć m) (n Ć m) R)
:
The right partial trace of a matrix is equal to the left partial trace of the matrix reindexed by swapping the tensor factors.
@[simp]
theorem
Matrix.traceRight_add
{n : Type u_1}
{m : Type u_3}
{α : Type u_4}
[AddCommGroup α]
[Fintype m]
{A B : Matrix (n à m) (n à m) α}
:
@[simp]
theorem
Matrix.traceRight_neg
{n : Type u_1}
{m : Type u_3}
{α : Type u_4}
[AddCommGroup α]
[Fintype m]
{A : Matrix (n à m) (n à m) α}
:
@[simp]
theorem
Matrix.traceRight_sub
{n : Type u_1}
{m : Type u_3}
{α : Type u_4}
[AddCommGroup α]
[Fintype m]
{A B : Matrix (n à m) (n à m) α}
:
@[simp]
theorem
Matrix.traceRight_smul
{n : Type u_1}
{m : Type u_3}
{α : Type u_4}
[AddCommGroup α]
[Fintype m]
{R : Type u_5}
[DistribSMul R α]
{A : Matrix (n à m) (n à m) α}
(r : R)
:
theorem
Matrix.unitaryGroup_row_norm
{n : Type u_1}
[DecidableEq n]
[Fintype n]
(U : ā„(unitaryGroup n ā))
(i : n)
:
def
Matrix.piProd
{ι : Type u_3}
{d : ι ā Type u_4}
[fι : Fintype ι]
{R : Type u_5}
[CommMonoid R]
(A : (i : ι) ā Matrix (d i) (d i) R)
:
Matrix ((i : ι) ā d i) ((i : ι) ā d i) R
Equations
- Matrix.piProd A = Matrix.of fun (j k : (i : ι) ā d i) => ā i : ι, A i (j i) (k i)
Instances For
theorem
Matrix.IsHermitian.piProd
{ι : Type u_3}
{d : ι ā Type u_4}
[fι : Fintype ι]
{R : Type u_5}
{A : (i : ι) ā Matrix (d i) (d i) R}
[CommSemiring R]
[StarRing R]
(hA : ā (i : ι), (A i).IsHermitian)
:
theorem
Matrix.trace_piProd
{ι : Type u_3}
{d : ι ā Type u_4}
[fι : Fintype ι]
{R : Type u_5}
{A : (i : ι) ā Matrix (d i) (d i) R}
[DecidableEq ι]
[(i : ι) ā Fintype (d i)]
[CommSemiring R]
:
theorem
Matrix.PosSemidef.piProd
{ι : Type u_3}
{d : ι ā Type u_4}
[fι : Fintype ι]
{R : Type u_5}
{A : (i : ι) ā Matrix (d i) (d i) R}
[DecidableEq ι]
[(i : ι) ā Fintype (d i)]
[RCLike R]
(hA : ā (i : ι), (A i).PosSemidef)
:
theorem
Matrix.kronecker_conj_eq
{m : Type u_3}
{n : Type u_4}
{p : Type u_5}
{q : Type u_6}
{α : Type u_7}
[CommSemiring α]
[StarRing α]
[Fintype m]
[Fintype n]
(A : Matrix m m α)
(B : Matrix n n α)
(C : Matrix p m α)
(D : Matrix q n α)
:
kroneckerMap (fun (x1 x2 : α) => x1 * x2) C D * kroneckerMap (fun (x1 x2 : α) => x1 * x2) A B * (kroneckerMap (fun (x1 x2 : α) => x1 * x2) C D).conjTranspose = kroneckerMap (fun (x1 x2 : α) => x1 * x2) (C * A * C.conjTranspose) (D * B * D.conjTranspose)
The conjugate of a Kronecker product by a Kronecker product is the Kronecker product of the conjugates (for matrices).