Code for Computing Some Unextendible Product Bases

This page contains MATLAB code that can be used to construct matrices satisfying the conditions of Lemmas 4, 5, and 6 of [1], and thus construct minimal unextendible product bases in the dimensions discussed in that paper.

Download and Install

Usage

The three functions that are relevant for us are CJ_Lemma5, CJ_Lemma6, and HollowUnitary. The first two functions construct matrices satisfying the conditions of Lemmas 5 and 6, respectively, using the methods discussed in Section 5 of [1]. The HollowUnitary function produces a unitary matrix with zeroes along the diagonal but no zero entries elsewhere. This unitary matrix has been numerically verified to satisfy all conditions of Lemma 4 when 4 ≤ d ≤ 19. All three functions have help files that can be accessed within MATLAB. We include some usage examples here.

By specifying an optional fourth argument, we can produce matrices that not only satisfy the conditions of the lemma, but also has integer entries. This procedure causes it to take much longer to construct the desired matrix, however. The fourth argument should be a positive integer – the smaller this integer is, the smaller the entries of the matrix will be, but the longer the computation will take (and if the argument is too small, the computation may never finish, so be careful).

As before, we can create a matrix satisfying the requirements of the lemma with the additional property that the entries are integers by specifying an optional “niceness” argument. The smaller this argument is, the smaller the entries in the matrix will be but the longer the computation will take.

Note that this function can only compute matrices that satisfy the conditions of the lemma in the b = 0 case. Furthermore, this matrix is only guaranteed to satisfy condition (iii) of the lemma when 4 ≤ d ≤ 19. In general, computing a matrix that satisfies conditions (i) and (ii) requires solving a system of linear and quadratic equations, which itself is computationally very difficult, and then verifying condition (iii) seems to require roughly an additional time.

Furthermore, note that matrix output by this function is not random (unlike the matrices produced by the CJ_Lemma5 and CJ_Lemma6 functions) – it is constructed from an eigenbasis using the method described in Section 5 of [1].