This resource function is obsolete. Use the paclet Wolfram/QuantumFramework instead.

Function Repository Resource:

QuantumEntangledQ

Source Notebook

Determine whether a pair of subsystems in a discrete quantum state are entangled

Contributed by: Jonathan Gorard and Taufiq Murtadho

ResourceFunction["QuantumEntangledQ"][QuantumDiscreteState[],bipart]

returns True if the subsystems in the bipartition bipart of the specified QuantumDiscreteState are entangled, False if they are not, or Indeterminate otherwise.

Details

Whenever the bipartition bipart is not specified, the first and second subsystems (as specified by the bipartition {{1},{2}}) are assumed by default.
In ResourceFunction["QuantumEntangledQ"][QuantumDiscreteState[],], the specified QuantumDiscreteState should contain at least two subsystems (qudits).
The bipartition bipart should be a nested list of the general form {{i1,i2,},{j1,j2,}}, with positive integers i1,i2,,j1,j2, specifying subsystems of the given QuantumDiscreteState. For instance, the bipartition {{1,2},{3}} partitions the QuantumDiscreteState into subsystems {1,2} and {3}.
If the QuantumDiscreteState is pure, then the concurrence monotone is used to determine entanglement. If the QuantumDiscreteState is mixed, then the (logarithmic) negativity monotone is used to determine entanglement.
ResourceFunction["QuantumEntangledQ"] will try to return either True or False. However, if the concurrence and (logarithmic) negativity monotones are not defined for the specified QuantumDiscreteState and bipartition, and hence are insufficient to determine whether the specified subsystems are entangled, then ResourceFunction["QuantumEntangledQ"] will return Indeterminate.

Examples

Basic Examples (4) 

Check whether the first and second subsystems of a two-qubit pure discrete quantum state are entangled:

In[1]:=
state = ResourceFunction["QuantumDiscreteState"][{3/5, 0, 0, 4/5}]
Out[1]=
In[2]:=
ResourceFunction["QuantumEntangledQ"][state, {{1}, {2}}]
Out[2]=

Show that the three-qubit GHZ state is biseparable (i.e. any pair of qubits is separable):

In[3]:=
state = ResourceFunction["QuantumDiscreteState"]["GHZ"]
Out[3]=
In[4]:=
ResourceFunction["QuantumEntangledQ"][state, {{1}, {2}}]
Out[4]=
In[5]:=
ResourceFunction["QuantumEntangledQ"][state, {{1}, {3}}]
Out[5]=
In[6]:=
ResourceFunction["QuantumEntangledQ"][state, {{2}, {3}}]
Out[6]=

However, the GHZ state is not triseparable (since every triple of qubits is maximally entangled):

In[7]:=
ResourceFunction["QuantumEntangledQ"][state, {{1, 2}, {3}}]
Out[7]=

Show that the three-qubit W state is not biseparable (and hence its entanglement is more robust than the GHZ state's):

In[8]:=
state = ResourceFunction["QuantumDiscreteState"]["W"];
ResourceFunction["QuantumEntangledQ"][state, {{1}, {2}}]
Out[8]=

Check whether subsystems 1 and 2 in a two-qubit mixed state are entangled:

In[9]:=
state = ResourceFunction["QuantumDiscreteState"][
   IdentityMatrix[4]/4];
ResourceFunction["QuantumEntangledQ"][state, {{1}, {2}}]
Out[9]=

Check whether subsystems 1 and 3 in a random three-qubit mixed state are entangled:

In[10]:=
state2 = ResourceFunction["QuantumDiscreteState"][
   Table[RandomReal[NormalDistribution[0, 1]] + I*RandomReal[NormalDistribution[0, 1]], 8, 8]/8];
ResourceFunction["QuantumEntangledQ"][state, {{1}, {3}}]
Out[10]=

Check whether subsystems {2,3} and {5} are entangled in a random 5-qubit pure state:

In[11]:=
state = ResourceFunction["QuantumDiscreteState"][{"RandomPure", 5}]
Out[11]=
In[12]:=
ResourceFunction["QuantumEntangledQ"][state, {{2, 3}, {5}}]
Out[12]=

Scope (3) 

QuantumEntangledQ is defined for mixed states, but only for pairs of qubits:

In[13]:=
state = ResourceFunction["QuantumDiscreteState"][
   IdentityMatrix[8]/8];
ResourceFunction["QuantumEntangledQ"][state, {{1}, {3}}]
Out[13]=

For a triple of subsystems (qubits), QuantumEntangledQ is undefined (returns Indeterminate):

In[14]:=
ResourceFunction["QuantumEntangledQ"][state, {{1}, {2, 3}}]
Out[14]=

Likewise, for a mixed state of qudits with dimensionality d>2, QuantumEntangledQ is undefined (returns Indeterminate):

In[15]:=
state2 = ResourceFunction["QuantumDiscreteState"][IdentityMatrix[9]/9, 3]
Out[15]=
In[16]:=
ResourceFunction["QuantumEntangledQ"][state2, {{1}, {3}}]
Out[16]=

Publisher

Jonathan Gorard

Version History

  • 1.0.0 – 26 April 2021

Related Resources

License Information