We have implemented in GAViewer, Joy Christian's local-realistic S^7 model of the GHSZ 4-particle correlations using Euclidean primitives. It is based on his paper "Quantum Correlations are Weaved by the Spinors of the Euclidean Primitives". Here is the code for GAViewer.

- Code: Select all
`//Adaptation of Albert Jan Wonnink's original code based on GAViewer for Joy Christian's S^7 Model of the 4-particle`

//GHSZ Correlations: http://challengingbell.blogspot.com/2015/03/numerical-validation-of-vanishing-of.html

function getRandomLambda()

{

if( rand()>0.5) {return 1;} else {return -1;}

}

function getRandomUnitVector() //uniform random unit vector:

//http://mathworld.wolfram.com/SpherePointPicking.html

{

v=randGaussStd()*e1+randGaussStd()*e2+ 0.00*e3; //vectors are restricted to x-y plane (cf. GHSZ paper)

return normalize(v);

}

batch test()

{

set_window_title("Test of Joy Christian's Local-Realistic S^7 Model for the 4-particle GHSZ correlations");

default_model(p3ga);

N=200000; //number of iterations (trials)

I=e1^e2^e3;

s=0;

for(nn=0;nn<N;nn=nn+1) //perform the experiment N times

{

ar=getRandomUnitVector();

ad=ar.(e1*e2); //makes ad orthogonal to ar in the x-y plane

Da=normalize((I ar) + (ad e0)); //eq.(75) http://philsci-archive.pitt.edu/13019

br=getRandomUnitVector();

bd=br.(e1*e2);

Db=normalize((I br) + (bd e0));

cr=getRandomUnitVector();

cd=cr.(e1*e2);

Dc=normalize((I cr) + (cd e0));

dr=getRandomUnitVector();

dd=dr.(e1*e2);

Dd=normalize((I dr) + (dd e0));

lambda=getRandomLambda(); //lambda is a fair coin, giving the +1 or -1 choice

A=(-Da).(lambda*Da); //eq.(188) of http://philsci-archive.pitt.edu/13019

B=(lambda*Db).(Db); //eq.(189) of http://philsci-archive.pitt.edu/13019

LA=A/Da;

LB=B/Db; //implements the twist in the Hopf bundle of S^3

C=(-Dc).(lambda*Dc); //eq.(190) of http://philsci-archive.pitt.edu/13019

D=(lambda*Dd).(Dd); //eq.(191) of http://philsci-archive.pitt.edu/13019

LC=C/Dc;

LD=D/Dd; //implements the twist in the Hopf bundle of S^3

q=0;

if(lambda==1) {q=(LA LB LC LD);} else {q=(LD LC LB LA);}

s=s+q;

print(corrs=scalar(q), "f"); //Output the correlations

phi_a=atan2(scalar(-Da/(e2^e3)), scalar(Da/(e3^e1)))*180/pi;

phi_b=atan2(scalar(Db/(e2^e3)), scalar(Db/(e3^e1)))*180/pi;

phi_c=atan2(scalar(Dc/(e2^e3)), scalar(Dc/(e3^e1)))*180/pi;

phi_d=atan2(scalar(Dd/(e2^e3)), scalar(-Dd/(e3^e1)))*180/pi;

angle=abs(phi_a + phi_b - phi_c - phi_d);

print(angle); //Output the angles

}

mean=s/N;

print(mean, "f");

prompt();

}

And here is the result for 200,000 trials,

Update Nov. 28: Please note that the code above was changed to better reflect the math in Joy's paper.

.