open-standards/wai/wai-quantum/README.md
Transaction Science f0591f1bc3
Some checks failed
standards workspaces build + test / aac-rs (push) Successful in 37s
standards workspaces build + test / joule-code-rs (push) Successful in 47s
standards workspaces build + test / jouleclaw-rs (push) Successful in 2m34s
standards workspaces build + test / joulecontract-rs (push) Successful in 39s
no-vanity-metrics / Scan committed Markdown for vanity metrics (push) Has been cancelled
standards workspaces build + test / arl-rs (push) Has been cancelled
standards workspaces build + test / eoc-rs (push) Has been cancelled
standards workspaces build + test / jcp-rs (push) Has been cancelled
standards workspaces build + test / joule-ui-rs (push) Has been cancelled
standards workspaces build + test / jouledesk-rs (push) Has been cancelled
standards workspaces build + test / joulehook-rs (push) Has been cancelled
standards workspaces build + test / mesh-rs (push) Has been cancelled
standards workspaces build + test / openpay (push) Has been cancelled
standards workspaces build + test / proof-rs (push) Has been cancelled
standards workspaces build + test / sandbox-rs (push) Has been cancelled
standards workspaces build + test / sense-rs (push) Has been cancelled
standards workspaces build + test / smart-byte-rs (push) Has been cancelled
WAI conformance / cargo-class corpora · linux (push) Has been cancelled
WAI conformance / cargo-class corpora · linux-arm64 (push) Has been cancelled
WAI conformance / cargo-class corpora · macos (push) Has been cancelled
WAI conformance / cargo-class corpora · windows (push) Has been cancelled
WAI conformance / cross-arch byte-equality · linux (push) Has been cancelled
WAI conformance / cross-arch byte-equality · linux-arm64 (push) Has been cancelled
WAI conformance / cross-arch byte-equality · macos (push) Has been cancelled
WAI conformance / cross-arch byte-equality · windows (push) Has been cancelled
WAI conformance / C2PA manifest emission · signed, read back, validated (push) Has been cancelled
standards workspaces build + test / map-rs (push) Has been cancelled
wai-quantum 0.3.21: test the cross-architecture claim instead of asserting it
The crate description has long promised "identical results native, in the
browser, and as a WASI component at the edge". That was last checked around
0.3.3, and everything since -- quantum_source's f64 Jacobi eigensolver and its
hand-rolled log2, quantum_channel, the qudit and comm layers -- landed without it
being rechecked. I had also flagged, and not closed, that the entropy
reproducibility test only proved one machine agreed with itself.

Both are now closed, and the result is stronger than expected: the ENTIRE suite
passes under wasm32-wasip2 on wasmtime, 266 tests, not merely a sample.

  CARGO_TARGET_WASM32_WASIP2_RUNNER=wasmtime \
    cargo test --release --target wasm32-wasip2 --features full

Thirteen CLI invocations were also compared byte-for-byte between native
aarch64-darwin and the wasm component, covering the integer dyadic core, the f64
entropy and channel paths, CHSH, qutrits, BB84 and an Ed25519 receipt. All
identical -- including JSON that prints full-precision f64 such as
1.000000000824584, so this is bit-identical floating point rather than agreement
after rounding.

To keep it closed, two tests now pin exact IEEE-754 bits rather than tolerances:
the maximally mixed case, and -- because equal eigenvalues barely exercise the
eigensolver -- a half-depolarized |+> whose spectrum is genuinely non-trivial,
along with its Holevo bound. A platform that computes something different now
fails the suite instead of quietly returning a different number.

This is what avoiding libm bought. `ln` is free to differ in its last places
between platforms; computing log2 in-crate by repeated squaring is what makes the
bits agree, and that is now demonstrated rather than argued.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-10 12:01:42 -04:00

