IsUPB

IsUPB is a function that determines whether or not a given set of product vectors forms an unextendible product basis (UPB).

Syntax

 * IU = IsUPB(U,V,W,...)

Input arguments

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

Output arguments

 * IU: A flag (either 1 or 0) specifying that the set of vectors described by U,V,W,... is or is not a UPB.
 * WIT (optional): If IU = 0 then this is a cell containing local vectors for a product vector orthogonal to every member of the non-UPB described by U,V,W,... (thus, it acts as a witness to the fact that it really is not a UPB). If IU = 1</tt> then WIT</tt> is meaningless.

The "Tiles" UPB
The following code verifies that the well-known "Tiles" UPB is indeed a UPB:

However, if we remove the fifth vector from this set, then it is no longer a UPB:

Indeed, it is not difficult to verify that wit{1}</tt> is orthogonal to u(:,1)</tt> and u(:,2)</tt>, and wit{2}</tt> is orthogonal to v(:,3)</tt> and v(:,4)</tt>, so the first four columns of u,v</tt> do not specify a UPB.