theorem
Matrix.IsHermitian.smul_selfAdjoint
{n : Type u_1}
{𝕜 : Type u_2}
[RCLike 𝕜]
{A : Matrix n n 𝕜}
(hA : A.IsHermitian)
{c : 𝕜}
(hc : _root_.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
theorem
Matrix.IsHermitian.sum_eigenvalues_eq_trace
{n : Type u_1}
{𝕜 : Type u_2}
[RCLike 𝕜]
{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.sum_eigenvalues_eq_rtrace
{n : Type u_1}
{𝕜 : Type u_2}
[RCLike 𝕜]
{A : Matrix n n 𝕜}
(hA : A.IsHermitian)
[Fintype n]
:
theorem
Matrix.IsHermitian.eigenvalues_zero_eq_zero
{n : Type u_1}
{𝕜 : Type u_2}
[RCLike 𝕜]
{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.trace_nonneg
{m : Type u_3}
{𝕜 : Type u_5}
[Fintype m]
[RCLike 𝕜]
{A : Matrix m m 𝕜}
(hA : A.PosSemidef)
:
theorem
Matrix.PosSemidef.rtrace_nonneg
{m : Type u_3}
{𝕜 : Type u_5}
[Fintype m]
[RCLike 𝕜]
{A : Matrix m m 𝕜}
(hA : A.PosSemidef)
:
theorem
Matrix.PosSemidef.smul
{m : Type u_3}
{𝕜 : Type u_5}
[Fintype m]
[RCLike 𝕜]
{A : Matrix m m 𝕜}
(hA : A.PosSemidef)
{c : 𝕜}
(h : 0 ≤ c)
:
(c • A).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.PosSemidef_kronecker
{m : Type u_3}
{n : Type u_4}
{𝕜 : Type u_5}
[Fintype m]
[Fintype n]
[RCLike 𝕜]
[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.sqrt_eq
{m : Type u_3}
{𝕜 : Type u_5}
[Fintype m]
[RCLike 𝕜]
{A B : Matrix m m 𝕜}
(h : A = B)
(hA : A.PosSemidef)
(hB : B.PosSemidef)
:
theorem
Matrix.PosSemidef.sqrt_eq'
{m : Type u_3}
{𝕜 : Type u_5}
[Fintype m]
[RCLike 𝕜]
{A B : Matrix m m 𝕜}
(h : A = B)
(hA : A.PosSemidef)
:
@[simp]
theorem
Matrix.PosSemidef.sqrt_0
{n : Type u_4}
{𝕜 : Type u_5}
[Fintype n]
[RCLike 𝕜]
[DecidableEq n]
:
@[simp]
theorem
Matrix.PosSemidef.sqrt_1
{n : Type u_4}
{𝕜 : Type u_5}
[Fintype n]
[RCLike 𝕜]
[DecidableEq n]
:
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)
:
instance
Matrix.PosSemidef.instOrderedCancelAddCommMonoid
{n : Type u_3}
{𝕜 : Type u_4}
[Fintype n]
[RCLike 𝕜]
:
OrderedCancelAddCommMonoid (Matrix n n 𝕜)
Loewner partial order of square matrices induced by positive-semi-definiteness:
A ≤ B ↔ (B - A).PosSemidef
alongside properties that make it an "OrderedCancelAddCommMonoid"
TODO : Equivalence to CStarAlgebra.spectralOrder
instance
Matrix.PosSemidef.instStarOrderedRing
{n : Type u_3}
{𝕜 : Type u_4}
[Fintype n]
[RCLike 𝕜]
:
StarOrderedRing (Matrix n n 𝕜)
Basically, the instance states A ≤ B ↔ B = A + Sᴴ * S
instance
Matrix.PosSemidef.instNonnegSpectrumClass
{n : Type u_3}
{𝕜 : Type u_4}
[Fintype n]
[RCLike 𝕜]
:
NonnegSpectrumClass ℝ (Matrix n n 𝕜)
Basically, the instance states 0 ≤ A → ∀ x ∈ spectrum ℝ A, 0 ≤ x
theorem
Matrix.PosSemidef.le_of_nonneg_imp'
{n : Type u_3}
{𝕜 : Type u_4}
[Fintype n]
[RCLike 𝕜]
{R : Type u_5}
[OrderedAddCommGroup R]
{x y : R}
(f : R →+ Matrix n n 𝕜)
(h : ∀ (x : R), 0 ≤ x → (f x).PosSemidef)
:
theorem
Matrix.PosSemidef.le_smul_one_of_eigenvalues_iff
{n : Type u_3}
{𝕜 : Type u_4}
[Fintype n]
[RCLike 𝕜]
{A : Matrix n n 𝕜}
(hA : A.PosSemidef)
(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)
: