Simulation of local model for the GHZ correlations
Posted: Wed Nov 22, 2017 12:05 pm
Hi Folks,
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.
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.
.
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.
.