Pauli Propagation: The Method That Simulated IBM's 127-Qubit Experiment on a Laptop
· 4 min read · ZKSF team
When IBM published its 127-qubit 'utility beyond classical' experiment in Nature in 2023, the most consequential rebuttal did not come from a supercomputer. It came from a laptop, running a technique much of the field had not yet encountered directly: Pauli propagation.
The sweep starts at a Z measurement on one qubit and walks backward through the circuit, gate by gate, the Heisenberg picture. Clifford gates (H, CNOT) just move or spread that observable's support onto neighboring qubits. The one non-Clifford gate, a T gate, is the only place a single Pauli string splits into two, here into two equal-magnitude terms, +1/√2 and -1/√2. Only 3 of the 6 qubits shown are actually in this observable's backward light cone; the rest are shown dimmed for scale, since they never interact with it. In a deep circuit with many T gates, most of the resulting terms end up negligibly small and get discarded, which is what keeps this method tractable at 100+ qubits.
The method is a change of perspective. Standard simulation evolves the state forward through a circuit, the Schrodinger picture, at a cost of 2^n memory. Pauli propagation evolves the measurement backward instead, the Heisenberg picture: starting from the observable of interest, for example the Z operator on qubit 60, and tracking how each gate transforms it while walking from the end of the circuit to the beginning.
Any observable can be written as a weighted sum of Pauli strings, tensor products of I, X, Y, and Z. Gates map Pauli strings to Pauli strings, sometimes one-to-one for Clifford gates, sometimes splitting one string into several for T gates and arbitrary rotations. The simulation is bookkeeping over this evolving sum, and the result is the coefficient of the identity term once the initial state is reached.
The truncation argument
Left unchecked, the number of Pauli strings grows exponentially with non-Clifford circuit depth. The method's core assumption is that most terms do not matter in practice: coefficients spread thin across the sum, and strings with small weight contribute negligibly to the final expectation value. Discarding terms below a threshold collapses the computational cost while leaving accuracy largely unaffected for shallow, structured circuits, and the discarded coefficient mass is a measurable quantity, giving the method a built-in accuracy statement.
Physical noise strengthens this argument rather than weakening it. Noise damps precisely the long, high-weight Pauli strings that are expensive to track, so a noisier target device makes the truncation a better approximation of it, not a worse one. A method aimed at matching real hardware output becomes more accurate as the hardware becomes noisier. This is a structural reason 'beyond classical' claims on noisy hardware have repeatedly failed to hold.
Regime Pauli propagation behavior
Shallow, structured circuit few high-weight strings, fast, accurate
Deep, dense circuit string count grows sharply, cost rises
Noisy hardware target noise damps long strings, truncation improvesWhere the method fits
Pauli propagation is well suited to expectation values of shallow-to-moderate-depth circuits at large qubit counts, the 100 to 200-qubit regime frequently cited in hardware marketing. Its limits are equally specific: it estimates observables rather than full output distributions, deep circuits cause the string count to grow sharply, and any accuracy claim should be reported alongside the truncated-mass accounting.
The method is also comparatively young; reference implementations are research code, only a few years old, with clear room for engineering improvement. That is the motivation for productizing it here with the same convergence-check discipline already applied to the tensor-network engine: a technique that answered a Nature paper's claim deserves a production implementation, and its 100 to 200-qubit regime belongs behind the same three-line SDK call as every other engine.
How to reproduce a 192-qubit result for a tenth of a cent
The claim is easy to check yourself. A 192-qubit GHZ state measured with an all-Z observable has an analytically exact expectation value of +1, far past the roughly 34-qubit ceiling of any statevector simulator. The pauli.cpu engine returns exactly +1, with a certified ZCC-v0.1 error bound of 0 because no Pauli terms were truncated. The run finishes in under a minute and costs $0.001, a tenth of a cent, at the standard rate.
import qsim_sdk
from qiskit import QuantumCircuit
n = 192
qc = QuantumCircuit(n)
qc.h(0)
for i in range(n - 1):
qc.cx(i, i + 1) # a 192-qubit GHZ state
client = qsim_sdk.Client(token="YOUR_TOKEN")
job = client.run(qc, engine="pauli.cpu", observable=[[1.0, "Z" * n]])
print(job["result"]["expectation"]) # 1.0, certified error bound 0The result carries a public certificate, verifiable without an account at api.zksf.org/certify/5b8b2c4309d44d41.
Run your own 100-qubit circuit, with an error bar.