IsSeparable

IsSeparable is a function that determines whether a bipartite operator is separable or entangled. A value of 0 indicates that the operator is entangled, a value of 1 indicates that the operator is separable, and a value of -1 indicates that the script was unable to determine whether the operator is separable or entangled.

Syntax

 * SEP = IsSeparable(X)
 * SEP = IsSeparable(X,DIM)
 * SEP = IsSeparable(X,DIM,STR)
 * SEP = IsSeparable(X,DIM,STR,VERBOSE)
 * SEP = IsSeparable(X,DIM,STR,VERBOSE,TOL)

Argument descriptions

 * X: A bipartite positive semidefinite operator.
 * DIM (optional, by default has both subsystems of equal dimension): A 1-by-2 vector containing the dimensions of the two subsystems that X</tt> acts on.
 * STR</tt> (optional, default 2): An integer that determines how hard the script should work to determine separability before giving up (STR = -1</tt> means that the script won't stop working until it finds an answer). Other valid values are 0, 1, 2, 3, ...</tt>. In practice, if STR >= 4</tt> then most computers will run out of memory and/or the sun will explode before computation completes.
 * VERBOSE</tt> (optional, default 1): A flag (either 0 or 1) that indicates that the script will or will not display a line of text describing how it proved that X</tt> is or is not separable.
 * TOL</tt> (optional, default eps^(3/8)</tt>): The numerical tolerance used throughout the script.

Determining entanglement of a bound entangled state
The following code constructs a two-qutrit bound entangled state based on the "Tiles" unextendible product basis. This state's entanglement can not be detected by the positive partial transpose criterion, but the following code shows that it is indeed entangled.

The following code performs the same computation, but has VERBOSE</tt> set to 0 so that the method of proving that rho</tt> is entangled is not displayed.

Mixtures with the maximally-mixed state
Every state that is sufficiently close to the maximally-mixed state is separable, so for every entangled state $\rho \in M_A \otimes M_B$, the state $\sigma_p := p\rho + \tfrac{1}{d_A d_B}(1-p)I$ is separable as long as $p$ is small enough.

For the remainder of this example, $\rho$ is the same bound entangled state based on the "Tiles" UPB from the previous example. It was shown in that the Filter Covariance Matrix Criterion detects the entanglement in $\sigma_p$ when $p = 0.8723$, which we can verify as follows:

However, if we decrease $p$ to $p = 0.8722$ then a stronger test of entanglement is needed to determine that $\sigma_p$ is entangled:

If we decrease $p$ further, then $\sigma_p$ becomes separable:

If we increase $p$ back to $p = 0.4$ then $\sigma_p$ is still separable, but a stronger test is required to prove its separability:

If we increase $p$ slightly more to $p = 0.45$ then $\sigma_p$ is still separable, but none of the default tests for separability are strong enough to determine this. To prove separability, we can increase the STR</tt> argument to 3:

Isotropic states
It is well-known that isotropic states $(1-\alpha)I/d^2 + \alpha|\psi_+\rangle\langle\psi_+| \in M_d \otimes M_d$ are separable if and only if $\alpha \leq 1/(d+1)$, which can be verified in the $d = 3$ case as follows:

Werner states
It is well-known that Werner states $\frac{1}{d^2-d\alpha}(I\otimes I - \alpha S) \in M_d \otimes M_d$ are separable if and only if $\alpha \leq 1/d$, which can be verified in the $d = 3$ case as follows: