This paper was converted on www.awesomepapers.org from LaTeX by an anonymous user.
Want to know more? Visit the Converter page.

Investigations on Automorphism Groups of Quantum Stabilizer Codes

Hanson Hao
Abstract

The stabilizer formalism for quantum error-correcting codes has been, without doubt, the most successful at producing examples of quantum codes with strong error-correcting properties. In this paper, we discuss strong automorphism groups of stabilizer codes, beginning with the analogous notion from the theory of classical codes. Two weakenings of this concept, the weak automorphism group and Clifford-twisted automorphism group, are also discussed, along with many examples highlighting the possible relationships between the types of “automorphism groups”. In particular, we construct an example of a [[10,0,4]][[10,0,4]] stabilizer code showing how the Clifford-twisted automorphism groups might be connected to the Mathieu groups. Finally, nonexistence results are proved regarding stabilizer codes with highly transitive strong and weak automorphism groups, suggesting a potential inverse relationship between the error-correcting properties of a quantum code and the transitivity of those automorphism groups.

1 Introduction

Although quantum computers are thought to be significantly more efficient than classical computers (e.g. Shor’s algorithm for integer factorization), they are also inherently more susceptible to noise and breakdown processes. The construction of a quantum error-correcting code (QECC) in [10] demonstrated how protection against a single-qubit error was possible, which was a milestone towards the practical realization of quantum computers. However, the problem of finding “good” QECCs is still difficult, and their theory is still in an early stage of development, compared to, say, the theory of classical error-correcting codes. We were interested in this very general question of finding “good” QECCs, with a particular emphasis on investigating how “symmetric” a QECC could be. We were also motivated by the recent paper of Harvey and Moore [7], in which possible connections are found among QECCs, conformal field theories, and the Mathieu moonshine phenomena. Similar theories for classical codes revolve around finding their automorphism groups, which explains the motivations behind some of the definitions and results in Section 2 and Section 3.

This paper is structured as follows: in the remainder of this section we will present a brief background of quantum error correction and stabilizer codes, following [5] and Chapter 10 of [8]. We will put more emphasis on the mathematical structures and skip much of the physical intuition behind QECCs. In Section 2 we will introduce three notions of automorphism groups of quantum codes, which we call strong, weak, and Clifford-twisted. We prove some basic results regarding these different types of automorphism groups. The bulk of this section, however, will be devoted to giving examples of all three types of automorphism groups of small QECCs, along with explaining how they might be calculated by hand. Particularly interesting is the example in Section 2.2.6, which gives evidence of a possible connection between Clifford-twisted automorphism groups of stabilizer codes and the Mathieu groups. In Section 3 we will show in certain cases that the strong and weak automorphism group of “good” stabilizer codes cannot be highly transitive, which suggests that the Clifford-twisted automorphism groups might have the most interesting properties. Along the way, we mention some problems that we found interesting, but did not have time to think about.

Acknowledgements

This research was supported by the Stanford Undergraduate Research Institute in Mathematics (SURIM) program during the summer of 2021. The author would like to thank Dr. Pawel Grzegrzolka for coordinating the program. The author also thanks his mentor, Dr. Daniel Bump, for introducing him to the area of quantum error correction, and also for many helpful conversations and insightful suggestions. His idea of investigating “twisted automorphisms” (Definitions 2.6, 2.13) was particularly fruitful.

1.1 Prelude: Classical Error Correction

We give a very brief overview of classical error correction to serve as motivation for the constructions of quantum error correction theory, which will be presented in Section 1.2. First, recall that in classical computing, the basic unit of computation is the bit, which takes a state of either 0 or 1; i.e. an element of 𝔽2\mathbb{F}_{2}. Thus an nn-bit state is just an element of 𝔽2n\mathbb{F}_{2}^{n}.

The fundamental idea of classical error correction is repetition. In particular, if we want to transmit kk bits of information, we would repeat that information in such a way that it would be “hard” to confuse slight moderations of the encoded information with an encoding of a different kk bits of information. For instance, if we wanted to send the bits 0 and 1 through a somewhat noisy channel, we could instead send the 3-bit sequences 000 and 111, so that even if there is a 1-bit error, we could use a “majority rules” scheme to correct the error. As an explicit example, if we received 010, which is not a possible codeword, we could conclude with high probability that 000 was the intended message. In this manner, we are essentially embedding one bit into three by the identification of 𝔽21\mathbb{F}_{2}^{1} with the 1-dimensional subspace {000,111}\{000,111\} in 𝔽23\mathbb{F}_{2}^{3}, so we call such a scheme a linear code. We will soon see how the same ideas apply in the quantum world, although there are some caveats.

1.2 Quantum Error Correction

Definition 1.1.

A qubit is the basic unit of quantum computation. It is represented as the complex vector space 2\mathbb{C}^{2} with basis vectors 𝟎\bf{0} and 𝟏\bf{1}, so the state of a qubit is given by a nonzero linear combination (superposition) a𝟎+b𝟏a\mathbf{0}+b\mathbf{1}.

Some notational remarks are in order. First, we will write vectors/states in boldface, instead of the bra-ket convention popular in physics. Second, we will not bother with normalizing the state a𝟎+b𝟏a\mathbf{0}+b\mathbf{1} of a qubit so that |a|2+|b|2=1\lvert a\rvert^{2}+\lvert b\rvert^{2}=1, as that does not affect our discussion.

Definition 1.2.

A space of nn qubits is represented as the tensor product (2)n=22n times(\mathbb{C}^{2})^{\otimes n}=\underbrace{\mathbb{C}^{2}\otimes\ldots\otimes\mathbb{C}^{2}}_{n\text{ times}}, where tensor products are taken over \mathbb{C}. A basis for this space is given by

{𝟎𝟎,𝟎𝟎𝟏,,𝟏𝟏},\{\mathbf{0\ldots 0},\mathbf{0\ldots 01},\ldots,\mathbf{1\ldots 1}\},

the 2n2^{n} binary vectors of length nn.

We will usually refer to such a space of nn qubits as 2n\mathbb{C}^{2^{n}}.

The central idea of quantum error correction is to identify a kk-qubit space with some 2k2^{k}-dimensional linear subspace, called the codespace, of an nn-qubit space, called the ambient space, where n>kn>k. We will call states in the ambient 2n2^{n}-dimensional space physical, and states in the 2k2^{k}-dimensional codespace logical. For example, if we encode a one-qubit space into three qubits by the map 𝟎𝟎𝟎𝟎,𝟏𝟏𝟏𝟏\mathbf{0}\mapsto\mathbf{000},\mathbf{1}\mapsto\bf{111}, we may refer to the physical state 𝟎𝟎𝟎\bf{000} as “logical 𝟎\bf{0}”, denoted 𝟎L\mathbf{0}_{L}.

In this formalism, errors will just be linear operators acting on the codespace. To have error-correcting properties, this codespace should be redundant in some sense, but there is an added difficulty in that we are not allowed to create repetitions of quantum states, as we might do in classical computing. This is the no-cloning theorem, as discussed in Theorem 1 of [5]. Therefore, this codespace should consist of highly entangled states—“redundancy without repetition”. Moreover, in general physical situations, one may encounter errors randomly affecting a single qubit, or a small number of qubits, of the ambient space. A good code allows such errors to be corrected.

We now state the quantum error-correction conditions as a “black box”. A full derivation can be found in Section 10.3 of [8].

Theorem 1.3.

Let C2nC\subset\mathbb{C}^{2^{n}} be a quantum code, and let PP be the orthogonal projection onto CC. Then CC can correct a set of errors ={Ei}\mathcal{E}=\{E_{i}\} if and only if there is a complex Hermitian matrix (αij)(\alpha_{ij}) such that

PEiEjP=αijP,PE_{i}^{*}E_{j}P=\alpha_{ij}P, (1)

where Ei,EjE_{i},E_{j} run over all operators in \mathcal{E}, and is the conjugate transpose.

Using Theorem 1.3, one can show that if a code CC corrects a set of errors {Ei}\{E_{i}\}, then it also corrects any linear combination of the EiE_{i}. This is an extremely powerful observation, because instead of possibly having to correct a continuum of errors, it now suffices to focus only on correcting a discrete set of error operations that span the full set of errors we want to correct. Because of this observation, it makes sense to introduce the Pauli matrices:

Definition 1.4.

The four Pauli matrices are defined as follows:

I=[1001],X=[0110],Z=[1001],Y=iXZ=[0ii0].I=\begin{bmatrix}1&0\\ 0&1\end{bmatrix},\quad X=\begin{bmatrix}0&1\\ 1&0\end{bmatrix},\quad Z=\begin{bmatrix}1&0\\ 0&-1\end{bmatrix},\quad Y=iXZ=\begin{bmatrix}0&-i\\ i&0\end{bmatrix}. (2)

We call XX the bit flip operator, since it sends 𝟎\bf{0} to 𝟏\bf{1} and vice versa. Similarly, we call ZZ the phase flip operator, since it sends 𝟎\bf{0} to itself, but 𝟏\bf{1} to 𝟏-\bf{1}. Finally, YY is a combined bit-phase operator, with an extra factor of ii thrown in to make the mathematics easier. The Pauli matrices act on the one-qubit space 2\mathbb{C}^{2}, but nn-fold tensor products of them act on an nn-qubit space in the natural way. For example, the tensor product XZIX\otimes Z\otimes I acts on 23\mathbb{C}^{2^{3}} by sending 𝟎𝟎𝟎\bf{000} to 𝟏𝟎𝟎\bf{100}, 𝟏𝟏𝟏\bf{111} to 𝟎𝟏𝟏-\bf{011}, etc. In the rest of this paper, we will simply write tensor products of Pauli matrices as concatenations, so that the above XZIX\otimes Z\otimes I operator is simply XZIXZI.

The Pauli matrices have remarkable properties that will be fully exploited in the rest of the paper. First, they are all both unitary and Hermitian, and they form a basis of the 2-by-2 complex matrices. So by the discussion after Theorem 1.3, if we wanted to, for instance, correct arbitrary errors occurring on the first qubit of a three-qubit system, we simply need to correct the errors XIIXII, ZIIZII, and YIIYII (along with IIIIII, which is automatic). Second, all of the Pauli matrices square to the identity, and they all commute or anticommute. In particular, two Pauli matrices anticommute if and only if they are different nonidentity matrices. This implies that the Pauli matrices form a projective representation of the four-group 2×2\mathbb{Z}_{2}\times\mathbb{Z}_{2}, which is why they are chosen as our basis of the 2-by-2 complex matrices. Since complex scalars, in general, do not concern us, the fact that the Pauli matrices act like the elements of 2×2\mathbb{Z}_{2}\times\mathbb{Z}_{2} is of great utility.

1.3 The Pauli Group and Stabilizer Codes

Now, although the quantum error-correction condition 1 is easy to verify for any particular code and set of errors, it is difficult to actually construct a code correcting a given set of error operations, particularly if that set is large. Indeed, we are usually interested in correcting sets of errors such as “all one-qubit errors,” which necessitates correcting an error set of size 3n3n if the ambient space is an nn-qubit space (we need to correct an XX, ZZ, and YY error at each physical qubit). The stabilizer formalism introduced by Gottesman [4] provides a convenient workaround to this problem.

Definition 1.5.

The one-qubit Pauli group, denoted G1G_{1}, is the group of matrices generated by XX, YY, and ZZ. This is a group of order 16:

G1={±I,±iI,±X,±iX,±Y,±iY,±Z,±iZ}.G_{1}=\{\pm I,\pm iI,\pm X,\pm iX,\pm Y,\pm iY,\pm Z,\pm iZ\}.

Note that the elements of G1G_{1} are just Pauli matrices multiplied by some phase factor, which is a fourth root of unity. All elements in G1G_{1} square to plus or minus the identity, and all elements commute or anticommute. This means that G1G_{1} is “almost” an elementary abelian 2-group: its commutator subgroup is I\langle-I\rangle, and G1/[G1,G1]G_{1}/[G_{1},G_{1}] is indeed an elementary abelian 2-group of order 22n+12^{2n+1}. It will also be useful to speak of G1G_{1} mod its center Z(G1)=iIZ(G_{1})=\langle iI\rangle, so that we can consider elements without worrying about scalar multiples. We denote G1/Z(G1)G_{1}/Z(G_{1}) by P1P_{1}.

It is natural to generalize the Pauli group to nn-fold tensor products:

Definition 1.6.

The nn-qubit Pauli group, denoted GnG_{n}, is the group of matrices generated by nn-fold tensor products of the Pauli matrices. This is a group of order 4n+14^{n+1}, since there are 4n4^{n} possible tensor products, along with 4 possible phases (the fourth roots of unity).

Again, [Gn,Gn]=I[G_{n},G_{n}]=\langle-I\rangle, Gn/[Gn,Gn]G_{n}/[G_{n},G_{n}] is an elementary abelian 2-group, and Z(Gn)=iIZ(G_{n})=\langle iI\rangle. We denote Gn/Z(Gn)G_{n}/Z(G_{n}) by PnP_{n}.

Before moving on to stabilizer codes, we mention an extremely useful way of writing elements of PnP_{n}, known as the check matrix. We see that an element sPns\in P_{n} can uniquely be written as

Xa1Zb1Xa2Zb2XanZbn,X^{a_{1}}Z^{b_{1}}\otimes X^{a_{2}}Z^{b_{2}}\otimes\ldots\otimes X^{a_{n}}Z^{b_{n}},

where the ai,bia_{i},b_{i} are 0 or 1. Therefore we represent ss as

(a|b)=[a1a2anb1b2bn],(a|b)=\left[\begin{array}[]{cccc|cccc}a_{1}&a_{2}&\ldots&a_{n}&b_{1}&b_{2}&\ldots&b_{n}\end{array}\right], (3)

which can be thought of as a vector in 𝔽22n\mathbb{F}_{2}^{2n}. For example, the element IXYZIXYZ is represented as

[01100011].\left[\begin{array}[]{cccc|cccc}0&1&1&0&0&0&1&1\\ \end{array}\right].

The utility of this representation becomes clear when we define a symplectic bilinear form over 𝔽22n\mathbb{F}_{2}^{2n} given by

(a|b),(c|d)=ad+bc,\langle(a|b),(c|d)\rangle=a\cdot d+b\cdot c, (4)

where \cdot is the usual dot product in 𝔽2n\mathbb{F}_{2}^{n}. Then it is straightforward to check that if s,sPns,s^{\prime}\in P_{n} have check matrix representations (a|b)(a|b), (a|b)(a^{\prime}|b^{\prime}) respectively, ss and ss^{\prime} commute if and only if (a|b),(a|b)=0\langle(a|b),(a^{\prime}|b^{\prime})\rangle=0. Since PnP_{n} is simply GnG_{n} modded out by its center, the same is true for any lifts of s,ss,s^{\prime} to elements in GnG_{n}. The check matrix representation gives us a compact way of writing set of elements in GnG_{n} or PnP_{n}, which will be useful later on.

We are now ready to define stabilizer codes. The key is to consider the action of GnG_{n} on 2n\mathbb{C}^{2^{n}}, and consider the fixed points of a subgroup of GnG_{n}.

Definition 1.7.

Let SS be an abelian subgroup of GnG_{n} not containing I-I. Then

C(S)={v2n:sv=v for all sS}C(S)=\{v\in\mathbb{C}^{2^{n}}:sv=v\text{ for all }s\in S\} (5)

is the stabilizer code corresponding to SS. We call SS the stabilizing subgroup corresponding to C(S)C(S).

It is easy to check that C(S)C(S) is a subspace of the ambient space.

It is important to make a few remarks regarding this definition. First, C(S)C(S) must contain all vectors in 2n\mathbb{C}^{2^{n}} that are fixed by everything in SS. In particular, for a code CC^{\prime} to be called a stabilizer code, there must be some abelian subgroup SS of GnG_{n}, not containing I-I, such that C=C(S)C^{\prime}=C(S). It is not enough for CC(S)C^{\prime}\subset C(S). Second, we do not want SS to contain I-I. Otherwise, if IS-I\in S, then for any vC(S)v\in C(S), we have v=Ivv=0v=-Iv\Rightarrow v=0, so that C(S)C(S) is trivial. Similarly, we require SS to be abelian: if s,sSs,s^{\prime}\in S do not commute, then they must anticommute, so that for any vC(S)v\in C(S), we have v=(ss)v=(ss)v=(ssv)=vv=0v=(ss^{\prime})v=(-s^{\prime}s)v=-(s^{\prime}sv)=-v\Rightarrow v=0. Note that because elements in GnG_{n} either square to II or I-I, these two conditions imply that SS is an elementary abelian 2-group. Also, elements in SS may only have a scalar factor of plus or minus 1, lest they square to I-I.

Given the construction of stabilizer codes, we would like to somehow connect a stabilizing subgroup SGnS\subset G_{n} with the dimension of C(S)C(S), as well as with the errors that C(S)C(S) can correct. Let us first answer the former question. First, note that SS can have size at most 2n2^{n}. To see why, suppose SS has mm independent generators (so |S|=2m\lvert S\rvert=2^{m}), which we write in the check matrix format. We may think of SS as an mm-dimensional subspace of the 𝔽2\mathbb{F}_{2}-vector space 𝔽22n\mathbb{F}_{2}^{2n}. Because these generators all commute, SS is self-orthogonal with respect to the bilinear form in 4; that is, SSS\subseteq S^{\perp}. But dimS+dimS=2n\dim S+\dim S^{\perp}=2n, so that m=dimSnm=\dim S\leq n.

With mnm\leq n in mind, it now makes sense to state the following proposition:

Proposition 1.8.

Let CC be the stabilizer code corresponding to a stabilizing subgroup SGnS\subset G_{n}. If SS has mm independent generators, or equivalently |S|=2m\lvert S\rvert=2^{m}, then CC has dimension 2nm2^{n-m}; that is, it encodes knmk\coloneqq n-m logical qubits.

Proof.

We claim that the orthogonal projection onto CC is given by P=1|S|sSsP=\frac{1}{\lvert S\rvert}\sum_{s\in S}s. We must check that

  1. 1.

    P=PP=P^{*},

  2. 2.

    Pv=vPv=v for all vCv\in C,

  3. 3.

    P2=PP^{2}=P.

For (1), we notice that the elements of SS are, up to sign, tensor products of the Pauli matrices, which are all Hermitian. Hence any sSs\in S is Hermitian, so PP is as well. For (2), we calculate Pv=1|S|sSsv=1|S|sSv=vPv=\frac{1}{\lvert S\rvert}\sum_{s\in S}sv=\frac{1}{\lvert S\rvert}\sum_{s\in S}v=v, since vCv\in C implies sv=vsv=v for all sSs\in S. For (3), we have

P2=(1|S|sSs)(1|S|tSt)=1|S|sS(1|S|tSst)=1|S|sSP=P,P^{2}=\left(\frac{1}{\lvert S\rvert}\sum_{s\in S}s\right)\left(\frac{1}{\lvert S\rvert}\sum_{t\in S}t\right)=\frac{1}{\lvert S\rvert}\sum_{s\in S}\left(\frac{1}{\lvert S\rvert}\sum_{t\in S}st\right)=\frac{1}{\lvert S\rvert}\sum_{s\in S}P=P,

since summing over all stSst\in S, for ss fixed, is the same as summing over all tSt\in S.

So because PP is an orthogonal projection onto CC, we have dimC=rk P=trP\dim C=\text{rk }P=\text{tr}P. Notice that XX, YY, and ZZ are traceless. Using this and the fact that IS-I\not\in S, we see that the only term in sSs\sum_{s\in S}s that has nonzero trace is the identity. Hence trP=1|S|(trI)=2n|S|=2nm\text{tr}P=\frac{1}{\lvert S\rvert}(\text{tr}I)=\frac{2^{n}}{\lvert S\rvert}=2^{n-m}. ∎

In this situation, we call CC an [[n,k]][[n,k]] code, where the double brackets are meant to distinguish the quantum code CC from classical codes. From now on, SS will always be assumed to an abelian subgroup of GnG_{n} not containing I-I, and we will just write CC for C(S)C(S) if there is no ambiguity in the stabilizing subgroup SS.

We now discuss the error-correcting properties of CC. First, we need to define a slight abuse of notation:

Definition 1.9.

Let N(S)N(S) be the normalizer of SS in GnG_{n}. We say that an element pPnp\in P_{n} is in N(S)SN(S)-S if there is some lift gGng\in G_{n} of pp in N(S)SN(S)-S.

The idea behind this definition is that we can and should disregard the scalar phase of any element of GnG_{n}, since we know that if CC corrects some error EE, it corrects any scalar multiple of EE. Notice that N(S)N(S) is equal to the centralizer of SS, since two elements of GnG_{n} either commute or anticommute, and IS-I\not\in S.

Along with this definition, we must reinterpret the quantum error-correction conditions, Theorem 1.3, in the language of stabilizer codes.

Theorem 1.10.

Let CC be the stabilizer code corresponding to a subgroup SS. If {Ei}\{E_{i}\} is a set of error operators in GnG_{n} such that EiEjN(S)SE_{i}^{*}E_{j}\not\in N(S)-S for all ii and jj, then the {Ei}\{E_{i}\} are correctable.

Proof.

See Theorem 10.8, [8]. ∎

The criterion in Theorem 1.10 is much easier to use than that in Theorem 1.3. Instead of having to construct the projection matrix onto our code and do various matrix calculations, the error-correcting properties of a stabilizer code can be computed only using knowledge of GnG_{n}. Because of this, we introduce a few more definitions regarding elements of GnG_{n} and PnP_{n}:

Definition 1.11.

The weight of an element pPnp\in P_{n} is the number of non-identity tensor factors in pp.

For instance, the element XZIIZP5XZIIZ\in P_{5} has weight 3, since it has three non-identity tensor factors.

Definition 1.12.

Let CC be an [[n,k]][[n,k]] stabilizer code corresponding to a subgroup SGnS\subset G_{n}, where k1k\geq 1. Then the distance dd of CC is defined as

d=min{weight(p):pPn,pN(S)S}.d=\min\{\operatorname{weight}(p):p\in P_{n},p\in N(S)-S\}. (6)

Recall that we write pN(S)Sp\in N(S)-S as in the sense of Definition 1.9. In this case, we call CC a [[n,k,d]][[n,k,d]] code.

Remark 1.13.

In the degenerate case k=0k=0, where CC is 1-dimensional (i.e. a single state), N(S)SN(S)-S is empty, so the above definition does not make sense. We follow the convention of [3] and say that the distance is

d=min{weight(p):pS,pI}.d=\min\{\operatorname{weight}(p):p\in S,p\not=I\}. (7)

From these definitions, we see that the product of any two weight ww operators has weight at most 2w2w, and that the conjugate transpose does not change the weight of an operator. Then it follows from Theorem 1.10 that any code with distance greater than 2w2w can correct errors affecting any ww qubits.

Example 1.14.

Consider a subgroup SG5S\subset G_{5} generated by

{XZZXI,IXZZX,XIXZZ,ZXIXZ}.\{XZZXI,IXZZX,XIXZZ,ZXIXZ\}.

These elements all pairwise commute, and SS does not contain I-I, so the stabilizer code CC corresponding to SS encodes 54=15-4=1 logical qubit. Moreover, one can directly verify that the distance of SS is 3—for instance, XIZIXN(S)SXIZIX\in N(S)-S, but there are no elements pPnp\in P_{n} of lesser weight in N(S)SN(S)-S. This shows that CC can correct any error affecting one qubit, since 3>213>2\cdot 1.

Using the projection matrix of a stabilizer code as in Proposition 1.8, we can find a basis for CC:

𝟎L\displaystyle\mathbf{0}_{L} =𝟎𝟎𝟎𝟎𝟎+𝟏𝟎𝟎𝟏𝟎+𝟎𝟏𝟎𝟎𝟏+𝟏𝟎𝟏𝟎𝟎\displaystyle=\mathbf{00000}+\mathbf{10010}+\mathbf{01001}+\mathbf{10100}
+𝟎𝟏𝟎𝟏𝟎𝟏𝟏𝟎𝟏𝟏𝟎𝟎𝟏𝟏𝟎𝟏𝟏𝟎𝟎𝟎\displaystyle+\mathbf{01010}-\mathbf{11011}-\mathbf{00110}-\mathbf{11000}
𝟏𝟏𝟏𝟎𝟏𝟎𝟎𝟎𝟏𝟏𝟏𝟏𝟏𝟏𝟎𝟎𝟏𝟏𝟏𝟏\displaystyle-\mathbf{11101}-\mathbf{00011}-\mathbf{11110}-\mathbf{01111}
𝟏𝟎𝟎𝟎𝟏𝟎𝟏𝟏𝟎𝟎𝟏𝟎𝟏𝟏𝟏+𝟎𝟎𝟏𝟎𝟏\displaystyle-\mathbf{10001}-\mathbf{01100}-\mathbf{10111}+\mathbf{00101}
𝟏L\displaystyle\mathbf{1}_{L} =(XXXXX)𝟎L\displaystyle=(XXXXX)\mathbf{0}_{L}
=𝟏𝟏𝟏𝟏𝟏+𝟎𝟏𝟏𝟎𝟏+𝟏𝟎𝟏𝟏𝟎+𝟎𝟏𝟎𝟏𝟏\displaystyle=\mathbf{11111}+\mathbf{01101}+\mathbf{10110}+\mathbf{01011}
+𝟏𝟎𝟏𝟎𝟏𝟎𝟎𝟏𝟎𝟎𝟏𝟏𝟎𝟎𝟏𝟎𝟎𝟏𝟏𝟏\displaystyle+\mathbf{10101}-\mathbf{00100}-\mathbf{11001}-\mathbf{00111}
𝟎𝟎𝟎𝟏𝟎𝟏𝟏𝟏𝟎𝟎𝟎𝟎𝟎𝟎𝟏𝟏𝟎𝟎𝟎𝟎\displaystyle-\mathbf{00010}-\mathbf{11100}-\mathbf{00001}-\mathbf{10000}
𝟎𝟏𝟏𝟏𝟎𝟏𝟎𝟎𝟏𝟏𝟎𝟏𝟎𝟎𝟎+𝟏𝟏𝟎𝟏𝟎.\displaystyle-\mathbf{01110}-\mathbf{10011}-\mathbf{01000}+\mathbf{11010}.
Remark 1.15.

The aforementioned stabilizer code is the smallest able to correct one error on any qubit, in terms of the number nn of physical qubits.

More examples of small stabilizer codes, as well as more details about their theory, can be found in Section 10.5 of [8]. Many more examples of stabilizer codes, including codes with larger parameters [[n,k,d]][[n,k,d]], can be found at [6]. We will reference those tables of quantum codes in the below sections.

2 Automorphism Groups of Codes

2.1 Definitions and Basic Results

Just like in the theory of classical codes, we can define the automorphism group of a QECC:

Definition 2.1.

Let CC be a quantum code. There is a natural action of SnS_{n} on the nn-qubit ambient space 2n\mathbb{C}^{2^{n}}. We define the strong automorphism group of CC as

Autstrong(C)={σSn:σ(C)=C}.\operatorname{Aut_{strong}}(C)=\{\sigma\in S_{n}:\sigma(C)=C\}. (8)

We are particularly interested in the case where CC is a stabilizer code with stabilizing subgroup SS. Indeed, in this case we may also consider the action of SnS_{n} on GnG_{n} given by permuting tensor factors. This action is equivalently given by σ(g)=MσgMσ1\sigma(g)=M_{\sigma}gM_{\sigma}^{-1}, where gGng\in G_{n} and Mσ1M_{\sigma}^{-1} is the permutation matrix associated to σ\sigma in the natural basis of 2n\mathbb{C}^{2^{n}}. Then the above condition for Autstrong(C)\operatorname{Aut_{strong}}(C) can be rephrased in terms of SS:

Proposition 2.2.

Let CC be a nontrivial (i.e. nonzero) stabilizer code corresponding to a subgroup SGnS\subset G_{n}. Then σAutstrong(C)\sigma\in\operatorname{Aut_{strong}}(C) if and only if σ(S)=S\sigma(S)=S.

Proof.

Notice that σ(S)\sigma(S) fixes σ(C)\sigma(C) pointwise. Hence if σ(S)=S\sigma(S)=S, it follows that σ(C)C\sigma(C)\subseteq C. But σ\sigma acts as an invertible linear map Cσ(C)C\to\sigma(C), which implies σ(C)=C\sigma(C)=C. This proves the “if” direction. Conversely, if σ(C)=C\sigma(C)=C, then σ(C)\sigma(C) is fixed pointwise by SS. It is also fixed pointwise by σ(S)\sigma(S), so the same is true for the join S,σ(S)\langle S,\sigma(S)\rangle of the two subgroups. Because CC is nontrivial, S,σ(S)\langle S,\sigma(S)\rangle must be abelian and must not contain I-I. Then by Proposition 1.8, S,σ(S)\langle S,\sigma(S)\rangle must have the same size as SS, which implies σ(S)S\sigma(S)\subseteq S. But σ\sigma is bijective, so we have equality, proving the reverse direction. ∎

Since all σSn\sigma\in S_{n} act as invertible linear maps on SS, we can simplify the result of Proposition 2.2 to a form that is more suitable for actually computing strong automorphism groups.

Corollary 2.3.

Let CC be a nontrivial stabilizer code corresponding to a subgroup SGnS\subset G_{n}. Let SS be generated by g1,,gmg_{1},\ldots,g_{m}. Then σAutstrong(C)\sigma\in\operatorname{Aut_{strong}}(C) if and only if σ(gi)S\sigma(g_{i})\in S for each ii.

Example 2.4.

Let SG3S\subset G_{3} be generated by XZZXZZ and ZXZZXZ, so that S={III,XZZ,ZXZ,YYI}S=\{III,XZZ,ZXZ,YYI\}. Using the Kronecker product for matrices, we can calculate the projection onto C=C(S)C=C(S) as

P=1|S|sSs=14[1010101001010101101010100101010110101010010101011010101001010101],P=\frac{1}{\lvert S\rvert}\sum_{s\in S}s=\frac{1}{4}\begin{bmatrix}1&0&1&0&1&0&-1&0\\ 0&1&0&-1&0&-1&0&-1\\ 1&0&1&0&1&0&-1&0\\ 0&-1&0&1&0&1&0&1\\ 1&0&1&0&1&0&-1&0\\ 0&-1&0&1&0&1&0&1\\ -1&0&-1&0&-1&0&1&0\\ 0&-1&0&1&0&1&0&1\end{bmatrix},

so that CC is spanned by 𝟎L=12(𝟎𝟎𝟎+𝟎𝟏𝟎+𝟏𝟎𝟎𝟏𝟏𝟎)\mathbf{0}_{L}=\frac{1}{2}\left(\mathbf{000}+\mathbf{010}+\mathbf{100}-\mathbf{110}\right) and 𝟏L=12(𝟎𝟎𝟏𝟎𝟏𝟏𝟏𝟎𝟏𝟏𝟏𝟏)\mathbf{1}_{L}=\frac{1}{2}\left(\mathbf{001}-\mathbf{011}-\mathbf{101}-\mathbf{111}\right). Checking each of the permutations in S3S_{3}, we obtain Autstrong(C)={(1),(12)}2\operatorname{Aut_{strong}}(C)=\{(1),(12)\}\cong\mathbb{Z}_{2}. Indeed, these are also the only permutations σ\sigma that satisfy σ(S)=S\sigma(S)=S, as is easily seen.

Remark 2.5.

At this point, it is worth mentioning that the strong automorphism group of a stabilizer code cannot be characterized by the parameters [[n,k,d]][[n,k,d]]. For instance, let S={IIII,XXXX,ZZZZ,YYYY}S=\{IIII,XXXX,ZZZZ,YYYY\} and S={IIII,XXZZ,YYXX,ZZYY}S^{\prime}=\{IIII,XXZZ,YYXX,ZZYY\} be subgroups of G4G_{4}. Then the corresponding stabilizer codes CC and CC^{\prime} both have parameters [[4,2,2]][[4,2,2]]. But Autstrong(C)=S4\operatorname{Aut_{strong}}(C)=S_{4}, while Autstrong(C)={(1),(12),(34),(12)(34)}2×2\operatorname{Aut_{strong}}(C^{\prime})=\{(1),(12),(34),(12)(34)\}\cong\mathbb{Z}_{2}\times\mathbb{Z}_{2}.

It turns out that the notion of “strong automorphism group” does not produce many interesting examples for stabilizer codes with small nn; in particular, it seems that for most codes, the strong automorphism group is usually small compared to the full symmetric group. We will see more examples in Section 2.2, and we will give some reasons as to why this general heuristic might be true in Section 3. Therefore we now introduce an extension of the automorphism group concept.

Definition 2.6.

Let CC be a quantum code. We define the weak automorphism group of CC as

Autweak(C)={σSn:σ(C)=γσC for some γσGn}.\operatorname{Aut_{weak}}(C)=\{\sigma\in S_{n}:\sigma(C)=\gamma_{\sigma}\cdot C\text{ for some }\gamma_{\sigma}\in G_{n}\}. (9)

That is, σ(C)\sigma(C) is “almost” CC, where we allow a twist of the vectors in CC by some element γσ\gamma_{\sigma} of the Pauli group (which is allowed to vary depending on σ\sigma, and is not necessarily unique). We should check that Autweak(C)\operatorname{Aut_{weak}}(C) is actually a group. Indeed this is the case, since we can view Autweak(C)\operatorname{Aut_{weak}}(C) as a semidirect product of sorts: if σ,τAutweak(C)\sigma,\tau\in\operatorname{Aut_{weak}}(C) correspond to γσ,γτGn\gamma_{\sigma},\gamma_{\tau}\in G_{n}, then

στ(C)=(σ(γτ)γσ)C,\sigma\tau(C)=(\sigma(\gamma_{\tau})\cdot\gamma_{\sigma})\cdot C, (10)

as can be easily verified. Recall that the action of σ\sigma on GnG_{n} by permuting tensor factors is the same as the matrix action by conjugation, gMσgMσ1g\mapsto M_{\sigma}gM_{\sigma}^{-1}. Hence στGn\sigma\tau\in G_{n}, since we can set γστ=σ(γτ)γσ\gamma_{\sigma\tau}=\sigma(\gamma_{\tau})\cdot\gamma_{\sigma}.

We now want to somewhat justify the labels “strong automorphism” and “weak automorphism”. In Proposition 2.2, we were able to give a characterization of strong automorphisms in terms of the stabilizing subgroup of a stabilizer code. We can do the same for weak automorphisms:

Proposition 2.7.

Let CC be a nontrivial stabilizer code corresponding to a subgroup SGnS\subset G_{n}. Then σAutweak(C)\sigma\in\operatorname{Aut_{weak}}(C) if and only if σ(S)SS\sigma(S)\subset S\cup-S, where S={s:sS}-S=\{-s:s\in S\}.

Corollary 2.8.

Since σ\sigma is bijective, the following conditions are equivalent to the one in Proposition 2.7:

  1. 1.

    If SS is generated by g1,,gmg_{1},\ldots,g_{m}, then σAutweak(C)\sigma\in\operatorname{Aut_{weak}}(C) if and only if σ(gi)\sigma(g_{i}) or σ(gi)-\sigma(g_{i}) is in SS for each ii.

  2. 2.

    If π\pi is the projection GnGn/IG_{n}\to G_{n}/\langle-I\rangle, then π(σ(S))=π(S)\pi(\sigma(S))=\pi(S); that is, σ(S)\sigma(S) and SS are the same subgroup up to sign.

Proof of Proposition 2.7.

First, if σAutweak(C)\sigma\in\operatorname{Aut_{weak}}(C), then σ(C)=γσC\sigma(C)=\gamma_{\sigma}\cdot C for some γσGn\gamma_{\sigma}\in G_{n}. Because CC and σ(C)\sigma(C) have the same dimension, it follows from dimension considerations (Proposition 1.8) that σ(S)\sigma(S) is exactly the set of elements stabilizing σ(C)\sigma(C). Similarly, because γσ\gamma_{\sigma} is invertible, it follows that γσSγσ1\gamma_{\sigma}S\gamma_{\sigma}^{-1} is exactly the set of elements stabilizing σ(C)\sigma(C), so σ(S)=γσSγσ1\sigma(S)=\gamma_{\sigma}S\gamma_{\sigma}^{-1}. But γσ\gamma_{\sigma} commutes or anti-commutes with everything in SS, so σ(S)=γσSγσ1SS\sigma(S)=\gamma_{\sigma}S\gamma_{\sigma}^{-1}\subset S\cup-S.

Conversely, suppose σ(S)SS\sigma(S)\subset S\cup-S. σ\sigma is an isomorphism of abelian groups, and σ(S)\sigma(S) does not contain I-I (otherwise σ1(I)=IS\sigma^{-1}(-I)=-I\in S, contradiction). Since SS={±I,±a1,±a2,}S\cup-S=\{\pm I,\pm a_{1},\pm a_{2},\ldots\} for an enumeration of the elements of SS, by counting and the fact that Iσ(S)-I\not\in\sigma(S), we see that plus or minus ss is in σ(S)\sigma(S) for any sSs\in S. In particular, if s1,,sms_{1},\ldots,s_{m} are an independent set of generators for SS, we may find unique r1,,rmSr_{1},\ldots,r_{m}\in S such that σ(ri)\sigma(r_{i}) equals plus or minus sis_{i}. It follows that the {σ(ri)}\{\sigma(r_{i})\} generate σ(S)\sigma(S).

Set ei=σ(ri)sie_{i}=\sigma(r_{i})s_{i}, so ei{±1}e_{i}\in\{\pm 1\}. Renumber the rr’s, ss’s, and ee’s so that e1==ea=1e_{1}=\ldots=e_{a}=1, and ea+1==em=1e_{a+1}=\ldots=e_{m}=-1. We would like to produce an element γGn\gamma\in G_{n} such that γ\gamma commutes with s1,,sas_{1},\ldots,s_{a}, and anticommutes with sa+1,,sms_{a+1},\ldots,s_{m} (if a=ma=m, then take γ=I\gamma=I, so we can assume a<ma<m). It suffices to find a γ\gamma that commutes with {s1,,sa,sa+1sa+2,sa+1sa+3,,sa+1sm}\{s_{1},\ldots,s_{a},s_{a+1}s_{a+2},s_{a+1}s_{a+3},\ldots,s_{a+1}s_{m}\}, and anticommutes with sa+1s_{a+1}.

Recall the check matrix representation of elements in GnG_{n} (where we disregard elements of the center iI\langle iI\rangle), so we may consider SS as an mm-dimensional subspace of 𝔽22n\mathbb{F}_{2}^{2n}. It follows that the elements in SS commuting with all of {s1,,sa,sa+1sa+2,sa+1sa+3,,sa+1sm}\{s_{1},\ldots,s_{a},s_{a+1}s_{a+2},s_{a+1}s_{a+3},\ldots,s_{a+1}s_{m}\} form a subspace VV of dimension 2n(m1)2n-(m-1), which is the orthogonal complement with respect to the symplectic bilinear form 4. Similarly, the elements in SS commuting with all of {s1,,sa,𝐬𝐚+𝟏,sa+1sa+2,sa+1sa+3,,sa+1sm}\{s_{1},\ldots,s_{a},\mathbf{s_{a+1}},s_{a+1}s_{a+2},s_{a+1}s_{a+3},\ldots,s_{a+1}s_{m}\} form a subspace WW of dimension 2nm2n-m. Therefore we may find some element in VV but not in WW, and the corresponding γGn\gamma\in G_{n} (taking the phase scalar factor to be 1) is the desired element.

It follows that γSγ1S\gamma S\gamma^{-1}\cong S is generated by

{s1,,sa,sa+1,,sm}={σ(r1),,σ(rm)},\{s_{1},\ldots,s_{a},-s_{a+1},\ldots,-s_{m}\}=\{\sigma(r_{1}),\ldots,\sigma(r_{m})\},

so that γSγ1=σ(S)\gamma S\gamma^{-1}=\sigma(S). γSγ1\gamma S\gamma^{-1} is the stabilizer for γC\gamma\cdot C, and σ(S)\sigma(S) is the stabilizer for σ(C)\sigma(C), so γC=σ(C)\gamma\cdot C=\sigma(C). Setting γσγ\gamma_{\sigma}\coloneqq\gamma, we have σAutweak(C)\sigma\in\operatorname{Aut_{weak}}(C). ∎

This somewhat justifies the “strong” and “weak” labels, since Propositions 2.2 and 2.7 show that a strong automorphism of C(S)C(S) sends SS to itself, while a weak automorphism sends SS to itself but “disregarding signs”. Of course the strong automorphism group is a subgroup of the weak automorphism group.

Example 2.9.

Let SG3S\subset G_{3} be generated by XXXXXX, YYIYYI, and ZXZZXZ, so that
S={III,XXX,YYI,ZXZ,ZZX,YIY,XZZ,IYY}S=\{III,XXX,YYI,ZXZ,-ZZX,-YIY,XZZ,-IYY\}. Then Corollaries 2.3 and 2.8 show that the strong automorphism group of C=C(S)C=C(S) is {(1),(12)}2\{(1),(12)\}\cong\mathbb{Z}_{2}, while the weak automorphism group is all of S3S_{3}.

This example shows that this weaker notion of automorphism can enlarge the strong automorphism group, and we will see in some later examples that Autweak(C)\operatorname{Aut_{weak}}(C) can be quite a bit larger than Autstrong(C)\operatorname{Aut_{strong}}(C) for certain stabilizer codes CC. This example also shows that Autstrong(C)\operatorname{Aut_{strong}}(C) is not necessarily normal in Autweak(C)\operatorname{Aut_{weak}}(C). So we may pose the following (somewhat vague) question:

Question 2.10.

Can we describe the relationship between Autstrong(C)\operatorname{Aut_{strong}}(C) and Autweak(C)\operatorname{Aut_{weak}}(C) for a given stabilizer code C=C(S)C=C(S)?

We extend the notion of an automorphism group one last time. For this, we need to introduce the (one-qubit) Clifford group L1L_{1}, following the terminology of [1] and [2].

Definition 2.11.

The (one-qubit) Clifford group L1L_{1} is the subgroup of the normalizer of G1G_{1} in U(2)U(2) that contains entries from (1+i2)=(eπi4)\mathbb{Q}\left(\frac{1+i}{\sqrt{2}}\right)=\mathbb{Q}(e^{\frac{\pi i}{4}}). It is generated by G1G_{1}, H=12[1111]H=\frac{1}{\sqrt{2}}\begin{bmatrix}1&1\\ 1&-1\end{bmatrix}, and S=[100i]S=\begin{bmatrix}1&0\\ 0&i\end{bmatrix}.

In the terminology of quantum logic gates, HH is the Hadamard gate, and SS is the phase shift gate where the shift is by π4\frac{\pi}{4}. Note that the conjugation actions of HH and SS on XX, YY, and ZZ are as follows:

HXH1=ZHXH^{-1}=Z SXS1=YSXS^{-1}=Y
HZH1=XHZH^{-1}=X SZS1=ZSZS^{-1}=Z
HYH1=YHYH^{-1}=-Y SYS1=XSYS^{-1}=-X

.

We can extend the action of L1L_{1} on G1G_{1} to nn qubits as follows, which gives us our second weakening of the strong automorphism group:

Definition 2.12.

We define the nn-qubit diagonal Clifford group LnL_{n} as

Ln={A1An:AiL1}.L_{n}=\{A_{1}\otimes\ldots\otimes A_{n}:A_{i}\in L_{1}\}. (11)

LnL_{n} has a natural conjugation action on GnG_{n}, which motivates the following definition.

Definition 2.13.

Let CC be a stabilizer code corresponding to the subgroup SGnS\subset G_{n}. We define the Clifford-twisted automorphism group of CC as

AutClif(C)={σSn:σ(S)=λσSλσ1 for some λσLn}.\operatorname{Aut_{Clif}}(C)=\{\sigma\in S_{n}:\sigma(S)=\lambda_{\sigma}S\lambda_{\sigma}^{-1}\text{ for some }\lambda_{\sigma}\in L_{n}\}. (12)

Since LnL_{n} contains GnG_{n}, we have the chain of inclusions AutClif(C)Autweak(C)Autstrong(C)\operatorname{Aut_{Clif}}(C)\supseteq\operatorname{Aut_{weak}}(C)\supseteq\operatorname{Aut_{strong}}(C) for a stabilizer code CC. We are somewhat justified in calling AutClif(C)\operatorname{Aut_{Clif}}(C) an automorphism group: it is a group for the same reason that Autweak(C)\operatorname{Aut_{weak}}(C) is a group, and because the elements of LnL_{n} act as automorphisms of GnG_{n}, it is not hard to show that if σAutClif(C)\sigma\in\operatorname{Aut_{Clif}}(C), then CC and σ(C)\sigma(C) have the same [[n,k,d]][[n,k,d]] parameters.

To aid computation, we make some useful observations involving Definition 2.13. First, if g1,,gmg_{1},\ldots,g_{m} generate SS, then for σ\sigma to be in AutClif(C)\operatorname{Aut_{Clif}}(C) it suffices to verify that σ(gi)λσSλσ1\sigma(g_{i})\in\lambda_{\sigma}S\lambda_{\sigma}^{-1} for each gig_{i}. This can be further weakened: it suffices that plus or minus σ(gi)\sigma(g_{i}) is in λσSλσ1\lambda_{\sigma}S\lambda_{\sigma}^{-1}, since if we are only off by a sign, we can simultaneously correct for that by conjugating by an appropriate element of GnG_{n}, as in the proof of Proposition 2.7. Finally, because we can disregard signs, we can interpret the action of L1L_{1} on G1G_{1} (or each tensor factor of GnG_{n}) as S3S_{3} acting on the non-identity Pauli matrices. For instance, the above table shows that HH induces the permutation (XZ)(XZ) and SS induces the permutation (XY)(XY) on the set {X,Y,Z}\{X,Y,Z\}, and various combinations of HH and SS induce the other permutations of S3S_{3}. So we can rephrase Definition 2.13 in a more verbose, but more intuitive, manner:

Corollary 2.14.

Let CC be a stabilizer code corresponding to the subgroup SGnS\subset G_{n}, and consider the componentwise action of (S3)nS3××S3n times(S_{3})^{n}\coloneqq\underbrace{S_{3}\times\ldots\times S_{3}}_{n\text{ times}} on elements of GnG_{n} (i.e. on each tensor factor, S3S_{3} acts on the three non-identity Pauli matrices). Then σAutClif(C)\sigma\in\operatorname{Aut_{Clif}}(C) if and only if there is some ρσ(S3)n\rho_{\sigma}\in(S_{3})^{n} such that for each generator gig_{i} of SS, ρσ(σ(gi))SS\rho_{\sigma}\cdot(\sigma(g_{i}))\in S\cup-S.

Note that we use \cdot to emphasize the fact that σ\sigma and ρσ\rho_{\sigma} have very different actions: σ\sigma permutes the tensor factors in each element, while ρσ\rho_{\sigma} permutes XX, YY, and ZZ in each tensor factor.

Let us use Corollary 2.14 in an example. Recall from Remark 2.5 that if CC is the stabilizer code corresponding to the subgroup SG4S\subset G_{4} generated by XXZZXXZZ and YYXXYYXX, then Autstrong(C)={(1),(12),(34),(12)(34)}2×2\operatorname{Aut_{strong}}(C)=\{(1),(12),(34),(12)(34)\}\cong\mathbb{Z}_{2}\times\mathbb{Z}_{2}. Using Corollary 2.8, it is easy to see that Autweak(C)\operatorname{Aut_{weak}}(C) is the same group. However, we now show that AutClif(C)\operatorname{Aut_{Clif}}(C) is the full S4S_{4}.

Example 2.15.

We want to show that AutClif(C)=S4\operatorname{Aut_{Clif}}(C)=S_{4}, and we already know (12)AutClif(C)(12)\in\operatorname{Aut_{Clif}}(C), so it suffices to show that (1234)AutClif(C)(1234)\in\operatorname{Aut_{Clif}}(C). Applying this permutation to the generators XXZZXXZZ and YYXXYYXX gives ZXXZZXXZ and XYYXXYYX. The latter two elements can be obtained from the former two by applying the permutation (XZY)(XZY) in the first tensor factor, and (XYZ)(XYZ) in the third. Hence (1234)AutClif(C)(1234)\in\operatorname{Aut_{Clif}}(C).

2.2 Examples of Automorphism Groups

In this section we give many examples of Autstrong(C),Autweak(C)\operatorname{Aut_{strong}}(C),\operatorname{Aut_{weak}}(C), and AutClif(C)\operatorname{Aut_{Clif}}(C) for various small stabilizer codes CC with large distance. Most codes will be taken from [6]. The majority of these examples were calculated by hand and then verified using a SAGE program (see Appendix A). These hand calculations are somewhat tedious ad hoc processes, so we will only try to give a general outline of how they were done. We will also make some observations about the more noteworthy automorphism groups. However, we should again remark that the automorphism groups of a stabilizer code cannot be completely determined by the parameters [[n,k,d]][[n,k,d]], so these examples should be taken as interesting specific cases rather than showcasing a general phenomenon.

2.2.1 A [[5,1,3]][[5,1,3]] code

Recall from Example 1.14 that the subgroup SG5S\subset G_{5} generated by

XZZXI\displaystyle XZZXI
IXZZX\displaystyle IXZZX
XIXZZ\displaystyle XIXZZ
ZXIXZ\displaystyle ZXIXZ

gives a [[5,1,3]][[5,1,3]] stabilizer code CC, and it is the smallest able to correct one error on any qubit in terms of the number nn of physical qubits. We find that Autstrong(C)=Autweak(C)=(12345),(25)(34)D10\operatorname{Aut_{strong}}(C)=\operatorname{Aut_{weak}}(C)=\langle(12345),(25)(34)\rangle\cong D_{10}, the dihedral group of order 10. One could compute these groups by writing out the elements of SS in full:

XZZXIXYIYXZIZYYZYYZI\displaystyle XZZXI\quad XYIYX\quad ZIZYY\quad ZYYZI
IXZZXIZYYZYXXYIYIYXX\displaystyle IXZZX\quad IZYYZ\quad YXXYI\quad YIYXX
XIXZZYYZIZIYXXYZZXIX\displaystyle XIXZZ\quad YYZIZ\quad IYXXY\quad ZZXIX
ZXIXZXXYIYYZIZYIIIII\displaystyle ZXIXZ\quad XXYIY\quad YZIZY\quad IIIII

Then it is clear that Autstrong(C)=Autweak(C)\operatorname{Aut_{strong}}(C)=\operatorname{Aut_{weak}}(C), since all of the elements have the same phase +1+1, and moreover any strong automorphism must take the four generators of SS to a cyclic permutation of XZZXIXZZXI. It should follow pretty easily that Autstrong(C)=(12345),(25)(34)\operatorname{Aut_{strong}}(C)=\langle(12345),(25)(34)\rangle. We call stabilizer codes CC with (12n)Autstrong(C)(12\ldots n)\in\operatorname{Aut_{strong}}(C) (or more generally, any nn-cycle in place of (12n)(12\ldots n)) cyclic, and they are of particular interest (see [4]).

It is much harder to come up with a systematic approach for calculating the Clifford-twisted automorphism group, so we must resort to “guessing” elements in AutClif(C)\operatorname{Aut_{Clif}}(C). It is a good idea to begin with testing (12)(12) and (12n)(12\ldots n), since those two permutations generate SnS_{n}. In this case, we already have (12345)AutClif(C)(12345)\in\operatorname{Aut_{Clif}}(C), so we try (12)(12). This permutation sends the generators to

ZXZXI\displaystyle ZXZXI
XIZZX\displaystyle XIZZX
IXXZZ\displaystyle IXXZZ
XZIXZ,\displaystyle XZIXZ,

and twisting these by the permutations (YZ)(YZ), (YZ)(YZ), (XZ)(XZ), (XY)(XY), and (XZ)(XZ) in the respective tensor factors gives

YXXYI\displaystyle YXXYI
XIXZZ\displaystyle XIXZZ
IXZZX\displaystyle IXZZX
XYIYX,\displaystyle XYIYX,

all of which are in SS. Hence (12)AutClif(C)AutClif(C)=S5(12)\in\operatorname{Aut_{Clif}}(C)\Rightarrow\operatorname{Aut_{Clif}}(C)=S_{5}.

2.2.2 A [[6,0,4]][[6,0,4]] code

Recall the 𝟎L\mathbf{0}_{L} and 𝟏L\mathbf{1}_{L} states from Example 1.14, which form a basis for the [[5,1,3]][[5,1,3]] code mentioned above. We may consider the state 𝟎𝟎L+𝟏𝟏L26\mathbf{0}\otimes\mathbf{0}_{L}+\mathbf{1}\otimes\mathbf{1}_{L}\in\mathbb{C}^{2^{6}}, which defines a (degenerate) [[6,0,4]][[6,0,4]] code CC. This “code” is important as an example of a maximally entangled state, following the terminology of [7].

It is not hard to check that the stabilizing subgroup SG6S\subset G_{6} corresponding to CC is generated by

IXZZXI\displaystyle IXZZXI
IIXZZX\displaystyle IIXZZX
IXIXZZ\displaystyle IXIXZZ
IZXIXZ\displaystyle IZXIXZ
XXXXXX\displaystyle XXXXXX
ZZZZZZ.\displaystyle ZZZZZZ.

It turns out that while Autstrong(C)\operatorname{Aut_{strong}}(C) is again (23456),(36)(45)D10\langle(23456),(36)(45)\rangle\cong D_{10}, Autweak(C)\operatorname{Aut_{weak}}(C) is in fact (23456),(135)(264)PSL(2,5)A5\langle(23456),(135)(264)\rangle\cong\operatorname{PSL}(2,5)\cong A_{5}. For instance, (135)(264)(135)(264) sends IXZZXIIXZZXI to XZIIZXXZIIZX, which is not in SS, but rather in S-S.

Note that this is another example where Autstrong(C)\operatorname{Aut_{strong}}(C) is not normal in Autweak(C)\operatorname{Aut_{weak}}(C).

To calculate these groups, we adopt the procedure from Section 2.2.1 and write out all the 260=642^{6-0}=64 elements of SS. Since any permutation fixes XXXXXXXXXXXX and ZZZZZZZZZZZZ, we can focus on the first four generators of SS. It is a good strategy to do casework on the image of the first tensor factor, since we would then need to find four elements in SS with II’s in that slot (perhaps with the proper sign, depending on whether we are calculating the strong or weak automorphism group). We also use the constraint that the first four generators must be sent to elements of SS (or S-S) that have 2 II’s, 2 XX’s, and 2 ZZ’s as tensor factors. All of these types of criteria—location of the II’s in the tensor product, weights of elements, and the types of Pauli matrices used in each tensor product—are highly useful when performing hand computations.

Finally, we claim that AutClif(C)=S6\operatorname{Aut_{Clif}}(C)=S_{6}. First, we check that (12)AutClif(C)(12)\in\operatorname{Aut_{Clif}}(C): it sends the generators to

XIZZXI\displaystyle XIZZXI
IIXZZX\displaystyle IIXZZX
XIIXZZ\displaystyle XIIXZZ
ZIXIXZ\displaystyle ZIXIXZ
XXXXXX\displaystyle XXXXXX
ZZZZZZ,\displaystyle ZZZZZZ,

and twisting these by the permutations (XY)(XY), (XY)(XY), (XZ)(XZ), (YZ)(YZ), (YZ)(YZ) and (XZ)(XZ) in the respective tensor factors gives

YIXYXI\displaystyle YIXYXI
IIZYYZ\displaystyle IIZYYZ
YIIXYX\displaystyle YIIXYX
ZIZIXX\displaystyle ZIZIXX
YYZXXZ\displaystyle YYZXXZ
ZZXYYX,\displaystyle ZZXYYX,

all of which are in SS. It remains to check that (123456)AutClif(C)(123456)\in\operatorname{Aut_{Clif}}(C). This sends the generators to

IIXZZX\displaystyle IIXZZX
XIIXZZ\displaystyle XIIXZZ
ZIXIXZ\displaystyle ZIXIXZ
ZIZXIX\displaystyle ZIZXIX
XXXXXX\displaystyle XXXXXX
ZZZZZZ,\displaystyle ZZZZZZ,

and twisting these by the permutations (XY)(XY), (XY)(XY), (XZ)(XZ), (YZ)(YZ), (YZ)(YZ) and (XZ)(XZ) in the respective tensor factors gives

IIZYYZ\displaystyle IIZYYZ
YIIXYX\displaystyle YIIXYX
ZIZIXX\displaystyle ZIZIXX
ZIXXIZ\displaystyle ZIXXIZ
YYZXXZ\displaystyle YYZXXZ
ZZXYYX,\displaystyle ZZXYYX,

all of which are in SS. Again, for this computation, it is important to exploit the position of II’s as tensor factors, since conjugation by elements of L6L_{6} cannot change II.

2.2.3 The [[7,1,3]][[7,1,3]] Steane code

The [[7,1,3]][[7,1,3]] Steane code CC corresponds to a subgroup SG7S\subset G_{7} that has generators given by

IIIXXXX\displaystyle IIIXXXX
IXXIIXX\displaystyle IXXIIXX
XIXIXIX\displaystyle XIXIXIX
IIIZZZZ\displaystyle IIIZZZZ
IZZIIZZ\displaystyle IZZIIZZ
ZIZIZIZ.\displaystyle ZIZIZIZ.

CC is derived from the classical [7,4][7,4] Hamming code—this is apparent if one writes out the check matrix representations of these generators, and compares that matrix to the parity-check matrix of the Hamming code. It is of primary interest as an example of a CSS code (see Section 10.4.2 of [8] for the full details). Since it is derived from the Hamming code, which has an automorphism group of PGL(3,2)PSL(2,7)\operatorname{PGL}(3,2)\cong\operatorname{PSL}(2,7), it should be of no surprise that Autstrong(C)=Autweak(C)=(46)(57),(124)(365)PGL(3,2)\operatorname{Aut_{strong}}(C)=\operatorname{Aut_{weak}}(C)=\langle(46)(57),(124)(365)\rangle\cong\operatorname{PGL}(3,2). In general, it is at least true that the strong automorphism group of a CSS code is isomorphic to the automorphism group of the classical code it is derived from.

By writing out all of the 271=642^{7-1}=64 elements of SS, one can check that AutClif(C)\operatorname{Aut_{Clif}}(C) is also PGL(3,2)\operatorname{PGL}(3,2). This provides a nontrivial example where all three types of automorphism group are equal.

2.2.4 An [[8,3,3]][[8,3,3]] code

The tables at [6] give us the generators for the stabilizing subgroup SG8S\subset G_{8} of an [[8,3,3]][[8,3,3]] code CC:

