Physlib Documentation

QuantumInfo.ForMathlib.Matrix

theorem Matrix.zero_rank_eq_zero {n : Type u_1} {š•œ : Type u_2} [RCLike š•œ] [DecidableEq n] {A : Matrix n n š•œ} [Fintype n] (hA : A.rank = 0) :
A = 0
theorem Matrix.IsHermitian.smul_selfAdjoint {n : Type u_1} {š•œ : Type u_2} [RCLike š•œ] {A : Matrix n n š•œ} (hA : A.IsHermitian) {c : š•œ} (hc : IsSelfAdjoint c) :
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) :
theorem Matrix.IsHermitian.smul_real {n : Type u_1} {š•œ : Type u_2} [RCLike š•œ] {A : Matrix n n š•œ} (hA : A.IsHermitian) (c : ā„) :
def Matrix.IsHermitian.HermitianSubspace (n : Type u_3) (š•œ : Type u_4) [Fintype n] [RCLike š•œ] :
Subspace ā„ (Matrix n n š•œ)
Equations
Instances For
    @[simp]
    theorem Matrix.IsHermitian.re_trace_eq_trace {n : Type u_1} {š•œ : Type u_2} [RCLike š•œ] {A : Matrix n n š•œ} (hA : A.IsHermitian) [Fintype n] :
    ↑(RCLike.re A.trace) = A.trace
    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] :
    ↑(āˆ‘ i : n, hA.eigenvalues i) = A.trace

    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) :
    A = 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.trace_zero {m : Type u_3} {š•œ : Type u_5} [Fintype m] [RCLike š•œ] {A : Matrix m m š•œ} (hA : A.PosSemidef) :
    A.trace = 0 → A = 0
    @[simp]
    theorem Matrix.PosSemidef.trace_zero_iff {m : Type u_3} {š•œ : Type u_5} [Fintype m] [RCLike š•œ] {A : Matrix m m š•œ} (hA : A.PosSemidef) :
    A.trace = 0 ↔ A = 0
    theorem RCLike.normSq_eq_conj_mul_self {š•œ : Type u_5} [RCLike š•œ] {z : š•œ} :
    ↑(normSq z) = (starRingEnd š•œ) z * z
    theorem Matrix.PosSemidef.Finsupp.sum_eq_ite {α : Type u_1} {M : Type u_8} {N : Type u_10} [Zero M] [AddCommMonoid N] [Fintype α] [DecidableEq M] (f : α →₀ M) (g : α → M → N) :
    f.sum g = āˆ‘ i : α, if f i ≠ 0 then g i (f i) else 0
    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.zero_dotProduct_zero_iff {m : Type u_3} {š•œ : Type u_5} [Fintype m] [RCLike š•œ] {A : Matrix m m š•œ} (hA : A.PosSemidef) :
    (āˆ€ (x : m → š•œ), 0 = star x ā¬įµ„ A.mulVec x) ↔ A = 0
    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.PosSemidef.zero_posSemidef_neg_posSemidef_iff {m : Type u_3} {š•œ : Type u_5} [Fintype m] [RCLike š•œ] {A : Matrix m m š•œ} :
    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 : (toLin' A).ker = ⊄) (hAā‚‚ : A.PosSemidef) :
    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) :
    A ≤ B → f A ≤ f B
    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) :
    x ≤ y → f x ≤ f y
    theorem Matrix.PosSemidef.mul_mul_conjTranspose_mono {n : Type u_3} {m : Type u_4} {š•œ : Type u_5} [Fintype n] [Fintype m] [RCLike š•œ] {A B : Matrix n n š•œ} (C : Matrix m n š•œ) :
    A ≤ B → C * A * C.conjTranspose ≤ C * B * C.conjTranspose
    theorem Matrix.PosSemidef.conjTranspose_mul_mul_mono {n : Type u_3} {m : Type u_4} {š•œ : Type u_5} [Fintype n] [Fintype m] [RCLike š•œ] {A B : Matrix n n š•œ} (C : Matrix n m š•œ) :
    A ≤ B → C.conjTranspose * A * C ≤ C.conjTranspose * B * C
    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] :
    0 ≤ A ↔ āˆ€ (x : n), 0 ≤ hA.eigenvalues x
    theorem Matrix.PosSemidef.diag_monotone {n : Type u_3} {š•œ : Type u_5} [RCLike š•œ] :
    theorem Matrix.PosSemidef.diag_mono {n : Type u_3} {š•œ : Type u_5} [RCLike š•œ] {A B : Matrix n n š•œ} :
    A ≤ B → āˆ€ (i : n), A.diag i ≤ B.diag i
    theorem Matrix.PosSemidef.trace_monotone {n : Type u_3} {š•œ : Type u_5} [Fintype n] [RCLike š•œ] :
    theorem Matrix.PosSemidef.trace_mono {n : Type u_3} {š•œ : Type u_5} [Fintype n] [RCLike š•œ] {A B : Matrix n n š•œ} :
    A ≤ B → A.trace ≤ B.trace
    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 → š•œ} :
    d₁ ≤ dā‚‚ → diagonal d₁ ≤ diagonal dā‚‚
    theorem Matrix.PosSemidef.diagonal_le_iff {n : Type u_3} {š•œ : Type u_5} [RCLike š•œ] [DecidableEq n] {d₁ dā‚‚ : n → š•œ} :
    d₁ ≤ dā‚‚ ↔ diagonal d₁ ≤ diagonal dā‚‚
    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 : ā„) :
    (āˆ€ (i : n), hA.eigenvalues i ≤ c) ↔ A ≤ c • 1
    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 : ā„) :
    (āˆ€ (i : n), c ≤ hA.eigenvalues i) ↔ c • 1 ≤ A
    def Matrix.traceLeft {R : Type u_3} {d : Type u_4} [AddCommMonoid R] [Fintype d] {d₁ : Type u_5} {dā‚‚ : Type u_6} (m : Matrix (d Ɨ d₁) (d Ɨ dā‚‚) R) :
    Matrix d₁ dā‚‚ R
    Equations
    • m.traceLeft = Matrix.of fun (i₁ : d₁) (j₁ : dā‚‚) => āˆ‘ iā‚‚ : d, m (iā‚‚, i₁) (iā‚‚, j₁)
    Instances For
      def Matrix.traceRight {R : Type u_3} {d : Type u_4} [AddCommMonoid R] [Fintype d] {d₁ : Type u_5} {dā‚‚ : Type u_6} (m : Matrix (d₁ Ɨ d) (dā‚‚ Ɨ d) R) :
      Matrix d₁ dā‚‚ R
      Equations
      • m.traceRight = Matrix.of fun (iā‚‚ : d₁) (jā‚‚ : dā‚‚) => āˆ‘ i₁ : d, m (iā‚‚, i₁) (jā‚‚, i₁)
      Instances For
        @[simp]
        theorem Matrix.traceLeft_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) :
        @[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.trace_mul_kron_one_right {dB : Type u_4} {dA : Type u_5} [DecidableEq dB] [Fintype dA] [Fintype dB] {R : Type u_3} [Ring R] (M : Matrix (dA Ɨ dB) (dA Ɨ dB) R) (A : Matrix dA dA R) :
        (M * kroneckerMap (fun (x1 x2 : R) => x1 * x2) A 1).trace = (M.traceRight * A).trace

        Tr(M (A āŠ— I)) = Tr(Tr_B(M) A)

        theorem Matrix.trace_mul_one_kron_right {dA : Type u_5} {dB : Type u_4} [DecidableEq dA] [Fintype dA] [Fintype dB] {R : Type u_3} [Ring R] (M : Matrix (dA Ɨ dB) (dA Ɨ dB) R) (B : Matrix dB dB R) :
        (M * kroneckerMap (fun (x1 x2 : R) => x1 * x2) 1 B).trace = (M.traceLeft * B).trace

        Tr(M (I āŠ— B)) = Tr(Tr_A(M) B)

        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ā‚‚) :
        @[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) :
        theorem Matrix.PosDef.Convex {n : Type u_3} {š•œ : Type u_4} [Fintype n] [RCLike š•œ] :
        theorem Matrix.PosDef_iff_eigenvalues' {d : Type u_3} {š•œ : Type u_4} [Fintype d] [DecidableEq d] [RCLike š•œ] (M : Matrix d d š•œ) :
        M.PosDef ↔ ∃ (h : M.IsHermitian), āˆ€ (i : d), 0 < h.eigenvalues i
        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] :
        @[simp]
        theorem Matrix.cfc_diagonal {d : Type u_3} {š•œ : Type u_4} [Fintype d] [DecidableEq d] [RCLike š•œ] (g : d → ā„) (f : ā„ → ā„) :
        cfc f (diagonal fun (x : d) => ↑(g x)) = diagonal (RCLike.ofReal ∘ f ∘ g)
        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 : ā„) :
        r ∈ spectrum ā„ A → 0 ≤ r
        theorem Matrix.PosSemidef.pow_add {d : Type u_3} {š•œ : Type u_4} [Fintype d] [DecidableEq d] [RCLike š•œ] {A : Matrix d d š•œ} (hA : A.PosSemidef) {x y : ā„} (hxy : x + y ≠ 0) :
        cfc (fun (x_1 : ā„) => x_1 ^ (x + y)) A = cfc (fun (r : ā„) => r ^ x * r ^ y) A
        theorem Matrix.PosSemidef.pow_mul {d : Type u_3} {š•œ : Type u_4} [Fintype d] [DecidableEq d] [RCLike š•œ] {A : Matrix d d š•œ} {x y : ā„} (hA : A.PosSemidef) :
        cfc (fun (x_1 : ā„) => x_1 ^ (x * y)) A = cfc (fun (r : ā„) => (r ^ x) ^ y) A
        @[simp]
        theorem Matrix.trace_submatrix {α : Type u_3} [AddCommMonoid α] {d₁ : Type u_4} {dā‚‚ : Type u_5} [Fintype d₁] [Fintype dā‚‚] (A : Matrix d₁ d₁ α) (e : dā‚‚ ā‰ƒ d₁) :
        (A.submatrix ⇑e ⇑e).trace = A.trace
        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) :
        spectrum ā„ (kroneckerMap (fun (x1 x2 : š•œ) => x1 * x2) A B) = spectrum ā„ A * spectrum ā„ B
        theorem Matrix.PosDef.zero_lt {n : Type u_3} [Nonempty n] [Fintype n] {A : Matrix n n ā„‚} (hA : A.PosDef) :
        0 < A
        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) :
        spectrum ā„ x āŠ† Set.Ici (⨅ (i : d), hA.eigenvalues i)
        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) :
        spectrum ā„ x āŠ† Set.Iic (⨆ (i : d), hA.eigenvalues i)
        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) :
        spectrum ā„ x āŠ† Set.Icc (⨅ (i : d), hA.eigenvalues i) (⨆ (i : d), hB.eigenvalues i)
        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.

        theorem Matrix.PosSemidef.trace_pos {n : Type u_3} {š•œ : Type u_4} [Fintype n] [RCLike š•œ] {A : Matrix n n š•œ} (hA : A.PosSemidef) (h : A ≠ 0) :
        0 < A.trace
        @[simp]
        theorem Matrix.traceLeft_add {n : Type u_1} {m : Type u_3} {α : Type u_4} [AddCommGroup α] [Fintype m] {A B : Matrix (m Ɨ n) (m Ɨ n) α} :
        @[simp]
        theorem Matrix.traceLeft_neg {n : Type u_1} {m : Type u_3} {α : Type u_4} [AddCommGroup α] [Fintype m] {A : Matrix (m Ɨ n) (m Ɨ n) α} :
        @[simp]
        theorem Matrix.traceLeft_sub {n : Type u_1} {m : Type u_3} {α : Type u_4} [AddCommGroup α] [Fintype m] {A B : Matrix (m Ɨ n) (m Ɨ n) α} :
        @[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.traceLeft_smul {n : Type u_1} {m : Type u_3} {α : Type u_4} [AddCommGroup α] [Fintype m] {R : Type u_5} [DistribSMul R α] {A : Matrix (m Ɨ n) (m Ɨ n) α} (r : R) :
        @[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) :
        āˆ‘ j : n, ‖↑U j i‖ ^ 2 = 1
        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
        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] :
          (piProd A).trace = āˆ i : ι, (A i).trace
          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.submatrix_eq_mul_mul {d : Type u_3} {dā‚‚ : Type u_4} {dā‚ƒ : Type u_5} {R : Type u_6} [DecidableEq d] [Fintype d] [Semiring R] (A : Matrix d d R) (e : dā‚‚ → d) (f : dā‚ƒ → d) :
          A.submatrix e f = submatrix 1 e id * A * submatrix 1 id f
          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).