Stabilizer codes are a large
and important family of quantum error-correcting codes. These codes are
defined as joint eigenspaces of a collection of operators known as
*stabilizers*. The eigenvalues of the stabilizers are used to detect and
diagnose errors. Therefore, many quantum error-correction protocols make
*stabilizer measurements* to obtain these eigenvalues. One way to
implement a stabilizer measurement is to use extra qubits, known as
*syndrome qubits*, to detect errors on *data qubits* that are part of
your computation. Stabilizer measurements can identify a collective
property of a set of data qubits; one such property is the
qubits’ *parity*.

Consider the quantum bit-flip code again. The bit-flip code is a
stabilizer code, and one choice for its stabilizers is \(Z\otimes
Z\otimes I\) and \(I\otimes Z\otimes Z\). A valid codeword is a \(+1\)
eigenstate of these stabilizer operators. For \(Z\)-type operators such
as these, the stabilizer enforces that the parity of the first two
qubits is even, and the parity of the second two qubits is even. The
stabilizer measurement tells us whether the parity has changed, which
we can use to diagnose the error.

In quantum codes such as the surface code, there are \(Z\)-type and \(X\)-type stabilizers to measure. The \(X\)-type stabilizers simply enforce a parity constraint in the \(\{|+\rangle,|-\rangle\}\) basis. For example, the states \(|++\rangle\) and \(|--\rangle\) are \(+1\) eigenstates of \(X\otimes X\). The \(Z\)-type stabilizers in the bulk of the surface code have the form \(Z\otimes Z\otimes Z\otimes Z\) and detect bit-flip errors on the four data qubits that are involved. The \(X\)-type stabilizers in the bulk have the form \(X\otimes X\otimes X\otimes X\) and detect phase-flip errors. These stabilizer measurements are implemented by computing the associated bit-flip or phase-flip parities into a syndrome qubit.

In the Composer, we can test such stabilizer measurements using
\(Q_2\) as a syndrome qubit, and \(Q_0\), \(Q_1\), \(Q_3\), and
\(Q_4\) as data qubits. The \(Z\)-type parity check is performed using
a CNOT gate from each data qubit to the syndrome qubit. The \(X\)-type
parity check is simply the conjugate of the \(Z\)-type check, obtained
by applying Hadamard gates to the input and output data qubits. In a
fault-tolerant implementation of the circuits, the order of gates is
important to limit the spread of errors.

The scores below prepare different states of input parity. See if the processor returns the proper parity measurements.

When we ran these experiments we got