We describe the relabelings in the CHSH scenario, and decompose their action on probability distributions \(P(ab|xy)\), now using an abstract group construction.
We identify those relabelings with a wreath product construction, which RepLAB supports. This topic guide can also be considered as a (small) introduction to the group constructions available in RepLAB.
Before using RepLAB commands, we must first initialize the library:
[1]:
addpath([pwd, '/../../../external/replab']);
replab_init('verbose', 0);
replab_init: Initialization done.
Outputs are binary, so the relabelling of outputs is the symmetric group of domain size 2.
[2]:
outputGroup = replab.S(2)
outputGroup =
Symmetric group acting on 2 elements
identity: [1, 2]
generator(1 or 'x1'): [2, 1]
recognize.source: Cyclic group C(2) of order 2 < x | x^2 = 1 >
Now, an element of outputGroup
is just a permutation of the two outputs:
[3]:
outputGroup.elements
ans =
{
[1,1] =
1 2
[1,2] =
2 1
}
The representation of this relabelling on the probabilities \(P(a)\) is then the defining representation
[4]:
outputRep = outputGroup.naturalRep
outputRep.image([2 1])
outputRep =
Orthogonal reducible representation
dimension: 2
field: 'R'
group: Symmetric group acting on 2 elements
isUnitary: true
preimages{1}: [2, 1]
images{1}: [0, 1; 1, 0]
ans =
0 1
1 0
In the CHSH scenario, each party has two binary measurements. Therefore, a copy of \(S_2\) acts on the outputs of the first measurement, and a second copy of \(S_2\) acting on the outputs of the second measurement, while another copy of \(S_2\) permutes the choice of measurement (input).
This is described by the wreath product of \(S_2\) by \(S_2\).
[5]:
inputGroup = replab.S(2)
ioGroup = inputGroup.wreathProduct(outputGroup)
inputGroup =
Symmetric group acting on 2 elements
identity: [1, 2]
generator(1 or 'x1'): [2, 1]
recognize.source: Cyclic group C(2) of order 2 < x | x^2 = 1 >
ioGroup =
names =
{
[1,1] = generatorNames
[1,2] = generators
[1,3] = nice
[1,4] = niceIsomorphism
[1,5] = representative
[1,6] = type
}
Finite group of order 8
A: Symmetric group acting on 2 elements
H: Symmetric group acting on 2 elements
N: Direct product group with 2 factors
identity: {[1, 2], {[1, 2], [1, 2]}}
n: 2
phi: replab.perm.PermutationCellAction
generator(1 or 'x1'): {[2, 1], {[1, 2], [1, 2]}}
generator(2 or 'x11'): {[1, 2], {[2, 1], [1, 2]}}
generator(3 or 'x12'): {[1, 2], {[1, 2], [2, 1]}}
recognize.source: Dihedral group of order 8
Elements of ioGroup
are now composed of a permutation of inputs, and the conditional output permutation for \(x=1,2\):
[6]:
ioGroup.elements
ans =
{
[1,1] =
{
[1,1] =
1 2
[1,2] =
{
[1,1] =
1 2
[1,2] =
1 2
}
}
[1,2] =
{
[1,1] =
1 2
[1,2] =
{
[1,1] =
1 2
[1,2] =
2 1
}
}
[1,3] =
{
[1,1] =
1 2
[1,2] =
{
[1,1] =
2 1
[1,2] =
1 2
}
}
[1,4] =
{
[1,1] =
1 2
[1,2] =
{
[1,1] =
2 1
[1,2] =
2 1
}
}
[1,5] =
{
[1,1] =
2 1
[1,2] =
{
[1,1] =
1 2
[1,2] =
1 2
}
}
[1,6] =
{
[1,1] =
2 1
[1,2] =
{
[1,1] =
1 2
[1,2] =
2 1
}
}
[1,7] =
{
[1,1] =
2 1
[1,2] =
{
[1,1] =
2 1
[1,2] =
1 2
}
}
[1,8] =
{
[1,1] =
2 1
[1,2] =
{
[1,1] =
2 1
[1,2] =
2 1
}
}
}
The representation on the conditional probility \(P(a|x)\) is the imprimitive representation, given that we use the defining representation for the inner group
[7]:
ioRep = ioGroup.imprimitiveRep(outputRep);
[8]:
ioRep.image({[2 1] {[1 2] [1 2]}}) % permuting only the inputs
ans =
0 0 1 0
0 0 0 1
1 0 0 0
0 1 0 0
[9]:
ioRep.image({[1 2] {[2 1] [1 2]}}) % permuting only the outputs, conditioned on $x=1$
ans =
0 1 0 0
1 0 0 0
0 0 1 0
0 0 0 1