I'm looking for an efficient implementation of the Clifford group $\mathcal{C}_n$ of $n$ qubits. The Clifford group $\mathcal{C}_n$ has stucture $(2_+^{1+2n} \circ C_8).Sp(2,n)$, where $2_+^{1+2n}$ denotes an extraspecial 2 group of $+$ type, $C_8$ the cyclic group of order 8, and $Sp(2n,2)$ a symplectic group over the binary field. Here "$\circ$" means the central product.

The Clifford group $\mathcal{C}_n$ can be used for the simulation of quantum computing with $n$ qubits and a restricted set of qubit gates in polynomial time, see e.g. [1]. It has a unitary complex representation of dimension $2^n$, see e.g. [2]. Quantum theorists use an explicit construction $\rho$ of that representation of $\mathcal{C}_n$ based on Pauli matrices, see [1]. Vectors in $\rho$ are called state vectors. In [1] the group $\mathcal{C}_n$ is generated by the qubit gates CNOT, Phase, and Hadamard. These gates operate (repeatedly) on the state vectors starting at a certain unit vector $e_0 = |0 \ldots 0 \rangle$. Let $V_0$ be the image of $e_0$ under the operation of $\mathcal{C}_n$ in the state vector space. The states in $V_0$ are also called stabilizer states.

I need an implementation of representation $\rho$ that supports the following operations:

  • Multiplication, inversion, and test for equality in $\mathcal{C}_n$.

  • Operation of an element of $\mathcal{C}_n$ on a state vector in $V_0$.

  • Output of an entry of the matrix representing an element of $\mathcal{C}_n$.

  • Output of an entry of a state vector in $V_0$.

  • Some kind of qubit measurement applied to a state vector in $V_0$, as in [1].

Entries of matrices and vectors are with respect to the representation $\rho$ in [1]. Runtime should be polynomial in $n$.

I have some concrete ideas for such an implementation.

My question is:

Has anybody implemented a similar representation of $\mathcal{C}_n$ before?

Note that the representation in [1] implements state vectors in $V_0$ (up to a scalar multiple), and operation of $\mathcal{C}_n$ on $V_0$, but not the computation of entries of group elements or state vectors. In [1] elements of
$\mathcal{C}_n$ cannot easily be tested for equality. I also need to distingiush between scalar multiples of a state vector, which is irrelevant in quantum theory.

[1] https://arxiv.org/abs/quant-ph/0406196

[2] https://arxiv.org/abs/math/0001038

Cross-posted from MathOverflow


I have written a collection of C programs together with a python interface that satisfies most of the requiremets listed above. Documentation see section


in https://mmgroup.readthedocs.io/en/latest/ .

My motivation for doing so was that high-speed computation in the Clifford group $\mathcal{C}_{12}$ of 12 qubits is useful for computations in the monster group.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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