# What is “code” in “toric code”?

When I first heard people talking about using Kitaev's toric code to do topological quantum computation, I was thinking how many lines does the toric code have. Then I was told that the "code" really represents quantum states. Later, I understood that the "code" is the degenerate ground subspace of a gapped Hamiltonian. But then I was corrected by people from quantum information who pointed out that code is a subspace of the Hilbert space of a quantum system, but code is also more than a subspace.

So now I am wondering what is "code"?

-
There is a link now provided by the editing. paragraph 2.2.1 seems to be using the definition of "code" as "The toric code is the simplest topological lattice model that supports Abelian anyons." I guess the word "code" is used as in "encode", a code encodes a specific model? –  anna v Jun 3 '12 at 6:44
Here we have yet another difinition of "code": "code" is a quantum qubit model. This is very different from "code" is a subspace. –  Xiao-Gang Wen Jun 3 '12 at 10:52
@anna - In my opinion this question is trying to imply subspace is logically similar to a qbit model and therefore mathematically predictable. –  Argus Jun 3 '12 at 17:01

Let me try to give you the answer in just the right amount of generality. A quantum code is just a short way to say a quantum error-correcting code. It is a special embedding of one vector space into another larger one that satisfies some additional properties. If we start with a Hilbert space $H$, then a code is a decomposition into $H = (A \otimes B) \oplus C$. The quantum information is encoded into system $A$. In the event that $B$ is trivial, then indeed this is just a subspace of $H$. When $B$ is nontrivial, we say call it a subsystem code. Let's specialize to the case of $n$ qubits, so that $H = (\mathbb{C}^2)^{\otimes n}$, and it is easiest to imagine that the dimensions of $A$, $B$, and $C$ are all powers of 2, though of course this discussion could be generalized.

Let $P$ be the orthogonal projector onto $A\otimes B$, and let $\mathcal{E}$ be an arbitrary quantum channel, i.e. a completely positive trace preserving linear map. We say that $\mathcal{E}$ is recoverable if there exists another quantum channel $\mathcal{R}$ such that for all states $\rho_A \otimes \rho_B$, we have $$\mathcal{R}\circ\mathcal{E}(\rho_A \otimes \rho_B) = \rho_A \otimes \rho'_B,$$ where $\rho'_B$ is arbitrary. This says that for any state which is supported on $A\otimes B$ and is initially separable, we can reverse the effects of $\mathcal{E}$ up to a change on system $B$.

Fortunately, there are simpler equivalent conditions that one can check instead. For example, an equivalent condition can be stated in terms of the Kraus operators $E_j$ for the channel $\mathcal{E}$. The subsystem $A$ is correctable for $\mathcal{E}(\rho) = \sum_j E_j \rho E_j^\dagger$ if an only if for all $i,j$, there exists a $g^{ij}_B$ on subsystem $B$ such that $$P E_i^\dagger E_j P = 1\hspace{-3pt}\mathrm{l}_A \otimes g^{ij}_B.$$ You can interpret this condition as saying that no error process associated to the channel $\mathcal{E}$ can gain any information about subsystem $A$.

Consider error channels which consist of Kraus operators that, when expanded in the Pauli basis, only have support on at most $d$ of the $n$ qubits in our Hilbert space. If every such channel is correctable for subsystem $A$, then we say our code has distance $d$. The largest such $d$ is called the distance of the code. For the toric code, this is the linear size of the lattice.

-
Thanks for the detailed description of "code". According your description, "code" is a subspace, but "cude" also has something more. It is still not very clear what is "code". If "code" is subspace + something, then what is this "something". You explained why code is important for error correction in quantum computation, which is very nice. But do we have a straight forward definition of "code"? –  Xiao-Gang Wen Jun 7 '12 at 11:22
A code is simply the decomposition $H = (A \otimes B)\oplus C$. By itself, this is too general to be interesting. Therefore, people only emphasize that something is a code when it has additional properties. For example, people call it the "toric code" because it can correct quantum errors. The simple 2D ferromagnetic Ising model is also a code... but it only encodes a single classical bit, and corrects no quantum errors. So you will never hear people talk about the "Ising code". Sorry if the answer is disappointing, but it is really just that decomposition! –  Steve Flammia Jun 8 '12 at 2:46

In general a "code" in quantum information is a collection of "codewords". One takes a (relatively large) number of physical qubits and considers only a limited number of states (i.e. a low-dimensional subspace) out of the full Hilbert space (formally, the code is the subspace). For stabilizer codes, all of these states are ground states of some gapped hamiltonian. Because there is a good deal of redundancy, the system is more robust against errors and decoherence.

Perhaps a clearer example would be the repetition code. Say you have six qubits, but you restrict yourself to the subspace spanned by $$\{|000,000\rangle,|000,111\rangle,|111,000\rangle,|111,111\rangle\}.$$ You can then think of these long combinations as "codewords" for the logical states $$\{|00\rangle,|01\rangle,|10\rangle,|11\rangle\},$$ but they can still be recognized if any given qubit suffers some error.

-
Thanks for the intuitive and pictorial explain of code. But I still like to know what is "code" exactly. If "code" is subspace + something, then what is this "something". Or maybe the "code" is just a subspace with nothing more (?). –  Xiao-Gang Wen Jun 7 '12 at 11:24

Steve and Emilio have provided nice technical descriptions of how a quantum error correcting code is defined. I thought it worth adding where the terminology comes from and how quantum codes and Hamiltonians are connected.

The toric code is called a code because it is a quantum error correcting code.

Quantum error correcting codes are quantum analogues of error correcting codes - used widely in classical computer science to represent information redundantly to protect it from noise and errors. Error correcting codes are used extensively in digital communications technology (e.g. mobile phones) and have a long history (and thus a rich jargon!).

Quantum error correcting codes were developed as an analogue of these to protect quantum information (e.g. qubits) from quantum errors. They share much of the structure of classical codes, and have inherited much of the terminology of that field. The principle difference with a quantum code is that one must consider non-commuting errors (typically Pauli $X$ and Pauli $Z$ errors) and use quantum measurements to detect those errors.

The connection between quantum codes and Hamiltonians - two, at first sight, utterly different concepts - arises because quantum measurement operators are Hermitian, and thus one can construct Hamiltonians out of sets of measurement operators.

In typical quantum codes, the error detection operators are (tensor products of) Pauli operators, with eigenvalues +1 and -1. The +1 outcome is normally interpreted as "no error", whereas the -1 outcome represents an error. If we label our error detection operators $S_k$ where $k$ is an integer index, then error free states are joint +1 eigenstates of $S_k$ for all $k$. In most quantum error correcting codes and, in particular, in the toric code, the operators $S_k$ all commute. Since they are a set of commuting Hermitian operators, we can construct a Hamiltonian

$$H = -\Delta \sum_k S_k$$

where $\Delta$ is a non-negative parameter. The ground states of $H$ are precisely the error-free states of the quantum code. The higher energy states of $H$ correspond to code states with one or more errors.

The toric code can therefore be though of as a quantum error code that encodes and protects two quantum bits of information from quantum errors, but (through the Hamiltonian it defines) also a Hamiltonian model with a rich Physics.

-