Computation of the optimal urn for CHSH
key <- array(0, dim = c(2,2,2,2), dimnames = list(x1 = c("-1", "+1"), y1 = c("-1", "+1"), x2 = c("-1", "+1"), y2 = c("-1", "+1")))
key
## , , x2 = -1, y2 = -1
##
## y1
## x1 -1 +1
## -1 0 0
## +1 0 0
##
## , , x2 = +1, y2 = -1
##
## y1
## x1 -1 +1
## -1 0 0
## +1 0 0
##
## , , x2 = -1, y2 = +1
##
## y1
## x1 -1 +1
## -1 0 0
## +1 0 0
##
## , , x2 = +1, y2 = +1
##
## y1
## x1 -1 +1
## -1 0 0
## +1 0 0
x1 <- key
x1[x1="+1", , , ] <- +1
x1[x1="-1", , , ] <- -1
y1 <- key
y1[ , y1="+1", , ] <- +1
y1[ , y1="-1", , ] <- -1
x2 <- key
x2[ , , x2="+1", ] <- +1
x2[ , , x2="-1", ] <- -1
y2 <- key
y2[ , , , y2="+1"] <- +1
y2[ , , , y2="-1"] <- -1
key <- (y2 == x1) + (x1 == y1) + (y1 == x2) + (y2 != x2)
key.perm <- aperm(key, c("x1", "x2", "y1", "y2"))
key.perm <- (key.perm - 1)/2
x1.perm <- aperm(x1, c("x1", "x2", "y1", "y2"))
x2.perm <- aperm(x2, c("x1", "x2", "y1", "y2"))
y1.perm <- aperm(y1, c("x1", "x2", "y1", "y2"))
y2.perm <- aperm(y2, c("x1", "x2", "y1", "y2"))
x1.perm.bin <- (x1.perm + 1)/2
x2.perm.bin <- (x2.perm + 1)/2
y1.perm.bin <- (y1.perm + 1)/2
y2.perm.bin <- (y2.perm + 1)/2
slips <- x1.perm.bin * 8 + x2.perm.bin * 4 + y1.perm.bin * 2 + y2.perm.bin
slips[key.perm == 1]
## [1] 0 4 6 14 1 9 11 15
library(R.utils)
intToBin(slips[key.perm == 1])
## [1] "0000" "0100" "0110" "1110" "0001" "1001" "1011" "1111"
urn<- c(1,1,0,0, 1,0,1,0, 0,1,0,1, 0,0,1,1)
intToBin((0:15)[urn == 1])
## [1] "0000" "0001" "0100" "0110" "1001" "1011" "1110" "1111"
intToBin(sort(slips[key.perm == 1]))
## [1] "0000" "0001" "0100" "0110" "1001" "1011" "1110" "1111"