toqito.channel_props.is_herm_preserving

Determines if a channel is Hermiticity-preserving.

Module Contents

toqito.channel_props.is_herm_preserving.is_herm_preserving(phi, rtol=1e-05, atol=1e-08)[source]

Determine whether the given channel is Hermitian-preserving.

(Section: Linear Maps Of Square Operators from [@Watrous_2018_TQI]).

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

[

Phi(H) in text{Herm}(mathcal{Y})

]

for every Hermitian operator (H in text{Herm}(mathcal{X})).

Examples

The map (Phi) defined as

[

Phi(X) = X - U X U^*

]

is Hermitian-preserving, where

[

U = frac{1}{sqrt{2}} begin{pmatrix}

1 & 1 \ -1 & 1

end{pmatrix}.

]

```python exec=”1” source=”above” import numpy as np from toqito.channel_props import is_herm_preserving

unitary_mat = np.array([[1, 1], [-1, 1]]) / np.sqrt(2) kraus_ops = [[np.identity(2), np.identity(2)], [unitary_mat, -unitary_mat]]

print(is_herm_preserving(kraus_ops)) ```

We may also verify whether the corresponding Choi matrix of a given map is Hermitian-preserving. The swap operator is the Choi matrix of the transpose map, which is Hermitian-preserving as can be seen as follows:

```python exec=”1” source=”above” import numpy as np from toqito.perms import swap_operator from toqito.channel_props import is_herm_preserving

unitary_mat = np.array([[1, 1], [-1, 1]]) / np.sqrt(2) choi_mat = swap_operator(3)

print(is_herm_preserving(choi_mat)) ```

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).

Returns:

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

Return type:

bool