XIZIYZXY\displaystyle XIZIYZXY
IXZZYXYI\displaystyle IXZZYXYI
IZXIYYZX\displaystyle IZXIYYZX
IZIYZXXY\displaystyle IZIYZXXY
ZZZZZZZZ.\displaystyle ZZZZZZZZ.

This code is significant because it is the smallest-sized code encoding 3 logical qubits that can correct any single-qubit error. We can calculate that

Autstrong(C)={\displaystyle\operatorname{Aut_{strong}}(C)=\{ (1),(12)(35)(68)(47),(13)(25)(48)(67),(14)(27)(38)(56),(15)(23)(46)(78),\displaystyle(1),(12)(35)(68)(47),(13)(25)(48)(67),(14)(27)(38)(56),(15)(23)(46)(78),
(16)(28)(37)(45),(17)(24)(36)(58),(18)(26)(34)(57)}2×2×2,\displaystyle(16)(28)(37)(45),(17)(24)(36)(58),(18)(26)(34)(57)\}\cong\mathbb{Z}_{2}\times\mathbb{Z}_{2}\times\mathbb{Z}_{2},
Autweak(C)=Autstrong(C)(2453876)(2×2×2)7.\operatorname{Aut_{weak}}(C)=\operatorname{Aut_{strong}}(C)\rtimes\langle(2453876)\rangle\cong(\mathbb{Z}_{2}\times\mathbb{Z}_{2}\times\mathbb{Z}_{2})\rtimes\mathbb{Z}_{7}.

We may alternatively identify Autweak(C)\operatorname{Aut_{weak}}(C) as AGL(1,8)\operatorname{AGL}(1,8), the 1-dimensional affine general linear group over 𝔽8\mathbb{F}_{8}, which acts sharply 2-transitively on 8 points. This is a group of order 56 with a unique Sylow 2-subgroup isomorphic to 2×2×2\mathbb{Z}_{2}\times\mathbb{Z}_{2}\times\mathbb{Z}_{2}.

To calculate these groups, one can use the following remarkable description of the elements of SS: each of the 2834=282^{8-3}-4=28 elements in SS that are not IIIIIIIIIIIIIIII, XXXXXXXXXXXXXXXX, ZZZZZZZZZZZZZZZZ, or YYYYYYYYYYYYYYYY, contain exactly 2 II’s, 2 XX’s, 2 ZZ’s, and 2 YY’s as tensor factors. Moreover, for any pair of integers 1i<j81\leq i<j\leq 8, exactly one of those 28 elements has II’s as tensor factors in slots ii and jj.

To calculate AutClif(C)\operatorname{Aut_{Clif}}(C), we use the fact that AutClif(C)Autweak(C)\operatorname{Aut_{Clif}}(C)\supseteq\operatorname{Aut_{weak}}(C) is 2-transitive, so it suffices to find the stabilizer of slots 1 and 2. A tedious check by casework (using the positions of II tensor factors, as well as the above observations about SS, as our guide) shows that this stabilizer is of order 3 and generated by (367)(458)(367)(458). Hence AutClif(C)\operatorname{Aut_{Clif}}(C) is a group of order 563=16856\cdot 3=168. We may identify AutClif(C)\operatorname{Aut_{Clif}}(C) as the 1-dimensional affine semilinear group AΓL(1,8)\operatorname{A\Gamma L}(1,8), which is a semidirect product AGL(1,8)Aut(𝔽8)\operatorname{AGL}(1,8)\rtimes\operatorname{Aut}(\mathbb{F}_{8}).

2.2.5 An [[8,2,3]][[8,2,3]] code

It turns out that the [[8,3,3]][[8,3,3]] code mentioned in 2.2.4 has an [[8,2,3]][[8,2,3]] subcode CC, which is the smallest-sized code encoding 2 logical qubits that can correct any single-qubit error. Its stabilizing subgroup SS is generated by

XIZIYZXY\displaystyle XIZIYZXY
IXZZYXYI\displaystyle IXZZYXYI
IZXIYYZX\displaystyle IZXIYYZX
IZZYZXZZ\displaystyle IZZYZXZZ
IIZIIIYX\displaystyle IIZIIIYX
ZZZZZZZZ.\displaystyle ZZZZZZZZ.

Note that the product of the fourth and fifth generators of SS give the fourth generator of the aforementioned [[8,3,3]][[8,3,3]] code.

Now, any element of Autstrong(C)\operatorname{Aut_{strong}}(C) or Autstrong(C)\operatorname{Aut_{strong}}(C) sends the generator IIZIIIYXIIZIIIYX to another weight-3 element in SS (up to sign). By analyzing the weight-3 elements in SS (there are only 8 of them), we can conclude that the only nontrivial element in both Autstrong(C)\operatorname{Aut_{strong}}(C) and Autweak(C)\operatorname{Aut_{weak}}(C) is (13)(25)(48)(67)(13)(25)(48)(67). So although the strong automorphism group of the above [[8,3,3]][[8,3,3]] code was sharply 1-transitive, and the weak automorphism group of the same code was sharply 2-transitive, neither Autstrong(C)2\operatorname{Aut_{strong}}(C)\cong\mathbb{Z}_{2} nor Autweak(C)=Autstrong(C)\operatorname{Aut_{weak}}(C)=\operatorname{Aut_{strong}}(C) are transitive.

2.2.6 A [[10,0,4]][[10,0,4]] code

Consider the following generators of a stabilizing subgroup SG10S\subset G_{10}:

XIIZXZXZII\displaystyle XIIZXZXZII
IXIIZXZXZI\displaystyle IXIIZXZXZI
IIXIIZXZXZ\displaystyle IIXIIZXZXZ
ZIIXIIZXZX\displaystyle ZIIXIIZXZX
XZIIXIIZXZ\displaystyle XZIIXIIZXZ
ZXZIIXIIZX\displaystyle ZXZIIXIIZX
XZXZIIXIIZ\displaystyle XZXZIIXIIZ
ZXZXZIIXII\displaystyle ZXZXZIIXII
IZXZXZIIXI\displaystyle IZXZXZIIXI
IIZXZXZIIX\displaystyle IIZXZXZIIX

These ten elements are cyclic permutations of each other. It can be checked that SS determines a degenerate [[10,0,4]][[10,0,4]] code CC, and from [6] we see that 4 is the best possible distance for a [[10,0]][[10,0]] code. Note that this is not the same [[10,0,4]][[10,0,4]] code given at [6].

Now, we will later see (Theorems 3.3 and 3.5) that there are no nondegenerate 12-qubit (resp. 11-qubit) stabilizer codes with strong or weak automorphism group M12M_{12} (resp. M11M_{11}). This suggests that the Clifford-twisted automorphism group might be the “correct” automorphism group to investigate, if we are trying to find some connections between stabilizer codes and the small Mathieu groups. This code provides some evidence of such a connection: we have

AutClif(C)=(12345678910),(89)(410)(56)M10.2,\operatorname{Aut_{Clif}}(C)=\langle(1~{}2~{}3~{}4~{}5~{}6~{}7~{}8~{}9~{}10),(8~{}9)(4~{}10)(5~{}6)\rangle\cong M_{10}.2,

a 3-transitive group of order 1440. This group is also isomorphic to the 2-dimensional projective semilinear group PΓL(2,9)\operatorname{P\Gamma L}(2,9), as well as to the automorphism group of the unique (up to isomorphism) (3,4,10)(3,4,10) Steiner system.

It is evident that (12345678910)AutClif(C)(1~{}2~{}3~{}4~{}5~{}6~{}7~{}8~{}9~{}10)\in\operatorname{Aut_{Clif}}(C), since it is even a strong automorphism. To see that (89)(410)(56)AutClif(C)(8~{}9)(4~{}10)(5~{}6)\in\operatorname{Aut_{Clif}}(C), one applies this permutation to the above ten generators and then twists by (XZ)(XZ) in the 5th, 6th, 8th, and 9th tensor factors (in the other tensor factors, we do nothing). Recall from the discussion surrounding Definition 2.11 that this (XZ)(XZ) twist is, up to sign, the Hadamard gate. The resulting elements of G10G_{10} will all be in SS. Since M10.2M_{10}.2 is a maximal subgroup of S10S_{10}, it remains to show that some transposition, say (13)(13), is not in AutClif(C)\operatorname{Aut_{Clif}}(C). This is not too hard to do using the program in Appendix A: one way is to apply (13)(13) to the first and third generators listed above (so they become IIXZXZXZIIIIXZXZXZII and XIIIIZXZXZXIIIIZXZXZ, respectively), and show that the resulting two elements of G10G_{10} cannot be simultaneously twisted into elements of SS.

The general heuristic for the construction of this code is as follows: somehow the code should be related to the unique (3,4,10)(3,4,10) Steiner system, since as mentioned above M10.2M_{10}.2 is the automorphism group of that Steiner system. From [11] we obtain a description of the blocks of such a system, and we place II’s in tensor factors corresponding to ten of those blocks, which will be cyclic permutations of each other. In some way, this makes sense to try, since the identity matrices act as “distinguished elements”: XX’s, YY’s, and ZZ’s can all be twisted into each other, but that is not true with II’s. The rest of the construction consists of playing around with the remaining six tensor factors and eventually coming upon the “right ones”.

As a final remark, the Clifford-twisted automorphism group of this code is indeed the most interesting: both the strong and weak automorphism groups of CC are
(12345678910),(210)(39)(48)(57)D20\langle(1~{}2~{}3~{}4~{}5~{}6~{}7~{}8~{}9~{}10),(2~{}10)(3~{}9)(4~{}8)(5~{}7)\rangle\cong D_{20}.

2.2.7 An [[11,1,5]][[11,1,5]] code

Table 8.5 of [4] gives the generators for the stabilizing subgroup SS of an [[11,1,5]][[11,1,5]] code CC as follows:

ZZZZZZIIIII\displaystyle ZZZZZZIIIII
XXXXXXIIIII\displaystyle XXXXXXIIIII
IIIZXYYYYXZ\displaystyle IIIZXYYYYXZ
IIIXYZZZZYX\displaystyle IIIXYZZZZYX
ZYXIIIZYXII\displaystyle ZYXIIIZYXII
XZYIIIXZYII\displaystyle XZYIIIXZYII
IIIZYXXYZII\displaystyle IIIZYXXYZII
IIIXZYZXYII\displaystyle IIIXZYZXYII
ZXYIIIZZZXY\displaystyle ZXYIIIZZZXY
YZXIIIYYYZX\displaystyle YZXIIIYYYZX

This code is significant because it is the smallest-sized code that can correct arbitrary errors on any two qubits (see [6]). SS is slightly too large to analyze using the aforementioned techniques, or via brute-force using the program in Appendix A; however, we strongly suspect that both Autstrong(C)\operatorname{Aut_{strong}}(C) and Autweak(C)\operatorname{Aut_{weak}}(C) are trivial.

Question 2.16.

Are the strong and weak automorphism groups of CC trivial?

3 Stabilizer Codes with Highly Transitive Automorphism Groups

In this section, we try to investigate the general question of “how symmetric can a good stabilizer code be?” We will focus on stabilizer codes that have distance at least 3 (so they can at least correct one error on any qubit, hence “good”), and we will try to find those codes with multiply transitive strong and weak automorphism groups (hence “symmetric”).

The examples in Section 2.2 suggest that in general, the strong and weak automorphism groups of a good code cannot be “too symmetric”. For instance, the highest degree of transitivity we observed was 2-transitive, such as in the [[7,1,3]][[7,1,3]] Steane code with strong and weak automorphism group PGL(3,2)\operatorname{PGL}(3,2) (Section 2.2.3), and in a [[8,3,3]][[8,3,3]] code with weak automorphism group AGL(1,8)\operatorname{AGL}(1,8) (Section 2.2.4). We believe that this is a good heuristic, and we now provide some results supporting this point of view.

Theorem 3.1.

