State-Map Duality
In this chapter, you will learn the basic of stabilizer states, and Clifford Maps
2. State-Map Duality#
Every stabilizer state \(\rho\) is dual to a Clifford unitary \(U\), such that the state can be generated from the zero state \(|00\cdots0\rangle\) as $\(\rho = U|00\cdots0\rangle\langle 00\cdots0|U^\dagger\)\(. Both \)\rho\( and \)U$ describes a stabilizer code:
\(\rho\) is a projection operator that specifies the code subspace of the stabilizer code.
\(U\) is the encoding Clifford unitary that encodes the logical + syndrome qubits to the physical qubits in the stabilizer code.
The package stabilizer
(based on paulialg
) provides related functions to represent stabilizer states and Clifford maps. There are two classes defined in this package.
stabilizer.CliffordMap
. Since the Clifford unitary \(U\) maps Pauli operators to Pauli operators, it is sufficient to specify a Clifford unitary by how each single-qubit Pauli operator transforms under the unitary. Such transformation rules are stored in a table called the Clifford map.stabilizer.StabilizerState
. The stabilizer state is specified by a set of stabilizers and the corresponding destabilizers. Using the binary representation of Pauli operators, they can be stored in a table, called the stabilizer tableau.
Since both classes need to store a table of Pauli operators, they are both realized as subclasses of paulialg.PauliList
.