# UPBSepDistinguishable

 Other toolboxes required UPBSepDistinguishable Determines whether or not a UPB is distinguishable by separable measurements CVX LocalDistinguishability Distinguishing objects

UPBSepDistinguishable is a function that determines whether or not a given UPB is perfectly distinguishable by separable measurements. This question is interesting because it is known that all UPBs are indistinguishable by LOCC measurements [1], and all UPBs are distinguishable by PPT measurements. Separable measurements lie between these two classes.

## Syntax

• DIST = UPBSepDistinguishable(U,V,W,...)

## Argument descriptions

• U,V,W,...: Matrices, each with the same number of columns as each other, whose columns are the local vectors of the UPB.

## Examples

### Qutrit UPBs are distinguishable

It was shown in [2] that all UPBs in $\mathbb{C}^3 \otimes \mathbb{C}^3$ are distinguishable by separable measurements. We can verify this fact for the "Tiles" UPB as follows:

>> [u,v] = UPB('Tiles'); % generates the "Tiles" UPB
>> UPBSepDistinguishable(u,v)

ans =

1

### The Feng UPB is indistinguishable

It was shown in [3] that the UPB in $\mathbb{C}^4 \otimes \mathbb{C}^4$ found by K. Feng is indistinguishable by separable measurements. We can confirm this fact as follows:

>> [u,v] = UPB('Feng4x4'); % generates the "Feng" UPB
>> UPBSepDistinguishable(u,v)

ans =

0

## Source code

Click on "expand" to the right to view the MATLAB source code for this function.

1. %%  UPBSEPDISTINGUISHABLE    Determines whether or not a UPB is distinguishable by separable measurements
2. %
3. %   DIST = UPBSepDistinguishable(U,V,W,...) returns 1 or 0, indicating that
4. %   the UPB specified by the local vectors U, V, W, ... is or is not
5. %   distinguishable by separable measurements. U, V, W, ... should be
6. %   matrices, each with the same number of columns, whose columns are the
7. %   local vectors of a UPB (i.e., each matrix corresponds to one party).
8. %
9. %   See [1] for a description of how this computation is carried out.
10. %
11. %   URL: http://www.qetlab.com/UPBSepDistinguishable
12. %
13. %   References:
14. %   [1] S. Bandyopadhyay, A. Cosentino, N. Johnston, V. Russo, J. Watrous,
15. %       and N. Yu. Limitations on separable measurements by convex
16. %       optimization. E-print: arXiv:1408.6981 [quant-ph], 2014.
17. 
18. %   requires: cvx (http://cvxr.com/cvx/), opt_args.m, vec_partitions.m
19. %   author: Nathaniel Johnston (nathaniel@njohnston.ca)
20. %   last updated: October 30, 2014
21. 
22. function dist = UPBSepDistinguishable(varargin)
23. 
24.     % First, compute all of the "replacement vectors" for this UPB.
25.     P = upb_replacement_vectors(varargin{:});
26. 
27.     % Convert the replacement vectors that were found above into the projection
28.     % onto those vectors.
29.     ct = 1;
30.     for j = 1:length(P)
31.         for k = 1:size(P{j}{1},2)
32.             Q{ct} = P{j}{1}(:,k);
33.             for l = 2:length(P{j})
34.                 Q{ct} = kron(Q{ct},P{j}{l}(:,k));
35.             end
36.             Q{ct} = Q{ct}*Q{ct}';
37.             ct = ct + 1;
38.         end
39.     end
40.     dim = length(Q{1});
41. 
42.     % Now solve the LP based on these projections that determines whether or
43.     % not this UPB is distinguishable by separable measurements.
44.     cvx_begin sdp quiet
45.         cvx_precision high;
46.         variable lam(ct)
47. 
48.         P_sum = 0;
49.         for j = 1:ct-1
50.             P_sum = P_sum + lam(j)*Q{j};
51.         end
52. 
53.         minimize norm(P_sum - eye(dim),'fro')
54.         subject to
55.             lam >= 0;
56.     cvx_end
57.     dist = real(cvx_optval);
58. 
59.     % Convert the output into a form that the user expects (0 = no, 1 = yes).
60.     if(dist <= sqrt(eps))
61.         dist = 1;
62.     else
63.         dist = 0;
64.     end
65. end
66. 
67. % This function computes all of the "replacement vectors" of a UPB. That
68. % is, it removes one vector from the UPB and finds all product vectors
69. % orthogonal to the remaining UPB vectors.
70. function P = upb_replacement_vectors(varargin)
71. 
72.     p = nargin; % number of parties in the UPB
73.     s = size(varargin{1},2); % number of states in the UPB
74.     for j = p:-1:1 % get local dimension of each party
75.         dim(j) = size(varargin{j},1);
76.     end
77. 
78.     for j = s:-1:1
79.         P{j} = cell(p,1);
80.     end
81. 
82.     % Loop through each of the s states in the UPB, removing them one at a
83.     % time.
84.     for j = s:-1:1
85.         cind = setdiff(1:s,j); % the indices of the states that have not been removed
86. 
87.         pt = vec_partitions(cind,p,dim-1); % all possible partitions of the states among the different parties
88.         num_pt = length(pt); % number of partitions to loop through
89. 
90.         for k = 1:num_pt % loop through the partitions
91.             num_orth = 1;
92.             for l = p:-1:1 % loop through the parties
93.                 V = varargin{l}(:,pt{k}{l}); % these are the local states that we are choosing on the l-th party
94.                 orth_state{l} = null(V.');
95.                 num_orth = num_orth*size(orth_state{l},2);
96.             end
97. 
98.             if(num_orth > 1)
99.                 error('upb_replacement_vectors:NotUPB','The set of local vectors provided do not form a UPB.');
100. 
101.             % If the found state really is orthogonal to all others, add it to
102.             % the output.
103.             elseif(num_orth == 1)
104.                 % First, make sure that this state isn't already in P{j}.
105.                 if(size(P{j}{1},2) > 0)
106.                     trow = ones(1,size(P{j}{1},2));
107.                     for l = p:-1:1
108.                         trow = trow.*(orth_state{l}'*P{j}{l});
109.                     end
110.                     new_col = (max(abs(trow)) < 1 - eps*size(P{j}{1},2)^p);
111.                 else
112.                     new_col = 1;
113.                 end
114. 
115.                 % OK, this state really is new.
116.                 if(new_col)
117.                     for l = p:-1:1
118.                         P{j}{l} = [P{j}{l},orth_state{l}];
119.                     end
120.                 end
121.             end
122.         end
123.     end
124. end

## References

1. C. Bennett, D. DiVincenzo, T. Mor, P. Shor, J. Smolin, and B. Terhal. Unextendible product bases and bound entanglement. Physical Review Letters, 82(26):5385–5388, 1999. E-print: arXiv:quant-ph/9808030
2. D. DiVincenzo, T. Mor, P. W. Shor, J. Smolin, and B. Terhal. Unextendible product bases, uncompletable product bases and bound entanglement. Communications in Mathematical Physics, 238(3):379–410, 2003. E-print: arXiv:quant-ph/9908070
3. S. Bandyopadhyay, A. Cosentino, N. Johnston, V. Russo, J. Watrous, and N. Yu. Limitations on separable measurements by convex optimization. E-print: arXiv:1408.6981 [quant-ph], 2014.