state_props.is_unextendible_product_basis¶
Check if a set of states form an unextendible product basis.
Functions¶
|
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 [2].
Examples
See
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, -6.83580866e-17, 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
- 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 andFalse
otherwise. The second element is a witness (a product state orthogonal to all the input vectors) if the input is a PB andNone
otherwise.- Return type:
tuple[bool, numpy.ndarray]