An [[n,k,d]][[n,k,d]] stabilizer code CC with SnS_{n} or AnA_{n} as its strong or weak automorphism group has d2d\leq 2.

We make a useful definition:

Definition 3.2.

Let TT be a subset of EnE_{n}. Then the complexity of TT is the number of different Pauli matrices (II, XX, YY, or ZZ) that appear as tensor factors in elements of TT (so the complexity is an integer in {1,2,3,4}\{1,2,3,4\}). We define the complexity of an element similarly. For example, the subset T={IXX,YYZ}T=\{IXX,YYZ\} has complexity 4, even though both elements IXXIXX and YYZYYZ have complexity 2.

Proof of Theorem 3.1.

Let CC be the stabilizer code in question with parameters [[n,k,d]][[n,k,d]], and let SGnS\subset G_{n} be its stabilizing subgroup. Note that any stabilizer code with distance at least 3 must be able to correct an arbitrary error on a single qubit, which means it must be at least 5 physical qubits large (see, for example, the quantum Hamming bound discussed in Section 10.3.4 of [8]). So we may assume that n5n\geq 5.

We prove the theorem in the case Autweak(C)Sn\operatorname{Aut_{weak}}(C)\cong S_{n} or AnA_{n}, and the proof for Autstrong(C)\operatorname{Aut_{strong}}(C) is essentially the same.

Now, SS has complexity 1, 2, 3, or 4. If SS has complexity 1, then it is the trivial subgroup, so we can disregard this case. If SS has complexity 2, then without loss of generality every element sSs\in S is a tensor product of II’s and XX’s. Then XIIXI\ldots I is in the normalizer N(S)N(S), so either it is in SS or d=1d=1. The same applies for IXIIIXI\ldots I, IIXIIIIXI\ldots I, etc., so either SS contains them all or d=1d=1. In the former case, SS will have size 2n2^{n}, so that k=0k=0. In this case, dd still equals 1, applying the distance convention for zero-dimensional stabilizer codes as discussed in Remark 1.13.

If SS has complexity 3, then without loss of generality, every element sSs\in S is a tensor product of II’s, XX’s, and ZZ’s. Suppose s1Ss_{1}\in S has an XX in slot ii (the iith tensor factor) and s2Ss_{2}\in S has a ZZ in slot jj. Then we may choose some permutation σAutweak(C)\sigma\in\operatorname{Aut_{weak}}(C), which is either SnS_{n} or AnA_{n}, such that σ(i)=j\sigma(i)=j. So plus or minus σ(s1)\sigma(s_{1}) is in SS, and taking the positive sign (without loss of generality), we see that σ(s1)s2S\sigma(s_{1})s_{2}\in S. But this element has a YY in slot jj, contradicting the complexity of SS.

If SS has complexity 4, we first claim that no element in SS can have complexity 3 or 4. If sSs\in S had complexity 3 or 4, then it has II, XX, and ZZ as tensor factors somewhere, say
s=IXZs=\ldots I\ldots X\ldots Z\ldots (without loss of generality, since it will be apparent that it does not matter where these tensor factors are located). Then applying an appropriate 3-cycle σAnAutweak(C)\sigma\in A_{n}\subseteq\operatorname{Aut_{weak}}(C), we get σ(s)=ZIX\sigma(s)=\ldots Z\ldots I\ldots X\ldots, so that plus or minus σ(s)\sigma(s) is in SS. In either case, the point is that σ(s)\sigma(s) and ss do not commute, a contradiction.

So elements in SS have complexity at most 2. Suppose we had some complexity 2 element ss, which is, without loss of generality, a tensor product of II’s and XX’s only, with at least 1 copy of each. Let ss have an II in slot ii and an XX in slot jj. Now, because we assume n5n\geq 5, there are at least 3 more slots, so either II or XX appears in the remaining slots at least twice. Without loss of generality, suppose II appears in slots kk and ll of ss, where i,j,k,li,j,k,l are pairwise distinct. Consider the permutation σ=(ij)(kl)AnAutweak(C)\sigma=(ij)(kl)\in A_{n}\subseteq\operatorname{Aut_{weak}}(C), so that σ(s)\sigma(s) has the effect of only switching the II in slot ii and the XX in the slot jj (the II’s in slots kk and ll are invisibly switched). Then plus or minus σ(s)\sigma(s) is in SS, so taking the positive sign, we see that tσ(s)sSt\coloneqq\sigma(s)s\in S has an II in every slot of the tensor product, except in slots ii and jj, where it has XX’s.

Then because nn is at least 5, by applying elements in Autweak(C)\operatorname{Aut_{weak}}(C), it follows that any tensor product of II’s and exactly two XX’s is in SS, up to sign. Then the elements
{±XXII,±IXXII,,±IIXX}\{\pm XXI\ldots I,\pm IXXI\ldots I,\ldots,\pm I\ldots IXX\} are independent in SS, so SS has size at least 2n12^{n-1}. But the complexity 4 hypothesis means that SS contains some term with a YY or ZZ, and that element is certainly independent from the above set, so SS must have size exactly 2n2^{n}. So k=0k=0, and by the distance convention for zero-dimensional stabilizer codes, d2d\leq 2.

The only case we have not considered is where all elements in SS have complexity 1. Then SS is a subgroup contained in {±II,±XX,±ZZ,±YY}\{\pm I\ldots I,\pm X\ldots X,\pm Z\ldots Z,\pm Y\ldots Y\}, and XXIIXXI\ldots I is a weight 2 element in N(S)SN(S)-S, so d=2d=2. ∎

The classification of finite simple groups tells us that the only kk-transitive groups for k6k\geq 6 are SnS_{n} and AnA_{n} for large enough nn. We also know that the only 5-transitive groups are the Mathieu groups M24M_{24} and M12M_{12}, and the only 4-transitive groups are M23M_{23} and M11M_{11}. Therefore it makes sense to discuss these groups next. We will now deal with the small Mathieu groups, starting with M12M_{12}.

Theorem 3.3.

There is no k1k\geq 1 stabilizer code with ambient space 212\mathbb{C}^{2^{12}} that has strong or weak automorphism group M12M_{12}.

Proof.

We prove the statement in the Autstrong\operatorname{Aut_{strong}} case, since the Autweak\operatorname{Aut_{weak}} case only gives us increased freedom to make sign changes in elements of the stabilizer group, which doesn’t make a difference. In particular, in all that follows, we will mean “equal up to a sign ±\pm” when we say “equal”, unless stated (we will only need to deal with signs in a few places). The only fact about M12M_{12} we will need is that it is 5-transitive as a permutation group on 12 points.

Let CC be a stabilizer code (encoding at least 1 logical qubit) corresponding to the stabilizer subgroup SE12S\subset E_{12} with Autstrong(C)M12\operatorname{Aut_{strong}}(C)\supseteq M_{12}. We prove that this inclusion must be strict.

Disregarding the trivial case, the complexity of SS must be 2, 3, or 4. First, if the complexity of SS is 2, then without loss of generality, all elements are tensor products of XX’s and II’s. Pick some sSs\in S not equal to II or XXX\ldots X (if there is no such element, then Autstrong(C)S12\operatorname{Aut_{strong}}(C)\cong S_{12}), so that ss has at most 6 XX’s as tensor factors. Note that we could change the XX’s and II’s and the argument still works. We can assume without harm that the XX’s are located consecutively in the first slots, so ss is one of the following, up to sign:

{XII,XXII,XXXII,XXXXII,XXXXXII,XXXXXXIIIIII}.\{XI\ldots I,XXI\ldots I,XXXI\ldots I,XXXXI\ldots I,XXXXXI\ldots I,XXXXXXIIIIII\}.

It does not actually matter where the XX’s are located, since the argument can be easily modified for any position of the XX’s.

Because M12M_{12} is 5-transitive, we may produce one of the elements in the below list by applying a permutation from Autstrong(C)\operatorname{Aut_{strong}}(C) to ss. The dots mean that we do not exactly know the order of the remaining tensor factors, since we may only specify the images of 5 points (qubits).

{IXI,XIXI,XXIXI,XXXIX,XXXXI,XXXXI}.\{IXI\ldots,XIXI\ldots,XXIXI\ldots,XXXIX\ldots,XXXXI\ldots,XXXXI\ldots\}.

Let sSs^{\prime}\in S be the corresponding element to ss. Notice that in each case, ssss^{\prime} is an element with weight 2, except in the last case, where ssss^{\prime} could have weight 4. But in the last case we can just repeat this procedure to produce some element of weight 2. Let us call this process reduction to a weight 2 element, since we will want to refer to it later. We have essentially shown that if SS contains an element of weight at most 6, then it contains an element of weight 2.

So SS contains some element of weight 2. By 5-transitivity of Autstrong(C)M12\operatorname{Aut_{strong}}(C)\supseteq M_{12}, SS contains all tensor products of II’s and XX’s of weight 2, of which the 11 elements
{XXII,IXXII,,IIXX}\{XXI\ldots I,IXXI\ldots I,\ldots,I\ldots IXX\} are independent. Since k1k\geq 1, SS is generated by exactly these elements. Now, notice that if we apply the appropriate element in the 5-transitive group Autstrong\operatorname{Aut_{strong}} to IXXIIIXXI\ldots I, we get XIXIISXIXI\ldots I\in S with the same sign as IXXIIIXXI\ldots I. Multiplying these, we see that +XXIIS+XXI\ldots I\in S (with the positive sign added for emphasis). Then XIXIISXIXI\ldots I\in S, the product of the first two generators, has the same sign as IXXIISIXXI\ldots I\in S, so the transposition (12)(12) is in Autstrong\operatorname{Aut_{strong}} (it fixes the rest of the generators). Therefore Autstrong(C)M12\operatorname{Aut_{strong}}(C)\not=M_{12}, since M12M_{12} does not contain any transposition. This finishes the discussion of the complexity 2 case.

As in the proof regarding SnS_{n} or AnA_{n} automorphism group, transitivity of Autstrong(C)\operatorname{Aut_{strong}}(C) shows that SS cannot have complexity 3.

It remains to discuss the complexity 4 case. First, we show that there cannot be an element in SS with complexity 2. This argument essentially follows the above work where SS has complexity 2: given an element sSs\in S with complexity 2, we may reduce to a weight 2 element tSt\in S that only has II’s and one other Pauli matrix as tensor factors (say, XX). Then the same argument shows that SS would have to be generated by {XXII,IXXII,,IIXX}\{XXI\ldots I,IXXI\ldots I,\ldots,I\ldots IXX\} (by the k1k\geq 1 hypothesis). This is a contradiction to SS being complexity 4.

So there is an element in SS with complexity at least 3 (if all elements in SS had complexity 1, then Autstrong(C)S12M12\operatorname{Aut_{strong}}(C)\cong S_{12}\not=M_{12}). We claim that there is in fact an element in SS with complexity 4. Suppose the first three slots of sSs\in S are XIZXIZ (as usual, it doesn’t matter what order they are in, what slots they are in, or what Pauli matrices they are, as long as they are pairwise distinct). There are four possibilities:

  1. 1.

    ss, interpreted as a string of Pauli matrices, begins XIZIXIZI\ldots. By 5-transitivity of Autstrong(C)\operatorname{Aut_{strong}}(C) there is some sSs^{\prime}\in S that begins ZXIIZXII\ldots. Then their product ssss^{\prime} begins YXZIYXZI\ldots, the desired element of complexity 4.

  2. 2.

    ss begins XIZXXIZX\ldots. By 5-transitivity of Autstrong(C)\operatorname{Aut_{strong}}(C) there is some sSs^{\prime}\in S that begins IZXXIZXX\ldots. Then their product ssss^{\prime} begins XZYIXZYI\ldots, the desired element of complexity 4.

  3. 3.

    ss begins XIZZXIZZ\ldots. By 5-transitivity of Autstrong(C)\operatorname{Aut_{strong}}(C) there is some sSs^{\prime}\in S that begins IZXZIZXZ\ldots. Then their product ssss^{\prime} begins XZYIXZYI\ldots, the desired element of complexity 4.

  4. 4.

    ss begins XIZYXIZY\ldots. This already has complexity 4.

