Documentation

QuantumInfo.Finite.CPTPMap.Dual

Duals of matrix map #

Definitions and theorems about the dual of a matrix map.

theorem HermitianMat.toMat_add {d : Type u_5} (x y : HermitianMat d ) :
↑(x + y) = x + y
@[irreducible]
def MatrixMap.dual {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] {R : Type u_3} [CommRing R] [DecidableEq dIn] [DecidableEq dOut] (M : MatrixMap dIn dOut R) :
MatrixMap dOut dIn R

The dual of a map between matrices, defined by Tr[A M(B)] = Tr[(dual M)(A) B]. Sometimes called the adjoint of the map instead.

Equations
Instances For
    theorem MatrixMap.Dual.trace_eq {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] {R : Type u_3} [CommRing R] [DecidableEq dIn] [DecidableEq dOut] (M : MatrixMap dIn dOut R) (A : Matrix dIn dIn R) (B : Matrix dOut dOut R) :
    (M A * B).trace = (A * M.dual B).trace

    The defining property of a dual map: inner products are preserved on the opposite argument.

    theorem MatrixMap.IsHermitianPreserving.dual {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] {𝕜 : Type u_4} [RCLike 𝕜] [DecidableEq dIn] [DecidableEq dOut] {M : MatrixMap dIn dOut 𝕜} (h : M.IsHermitianPreserving) :

    The dual of a IsHermitianPreserving map also IsHermitianPreserving.

    theorem MatrixMap.IsPositive.dual {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] {𝕜 : Type u_4} [RCLike 𝕜] [DecidableEq dIn] [DecidableEq dOut] {M : MatrixMap dIn dOut 𝕜} (h : M.IsPositive) :

    The dual of a IsPositive map also IsPositive.

    theorem MatrixMap.dual_Unital {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] {𝕜 : Type u_4} [RCLike 𝕜] [DecidableEq dIn] [DecidableEq dOut] {M : MatrixMap dIn dOut 𝕜} (h : M.IsTracePreserving) :

    The dual of TracePreserving map is not trace-preserving, it's unital, that is, M*(I) = I.

    theorem MatrixMap.IsTracePreserving.dual {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] {𝕜 : Type u_4} [RCLike 𝕜] [DecidableEq dIn] [DecidableEq dOut] {M : MatrixMap dIn dOut 𝕜} (h : M.IsTracePreserving) :

    Alias of MatrixMap.dual_Unital.


    The dual of TracePreserving map is not trace-preserving, it's unital, that is, M*(I) = I.

    theorem MatrixMap.IsCompletelyPositive.dual {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] {𝕜 : Type u_4} [RCLike 𝕜] [DecidableEq dIn] [DecidableEq dOut] {M : MatrixMap dIn dOut 𝕜} (h : M.IsCompletelyPositive) :
    @[simp]
    theorem MatrixMap.dual_dual {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] {𝕜 : Type u_4} [RCLike 𝕜] [DecidableEq dIn] [DecidableEq dOut] {M : MatrixMap dIn dOut 𝕜} :
    M.dual.dual = M
    def CPTPMap.dual {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] [DecidableEq dIn] [DecidableEq dOut] (M : CPTPMap dIn dOut ) :
    CPUMap dOut dIn
    Equations
    Instances For
      theorem CPTPMap.dual_pos {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] [DecidableEq dIn] [DecidableEq dOut] (M : CPTPMap dIn dOut ) {T : HermitianMat dOut } (hT : 0 T) :
      0 M.dual T
      theorem CPTPMap.dual.PTP_POVM {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] [DecidableEq dIn] [DecidableEq dOut] (M : CPTPMap dIn dOut ) {T : HermitianMat dOut } (hT : 0 T T 1) :
      0 M.dual T M.dual T 1

      The dual of a CPTP map preserves POVMs. Stated here just for two-element POVMs, that is, an operator T between 0 and 1.

      theorem CPTPMap.exp_val_Dual {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] [DecidableEq dIn] [DecidableEq dOut] ( : CPTPMap dIn dOut ) (ρ : MState dIn) (T : HermitianMat dOut ) :
      ( ρ).exp_val T = ρ.exp_val (.dual T)

      The defining property of a dual channel, as specialized to MState.exp_val.

      def HPMap.ofHermitianMat {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] (f : HermitianMat dIn →ₗ[] HermitianMat dOut ) :
      HPMap dIn dOut
      Equations
      Instances For
        @[simp]
        theorem HPMap.ofHermitianMat_linearMap {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] (f : HPMap dIn dOut ) :
        def HPMap.hermDual {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] (f : HPMap dIn dOut ) :
        HPMap dOut dIn
        Equations
        Instances For
          @[simp]
          theorem HPMap.hermDual_hermDual {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] (f : HPMap dIn dOut ) :
          theorem HPMap.inner_hermDual {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] (f : HPMap dIn dOut ) (A : HermitianMat dIn ) (B : HermitianMat dOut ) :
          inner (f A) B = inner A (f.hermDual B)

          The defining property of a dual map: inner products are preserved on the opposite argument.

          theorem HPMap.inner_hermDual' {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] (f : HPMap dIn dOut ) (A : HermitianMat dIn ) (B : HermitianMat dOut ) :
          (f A).inner B = A.inner (f.hermDual B)

          Version of HPMap.inner_hermDual that uses HermitiaMat.inner directly. TODO cleanup

          theorem HermitianMat.cfc_eq_cfc_iff_eqOn {dIn : Type u_1} [Fintype dIn] [DecidableEq dIn] (A : HermitianMat dIn ) (f g : ) :
          A.cfc f = A.cfc g Set.EqOn f g (spectrum A)
          theorem HermitianMat.zero_le_iff_inner_pos {dIn : Type u_1} [Fintype dIn] (A : HermitianMat dIn ) :
          0 A ∀ (B : HermitianMat dIn ), 0 B0 Inner.inner A B
          theorem MatrixMap.IsPositive.hermDual {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] (f : HPMap dIn dOut ) (h : f.map.IsPositive) :

          The dual of a IsPositive map also IsPositive.

          theorem HPMap.hermDual_Unital {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] (f : HPMap dIn dOut ) [DecidableEq dIn] [DecidableEq dOut] (h : f.map.IsTracePreserving) :

          The dual of TracePreserving map is not trace-preserving, it's unital, that is, M*(I) = I.

          theorem MatrixMap.IsTracePreserving.hermDual {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] (f : HPMap dIn dOut ) [DecidableEq dIn] [DecidableEq dOut] (h : f.map.IsTracePreserving) :

          Alias of HPMap.hermDual_Unital.


          The dual of TracePreserving map is not trace-preserving, it's unital, that is, M*(I) = I.

          def PTPMap.hermDual {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] [DecidableEq dIn] [DecidableEq dOut] (M : PTPMap dIn dOut ) :
          PUMap dOut dIn
          Equations
          Instances For
            theorem PTPMap.hermDual_pos {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] [DecidableEq dIn] [DecidableEq dOut] (M : PTPMap dIn dOut ) {T : HermitianMat dOut } (hT : 0 T) :
            theorem PTPMap.hermDual.PTP_POVM {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] [DecidableEq dIn] [DecidableEq dOut] (M : PTPMap dIn dOut ) {T : HermitianMat dOut } (hT : 0 T T 1) :

            The dual of a PTP map preserves POVMs. Stated here just for two-element POVMs, that is, an operator T between 0 and 1.

            theorem PTPMap.exp_val_hermDual {dIn : Type u_1} {dOut : Type u_2} [Fintype dIn] [Fintype dOut] [DecidableEq dIn] [DecidableEq dOut] ( : PTPMap dIn dOut ) (ρ : MState dIn) (T : HermitianMat dOut ) :
            ( ρ).exp_val T = ρ.exp_val (.hermDual T)

            The defining property of a dual channel, as specialized to MState.exp_val.