ppvm / Pauli propagation & tableau simulation

Part of the Bloqade SDK · v0.1

ppvm

Rust 2024 Python ≥ 3.10 Source github.com/QuEraComputing/ppvm
paulisum_ghz.py · tested
from ppvm import PauliSum

state = PauliSum.new(n_qubits=2, terms=["ZZ"])

# Circuit is H(0); CNOT(0, 1) — propagate backwards.
state.cnot(0, 1)
state.h(0)

print(state)  # → 1.000 * IZ
print(state.overlap_with_zero())  # → 1.0

Pauli propagation moves observables backwards through the circuit, so gates are applied in reverse of the textbook order. Same idea in Python and Rust.

i. Noisy QEC

QEC circuits under realistic noise

Depolarizing, Pauli-error, and atom-loss channels through deep stabilizer circuits. Loss is a first-class concept, not bolted on after the fact.

ii. At scale

Past state-vector limits

Both backends scale past the comfort zone of state-vector simulation. The generalized tableau handles hundreds of qubits when non-Clifford weight stays modest; Pauli propagation scales by truncating low-magnitude terms.

iii. Hardware-aware

Matches the device

Noise models, loss channels, and gate sets mirror what QuEra's neutral-atom devices actually do — built to shorten the loop between paper circuit and machine.

§ 2Install

We recommend uv for managing your Python environment. The native extension compiles automatically on install.

uv add git+https://github.com/QuEraComputing/ppvm.git#subdirectory=ppvm-python
Continue to the Python Quick Start →

Continue to the Quick Start, read the Developer Guide, or browse the API Reference.