Documentation

QuantumInfo.Finite.CPTPMap.CP

Completely Positive maps #

Building on MatrixMaps, this defines the Props: IsHermitianPreserving, IsPositive and IsCompletelyPositive. They have basic facts such as closure under composition, addition, and scaling.

def MatrixMap.IsHermitianPreserving {A : Type u_1} {B : Type u_2} {R : Type u_4} [RCLike R] (M : MatrixMap A B R) :

A linear matrix map is Hermitian preserving if it maps IsHermitian matrices to IsHermitian.

Equations
Instances For
    def MatrixMap.IsPositive {A : Type u_1} {B : Type u_2} {R : Type u_4} [RCLike R] [Fintype A] [Fintype B] (M : MatrixMap A B R) :

    A linear matrix map is positive if it maps PosSemidef matrices to PosSemidef.

    Equations
    Instances For
      def MatrixMap.IsCompletelyPositive {A : Type u_1} {B : Type u_2} {R : Type u_4} [RCLike R] [Fintype A] [Fintype B] [DecidableEq A] (M : MatrixMap A B R) :

      A linear matrix map is completely positive if, for any integer n, the tensor product with I(n) is positive.

      Equations
      Instances For

        The identity MatrixMap IsHermitianPreserving.

        theorem MatrixMap.IsHermitianPreserving.comp {A : Type u_1} {B : Type u_2} {C : Type u_3} {R : Type u_4} [RCLike R] {M₁ : MatrixMap A B R} {M₂ : MatrixMap B C R} (h₁ : M₁.IsHermitianPreserving) (h₂ : M₂.IsHermitianPreserving) :

        The composition of IsHermitianPreserving maps is also Hermitian preserving.

        theorem MatrixMap.IsPositive.IsHermitianPreserving {A : Type u_1} {B : Type u_2} {R : Type u_4} [RCLike R] [Fintype A] [Fintype B] (M : MatrixMap A B R) (hM : M.IsPositive) :
        theorem MatrixMap.IsPositive.comp {A : Type u_1} {B : Type u_2} {C : Type u_3} {R : Type u_4} [RCLike R] [Fintype A] [Fintype B] [Fintype C] {M₁ : MatrixMap A B R} {M₂ : MatrixMap B C R} (h₁ : M₁.IsPositive) (h₂ : M₂.IsPositive) :
        IsPositive (M₂ ∘ₗ M₁)

        The composition of IsPositive maps is also positive.

        theorem MatrixMap.IsPositive.id {R : Type u_4} [RCLike R] {A : Type u_5} [Fintype A] :

        The identity MatrixMap IsPositive.

        theorem MatrixMap.IsPositive.add {A : Type u_1} {B : Type u_2} {R : Type u_4} [RCLike R] [Fintype A] [Fintype B] {M₁ M₂ : MatrixMap A B R} (h₁ : M₁.IsPositive) (h₂ : M₂.IsPositive) :
        (M₁ + M₂).IsPositive

        Sums of IsPositive maps are IsPositive.

        theorem MatrixMap.IsPositive.smul {A : Type u_1} {B : Type u_2} {R : Type u_4} [RCLike R] [Fintype A] [Fintype B] {M : MatrixMap A B R} (hM : M.IsPositive) {x : R} (hx : 0 x) :

        Nonnegative scalings of IsPositive maps are IsPositive.

        theorem MatrixMap.IsCompletelyPositive.of_Fintype {A : Type u_1} {B : Type u_2} {R : Type u_4} [RCLike R] [Fintype A] [Fintype B] [DecidableEq A] {M : MatrixMap A B R} (h : M.IsCompletelyPositive) (T : Type u_5) [Fintype T] [DecidableEq T] :

        Definition of a CP map, but with Fintype T in the definition instead of a Fin n.

        theorem MatrixMap.IsCompletelyPositive.comp {A : Type u_1} {B : Type u_2} {C : Type u_3} {R : Type u_4} [RCLike R] [Fintype A] [Fintype B] [Fintype C] [DecidableEq A] [DecidableEq B] {M₁ : MatrixMap A B R} {M₂ : MatrixMap B C R} (h₁ : M₁.IsCompletelyPositive) (h₂ : M₂.IsCompletelyPositive) :

        The composition of IsCompletelyPositive maps is also completely positive.

        The identity MatrixMap IsCompletelyPositive.

        theorem MatrixMap.IsCompletelyPositive.add {A : Type u_1} {B : Type u_2} {R : Type u_4} [RCLike R] [Fintype A] [Fintype B] [DecidableEq A] {M₁ M₂ : MatrixMap A B R} (h₁ : M₁.IsCompletelyPositive) (h₂ : M₂.IsCompletelyPositive) :

        Sums of IsCompletelyPositive maps are IsCompletelyPositive.

        theorem MatrixMap.IsCompletelyPositive.smul {A : Type u_1} {B : Type u_2} {R : Type u_4} [RCLike R] [Fintype A] [Fintype B] [DecidableEq A] {M : MatrixMap A B R} (hM : M.IsCompletelyPositive) {x : R} (hx : 0 x) :

        Nonnegative scalings of IsCompletelyPositive maps are IsCompletelyPositive.

        theorem MatrixMap.IsCompletelyPositive.kron_kronecker_const {d : Type u_5} {A : Type u_1} {R : Type u_4} [RCLike R] [Fintype A] [DecidableEq A] [Fintype d] [DecidableEq d] {C : Matrix d d R} (h : C.PosSemidef) {h₁ : ∀ (x y : Matrix A A R), (fun (M : Matrix A A R) => Matrix.kroneckerMap (fun (x1 x2 : R) => x1 * x2) M C) (x + y) = (fun (M : Matrix A A R) => Matrix.kroneckerMap (fun (x1 x2 : R) => x1 * x2) M C) x + (fun (M : Matrix A A R) => Matrix.kroneckerMap (fun (x1 x2 : R) => x1 * x2) M C) y} {h₂ : ∀ (m : R) (x : Matrix A A R), { toFun := fun (M : Matrix A A R) => Matrix.kroneckerMap (fun (x1 x2 : R) => x1 * x2) M C, map_add' := h₁ }.toFun (m x) = (RingHom.id R) m { toFun := fun (M : Matrix A A R) => Matrix.kroneckerMap (fun (x1 x2 : R) => x1 * x2) M C, map_add' := h₁ }.toFun x} :
        IsCompletelyPositive { toFun := fun (M : Matrix A A R) => Matrix.kroneckerMap (fun (x1 x2 : R) => x1 * x2) M C, map_add' := h₁, map_smul' := h₂ }

        The map that takes M and returns M ⊗ₖ C, where C is positive semidefinite, is a completely positive map.

        Choi's theorem on completely positive maps: A map IsCompletelyPositive iff its Choi Matrix is PSD.

        theorem MatrixMap.IsCompletelyPositive.kron {A : Type u_1} {B : Type u_2} {C : Type u_3} {R : Type u_4} [RCLike R] [Fintype A] [Fintype B] [Fintype C] [DecidableEq A] {D : Type u_5} [DecidableEq C] [Fintype D] {M₁ : MatrixMap A B R} {M₂ : MatrixMap C D R} (h₁ : M₁.IsCompletelyPositive) (h₂ : M₂.IsCompletelyPositive) :

        The Kronecker product of IsCompletelyPositive maps is also completely positive.

        theorem MatrixMap.IsCompletelyPositive.piKron {R : Type u_4} [RCLike R] {ι : Type u} [DecidableEq ι] [fι : Fintype ι] {dI : ιType v} [(i : ι) → Fintype (dI i)] [(i : ι) → DecidableEq (dI i)] {dO : ιType w} [(i : ι) → Fintype (dO i)] [(i : ι) → DecidableEq (dO i)] {Λi : (i : ι) → MatrixMap (dI i) (dO i) R} (h₁ : ∀ (i : ι), (Λi i).IsCompletelyPositive) :

        The piKron product of IsCompletelyPositive maps is also completely positive.