Documentation

QuantumInfo.ForMathlib.HermitianMat.Proj

The positive parts, or equivalently the projections, of Hermitian matrices onto each other.

def HermitianMat.proj_le {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A B : HermitianMat n 𝕜) :

Projector onto the non-negative eigenspace of B - A. Accessible by the notation {A ≤ₚ B}, which is scoped to HermitianMat. This is the unique maximum operator P such that P^2 = P and P * A * P ≤ P * B * P in the Loewner order.

Equations
Instances For
    noncomputable def HermitianMat.proj_lt {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A B : HermitianMat n 𝕜) :

    Projector onto the positive eigenspace of B - A. Accessible by the notation {A <ₚ B}, which is scoped to HermitianMat. Compare with proj_le.

    Equations
    Instances For
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem HermitianMat.proj_le_def {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A B : HermitianMat n 𝕜) :
              A.proj_le B = (B - A).cfc fun (x : ℝ) => if 0 ≤ x then 1 else 0
              theorem HermitianMat.proj_lt_def {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A B : HermitianMat n 𝕜) :
              A.proj_lt B = (B - A).cfc fun (x : ℝ) => if 0 < x then 1 else 0
              theorem HermitianMat.proj_le_sq {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A B : HermitianMat n 𝕜) :
              A.proj_le B ^ 2 = A.proj_le B
              theorem HermitianMat.proj_lt_sq {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A B : HermitianMat n 𝕜) :
              A.proj_lt B ^ 2 = A.proj_lt B
              theorem HermitianMat.proj_zero_le_cfc {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
              proj_le 0 A = A.cfc fun (x : ℝ) => if 0 ≤ x then 1 else 0
              theorem HermitianMat.proj_zero_lt_cfc {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
              proj_lt 0 A = A.cfc fun (x : ℝ) => if 0 < x then 1 else 0
              theorem HermitianMat.proj_le_zero_cfc {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
              A.proj_le 0 = A.cfc fun (x : ℝ) => if x ≤ 0 then 1 else 0
              theorem HermitianMat.proj_lt_zero_cfc {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
              A.proj_lt 0 = A.cfc fun (x : ℝ) => if x < 0 then 1 else 0
              theorem HermitianMat.proj_le_nonneg {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A B : HermitianMat n 𝕜) :
              0 ≤ A.proj_le B
              theorem HermitianMat.proj_lt_nonneg {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A B : HermitianMat n 𝕜) :
              0 ≤ A.proj_lt B
              theorem HermitianMat.proj_le_le_one {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A B : HermitianMat n 𝕜) :
              A.proj_le B ≤ 1
              theorem HermitianMat.proj_le_mul_nonneg {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A B : HermitianMat n 𝕜) :
              0 ≤ ↑(A.proj_le B) * ↑(B - A)
              theorem HermitianMat.proj_le_mul_le {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A B : HermitianMat n 𝕜) :
              ↑(A.proj_le B) * ↑A ≤ ↑(A.proj_le B) * ↑B
              @[simp]
              theorem HermitianMat.proj_le_add_lt {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A B : HermitianMat n 𝕜) :
              A.proj_lt B + B.proj_le A = 1
              theorem HermitianMat.conj_lt_add_conj_le {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
              (conj ↑(A.proj_lt 0)) A + (conj ↑(proj_le 0 A)) A = A
              def HermitianMat.proj_pos {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :

              The positive part of a Hermitian matrix: the projection onto its positive eigenvalues.

              Equations
              Instances For
                def HermitianMat.proj_neg {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :

                The negative part of a Hermitian matrix: the projection onto its negative eigenvalues.

                Equations
                Instances For
                  instance HermitianMat.instPosPart {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] :
                  Equations
                  instance HermitianMat.instNegPart {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] :
                  Equations
                  theorem HermitianMat.posPart_eq_cfc_max {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
                  A⁺ = A.cfc fun (x : ℝ) => max x 0
                  theorem HermitianMat.negPart_eq_cfc_min {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
                  A⁻ = A.cfc fun (x : ℝ) => max (-x) 0
                  theorem HermitianMat.posPart_eq_cfc_ite {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
                  A⁺ = A.cfc fun (x : ℝ) => if 0 ≤ x then x else 0
                  theorem HermitianMat.negPart_eq_cfc_ite {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
                  A⁻ = A.cfc fun (x : ℝ) => if x ≤ 0 then -x else 0
                  theorem HermitianMat.posPart_eq_posPart_toMat {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
                  ↑A⁺ = (↑A)⁺

                  There is an existing (very slow) PosPart instance on Matrix n n 𝕜, this shows that this is equal.

                  theorem HermitianMat.negPart_eq_negPart_toMat {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
                  ↑A⁻ = (↑A)⁻

                  There is an existing (very slow) PosPart instance on Matrix n n 𝕜, this shows that this is equal.

                  theorem HermitianMat.posPart_eq_cfc_lt {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
                  A⁺ = A.cfc fun (x : ℝ) => if 0 < x then x else 0

                  The positive part can be equivalently described as the nonnegative part.

                  theorem HermitianMat.negPart_eq_cfc_lt {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
                  A⁻ = A.cfc fun (x : ℝ) => if x < 0 then -x else 0

                  The negative part can be equivalently described as the nonpositive part.

                  theorem HermitianMat.posPart_add_negPart {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
                  A⁺ - A⁻ = A
                  theorem HermitianMat.zero_le_posPart {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
                  0 ≤ A⁺
                  theorem HermitianMat.negPart_le_zero {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
                  0 ≤ A⁻
                  theorem HermitianMat.posPart_le {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
                  A ≤ A⁺
                  theorem HermitianMat.posPart_mul_negPart {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A : HermitianMat n 𝕜) :
                  ↑A⁺ * ↑A⁻ = 0
                  theorem HermitianMat.proj_le_inner_nonneg {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A B : HermitianMat n 𝕜) :
                  0 ≤ (A.proj_le B).inner (B - A)
                  theorem HermitianMat.proj_le_inner_le {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A B : HermitianMat n 𝕜) :
                  (A.proj_le B).inner A ≤ (A.proj_le B).inner B
                  theorem HermitianMat.inner_proj_le_nonneg {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A B : HermitianMat n 𝕜) :
                  0 ≤ Inner.inner ℝ (A.proj_le B) (B - A)
                  theorem HermitianMat.inner_proj_le_le {n : Type u_1} [Fintype n] [DecidableEq n] {𝕜 : Type u_2} [RCLike 𝕜] (A B : HermitianMat n 𝕜) :