state_props.has_symmetric_extension¶
Determine whether there exists a symmetric extension for a given quantum state.
Functions¶
|
Determine whether there exists a symmetric extension for a given quantum state. |
Module Contents¶
- state_props.has_symmetric_extension.has_symmetric_extension(rho, level=2, dim=None, ppt=True, tol=0.0001)¶
Determine whether there exists a symmetric extension for a given quantum state.
For more information, see [2].
Determining whether an operator possesses a symmetric extension at some level
level
can be used as a check to determine if the operator is entangled or not.This function was adapted from QETLAB.
Examples
2-qubit symmetric extension:
In [1], it was shown that a 2-qubit state \(\rho_{AB}\) has a symmetric extension if and only if
\[\text{Tr}(\rho_B^2) \geq \text{Tr}(\rho_{AB}^2) - 4 \sqrt{\text{det}(\rho_{AB})}.\]This closed-form equation is much quicker to check than running the semidefinite program.
>>> import numpy as np >>> from toqito.state_props import has_symmetric_extension >>> from toqito.channels import partial_trace >>> rho = np.array([[1, 0, 0, -1], ... [0, 1, 1/2, 0], ... [0, 1/2, 1, 0], ... [-1, 0, 0, 1]]) >>> # Show the closed-form equation holds >>> np.trace(np.linalg.matrix_power(partial_trace(rho, 1), 2)) >= np.trace(rho**2) - 4 * np.sqrt(np.linalg.det(rho)) np.True_ >>> # Now show that the `has_symmetric_extension` function recognizes this case. >>> has_symmetric_extension(rho) True
Higher qubit systems:
Consider a density operator corresponding to one of the Bell states.
\[\begin{split}\rho = \frac{1}{2} \begin{pmatrix} 1 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 1 & 0 & 0 & 1 \end{pmatrix}\end{split}\]To make this state over more than just two qubits, let’s construct the following state
\[\sigma = \rho \otimes \rho.\]As the state \(\sigma\) is entangled, there should not exist a symmetric extension at some level. We see this being the case for a relatively low level of the hierarchy.
>>> import numpy as np >>> from toqito.states import bell >>> from toqito.state_props import has_symmetric_extension >>> >>> rho = bell(0) @ bell(0).conj().T >>> sigma = np.kron(rho, rho) >>> has_symmetric_extension(sigma) False
References
[1]Jianxin Chen, Zhengfeng Ji, David Kribs, Norbert Lütkenhaus, and Bei Zeng. Symmetric extension of two-qubit states. Physical Review A, Sep 2014. URL: http://dx.doi.org/10.1103/PhysRevA.90.032318, doi:10.1103/physreva.90.032318.
[2]A. C. Doherty, Pablo A. Parrilo, and Federico M. Spedalieri. Distinguishing separable and entangled states. Physical Review Letters, Apr 2002. URL: http://dx.doi.org/10.1103/PhysRevLett.88.187904, doi:10.1103/physrevlett.88.187904.
- Raises:
ValueError – If dimension does not evenly divide matrix length.
- Parameters:
rho (numpy.ndarray) – A matrix or vector.
level (int) – Level of the hierarchy to compute.
dim (numpy.ndarray | int) – The default has both subsystems of equal dimension.
ppt (bool) – If
True
, this enforces that the symmetric extension must be PPT.tol (float) – Tolerance when determining whether a symmetric extension exists.
- Returns:
True
ifmat
has a symmetric extension;False
otherwise.- Return type:
bool