ComplementaryMap

ComplementaryMap is a function that computes the complementary map of a superoperator (in the sense that the output of this function describes the information leaked by the original superoperator to the environment).

Syntax

 * PHIC = ComplementaryMap(PHI)
 * PHIC = ComplementaryMap(PHI,DIM)

Argument descriptions

 * PHI: A superoperator. Should be provided as either a Choi matrix, or as a cell with either 1 or 2 columns (see the tutorial page for more details about specifying superoperators within QETLAB). PHIC will be a cell of Kraus operators if PHI is a cell of Kraus operators, and similarly PHIC will be a Choi matrix if PHI is a Choi matrix.
 * DIM</tt> (optional, default has input and output spaces of equal dimension): A 1-by-2 vector containing the input and output dimensions of PHI</tt>, in that order (equivalently, these are the dimensions of the first and second subsystems of the Choi matrix PHI</tt>, in that order). If the input or output space is not square, then DIM</tt>'s first row should contain the input and output row dimensions, and its second row should contain its input and output column dimensions. DIM</tt> is required if and only if PHI</tt> has unequal input and output dimensions and is provided as a Choi matrix.

Non-uniqueness
Complementary maps are not unique, and hence different maps PHIC</tt> may be returned depending on the particular representation of the input map PHI</tt>. The particular complementary map that is returned by this function is the one that is obtained by placing all of the first rows of Kraus operators of PHI</tt> into the first Kraus operator of PHIC</tt>, all of the second rows of Kraus operators of PHI</tt> into the second Kraus operator of PHIC</tt>, and so on. The following code defines two families of Kraus operators Phi</tt> and Phi2</tt>, verifies that they represent the same map by showing that their Choi matrices are the same, and then shows that nonetheless the different Kraus representations lead to different complementary maps.