state_props.is_unextendible_product_basis

Check if a set of states form an unextendible product basis.

Functions

is_unextendible_product_basis(vecs, dims)

Check if a set of vectors form an unextendible product basis (UPB) [1].

Module Contents

state_props.is_unextendible_product_basis.is_unextendible_product_basis(vecs, dims)

Check if a set of vectors form an unextendible product basis (UPB) [1].

Consider a multipartite quantum system \(\mathcal{H} = \bigotimes_{i=1}^{m} \mathcal{H}_{i}\) with \(m\) parties with respective dimensions \(d_i, i = 1, 2, ..., m\). An (incomplete orthogonal) product basis (PB) is a set \(S\) of pure orthogonal product states spanning a proper subspace \(\mathcal{H}_S\) of \(\mathcal{H}\). An unextendible product basis (UPB) is a PB whose complementary subspace \(\mathcal{H}_S-\mathcal{H}\) contains no product state. This function is inspired from IsUPB in [1].

Examples

See toqito.states.tile(). All the states together form a UPB: >>> import numpy as np >>> from toqito.states import tile >>> from toqito.state_props import is_unextendible_product_basis >>> >>> upb_tiles = np.array([tile(i) for i in range(5)]) >>> dims = np.array([3, 3]) >>> is_unextendible_product_basis(upb_tiles, dims) (True, None)

However, the first 4 do not:

>>> import numpy as np
>>> from toqito.states import tile
>>> from toqito.state_props import is_unextendible_product_basis
>>>
>>> non_upb_tiles = np.array([tile(i) for i in range(4)])
>>> dims = np.array([3, 3])
>>> is_unextendible_product_basis(non_upb_tiles, dims)  
(False, array([-0.00000000e+00,  0.00000000e+00,  0.00000000e+00, -0.00000000e+00,
    0.00000000e+00,  0.00000000e+00, -1.11022302e-16,  7.07106781e-01,
    7.07106781e-01]))

The orthogonal state is given by

\[\frac{1}{\sqrt{2}} |2\rangle \left( |1\rangle + |2\rangle \right)\]

References

[1]

Nathaniel Johnston. QETLAB: A MATLAB toolbox for quantum entanglement. URL: https://github.com/nathanieljohnston/QETLAB, doi:10.5281/zenodo.44637.

[2] (1,2)

Charles H. Bennett, David P. DiVincenzo, Tal Mor, Peter W. Shor, John A. Smolin, and Barbara M. Terhal. Unextendible product bases and bound entanglement. Physical Review Letters, 82(26):5385–5388, Jun 1999. URL: http://dx.doi.org/10.1103/PhysRevLett.82.5385, doi:10.1103/physrevlett.82.5385.

Raises:
  • ValueError – If product of dimensions does not match the size of a vector.

  • ValueError – If at least one vector is not a product state.

Parameters:
  • vecs (list[numpy.ndarray]) – The list of states.

  • dims (list[int]) – The list of dimensions.

Returns:

Returns a tuple. The first element is True if input is a UPB and False otherwise. The second element is a witness (a product state orthogonal to all the input vectors) if the input is a PB and None otherwise.

Return type:

tuple[bool, numpy.ndarray]