toqito.matrix_props.is_k_incoherent¶
Checks if the matrix is $k$-incoherent.
Module Contents¶
- toqito.matrix_props.is_k_incoherent.is_k_incoherent(mat, k, tol=1e-15)[source]¶
Determine whether a quantum state is k-incoherent [@Johnston_2022_Absolutely].
For a positive integers, (k) and (n), the matrix (X in text{Pos}(mathbb{C}^n)) is called (k)-incoherent if there exists a positive integer (m), a set (S = {|\psi_0\rangle, |\psi_1\rangle,\ldots, |\psi_{m-1}\rangle\} \subset \mathbb{C}^n\) with the property that each \(|psi_irangle) has at most (k) non-zero entries, and real scalars (c_0, c_1, ldots, c_{m-1} geq 0) for which
- [
X = sum_{j=0}^{m-1} c_j |\psi_j\rangle \langle \psi_j|.
]
This function checks if the provided density matrix mat is k-incoherent. It returns True if mat is k-incoherent and False if mat is not.
The function first handles trivial cases. Then it computes the comparison matrix (via [comparison()][toqito.matrices.comparison.comparison]) and performs further tests based on the trace of (mat^2) and a dephasing channel. If no decision is reached, the function recurses by checking incoherence for k-1. Finally, if still indeterminate, an SDP is formulated to decide incoherence.
Examples
If (n = 3) and (k = 2), then the following matrix is (2)-incoherent:
```python exec=”1” source=”above” import numpy as np from toqito.matrix_props import is_k_incoherent mat = np.array([[2, 1, 2],
[1, 2, -1], [2, -1, 5]])
print(is_k_incoherent(mat, 2)) ```
- !!! See
[is_antidistinguishable()][toqito.state_props.is_antidistinguishable.is_antidistinguishable], [is_absolutely_k_incoherent()][toqito.matrix_props.is_absolutely_k_incoherent.is_absolutely_k_incoherent]
- Raises:
ValueError – If k ≤ 0 or if mat is not square.
- Parameters:
mat (numpy.ndarray) – Density matrix to test.
k (int) – The positive integer coherence level.
tol (float) – Tolerance for numerical comparisons (default is 1e-15).
- Returns:
True if mat is k-incoherent, False otherwise.
- Return type:
bool