Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions crates/ppvm-pauli-sum/README.md
Original file line number Diff line number Diff line change
@@ -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).
2 changes: 1 addition & 1 deletion crates/ppvm-pauli-sum/src/lib.rs
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
20 changes: 20 additions & 0 deletions crates/ppvm-pauli-word/README.md
Original file line number Diff line number Diff line change
@@ -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).
20 changes: 20 additions & 0 deletions crates/ppvm-stim/README.md
Original file line number Diff line number Diff line change
@@ -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).
20 changes: 20 additions & 0 deletions crates/ppvm-sym/README.md
Original file line number Diff line number Diff line change
@@ -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).
20 changes: 20 additions & 0 deletions crates/ppvm-tableau-sum/README.md
Original file line number Diff line number Diff line change
@@ -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).
20 changes: 20 additions & 0 deletions crates/ppvm-tableau/README.md
Original file line number Diff line number Diff line change
@@ -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).
22 changes: 22 additions & 0 deletions crates/ppvm-traits/README.md
Original file line number Diff line number Diff line change
@@ -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).
20 changes: 20 additions & 0 deletions crates/ppvm-tui/README.md
Original file line number Diff line number Diff line change
@@ -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).
20 changes: 20 additions & 0 deletions crates/ppvm-vihaco/README.md
Original file line number Diff line number Diff line change
@@ -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).
22 changes: 22 additions & 0 deletions crates/stim-parser/README.md
Original file line number Diff line number Diff line change
@@ -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).
20 changes: 20 additions & 0 deletions crates/vihaco-circuit-isa/README.md
Original file line number Diff line number Diff line change
@@ -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).
Loading