The Pauli Group
The group generated by the Pauli matrices with phases, the algebraic backbone of stabilizer codes and error correction.
Definition
The single-qubit Pauli group P1 consists of the identity I and the three Pauli matrices X, Y, Z, each multiplied by one of the phases ±1, ±i — sixteen elements in all. The n-qubit Pauli group P_n is all tensor products of these with an overall phase. Elements either commute or anticommute, never anything in between.
Multiplication and phases
The core relations are X² = Y² = Z² = I and XY = iZ, YZ = iX, ZX = iY, with the anticommuting reverse products carrying -i. The phases ±i are essential to make the set closed under multiplication — this is why they are included in the group.
Commutation of tensor products
Two n-qubit Pauli strings commute if and only if they disagree (one is X-type, the other Z-type on that slot, roughly) on an even number of qubits; otherwise they anticommute. This binary rule is the entire arithmetic behind stabilizer-code parity checks.
Role in error correction
Stabilizer codes define a codespace as the simultaneous +1 eigenspace of a commuting subgroup of Pauli operators. Detectable errors are themselves Pauli operators, and whether an error is detected reduces to whether it commutes with each stabilizer generator. The Pauli group is thus the language of the entire stabilizer formalism.
import numpy as np
I=np.eye(2); X=np.array([[0,1],[1,0]])
Y=np.array([[0,-1j],[1j,0]]); Z=np.array([[1,0],[0,-1]])
# check anticommutation: XZ = -ZX
print(np.allclose(X@Z, -Z@X))
Connection to the Clifford group
The Clifford group is defined as the normalizer of the Pauli group: Clifford gates map Pauli strings to Pauli strings under conjugation. That property makes Clifford circuits classically simulable and is why adding a single non-Clifford gate (like T) is needed for universality. See Clifford+T synthesis.