# What exactly is a subsystem code?

I'm sure I'm just tripping up on terminology here. I'm new to the wonderful field of QEC, and so far am familiar with the stabiliser formalism and basic codes such as the generic surface code. I keep seeing references in the [vast] literature to subsystem codes - what exactly is this referring to? What are they for / why are they useful?

This is a little opaque and references things like "gauges", which I do not understand (so a follow-up question would be, what do they mean by gauges and gauge qubits?)

I too find the various descriptions of subsystem codes a little more opaque than necessary.

At it's heart, a subsystem code is literally just a regular old "subspace" code with some forgetfulness. You start with your regular old subspace code and assert "I don't care about some of these logical qubits, they can vary freely". That's it, that's a subsystem code.

Take the Bacon-Shor code as an example: you have a $$d \times d$$ lattice of physical qubits and $$2(d-1)$$ independent stabilizer generators. That means you have $$k=d^2 - 2(d-1)$$ logical degrees of freedom. Of these logical degrees of freedom, only one has distance-$$d$$, and all the rest have distance-2 (at least for the usual factorization of the logical subspace).

Considered as a subspace code, the Bacon-Shor code is a $$[[d^2, d^2 - 2(d-1), 2]]$$ subspace code. But if I just allow all my distance-2 logical qubits to vary freely, and only consider the protection on the one distance-$$d$$ logical qubit, it's a $$[[d^2, 1, d]]$$ subsystem code.

The term "gauge qubits" refers to these distance-2 logical qubits you've decided not to worry about, and "gauges" are simply logical operators for those gauge qubits. Followup observation: since those logical qubits are distance-2, some of these gauges (by definition) are weight-2.

Edit: to follow up on your question of "but, why?" it turns out this forgetfulness is quite helpful. There is something deep about this even though it's so simple - for example, it allows you to measure a larger set of commuting stabilizers by instead measuring very small anti-commuting gauge operators. It also allows you to circumvent certain no-go theorems on code parameters under spatially local constraints. So even though it is a simple idea, it can have somewhat profound consequences.

• What a great answer, especially the added edit, thank you @squiggles! Regarding "Of these logical degrees of freedom, only one has distance-d, and all the rest have distance-2 (at least for the usual factorization of the logical subspace)", is there a reference/resource where I can read more about this? It seems like an obvious, basic fact that I've missed in my reading Mar 18 at 18:21
• Actually, I don't know of one specifically to this point. But there is an exercise I'd recommend. Consider the 3x3 Bacon-Shor code (if you're unfamiliar, you can look up the definition on wiki). That's 9 physical qubits and 4 stabilizers, so it has 5 logical degrees of freedom. One of these is the distance-3 degree of freedom... its logical operators are weight-3 strings of operators going across the lattice from left-to-right and top-to-bottom. Try to find the other four pairs of logical operators that commute with one another (but anti-commute as conjugate pairs of X/Z)! Mar 18 at 20:29
• ahh, I get what you meant now! Thank you so much!! Mar 18 at 20:49