Therefore we may assume without loss of generality that ss has complexity 4, and that the first four tensor factors of ss are XZYIXZYI.

Now, we look at elements of N(S)SN(S)-S. By the bounds found at [6], N(S)SN(S)-S contains an element of weight at most 6. We turn to looking at the possibilities case by case:

  1. 1.

    Weight 1:

    1. (a)

      XIIN(S)XI\ldots I\not\in N(S) because it does not commute with ZIXYZIXY\ldots. A similar argument shows that YIIYI\ldots I, ZIIN(S)ZI\ldots I\not\in N(S).

  2. 2.

    Weight 2:

    1. (a)

      XXIIN(S)XXI\ldots I\not\in N(S) because it does not commute with ZIXYZIXY\ldots. A similar argument shows that YYIIYYI\ldots I, ZZIIN(S)ZZI\ldots I\not\in N(S).

    2. (b)

      XZIIN(S)XZI\ldots I\not\in N(S) because it does not commute with ZIXYZIXY\ldots. A similar argument shows that ZXII,XYII,YXII,YZII,ZYIIN(S)ZXI\ldots I,XYI\ldots I,YXI\ldots I,YZI\ldots I,ZYI\ldots I\not\in N(S).

  3. 3.

    Weights 3 through 6: it is easily seen that if gN(S)g\in N(S), then σ(g)N(σ(S))=N(S)\sigma(g)\in N(\sigma(S))=N(S) for σAutstrong(C)\sigma\in\operatorname{Aut_{strong}}(C) (the same argument works for Autweak(C)\operatorname{Aut_{weak}}(C), since in that case σ(S)\sigma(S) only differs from SS by signs). Then if gN(S)g\in N(S) has weight 3, 4, 5, or 6, we may reduce to an element gN(S)g^{\prime}\in N(S) of weight 2. This falls into the above case.

In all cases, we get a contradiction, so we are done.

Remark 3.4.

This method fails with M23M_{23} and M24M_{24}. We know that there is a [[23,1,7]][[23,1,7]] stabilizer code that at least has strong automorphism group M23M_{23}; this is the CSS code generated from the classical [23,12,7][23,12,7] Golay code (see section 7.15.4 of [9]. There should also be a [[24,0,8]][[24,0,8]] “code” that is the CSS code generated from the classical [24,12,8][24,12,8] extended Golay code.

One can use the same method to show the following:

Theorem 3.5.

There is no k1k\geq 1 stabilizer code with ambient space 211\mathbb{C}^{2^{11}} that has strong or weak automorphism group M11M_{11}.

The main difference is that reduction to a weight 2 element is now only valid for elements of weight at most 5. But luckily this does not pose a problem: 112=5\lfloor\frac{11}{2}\rfloor=5, so the arguments for complexity 2 elements still hold, and the bounds at [6] show that N(S)SN(S)-S for any stabilizing subgroup SG11S\subset G_{11} contains an element of weight at most 5, so the last casework step can be repeated. Every other step in the proof of Theorem 3.3 can be done using only 4-transitivity.

We end this paper by presenting some questions that naturally follow from topics discussed above.

Question 3.6.

Are Theorems 3.3 and 3.5 true if the k1k\geq 1 hypothesis is dropped?

Question 3.7.

Describe stabilizer codes CC with AutClif(C)Sn\operatorname{Aut_{Clif}}(C)\cong S_{n}. Replace SnS_{n} by AnA_{n} and the Mathieu groups, if possible.

Question 3.8.

Describe stabilizer codes CC with 3-transitive Autstrong(C)\operatorname{Aut_{strong}}(C) or Autweak(C)\operatorname{Aut_{weak}}(C). Replace “3-transitive” by “2-transitive”, “transitive”, and “cyclic” if possible.

Question 3.9.

Can a stabilizer code with trivial strong (resp. weak) automorphism group be arbitrarily good? That is, are there stabilizer codes with trivial strong (resp. weak) automorphism groups having arbitrarily large distance? Replace “trivial” with “cyclic” if possible.

References

  • [1] Beverley Bolt, T. G. Room, and G. E. Wall. On the clifford collineation, transform and similarity groups. i. Journal of the Australian Mathematical Society, 2(1):60–79, 1961.
  • [2] Beverley Bolt, T. G. Room, and G. E. Wall. On the clifford collineation, transform and similarity groups. ii. Journal of The Australian Mathematical Society, 2:80–96, 1961.
  • [3] A.R. Calderbank, E.M. Rains, P.W. Shor, and N.J.A. Sloane. Quantum error correction via codes over GF(4). pages 292–, 1997.
  • [4] Daniel Gottesman. Stabilizer codes and quantum error correction. PhD thesis, California Institute of Technology, May 1997.
  • [5] Daniel Gottesman. An introduction to quantum error correction and fault-tolerant quantum computation. 2009.
  • [6] Markus Grassl. Quantum error-correcting code tables. http://codetables.de, 2019. Accessed: 2021-08-08.
  • [7] Jeffrey A. Harvey and Gregory W. Moore. Moonshine, superconformal symmetry, and quantum error correction. Journal of High Energy Physics, 2020(5), May 2020.
  • [8] Michael A. Nielsen and Isaac L. Chuang. Quantum Computation and Quantum Information: 10th Anniversary Edition. Cambridge University Press, USA, 10th edition, 2011.
  • [9] John Preskill. Chapter 7 of notes on quantum computation. http://theory.caltech.edu/~preskill/ph229/notes/chap7.pdf.
  • [10] Peter W. Shor. Scheme for reducing decoherence in quantum computer memory. Phys. Rev. A, 52:R2493–R2496, Oct 1995.
  • [11] Eric W. Weisstein. Steiner quadruple system. https://mathworld.wolfram.com/SteinerQuadrupleSystem.html.

Appendix A SAGE Code for Computing Automorphism Groups

Here is some SAGE code using a brute-force method to calculate the strong and weak automorphism groups of a stabilizer code. Thanks to Dr. Daniel Bump for his major assistance in writing this program.

"""
SAGE Code for looking for automorphisms of stabilizer quantum error
correcting codes.
"""

# For reference, x,y,z = Pauli matrices
# h,s = Hadamard and Phase gates.

X = Matrix([[0,1],[1,0]])
Y = Matrix([[0,-i],[i,0]])
Z = Matrix([[1,0],[0,-1]])
H = Matrix([[1,1],[1,-1]])
S = Matrix([[1,0],[0,i]])

# The Pauli error group is defined by generators and relations:

FG.<x,y,z,j> = FreeGroup()
PE = FG/{j^4,x^2,y^2,z^2,x*y/x/y*j^2,y*z/y/z*j^2,z*x/z/x*j^2,x*j/x/j,y*j/y/j,
z*j/z/j,x*y/j/z,y*x*j/z,y*z/j/x,z*y*j/x,z*x/j/y,x*z*j/y}
PE.inject_variables()

def ca(a, split=False):
    """
    Canonical form for the Pauli Error group elements
    """
    for b in [PE.one(),x,y,z]:
        for k in [PE.one(),j,j^2,j^3]:
            if a == k*b:
                if split:
                    return [k,b]
                else:
                    return k*b
    return a

def emul(A,B,debug=False):
    """
    Multiplication for Pauli error group elements in canonical form
    """
    a0 = A[0]
    b0 = B[0]
    r0 = a0*b0
    rt = []
    for [t,u] in zip(A[1:],B[1:]):
        [p,q]=ca(t*u,split=True)
        r0 *= p
        if debug:
            print (t,u,p)
        rt.append(q)
    ret = [ca(r0)]
    for t in rt:
        ret.append(t)
    return ret

def eprod(M,n):
    """
    M is a subset of the stabilizer group S
    Returns the product of the elements of M.
    """
    ret = tuple((n+1)*[PE.one()])
    for m in M:
        ret = emul(ret,m)
    return list(ret)

def unpack(st):
    """
    Pauli error group elements may be represented by strings
    and unpacked by this function.

    sage: unpack("XYZZY")
    (1, x, y, z, z, y)
    """
    ret = [PE.one()]
    for c in st:
        if c == "X":
            ret.append(x)
        elif c == "Y":
            ret.append(y)
        elif c == "Z":
            ret.append(z)
        elif c == "I":
            ret.append(PE.one())
    return tuple(ret)

def pack(w):
    ret = ""
    for t in w[1:]:
        if t==PE.one():
            ret += "I"
        elif t==x:
            ret += "X"
        elif t==y:
            ret += "Y"
        elif t==z:
            ret += "Z"
    return ret

def Stabilizer(S):
    """
    Return the stabilizer group generated by a set of generators
    of the Pauli error group in string notation. The generators
    must commute and the generated group may not contain -I.
    """
    n = len(S[0])
    return [eprod(M,n) for M in Set(unpack(s) for s in S).subsets()]

def GenToArray(S):
    """
    Takes an array of generator strings and returns the same Pauli elements
    in standard form.
    """
    return [list(unpack(s)) for s in S]

StabTest = ["XXX", "YYI", "ZXZ"]
Stab513 = ["XZZXI","IXZZX","XIXZZ","ZXIXZ"]
Stab604 = ["IXZZXI","IIXZZX","IXIXZZ","IZXIXZ","XXXXXX","ZZZZZZ"]
Stab713 = ["IIIXXXX", "IXXIIXX", "XIXIXIX", "IIIZZZZ", "IZZIIZZ", "ZIZIZIZ"]
Stab833 = ["XIZIYZXY", "IXZZYXYI", "IZXIYYZX", "IZIYZXXY", "ZZZZZZZZ"]
Stab823 = ["XIZIYZXY", "IXZZYXYI", "IZXIYYZX", "IZZYZXZZ", "IIZIIIYX", "ZZZZZZZZ"]
Stab933 = ["XIZIYZXYI", "IXZZYXYII", "IZXIYYZXI", "IZIYZXXYI", "ZZZZZZZZI",
 "IIIIIIIIX"]
Stab1004 = ["XIIZXZXZII", "IXIIZXZXZI", "IIXIIZXZXZ", "ZIIXIIZXZX", "XZIIXIIZXZ",
 "ZXZIIXIIZX", "XZXZIIXIIZ", "ZXZXZIIXII", "IZXZXZIIXI", "IIZXZXZIIX"]
Stab1115 = ["ZZZZZZIIIII", "XXXXXXIIIII", "IIIZXYYYYXZ", "IIIXYZZZZYX",
 "ZYXIIIZYXII", "XZYIIIXZYII", "IIIZYXXYZII", "IIIXZYZXYII", "ZXYIIIZZZXY",
 "YZXIIIYYYZX"]

"""
StabTest should have Autweak=S3 and Autstrong=S2. Try using ListPerms function.
"""

def ListPerms(Gen):
    """
    Prints out permutations in weak and strong automorphism groups, as well as
    the sizes of the groups.
    Weak automorphism group is calculated first to improve efficiency.
    Input: List of strings with generators for stabilizing subgroup; e.g. Stab513
    """
    genList = GenToArray(Gen)
    C = Stabilizer(Gen)
    short_gen = [w[1:] for w in genList]
    short_code = [w[1:] for w in C]
    size = len(short_code[0])
    weakgroup = []
    stronggroup = []
    for p in Permutations(size):
        check = true
        for w in short_gen:
            if check == true:
                check = [w[p[i]-1] for i in range(size)] in short_code
            else:
                break
        if check == true:
            print(p)
            weakgroup.append(p)
    print("Size of weak automorphism group: " + str(len(weakgroup)))
    for p in weakgroup:
        check = true
        for w in genList:
            if check == true:
                check = ([w[0]]+[w[p[i]] for i in range(size)]) in C
            else:
                break
        if check == true:
            print(p)
            stronggroup.append(p)
    print("Size of strong automorphism group: " + str(len(stronggroup)))