I have a short Mathematica program:
S[0] = {1, 0, 0}; S[1] = {0, 1, 0}; S[2] = {0, 0, 1};
Omega[0, 0] = (1/Sqrt[3]) Sum[KroneckerProduct[S[s], S[s]], {s, 0, 2}]
w = Exp[2 Pi I/3];
Do[
If[{k, l} != {0, 0},
Omega[k, l] =
(1/Sqrt[3])
Sum[KroneckerProduct[w^(k (s - l)) (S[s] - S[l]), S[s]], {s, 0, 2}]
Omega[0, 0]],
{k, 0, 2}, {l, 0, 2}]
Do[
P[k, l] =
ArrayReshape[Outer[Times, Omega[k, l], ConjugateTranspose[Omega[k, l]]], {9, 9}],
{k, 0, 2}, {l, 0, 2}];
Do[
Print[{k, l, FullSimplify[Sum[P[k, l][[i, i]], {i, 1, 9}]]}],
{k, 0, 2}, {l, 0, 2}]
by which I'm attempting to implement the construction (quoting from the beginning of sec. IV of https://arxiv.org/abs/0705.1403):
We start with a maximally entangled pure state, this is a Bell type state, in a chosen basis $\{0,1,2\}$ \begin{equation*} \Omega _{0 0} = \frac{1}{\sqrt{3}} \sum_{s=0}^2 |s\rangle \otimes |s\rangle\,. \end{equation*} On the first subspace, the system of Alice, we act with the Weyl operators, defined by $W_{k,l}|s\rangle = w^{k(s-l)}|s-l\rangle$ with $w=e^{2\pi i/3}$, while Bob's subsystem is always left inert. The indexes $k$ and $l$ run from $0$ to $2$. The other eight Bell states are constructed by acting with the Weyl operators onto the chosen Bell state \begin{equation*} \Omega_{k,l}=W_{k,l}\otimes I_3\; \Omega_{0,0}\,. \end{equation*} With that we can construct nine Bell projectors $P_{k,l}=|\Omega_{k, l}\rangle\langle\Omega_{k,l}|$. The mixtures of these pure states form our object of interest, the magic simplex $W$: \begin{equation*} W\;=\; \{ \quad \sum c_{k l}\;P_{k,l} \; |\; c_{kl}\geq 0 , \quad \sum c_{k l}=1 \quad \}\end{equation*}
However, I'm not presently sure the given program is fully successful in the intended implementation. The trace of $P_{k,l}$ is 1 for $k=0,l=0$ and $\frac{2}{9}$ in the other eight cases (as indicated in the output above), while for a pure state I would expect them to be all 1. Also, I'm not sure as to the use of the ConjugateTranspose
in the 2nd Do
expression. Further, I also looked into the use of TensorProduct
, rather than KroneckerProduct
. Also, is the ArrayReshape
command in the 2nd Do
expression really necessary?
Obviously, this all strongly pertains to the use of physics (Dirac) notation — which I note has been the subject of a number of questions on this site.
Omega[k, l]
is not correct: $|s-l \rangle$ isS[s-l]
, notS[s]-S[l]
(where $s-l\in{0,1,2}$): e.g. $s=2,l=1$, then $|s-l \rangle=|1 \rangle$, notS[2]-S[1]
; also, I think in your code for $\Omega_{k,l}$, W has already acted on the 1st partite of $\Omega_{00}$, therefore theOmega[0, 0]
in the definition ofOmega[k, l]
is redundant (you can check that your Omega[k,l] for $k,l\neq0$ is not a state vector) $\endgroup$S[[i]]
, and the array index of mathematica starts with 1; additionally, it's better to present state vectors as n-by-1 vectors, so e.g.S = Table[Null, {i, 1, 3}]; S[[1]] = {{1}, {0}, {0}};
$\endgroup$