Documentation

QuantumInfo.ForMathlib.HermitianMat.Basic

@[reducible, inline]
abbrev HermitianMat (n : Type u_1) (α : Type u_2) [AddGroup α] [StarAddMonoid α] :
Type (max u_1 u_2)

The type of Hermitian matrices, as a Subtype. Equivalent to a Matrix n n α bundled with the fact that Matrix.IsHermitian.

Equations
Instances For
    theorem HermitianMat.eq_IsHermitian {α : Type u_1} {n : Type u_3} [AddGroup α] [StarAddMonoid α] :
    @[reducible]
    def HermitianMat.toMat {α : Type u_1} {n : Type u_3} [AddGroup α] [StarAddMonoid α] :
    HermitianMat n αMatrix n n α
    Equations
    Instances For
      @[simp]
      theorem HermitianMat.val_eq_coe {α : Type u_1} {n : Type u_3} [AddGroup α] [StarAddMonoid α] (A : HermitianMat n α) :
      A = A
      @[simp]
      theorem HermitianMat.mk_toMat {α : Type u_1} {n : Type u_3} [AddGroup α] [StarAddMonoid α] (x : Matrix n n α) (h : x selfAdjoint (Matrix n n α)) :
      x, h = x
      theorem HermitianMat.H {α : Type u_1} {n : Type u_3} [AddGroup α] [StarAddMonoid α] (A : HermitianMat n α) :

      Alias for HermitianMat.property or HermitianMat.2, this gets the fact that the value is actually IsHermitian.

      theorem HermitianMat.ext {α : Type u_1} {n : Type u_3} [AddGroup α] [StarAddMonoid α] {A B : HermitianMat n α} :
      A = BA = B
      theorem HermitianMat.ext_iff {α : Type u_1} {n : Type u_3} [AddGroup α] [StarAddMonoid α] {A B : HermitianMat n α} :
      A = B A = B
      instance HermitianMat.instFun {α : Type u_1} {n : Type u_3} [AddGroup α] [StarAddMonoid α] :
      FunLike (HermitianMat n α) n (nα)
      Equations
      instance HermitianMat.instStar {α : Type u_1} {n : Type u_3} [AddGroup α] [StarAddMonoid α] :
      Equations
      @[simp]
      theorem HermitianMat.conjTranspose_toMat {α : Type u_1} {n : Type u_3} [AddGroup α] [StarAddMonoid α] (A : HermitianMat n α) :
      (↑A).conjTranspose = A
      noncomputable instance HermitianMat.instInv {α : Type u_1} {n : Type u_3} [CommRing α] [StarRing α] [DecidableEq n] [Fintype n] :
      Equations
      noncomputable instance HermitianMat.instZPow {α : Type u_1} {n : Type u_3} [CommRing α] [StarRing α] [DecidableEq n] [Fintype n] :
      Equations
      @[simp]
      theorem HermitianMat.im_eq_zero {α : Type u_1} {n : Type u_3} [RCLike α] (A : HermitianMat n α) (x : n) :
      RCLike.im (A x x) = 0
      @[simp]
      theorem HermitianMat.Complex_im_eq_zero {n : Type u_3} (A : HermitianMat n ) (x : n) :
      (A x x).im = 0
      def HermitianMat.conj {α : Type u_1} {n : Type u_3} [CommRing α] [StarRing α] [Fintype n] {m : Type u_4} (B : Matrix m n α) :

      The Hermitian matrix given by conjugating by a (possibly rectangular) Matrix. If we required B to be square, this would apply to any Semigroup+StarMul (as proved by IsSelfAdjoint.conjugate). But this lets us conjugate to other sizes too, as is done in e.g. Kraus operators. That is, it's a heterogeneous conjguation.

      Equations
      Instances For
        theorem HermitianMat.conj_apply {α : Type u_1} {m : Type u_2} {n : Type u_3} [CommRing α] [StarRing α] [Fintype n] (B : Matrix m n α) (A : HermitianMat n α) :
        (conj B) A = B * A * B.conjTranspose,
        @[simp]
        theorem HermitianMat.conj_apply_toMat {α : Type u_1} {m : Type u_2} {n : Type u_3} [CommRing α] [StarRing α] [Fintype n] (B : Matrix m n α) (A : HermitianMat n α) :
        ((conj B) A) = B * A * B.conjTranspose
        theorem HermitianMat.conj_conj {α : Type u_1} {n : Type u_3} [CommRing α] [StarRing α] [Fintype n] (A : HermitianMat n α) {m : Type u_4} {l : Type u_5} [Fintype m] (B : Matrix m n α) (C : Matrix l m α) :
        (conj C) ((conj B) A) = (conj (C * B)) A
        @[simp]
        theorem HermitianMat.conj_zero {α : Type u_1} {n : Type u_3} [CommRing α] [StarRing α] [Fintype n] (A : HermitianMat n α) [DecidableEq n] :
        (conj 0) A = 0
        @[simp]
        theorem HermitianMat.conj_one {α : Type u_1} {n : Type u_3} [CommRing α] [StarRing α] [Fintype n] (A : HermitianMat n α) [DecidableEq n] :
        (conj 1) A = A
        def HermitianMat.conjLinear {α : Type u_1} {n : Type u_3} [CommRing α] [StarRing α] [Fintype n] (R : Type u_4) [Star R] [TrivialStar R] [CommSemiring R] [Algebra R α] [StarModule R α] {m : Type u_5} (B : Matrix m n α) :

        HermitianMat.conj as an R-linear map, where R is the ring of relevant reals.

        Equations
        Instances For
          @[simp]
          theorem HermitianMat.conjLinear_apply {α : Type u_1} {m : Type u_2} {n : Type u_3} [CommRing α] [StarRing α] [Fintype n] (A : HermitianMat n α) (R : Type u_4) [Star R] [TrivialStar R] [CommSemiring R] [Algebra R α] [StarModule R α] (B : Matrix m n α) :
          (conjLinear R B) A = (conj B) A
          def HermitianMat.lin {n : Type u_3} {𝕜 : Type u_4} [RCLike 𝕜] [Fintype n] [DecidableEq n] (A : HermitianMat n 𝕜) :

          The continuous linear map associated with a Hermitian matrix.

          Equations
          Instances For
            @[simp]
            theorem HermitianMat.isSymmetric {n : Type u_3} {𝕜 : Type u_4} [RCLike 𝕜] [Fintype n] [DecidableEq n] (A : HermitianMat n 𝕜) :
            @[simp]
            theorem HermitianMat.lin_zero {n : Type u_3} {𝕜 : Type u_4} [RCLike 𝕜] [Fintype n] [DecidableEq n] :
            lin 0 = 0
            @[simp]
            theorem HermitianMat.lin_one {n : Type u_3} {𝕜 : Type u_4} [RCLike 𝕜] [Fintype n] [DecidableEq n] :
            lin 1 = 1
            noncomputable def HermitianMat.eigenspace {n : Type u_3} {𝕜 : Type u_4} [RCLike 𝕜] [Fintype n] [DecidableEq n] (A : HermitianMat n 𝕜) (μ : 𝕜) :
            Equations
            Instances For
              def HermitianMat.ker {n : Type u_3} {𝕜 : Type u_4} [RCLike 𝕜] [Fintype n] [DecidableEq n] (A : HermitianMat n 𝕜) :

              The kernel of a Hermitian matrix A as a submodule of Euclidean space, defined by LinearMap.ker A.toMat.toEuclideanLin. Equivalently, the zero-eigenspace.

              Equations
              Instances For
                theorem HermitianMat.mem_ker_iff_mulVec_zero {n : Type u_3} {𝕜 : Type u_4} [RCLike 𝕜] [Fintype n] [DecidableEq n] (A : HermitianMat n 𝕜) (x : EuclideanSpace 𝕜 n) :
                x A.ker (↑A).mulVec x = 0
                theorem HermitianMat.ker_eq_eigenspace_zero {n : Type u_3} {𝕜 : Type u_4} [RCLike 𝕜] [Fintype n] [DecidableEq n] (A : HermitianMat n 𝕜) :

                The kernel of a Hermitian matrix is its zero eigenspace.

                @[simp]
                theorem HermitianMat.ker_zero {n : Type u_3} {𝕜 : Type u_4} [RCLike 𝕜] [Fintype n] [DecidableEq n] :
                @[simp]
                theorem HermitianMat.ker_one {n : Type u_3} {𝕜 : Type u_4} [RCLike 𝕜] [Fintype n] [DecidableEq n] :
                theorem HermitianMat.ker_pos_smul {n : Type u_3} {𝕜 : Type u_4} [RCLike 𝕜] [Fintype n] [DecidableEq n] (A : HermitianMat n 𝕜) {c : } (hc : 0 < c) :
                (c A).ker = A.ker
                def HermitianMat.support {n : Type u_3} {𝕜 : Type u_4} [RCLike 𝕜] [Fintype n] [DecidableEq n] (A : HermitianMat n 𝕜) :

                The support of a Hermitian matrix A as a submodule of Euclidean space, defined by LinearMap.range A.toMat.toEuclideanLin. Equivalently, the sum of all nonzero eigenspaces.

                Equations
                Instances For
                  theorem HermitianMat.support_eq_sup_eigenspace_nonzero {n : Type u_3} {𝕜 : Type u_4} [RCLike 𝕜] [Fintype n] [DecidableEq n] (A : HermitianMat n 𝕜) :
                  A.support = ⨆ (μ : 𝕜), ⨆ (_ : μ 0), A.eigenspace μ

                  The support of a Hermitian matrix is the sum of its nonzero eigenspaces.

                  @[simp]
                  theorem HermitianMat.support_zero {n : Type u_3} {𝕜 : Type u_4} [RCLike 𝕜] [Fintype n] [DecidableEq n] :
                  @[simp]
                  theorem HermitianMat.support_one {n : Type u_3} {𝕜 : Type u_4} [RCLike 𝕜] [Fintype n] [DecidableEq n] :
                  @[simp]
                  theorem HermitianMat.ker_orthogonal_eq_support {n : Type u_3} {𝕜 : Type u_4} [RCLike 𝕜] [Fintype n] [DecidableEq n] (A : HermitianMat n 𝕜) :
                  @[simp]
                  theorem HermitianMat.support_orthogonal_eq_range {n : Type u_3} {𝕜 : Type u_4} [RCLike 𝕜] [Fintype n] [DecidableEq n] (A : HermitianMat n 𝕜) :
                  def HermitianMat.diagonal {n : Type u_3} [DecidableEq n] (f : n) :
                  Equations
                  Instances For
                    theorem HermitianMat.diagonal_conj_diagonal {n : Type u_3} [Fintype n] [DecidableEq n] (f g : n) :
                    (conj (diagonal g)) (diagonal f) = diagonal fun (i : n) => f i * g i ^ 2
                    def HermitianMat.kronecker {α : Type u_1} {m : Type u_2} {n : Type u_3} [CommRing α] [StarRing α] (A : HermitianMat m α) (B : HermitianMat n α) :
                    HermitianMat (m × n) α

                    The kronecker product of two HermitianMats, see Matrix.kroneckerMap.

                    Equations
                    Instances For
                      @[simp]
                      theorem HermitianMat.kronecker_coe {α : Type u_1} {m : Type u_2} {n : Type u_3} [CommRing α] [StarRing α] (A : HermitianMat m α) (B : HermitianMat n α) :
                      (A.kronecker B) = Matrix.kroneckerMap (fun (x1 x2 : α) => x1 * x2) A B

                      The kronecker product of two HermitianMats, see Matrix.kroneckerMap.

                      Equations
                      Instances For
                        @[simp]
                        theorem HermitianMat.zero_kronecker {α : Type u_1} {m : Type u_2} {n : Type u_3} [CommRing α] [StarRing α] (A : HermitianMat m α) :
                        kronecker 0 A = 0
                        @[simp]
                        theorem HermitianMat.kronecker_zero {α : Type u_1} {m : Type u_2} {n : Type u_3} [CommRing α] [StarRing α] (A : HermitianMat m α) :
                        A.kronecker 0 = 0
                        @[simp]
                        theorem HermitianMat.kronecker_one_one {α : Type u_1} {m : Type u_2} {n : Type u_3} [CommRing α] [StarRing α] [DecidableEq m] [DecidableEq n] [Fintype m] [Fintype n] :
                        kronecker 1 1 = 1
                        theorem HermitianMat.add_kronecker {α : Type u_1} {m : Type u_2} {n : Type u_3} [CommRing α] [StarRing α] (A B : HermitianMat m α) (C : HermitianMat n α) :
                        (A + B).kronecker C = A.kronecker C + B.kronecker C
                        theorem HermitianMat.kronecker_add {α : Type u_1} {m : Type u_2} {n : Type u_3} [CommRing α] [StarRing α] (A : HermitianMat m α) (B C : HermitianMat n α) :
                        A.kronecker (B + C) = A.kronecker B + A.kronecker C