Skip to content

Symmetric extension criteria

Accessible in both numqi.entangle (recommended) and numqi.entangle.symext

numqi.entangle.get_ABk_symmetric_extension_ree(rho, dim, kext, use_ppt=False, use_boson=False, return_info=False, sqrt_order=3, pade_order=3, use_tqdm=False)

get the relative entropy of entanglement of k-symmetric extension on B-party

Parameters:

Name Type Description Default
rho (ndarray, list)

density matrix, or list of density matrices (3d array)

required
dim tuple(int

tuple of length 2, dimension of A-party and B-party

required
kext int

number of copies of symmetric extension

required
use_ppt bool

if True, use PPT (positive partial transpose) constraint

False
use_boson bool

if True, use bosonic symmetry

False
return_info bool

if True, return information of the SDP solver

False
sqrt_order int

the order of sqrtm approximation

3
pade_order int

the order of Pade approximation

3
use_tqdm bool

if True, use tqdm to show progress bar

False

Returns:

Name Type Description
ret0 (float, array)

ret is a float indicates relative entropy of entanglement. If rho is list of density matrices, ret is a 1d np.array of float

ret1 list[dict]

if return_info is True, then ret1 is a list of information of the SDP solver.

numqi.entangle.is_ABk_symmetric_ext(rho, dim, kext, use_ppt=False, use_boson=False, use_tqdm=False, return_info=False)

check if rho has symmetric extension of kext copies on B-party

Parameters:

Name Type Description Default
rho (ndarray, list)

density matrix, or list of density matrices (3d array)

required
dim tuple(int

tuple of length 2, dimension of A-party and B-party

required
kext int

number of copies of symmetric extension

required
use_ppt bool

if True, use PPT (positive partial transpose) constraint

False
use_boson bool

if True, use bosonic symmetry

False
use_tqdm bool

if True, use tqdm to show progress bar

False
return_info bool

if True, return information of the SDP solver

False

Returns:

Name Type Description
ret bool

If return_info=False and rho is single density matrix, ret is a bool indicates if rho has symmetric extension. If return_info=False and rho is list of density matrices, ret is a 1d np.array of bool If return_info=True and rho is single density matrix, ret is a tuple of (bool, info) where info is a list of information of the SDP solver. If return_info=True and rho is list of density matrices, ret is a tuple of (np.array, info) where info is a dict of information of the SDP solver.

numqi.entangle.get_ABk_symmetric_extension_boundary(rho, dim, kext, use_ppt=False, use_boson=False, use_tqdm=False, return_info=False)

get the boundary (in Euclidean space) of k-ext symmetric extension on B-party along rho direction

Parameters:

Name Type Description Default
rho (ndarray, list)

density matrix, or list of density matrices (3d array)

required
dim tuple(int

tuple of length 2, dimension of A-party and B-party

required
kext int

number of copies of symmetric extension

required
use_ppt bool

if True, use PPT (positive partial transpose) constraint

False
use_boson bool

if True, use bosonic symmetry

False
use_tqdm bool

if True, use tqdm to show progress bar

False
return_info bool

if True, return information of the SDP solver

False

Returns:

Name Type Description
beta (float, array)

beta is a float indicates Euclidean distance. if rho is list of density matrices, beta is a 1d np.array of float

vecA ndarray

vecA is a 1d np.ndarray of float indicates the position of the boundary. if rho is list of density matrices, vecA is a 2d np.ndarray

vecN ndarray

vecN is a 1d np.ndarray of float indicates the normal vector of the boundary. if rho is list of density matrices, vecA is a 2d np.ndarray

numqi.entangle.get_ABk_extension_numerical_range(op_list, direction, dim, kext, use_ppt=False, use_boson=False, use_tqdm=True, return_info=False)

get the symmetric extension numerical range of a list of operators

\[ \max\;\beta \]
\[ s.t.\;\begin{cases} \rho_{AB^{k}}\succeq0\\ \mathrm{Tr}[\rho_{AB^{k}}]=1\\ P_{B_{i}B_{j}}\rho_{AB^{k}}P_{B_{i}B_{j}}=\rho_{AB^{k}}\\ \mathrm{Tr}\left[\mathrm{Tr}_{B^{k-1}}\left[\rho\right]A_{i}\right]=\beta\hat{n}_{i} \end{cases} \]

Parameters:

Name Type Description Default
op_list list

a list of operators, each operator is a 2d numpy array

required
direction ndarrray

the boundary along the direction will be calculated, if 2d, then each row is a direction

required
dim tuple[int]

the dimension of the density matrix, e.g. (2,2) for 2 qubits, must be of length 2

required
kext int

the number of copies of symmetric extension

required
use_ppt bool

if True, then use PPT (positive partial transpose) constraint in the pre-image

False
use_boson bool

if True, then use bosonic symmetrical extension

False
return_info bool

if True, then return the boundary and the boundary's normal vector

False
use_tqdm bool

if True, then use tqdm to show the progress

True

Returns:

Name Type Description
beta ndarray

the distance from the origin to the boundary along the direction. If direction is 2d, then beta is 1d array.

boundary ndarray

the boundary along the direction. only returned if return_info is True

normal_vector ndarray

the normal vector of the boundary. only returned if return_info is True