Toric Code

The purpose of this post is to explain what the toric code is, and its potential use as a fault-tolerant quantum error correcting stabilizer surface code for topological quantum computing.

To begin, consider an \(N\times N\) square lattice \(\Lambda\) with a qubit placed at each edge as follows:

The vertices of the lattice \(\Lambda\) are called stars \(S\) while its faces are called plaquettes \(P\) (which can also be viewed as the vertices of the dual lattice \(\Lambda^*\), etc.). Since \(\Lambda\) is an \(N\times N\) square lattice, one might initially think that there are \(2N(N+1)\) qubits; however the catch is that opposite ends of the lattice are identified with each other, so that there are in fact only \(2N^2\) qubits. More importantly, this imposition of periodic boundary conditions endows \(\Lambda\cong S^1\times S^1\) with the topology of a torus, hence the name “toric code”.

A priori, the state space \(\mathcal H\) of \(2N^2\) qubits has dimension \(\text{dim}\mathcal H=2^{2N^2}\) (though if some/all of these qubits are identical then it may be less than this). Using the notation \(\sigma_i^x\) as a shorthand for the operator \(1_1\otimes…\otimes 1_{i-1}\otimes\sigma^x\otimes 1_{i+1}\otimes…\otimes 1_{2N^2}\) acting on \(\mathcal H\) and similarly for \(\sigma_i^y\) and \(\sigma_i^z\), one can define star and plaquette four-body interaction operators \(A_S,B_P\) associated respectively to stars \(S\) or plaquettes \(P\) in \(\Lambda\) by:

\[A_S:=\prod_{i\in S}\sigma_i^z\]

\[B_P:=\prod_{i\in P}\sigma_i^x\]

where the notation “\(i\in S\)” denotes the set of \(4\) qubits nearest to a given star \(S\), and similarly for “\(i\in P\)”; the notation \(\prod_{i\in S}\) or \(\prod_{i\in P}\) does not suffer from any operator ordering ambiguity because Pauli operators on distinct qubits (regardless of their \(x,y,z\) nature) trivially commute.

For any two stars \(S,S’\), and any two plaquettes \(P,P’\), one can check (without any motivation yet at this point) that:

\[[A_S,A_{S’}]=[B_{P},B_{P’}]=[A_S,B_P]=0\]

Specifically, if the stars or plaquettes are well-separated from each other then these are always trivially true so it suffices to just check the “edge cases” so to speak when the stars or plaquettes are close enough to share qubits. Then, for each such shared qubit, one just has to apply the anticommutation relation \(\{\sigma^{\alpha},\sigma^{\beta}\}=2\delta^{\alpha\beta}1\). Notably, the commutation relation \([A_S,B_P]=0\) relies on the fundamental fact that a star \(S\) and plaquette \(P\) which are adjacent to each other always share only \(2\) qubits, and \(2\) is even so \((-1)^2=1\).

Finally, suppose one thinks of the lattice of qubits as a spin lattice such that the spins interact via the following Hamiltonian:

\[H=-\sum_{S\in\Lambda}A_S-\sum_{P\in\Lambda^*}B_P\]

From the above discussion, it follows that for any star \(S\) or plaquette \(P\), one has:

\[[H,A_S]=[H,B_P]=0\]

There are \(N^2\) stars and \(N^2\) plaquettes, so this would suggest that one is free to specify the however, using a “Stokes theorem” type of argument (basically a more refined version of earlier arguments for showing \([A_S,A_{S’}]=[B_P,B_{P’}]=0\)), one can convince oneself inductively (i.e. playing around with small \(N=1,2,…\) etc.) that it is precisely thanks to the toric topology of \(\Lambda\) that one has the constraints:

\[\prod_{S\in\Lambda}A_S=\prod_{P\in\Lambda^*}B_P=1\]

(not to be confused with the quantities in the Hamiltonian \(H\) which involve sums \(\sum\) rather than products \(\prod\)).

To emphasize again, this is why a torus is desirable…4-fold degeneracy in the ground state manifold of \(H\).

This entry was posted in Blog. Bookmark the permalink.

One Response to Toric Code

  1. Lily says:

    So fire…King William🫡

Leave a Reply

Your email address will not be published. Required fields are marked *