119 lines
7.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# wai-quantum
A **deterministic quantum stack in pure Rust**. Byte-exact circuit simulation,
the operational layer around it, and signed energy-accounted receipts binding
every stage.
No QPU, no cloud service, no vendor SDK, and **no system libraries** — so the
same source runs natively, in the browser via wasm, and as a WASI component at
the edge, producing **byte-identical results and receipts on all three**.
```toml
[dependencies]
wai-quantum = "0.3"
```
```rust
use wai_quantum::quantum::Circuit;
use wai_quantum::quantum_toolchain as qt;
let mut c = Circuit::new(3);
c.h(0).cx(0, 1).cx(1, 2); // GHZ
let sv = c.simulate().unwrap();
println!("{:?}", qt::top_outcomes(&sv, 2)); // |000> 0.5, |111> 0.5
// a portable identity for the reconstruction — same on every machine
let h: [u8; 32] = sv.statevector_hash();
```
## What's in it
| Feature | What it gives you |
|---|---|
**Cross-architecture reproducibility is tested, not asserted.** The full test
suite passes under `wasm32-wasip2` on wasmtime as well as natively, and the
floating-point results — entropy, the Holevo bound — are pinned to their exact
IEEE-754 bits, so a platform that computes something different fails the suite
instead of quietly returning a different number:
```text
CARGO_TARGET_WASM32_WASIP2_RUNNER=wasmtime cargo test --release --target wasm32-wasip2 --features full
```
The same binary answers what a state *carries*, not only what a circuit does:
```text
wai-quantum entropy bell --keep 0 # half a Bell pair: 1 bit, invisible to a state vector
wai-quantum channel depolarizing --prob 0.5
wai-quantum bb84 --eavesdrop # interception shows up in the error rate
wai-quantum chsh # 2 sqrt(2), exactly, not sampled
wai-quantum qutrit # d = 3, not just qubits
```
`channel` prints the Holevo bound before and after, and it can only fall: noise
never creates information.
| `quantum` | byte-exact statevector simulation (dyadic Clifford+T+P(k)) |
| `quantum_toolchain` | algorithm library, backend recommendation, **OpenQASM 2/3 ingest of what the mainstream toolchains actually export** — both register and both measurement spellings, `rx`/`ry`/`rz`/`sx`/`u`/`u2`/`u3`/`crz`, and exact rational-multiple-of-pi angles (non-dyadic angles are refused, never rounded) — Bloch / entanglement / purity analysis |
| `quantum_stabilizer` | stabilizer (CHP) tableau — `O(n²)`, scales far past statevector |
| `quantum_mps` | tensor-network (matrix-product-state) backend |
| `quantum_pauli` | sparse-Pauli / Heisenberg observable propagation |
| `quantum_receipt` | signed, energy-accounted receipt over a reconstruction |
| `quantum_ops` | the operations/attestation layer |
| `quantum_cal`, `quantum_control`, `quantum_noise` | calibration, filter-function robust control, DD noise spectroscopy, Cycle-Benchmarking noise learning |
| `quantum_mitigate` | zero-noise extrapolation, readout M3, classical shadows |
| `quantum_qec` | CSS codes (distance verified by exhaustive search, not asserted) — **rotated surface** `[[d²,1,d]]`, toric, bivariate-bicycle, and the **`[[7,1,3]]` colour code**, whose self-duality buys a *transversal* logical Hadamard — one round, no ancillas, no surgery — verified on the simulator, with the surface code shown failing the same move — with **two decoders**: union-find (weighted matching, single-shot, space-time with faulty measurement, **and circuit-level with hook errors**; **imports and exports** Stim-syntax detector error models, so other tools' noise models decode here and ours decode there) and Relay-BP (for qLDPC) |
| `quantum_compile` | Clifford routing + stabilizer-tableau equivalence proof |
| `quantum_atom` | neutral-atom register preparation (Hungarian / LSAP) |
| `quantum_qir` | **QIR export + ingest** — emit and parse QIR (the QIR Alliance's LLVM-based IR); emitted modules validated with `llvm-as`, and 9 of 10 catalog algorithms re-ingest to a bit-identical statevector |
| `quantum_comm` | **key distribution and security**: BB84 with an intercept-resend eavesdropper (a quiet channel gives a perfect key; interception costs a quarter of it), and the no-cloning theorem priced |
| `quantum_qudit` | **qubits and qutrits**: the Weyl–Heisenberg group, the Fourier gate over `Z_d`, the controlled sum — exact for `d = 2` and `3` |
| `quantum_info` | **mixed states**: density matrices, the partial trace, purity, exact Pauli expectations, and CHSH against the classical and Tsirelson bounds |
| `quantum_source` | **the limits on encoding and transport**: von Neumann entropy, the Schumacher limit, and the Holevo bound — which says `n` qubits carry at most `n` classical bits, so quantum does not compress classical media |
| `quantum_channel` | **transport itself**: Kraus channels (bit flip, dephasing, depolarizing, amplitude damping), and linear-inversion tomography to see what actually arrived — with the law that a channel can only *lose* information, never create it |
| `quantum_qbom` | Quantum Bill of Materials — stage receipts into one manifest |
| `quantum_vml`, `quantum_phasor`, `quantum_qfhrr`, `quantum_kernel`, `quantum_qdata`, `quantum_phasor_meter` | the interference / phasor ML layer |
| `full` | everything |
Default features are `quantum`, `quantum_toolchain`, `quantum_receipt`.
## Speed
Byte-exactness is the contract, so the simulator is optimised only in ways that
cannot move a single amplitude: identity does nothing, a diagonal gate phases half
the state with one multiply rather than four, and `X` — so `CX` — is a swap with no
arithmetic at all. `fxmul(ONE, x) == x` exactly in this fixed point, which is what
makes those paths provably identical rather than merely close, and they are checked
against the previous implementation amplitude by amplitude.
An all-real matrix — `H`, and any real rotation — halves its multiplies too, since
the imaginary cross terms are multiplications by exactly zero.
At 20 qubits that is 8.9x on `Z`, 7.1x on `X`, 4.6x on `CZ`, 4.3x on `CX`, 3.4x on
`T`, 1.9x on `Y` and 1.8x on `H`.
## Determinism
Simulation is **byte-exact**: amplitudes are dyadic fixed-point, so a circuit
reconstructs to the same `statevector_hash` on every machine and every target.
The approximate methods (MPS truncation, the phasor/ML layer) are
*reproducible f64* — IEEE-754-strict, identical given the same inputs and seed —
and are documented as such rather than claimed byte-exact.
A receipt separates the two halves of a cost honestly: **work** is
portable-exact (`n_ops · 2^n` amplitude updates, recomputed by the verifier, so a
sink cannot inflate it) and **energy** is measured-attested (only the signer can
vouch for its own silicon). Signatures travel between substrates because the
computation is reproducible — not because two runtimes agreed to trust each other.
## Also available
- A CLI (`wai-quantum` in the [`wai`](https://crates.io/crates/wai) crate) — run
circuits, emit OpenQASM, seal and verify receipts, native or under `wasmtime`.
- A WASI-HTTP component serving the stack as an ordinary HTTP handler.
- Browser demos and a course: <https://wai.transaction.science/quantum-ide>
## License
Apache-2.0