toqito.state_props.is_product

toqito.state_props.is_product(rho, dim=None)[source]

Determine if a given vector is a product state [WikProdState].

If the input is deemed to be product, then the product decomposition is also returned.

Examples

Consider the following Bell state .. math:

u = \frac{1}{\sqrt{2}} \left( |00 \rangle + |11 \rangle \right) \in \mathcal{X}.

The corresponding density matrix of \(u\) may be calculated by:

\[\begin{split}\rho = u u^* = \frac{1}{2} \begin{pmatrix} 1 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 1 & 0 & 0 & 1 \end{pmatrix} \in \text{D}(\mathcal{X}).\end{split}\]

We can provide the input as either the vector \(u\) or the denisty matrix \(\rho\). In either case, this represents an entangled state (and hence a non-product state). >>> from toqito.state_props import is_product >>> from toqito.states import bell >>> rho = bell(0) * bell(0).conj().T >>> u_vec = bell(0) >>> is_product(rho) (array([False]), None) >>> >>> is_product(u_vec) (array([False]), None)

References

Parameters:
  • rho – The vector or matrix to check.

  • dim – The dimension of the input.

Returns:

True if rho is a product vector and False otherwise.