MATLAB code for "Negativity and steering"

Download .zip (18kB), or download .tar.bz2 (11kB).

You'll also need a working YALMIP installation (including an SDP solver) and Toby Cubbit's Tx.m.

Example usage

To reproduce Fig. 1 use something like:

X = [0,1;1,0]; Y = [0,-1i;1i,0];
ineqops = zeros(2,2,2,2);
ineqops(:,:,1,1) = X;
ineqops(:,:,2,1) = -X;
ineqops(:,:,1,2) = Y;
ineqops(:,:,2,2) = -Y;
ineqvalues = -2:0.01:2;

lvl1 = minneg_ineq(ineqops, ineqvalues, 1)
lvl2 = minneg_ineq(ineqops, ineqvalues, 2)
lvl3 = minneg_ineq(ineqops, ineqvalues, 3)

The same ineqops would also work in qrange(), srange() and PPTrange().


There was a bug in minneg() which caused it to fail if Bob's reduced state had complex entries. (Line 68 was missing a transpose.) This is now fixed. Thanks to Shin-Liang Chen at National Cheng Kung University for identifying this bug.

I have also included septest() for directly checking whether an assemblage has an LHS model using eq. (2). Thanks to Trent Graham for prodding me into doing this.

[Meanwhile, the "stronger Peres conjecture" has been disproven, shortly followed by the Peres conjecture itself.]

Update 2

I have now updated the code to use the latest YALMIP syntax. Thanks to 曾强 for prodding me into doing this.

Matthew F. Pusey, May 2013 (updated December 2014 and April 2018)