channel_props.is_trace_preserving

Determines if a channel is trace-preserving.

Functions

is_trace_preserving(phi[, rtol, atol, sys, dim])

Determine whether the given channel is trace-preserving.

Module Contents

channel_props.is_trace_preserving.is_trace_preserving(phi, rtol=1e-05, atol=1e-08, sys=2, dim=None)

Determine whether the given channel is trace-preserving.

A map \(\Phi \in \text{T} \left(\mathcal{X}, \mathcal{Y} \right)\) is trace-preserving if it holds that

\[\text{Tr} \left( \Phi(X) \right) = \text{Tr}\left( X \right)\]

for every operator \(X \in \text{L}(\mathcal{X})\).

Given the corresponding Choi matrix of the channel, a neccessary and sufficient condition is

\[\text{Tr}_{\mathcal{Y}} \left( J(\Phi) \right) = \mathbb{I}_{\mathcal{X}}\]

In case sys is not specified, the default convention is that the Choi matrix is the result of applying the map to the second subsystem of the standard maximally entangled (unnormalized) state.

The dimensions of the subsystems are given by the vector dim. By default, both subsystems have equal dimension.

Alternatively, given a list of Kraus operators, a neccessary and sufficient condition is

\[\sum_{a \in \Sigma} A_a^* B_a = \mathbb{I}_{\mathcal{X}}\]

Examples

The map \(\Phi\) defined as

\[\Phi(X) = X - U X U^*\]

is not trace-preserving, where

\[\begin{split}U = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \\ -1 & 1 \end{pmatrix}.\end{split}\]
>>> import numpy as np
>>> from toqito.channel_props import is_trace_preserving
>>> unitary_mat = np.array([[1, 1], [-1, 1]]) / np.sqrt(2)
>>> kraus_ops = [[np.identity(2), np.identity(2)], [unitary_mat, -unitary_mat]]
>>> is_trace_preserving(kraus_ops)
False

As another example, the depolarizing channel is trace-preserving.

>>> from toqito.channels import depolarizing
>>> from toqito.channel_props import is_trace_preserving
>>> choi_mat = depolarizing(2)
>>> is_trace_preserving(choi_mat)
True

Further information for determining the trace preserving properties of channels consult (Section: Linear Maps Of Square Operators from [1]).

References

[1]

John Watrous. The Theory of Quantum Information. Cambridge University Press, 2018. URL: https://johnwatrous.com/wp-content/uploads/TQI.pdf, doi:10.1017/9781316848142.

Parameters:
  • phi (numpy.ndarray | list[list[numpy.ndarray]]) – The channel provided as either a Choi matrix or a list of Kraus operators.

  • rtol (float) – The relative tolerance parameter (default 1e-05).

  • atol (float) – The absolute tolerance parameter (default 1e-08).

  • sys (int | list[int]) – Scalar or vector specifying the size of the subsystems.

  • dim (list[int] | numpy.ndarray) – Dimension of the subsystems. If None, all dimensions are assumed to be equal.

Returns:

True if the channel is trace-preserving, and False otherwise.

Return type:

bool