# State teleportation¶

“A trick that quantum magicians use to produce phenomena that cannot be imitated by classical magicians.” - A. Peres [37]

Quantum teleportation - sometimes referred to as state teleportation to avoid confusion with gate teleportation - is the reliable transfer of an unknown quantum state across spatially separated qubits or qumodes, through the use of a classical transmission channel and quantum entanglement [38]. Considered a fundamental quantum information protocol, it has applications ranging from quantum communication to enabling distributed information processing in quantum computation [7].

In general, all quantum teleportation circuits work on the same basic principle. Two distant observers, Alice and Bob, share a maximally entangled quantum state (in discrete variables, any one of the four Bell states; or in CV, a maximally entangled state for a fixed energy), and have access to a classical communication channel. Alice, in possession of an unknown state which she wishes to transport to Bob, makes a joint measurement of the unknown state and her half of the entangled state, by projecting onto the Bell basis. By transmitting the results of her measurement to Bob, Bob is then able to transform his half of the entangled state to an accurate replica of the original unknown state, by performing a conditional phase flip (for qubits) or displacement (for qumodes) [39].

## CV implementation¶

While originally designed for discrete-variable quantum computation with qubits, the (spatially separated) quantum teleportation algorithm described above can be easily translated to CV qumodes; the result is shown in the following circuit:

This process can be explained as follows:

Here, qumodes \(q_1\) and \(q_2\) are initially prepared as (the unphysical) infinitely squeezed vacuum states in momentum and position space respectively,

\[\begin{split}&\ket{0}_x \sim \lim_{z\rightarrow\infty} S(z)\ket{0}\\ &\ket{0}_p \sim \lim_{z\rightarrow-\infty} S(z)\ket{0}=\frac{1}{\sqrt{\pi}}\int_{-\infty}^\infty \ket{x}~dx\end{split}\]before being maximally entangled by a 50-50 beamsplitter:

\[BS(\pi/4,0)(\ket{0}_p\otimes\ket{0}_x)\]These two qumodes are now spatially separated, with \(\ket{q_1}\) held by Alice, and \(\ket{q_2}\) held by Bob, with the two connected via the classical communication channels \(c_0\) and \(c_1\).

To teleport her unknown state \(\ket{\psi}\) to Bob, Alice now performs a projective measurement of her entire system onto the maximally entangled basis states. This is done by entangling \(\ket{\psi}\) and \(\ket{q_1}\) via another 50-50 beamsplitter, before performing two homodyne measurements, in the \(x\) and \(p\) quadratures respectively.

The results of these measurements are then transmitted to Bob, who performs both a position displacement (conditional on the \(x\) measurement) and a momentum displacement (conditional on the \(p\) measurement) to recover exactly the transmitted state \(\ket{\psi}\).

## Blackbird code¶

This can be easily implemented using the Blackbird quantum circuit language:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | ```
psi, alice, bob = q[0], q[1], q[2]
# state to be teleported:
Coherent(1+0.5j) | psi
# 50-50 beamsplitter
BS = BSgate(pi/4, 0)
# maximally entangled states
Squeezed(-2) | alice
Squeezed(2) | bob
BS | (alice, bob)
# Alice performs the joint measurement
# in the maximally entangled basis
BS | (psi, alice)
MeasureX | psi
MeasureP | alice
# Bob conditionally displaces his mode
# based on Alice's measurement result
Xgate(scale(psi, sqrt(2))) | bob
Zgate(scale(alice, sqrt(2))) | bob
``` |

Some important notes:

Infinite squeezed vacuum states are not physically realizable; preparing the states with a squeezing factor of \(|r|=2\) (\(\sim 18\text{dB}\)) is a reasonable approximation.

The function

`scale()`

can be imported from`strawberryfields.utils`

, and allows classical processing on the measured register value; in this case, multiplying it by the correctional factor \(\sqrt{2}\). Other simple classical processing functions are available in the`utils`

module; however if more advanced classical processing is required, custom classical processing functions can be created using the`strawberryfields.convert()`

decorator.`BSgate()`

accepts two arguments,`theta`

and`phi`

. A variable storing the value of \(\pi\) is used for setting these parameters - in Python, this can be imported from NumPy,from numpy import pi

Note

A fully functional Strawberry Fields simulation containing the above Blackbird code is included at `examples/teleportation.py`

.