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)
|
|
ret1 |
list[dict]
|
if |
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 |
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)
|
|
vecA |
ndarray
|
|
vecN |
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
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 |
False
|
use_boson
|
bool
|
if |
False
|
return_info
|
bool
|
if |
False
|
use_tqdm
|
bool
|
if |
True
|
Returns:
Name | Type | Description |
---|---|---|
beta |
ndarray
|
the distance from the origin to the boundary along the direction.
If |
boundary |
ndarray
|
the boundary along the direction. only returned if |
normal_vector |
ndarray
|
the normal vector of the boundary. only returned if |