mathlib3 documentation

monlib / linear_algebra.my_matrix.pos_eq_linear_map_is_positive

the correspondence between matrix.pos_semidef and linear_map.is_positive #

In this file, we show that x ∈ Mₙ being positive semi-definite is equivalent to x.to_euclidean_lin.is_positive

The adjoint of the linear map associated to a matrix is the linear map associated to the conjugate transpose of that matrix.

theorem matrix.pos_semidef.star_mul_self {𝕜 : Type u_2} [is_R_or_C 𝕜] {n : Type u_1} [fintype n] (x : matrix n n 𝕜) :
theorem matrix.pos_semidef.mul_star_self {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] (x : matrix n n 𝕜) :
theorem matrix.to_euclidean_lin_eq_pi_Lp_linear_equiv {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] (x : matrix n n 𝕜) :
theorem matrix.pos_semidef_iff {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] (x : matrix n n 𝕜) :
x.pos_semidef (y : matrix n n 𝕜), x = y.conj_transpose.mul y
theorem matrix.dot_product_eq_inner {𝕜 : Type u_2} [is_R_or_C 𝕜] {n : Type u_1} [fintype n] (x y : n 𝕜) :
theorem matrix.is_hermitian_self_mul_conj_transpose {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] (A : matrix n n 𝕜) :
theorem matrix.trace_star {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] {A : matrix n n 𝕜} :
theorem matrix.nonneg_eigenvalues_of_pos_semidef {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] {μ : } {A : matrix n n 𝕜} (hμ : module.End.has_eigenvalue (matrix.to_euclidean_lin A) μ) (H : A.pos_semidef) :
0 μ
theorem matrix.is_hermitian.nonneg_eigenvalues_of_pos_semidef {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] [decidable_eq 𝕜] {A : matrix n n 𝕜} (hA : A.pos_semidef) (i : n) :
@[instance]
noncomputable def matrix.pos_def.invertible {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] {Q : matrix n n 𝕜} (hQ : Q.pos_def) :
Equations
theorem matrix.mul_vec_sum {𝕜 : Type u_2} [is_R_or_C 𝕜] {n : Type u_1} [fintype n] (x : matrix n n 𝕜) (y : n n 𝕜) :
x.mul_vec (finset.univ.sum (λ (i : n), y i)) = finset.univ.sum (λ (i : n), x.mul_vec (y i))
theorem matrix.pos_semidef_iff_eq_rank_one {𝕜 : Type u_2} [is_R_or_C 𝕜] {n : } [decidable_eq 𝕜] {x : matrix (fin n) (fin n) 𝕜} :
x.pos_semidef (m : ) (v : fin m euclidean_space 𝕜 (fin n)), x = finset.univ.sum (λ (i : fin m), linear_map.to_matrix' (rank_one (v i) (v i)))
theorem matrix.pos_semidef_iff_col_mul_conj_transpose_col {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] [decidable_eq 𝕜] (x : matrix n n 𝕜) :
x.pos_semidef (v : n n 𝕜), finset.univ.sum (λ (i : n), (matrix.col (v i)).mul (matrix.col (v i)).conj_transpose) = x

a matrix $x$ is positive semi-definite if and only if there exists vectors $(v_i)$ such that $\sum_i v_iv_i^*=x$

theorem vec_mul_vec.pos_semidef {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] [decidable_eq 𝕜] (x : n 𝕜) :
def linear_map.positive_map {M₁ : Type u_4} {M₂ : Type u_5} [normed_add_comm_group M₁] [normed_add_comm_group M₂] [inner_product_space M₁] [inner_product_space M₂] (T : (M₁ →ₗ[] M₁) →ₗ[] M₂ →ₗ[] M₂) :
Prop

we say a linear map $T \colon L(M_1) \to L(M_2)$ is a positive map if for all positive $x \in L(M_1)$, we also get $T(x)$ is positive

Equations

a $^*$-homomorphism from $L(M_1)$ to $L(M_2)$ is a positive map

theorem matrix.pos_def_one {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] :

the identity is a positive definite matrix

theorem matrix.pos_def.pos_eigenvalues {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq 𝕜] [decidable_eq n] {A : matrix n n 𝕜} (hA : A.pos_def) (i : n) :

each eigenvalue of a positive definite matrix is positive

theorem matrix.pos_def.pos_trace {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] [decidable_eq 𝕜] [nonempty n] {x : matrix n n 𝕜} (hx : x.pos_def) :
theorem matrix.pos_def.trace_ne_zero {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] [nonempty n] [decidable_eq 𝕜] {x : matrix n n 𝕜} (hx : x.pos_def) :

the trace of a positive definite matrix is non-zero

theorem std_basis_matrix.sum_eq_one {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] (a : 𝕜) :
finset.univ.sum (λ (k : n), matrix.std_basis_matrix k k a) = a 1
theorem std_basis_matrix_mul {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] (i j k l : n) (a b : 𝕜) :
theorem matrix.smul_std_basis_matrix' {n : Type u_1} {R : Type u_2} [comm_semiring R] [decidable_eq n] (i j : n) (c : R) :
theorem matrix.trace_iff' {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] (x : matrix n n 𝕜) :
x.trace = finset.univ.sum (λ (i : n), x i i)
theorem exists_unique_trace {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] [nontrivial n] :
∃! (φ : matrix n n 𝕜 →ₗ[𝕜] 𝕜), ( (a b : matrix n n 𝕜), φ (a.mul b) = φ (b.mul a)) φ 1 = 1
theorem matrix.std_basis_matrix.trace {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] (i j : n) (a : 𝕜) :
(matrix.std_basis_matrix i j a).trace = ite (i = j) a 0
theorem matrix.std_basis_matrix_eq {𝕜 : Type u_2} [is_R_or_C 𝕜] {n : Type u_1} [decidable_eq n] (i j : n) (a : 𝕜) :
matrix.std_basis_matrix i j a = λ (i' j' : n), ite (i = i' j = j') a 0
theorem vec_mul_vec_eq_zero_iff {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] (x : n 𝕜) :
theorem matrix.pos_def.diagonal {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] (x : n 𝕜) :
theorem matrix.pos_semidef.diagonal {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] (x : n 𝕜) :
theorem matrix.nontracial.trace_conj_transpose_mul_self_re_nonneg {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] {Q : matrix n n 𝕜} (x : matrix n n 𝕜) (hQ : Q.pos_def) :

given a positive definite matrix $Q$, we have $0\leq\Re(\textnormal{Tr}(Qx^*x))$ for any matrix $x$

@[simp]
theorem matrix.finset.sum_abs_eq_zero_iff' {𝕜 : Type u_2} [is_R_or_C 𝕜] {s : Type u_1} [fintype s] {x : s 𝕜} :
finset.univ.sum (λ (i : s), x i ^ 2) = 0 (i : s), x i ^ 2 = 0
theorem matrix.trace_conj_transpose_mul_self_eq_zero {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] (x : matrix n n 𝕜) :
theorem matrix.nontracial.trace_conj_transpose_mul_self_eq_zero {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] [decidable_eq n] {x Q : matrix n n 𝕜} (hQ : Q.pos_def) :
((Q.mul x.conj_transpose).mul x).trace = 0 x = 0

given a positive definite matrix $Q$, we get $\textnormal{Tr}(Qx^*x)=0$ if and only if $x=0$ for any matrix $x$

theorem matrix.is_hermitian.trace_conj_symm_star_mul {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] {Q : matrix n n 𝕜} (hQ : Q.is_hermitian) (x y : matrix n n 𝕜) :
theorem matrix.conj_transpose_mul_self_eq_zero {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] (x : matrix n n 𝕜) :
theorem matrix.pos_semidef_smul_iff {n : Type u_1} {𝕜 : Type u_2} [is_R_or_C 𝕜] [fintype n] {x : matrix n n 𝕜} (hx : x.pos_semidef) (α : nnreal) :
theorem matrix.pos_semidef.mul_conj_transpose_self {𝕜 : Type u_1} {n₁ : Type u_2} {n₂ : Type u_3} [is_R_or_C 𝕜] [fintype n₁] [fintype n₂] (x : matrix n₁ n₂ 𝕜) :