diff --git a/crates/ppvm-pauli-sum/README.md b/crates/ppvm-pauli-sum/README.md new file mode 100644 index 000000000..78451b30a --- /dev/null +++ b/crates/ppvm-pauli-sum/README.md @@ -0,0 +1,20 @@ +# ppvm-pauli-sum + +Pauli-propagation engine for ppvm: `PauliSum`, truncation strategies, and ready-made `Config` bundles. A `Config` built on `LossyPauliWord` makes `PauliSum` track qubit loss. + +You start from an observable and apply the circuit's gates to it in reverse order (Heisenberg picture), then evaluate the result against an initial state. The number of terms can grow quickly, so truncation strategies such as `MaxPauliWeight`, `CoefficientThreshold` and `MaxLossWeight` drop terms as you go. `CombinedStrategy` applies two of them in sequence. + +Part of [ppvm](https://github.com/QuEraComputing/ppvm), the Programmable Pauli Virtual Machine. + +## Usage + +```sh +cargo add ppvm-pauli-sum +``` + +- [Documentation](https://queracomputing.github.io/ppvm/) +- [API reference](https://docs.rs/ppvm-pauli-sum) + +## License + +Apache-2.0. See [LICENSE](https://github.com/QuEraComputing/ppvm/blob/main/LICENSE) and [NOTICE](https://github.com/QuEraComputing/ppvm/blob/main/NOTICE). diff --git a/crates/ppvm-pauli-sum/src/lib.rs b/crates/ppvm-pauli-sum/src/lib.rs index 097ba4adb..98031f0d2 100644 --- a/crates/ppvm-pauli-sum/src/lib.rs +++ b/crates/ppvm-pauli-sum/src/lib.rs @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2026 The PPVM Authors // SPDX-License-Identifier: Apache-2.0 -//! `PauliSum` / `LossyPauliSum` Pauli-propagation engine, truncation +//! `PauliSum` Pauli-propagation engine, truncation //! strategies, and pre-built `Config` bundles. Built on `ppvm-traits` and //! `ppvm-pauli-word`. pub mod config; diff --git a/crates/ppvm-pauli-word/README.md b/crates/ppvm-pauli-word/README.md new file mode 100644 index 000000000..12a1412df --- /dev/null +++ b/crates/ppvm-pauli-word/README.md @@ -0,0 +1,20 @@ +# ppvm-pauli-word + +Packed Pauli-string types for the ppvm simulators: `PauliWord`, `PhasedPauliWord`, `LossyPauliWord` and `PauliPattern`. + +`PhasedPauliWord` carries a phase alongside the word. `LossyPauliWord` adds an `L` symbol for a lost qubit. `PauliPattern` matches sets of words; for example, `Z?*` matches any word made of `I` and `Z`. + +Part of [ppvm](https://github.com/QuEraComputing/ppvm), the Programmable Pauli Virtual Machine. + +## Usage + +```sh +cargo add ppvm-pauli-word +``` + +- [Documentation](https://queracomputing.github.io/ppvm/) +- [API reference](https://docs.rs/ppvm-pauli-word) + +## License + +Apache-2.0. See [LICENSE](https://github.com/QuEraComputing/ppvm/blob/main/LICENSE) and [NOTICE](https://github.com/QuEraComputing/ppvm/blob/main/NOTICE). diff --git a/crates/ppvm-stim/README.md b/crates/ppvm-stim/README.md new file mode 100644 index 000000000..58dd3804f --- /dev/null +++ b/crates/ppvm-stim/README.md @@ -0,0 +1,20 @@ +# ppvm-stim + +Parse and run [Stim](https://github.com/quantumlib/Stim) circuits on the ppvm `GeneralizedTableau`. + +Parse a circuit once with `parse_extended`, then run a single shot with `execute` or many with `sample`. Parsing is done by `stim-parser`, so circuits can also use ppvm's extensions for non-Clifford gates, qubit loss and leakage. The optional `rayon` feature parallelises multi-shot sampling. + +Part of [ppvm](https://github.com/QuEraComputing/ppvm), the Programmable Pauli Virtual Machine. + +## Usage + +```sh +cargo add ppvm-stim +``` + +- [Documentation](https://queracomputing.github.io/ppvm/) +- [API reference](https://docs.rs/ppvm-stim) + +## License + +Apache-2.0. See [LICENSE](https://github.com/QuEraComputing/ppvm/blob/main/LICENSE) and [NOTICE](https://github.com/QuEraComputing/ppvm/blob/main/NOTICE). diff --git a/crates/ppvm-sym/README.md b/crates/ppvm-sym/README.md new file mode 100644 index 000000000..b03e2a179 --- /dev/null +++ b/crates/ppvm-sym/README.md @@ -0,0 +1,20 @@ +# ppvm-sym + +Symbolic, parametric Pauli propagation for ppvm. + +Coefficients are `Term`s: polynomials in sines and cosines of symbolic parameters. A parametric circuit, such as a variational ansatz, can be propagated once and then evaluated at many concrete angles. + +Part of [ppvm](https://github.com/QuEraComputing/ppvm), the Programmable Pauli Virtual Machine. + +## Usage + +```sh +cargo add ppvm-sym +``` + +- [Documentation](https://queracomputing.github.io/ppvm/) +- [API reference](https://docs.rs/ppvm-sym) + +## License + +Apache-2.0. See [LICENSE](https://github.com/QuEraComputing/ppvm/blob/main/LICENSE) and [NOTICE](https://github.com/QuEraComputing/ppvm/blob/main/NOTICE). diff --git a/crates/ppvm-tableau-sum/README.md b/crates/ppvm-tableau-sum/README.md new file mode 100644 index 000000000..7c1a09ab3 --- /dev/null +++ b/crates/ppvm-tableau-sum/README.md @@ -0,0 +1,20 @@ +# ppvm-tableau-sum + +Sums of generalized stabilizer tableaux for ppvm. + +`GeneralizedTableauSum` represents a state as a weighted sum of `GeneralizedTableau`s. Measurement and noise split the state into branches; matching branches are merged and branches below a weight cutoff are dropped. Includes gates, measurement, noise channels and a `Sampler` for drawing shots. + +Part of [ppvm](https://github.com/QuEraComputing/ppvm), the Programmable Pauli Virtual Machine. + +## Usage + +```sh +cargo add ppvm-tableau-sum +``` + +- [Documentation](https://queracomputing.github.io/ppvm/) +- [API reference](https://docs.rs/ppvm-tableau-sum) + +## License + +Apache-2.0. See [LICENSE](https://github.com/QuEraComputing/ppvm/blob/main/LICENSE) and [NOTICE](https://github.com/QuEraComputing/ppvm/blob/main/NOTICE). diff --git a/crates/ppvm-tableau/README.md b/crates/ppvm-tableau/README.md new file mode 100644 index 000000000..cde537e08 --- /dev/null +++ b/crates/ppvm-tableau/README.md @@ -0,0 +1,20 @@ +# ppvm-tableau + +Generalized stabilizer-tableau simulator for ppvm. + +`Tableau` simulates Clifford circuits. `GeneralizedTableau` adds non-Clifford gates by tracking a sparse vector of coefficients over bitstrings, so circuits with few non-Clifford gates stay cheap. Both evolve forward in circuit order (Schrödinger picture) and support measurement and Pauli and depolarizing noise. `GeneralizedTableau` also computes expectation values and models qubit loss and leakage. The optional `rayon` feature parallelises parts of the simulation. + +Part of [ppvm](https://github.com/QuEraComputing/ppvm), the Programmable Pauli Virtual Machine. + +## Usage + +```sh +cargo add ppvm-tableau +``` + +- [Documentation](https://queracomputing.github.io/ppvm/) +- [API reference](https://docs.rs/ppvm-tableau) + +## License + +Apache-2.0. See [LICENSE](https://github.com/QuEraComputing/ppvm/blob/main/LICENSE) and [NOTICE](https://github.com/QuEraComputing/ppvm/blob/main/NOTICE). diff --git a/crates/ppvm-traits/README.md b/crates/ppvm-traits/README.md new file mode 100644 index 000000000..9571b9fee --- /dev/null +++ b/crates/ppvm-traits/README.md @@ -0,0 +1,22 @@ +# ppvm-traits + +Core traits shared by the ppvm crates: the `Config` trait, the single-qubit `Pauli` alphabet, and the `ACMap`/`Trace` map implementations. + +`Config` is a compile-time bundle that fixes the storage, coefficient type, truncation strategy, hasher, Pauli-word representation and map for one `PauliSum` type. The other ppvm crates are generic over it, so choosing a configuration costs nothing at runtime. + +Most users will want a higher-level crate such as `ppvm-pauli-sum` or `ppvm-tableau` instead. + +Part of [ppvm](https://github.com/QuEraComputing/ppvm), the Programmable Pauli Virtual Machine. + +## Usage + +```sh +cargo add ppvm-traits +``` + +- [Documentation](https://queracomputing.github.io/ppvm/) +- [API reference](https://docs.rs/ppvm-traits) + +## License + +Apache-2.0. See [LICENSE](https://github.com/QuEraComputing/ppvm/blob/main/LICENSE) and [NOTICE](https://github.com/QuEraComputing/ppvm/blob/main/NOTICE). diff --git a/crates/ppvm-tui/README.md b/crates/ppvm-tui/README.md new file mode 100644 index 000000000..884df46d6 --- /dev/null +++ b/crates/ppvm-tui/README.md @@ -0,0 +1,20 @@ +# ppvm-tui + +Ratatui components and app state for the `ppvm` terminal UI. + +It provides widgets for the program listing, simulator state, measurement record and command line, plus a line editor. The crate does not own a terminal or run an event loop, so the components can be embedded in another ratatui app. The `ppvm` binary itself is in `ppvm-cli`. + +Part of [ppvm](https://github.com/QuEraComputing/ppvm), the Programmable Pauli Virtual Machine. + +## Usage + +```sh +cargo add ppvm-tui +``` + +- [Documentation](https://queracomputing.github.io/ppvm/) +- [API reference](https://docs.rs/ppvm-tui) + +## License + +Apache-2.0. See [LICENSE](https://github.com/QuEraComputing/ppvm/blob/main/LICENSE) and [NOTICE](https://github.com/QuEraComputing/ppvm/blob/main/NOTICE). diff --git a/crates/ppvm-vihaco/README.md b/crates/ppvm-vihaco/README.md new file mode 100644 index 000000000..e22482368 --- /dev/null +++ b/crates/ppvm-vihaco/README.md @@ -0,0 +1,20 @@ +# ppvm-vihaco + +Run [vihaco](https://crates.io/crates/vihaco) circuit programs on the ppvm simulators. + +It parses and compiles `.sst` programs to `.ssb` bytecode, and runs either form. `run_shots` runs many independent shots of a compiled program; with the optional `rayon` feature the shots run in parallel. This is the library behind the `ppvm` command-line tool in `ppvm-cli`. + +Part of [ppvm](https://github.com/QuEraComputing/ppvm), the Programmable Pauli Virtual Machine. + +## Usage + +```sh +cargo add ppvm-vihaco +``` + +- [Documentation](https://queracomputing.github.io/ppvm/) +- [API reference](https://docs.rs/ppvm-vihaco) + +## License + +Apache-2.0. See [LICENSE](https://github.com/QuEraComputing/ppvm/blob/main/LICENSE) and [NOTICE](https://github.com/QuEraComputing/ppvm/blob/main/NOTICE). diff --git a/crates/stim-parser/README.md b/crates/stim-parser/README.md new file mode 100644 index 000000000..56142f3bb --- /dev/null +++ b/crates/stim-parser/README.md @@ -0,0 +1,22 @@ +# stim-parser + +Parser for the [Stim](https://github.com/quantumlib/Stim) circuit format. + +It is written in pure Rust and does not depend on Stim, so you can parse, validate and print Stim circuits without the Stim C++ library or Python package. + +`parse` returns the standard Stim syntax tree. `parse_extended` also understands ppvm's extensions, written as Stim instruction tags, for non-Clifford rotations, qubit loss, correlated loss and leakage. Errors are reported as diagnostics that point into the source. A printer turns either tree back into canonical Stim text, and parsing the printed output gives the same tree. + +Part of [ppvm](https://github.com/QuEraComputing/ppvm), the Programmable Pauli Virtual Machine. + +## Usage + +```sh +cargo add stim-parser +``` + +- [Documentation](https://queracomputing.github.io/ppvm/) +- [API reference](https://docs.rs/stim-parser) + +## License + +Apache-2.0. See [LICENSE](https://github.com/QuEraComputing/ppvm/blob/main/LICENSE) and [NOTICE](https://github.com/QuEraComputing/ppvm/blob/main/NOTICE). diff --git a/crates/vihaco-circuit-isa/README.md b/crates/vihaco-circuit-isa/README.md new file mode 100644 index 000000000..6385b66fd --- /dev/null +++ b/crates/vihaco-circuit-isa/README.md @@ -0,0 +1,20 @@ +# vihaco-circuit-isa + +Quantum-circuit instruction set for the [vihaco](https://crates.io/crates/vihaco) virtual machine, used by ppvm. + +It defines the `Circuit` component that vihaco programs call into: Pauli and Clifford gates, `T`, single- and two-qubit rotations, `U3`, measurement and reset, Pauli and depolarizing noise, qubit loss and leakage, plus `Truncate` and `Trace`. This crate only describes the instructions; `ppvm-vihaco` executes them. + +Part of [ppvm](https://github.com/QuEraComputing/ppvm), the Programmable Pauli Virtual Machine. + +## Usage + +```sh +cargo add vihaco-circuit-isa +``` + +- [Documentation](https://queracomputing.github.io/ppvm/) +- [API reference](https://docs.rs/vihaco-circuit-isa) + +## License + +Apache-2.0. See [LICENSE](https://github.com/QuEraComputing/ppvm/blob/main/LICENSE) and [NOTICE](https://github.com/QuEraComputing/ppvm/blob/main/NOTICE).