0
$\begingroup$

I am looking at Quantum Teleportation is a Universal Computational Primitive, and I can't follow how they derive the circuit for Fig 2.

gate teleportation

I understand that the CNOT gate between the second qubit of the first bell pair and the first of the second occurrs after the bi-product operators acting on qubits 3 and 4. We can then use commutation to move it earlier in the circuit. However, taking a CNOT gate and moving it through $X$ and $Z$ bi-product operations, we get (going from left to right, but it doesn't matter)

$$C_{3,4}Z_{3}X_{3}\to Z_{3}X_{3}X_{4}C_{3,4} $$ given classical control by $|\alpha\rangle $ and $$C_{3,4}Z_{4}X_{4}\to Z_{3}Z_{4}X_{4}C_{3,4} $$ given classical control by $|\beta\rangle$

Even taking the control and target for the EPR pairs as flipped, we get

$$C_{4,3}Z_{3}X_{3}\to Z_{3}Z_{4}X_{3}C_{3,4} $$ given classical control by $|\alpha\rangle $ and $$C_{4,3}Z_{4}X_{4}\to X_{3}X_{4}Z_{4}C_{3,4} $$ given classical control by $|\beta\rangle$

But they have

$$C_{4,3}Z_{3}X_{3}\to Z_{3}Z_{4}X_{4}C_{3,4} $$ given classical control by $|\alpha\rangle $ and $$C_{3,4}Z_{4}X_{4}\to X_{3}X_{4}Z_{3}C_{3,4} $$ given classical control by $|\beta\rangle$

Now given these are all LOCC gates, I know that in certain instances, depending on the measurement outcomes, these would cancel to give the usual single $X$ and $Z$ operations. Additionally, they are bi-product operations, so it doesn't really matter what happens with them. But I would like to understand why I am getting something different than they are for the new LOCC operations with classical control.

$\endgroup$

1 Answer 1

1
$\begingroup$

Are you doing CX 2 3 or CX 3 2 when preparing the middle state? The corrections are for CX 3 2.

import stim


circuit = stim.Circuit("""
    RX 1 3
    R 2 4
    TICK

    CX 1 2 3 4
    TICK

    CX 3 2
    TICK
    
    CX 1 0 5 4
    TICK

    M 0 4
    MX 1 5
    TICK
    
    CX rec[-3] 2 rec[-3] 3
    CZ rec[-1] 3
    CX rec[-4] 2
    CZ rec[-2] 2 rec[-2] 3
""")

assert circuit.has_all_flows([
    stim.Flow("X0 -> X2"),
    stim.Flow("Z0 -> Z2*Z3"),
    stim.Flow("X5 -> X2*X3"),
    stim.Flow("Z5 -> Z3"),
])
print(circuit.diagram())
                        /------------------------\
q0: --------X-M:rec[0]-----------------------------
            |
q1: -RX-@---@-MX:rec[2]----------------------------
        |
q2: -R--X-X-------------X^rec[1]-X^rec[0]-Z^rec[2]-
          |
q3: -RX-@-@-------------X^rec[1]-Z^rec[3]-Z^rec[2]-
        |
q4: -R--X---X-M:rec[1]-----------------------------
            |
q5: --------@-MX:rec[3]----------------------------
                        \------------------------/
$\endgroup$
2
  • $\begingroup$ Hi Craig. The first set I showed was for $CX_{2,3}$, and the second for $CX_{3,2}$. Your corrections seem to match mine for $CX_{3,2}$, ie $ Z_{2}Z_{3}X_{2}C_{3,2}$ and $ X_{2}X_{3}Z_{2}C_{3,2}$ . But for some reason the paper shows $ Z_{2}Z_{3}X_{3}C_{3,2}$ and $X_{2}X_{3}Z_{2}C_{3,2}$ $\endgroup$ Commented Nov 22 at 16:26
  • $\begingroup$ @GaussStrife gah I misread if mine matched the paper. Anyways if my corrections match yours then yours are correct and the paper's are wrong, because mine are passing flow tests proving it's a teleported CNOT. $\endgroup$ Commented Nov 22 at 16:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.