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.
.