Skip to content

taeruh/pauli_tracker

Repository files navigation

Pauli Tracker

Crates.io Documentation Codecov Dependency status (Rust crate)
PyPI.org docs (Python package)

A library to track Pauli gates through Clifford circuits.

What is Pauli tracking

The Pauli group is invariant under the conjugation of Clifford operations. This means that, in a circuit which consists only of Clifford operators and measurements, the Pauli gates can be "pushed" to the end of the circuit, just before the measurements. The benefit of this is that the Pauli gates don't have to be executed on a quantum computer and can instead be accounted for by post-processing of the measurement outcomes. The whole process is very similar to stabilizer simulations. Additionally, the information captured by doing the Pauli tracking during compilation can be used for certain optimizations in measurement-based quantum computing (MBQC).

For more details about the Pauli and Clifford groups and Pauli tracking, please look into the literature, e.g.,:

Conjugation rules lists the conjugation rules for the Clifford operations provided by the library (with proofs) and also contains some useful theory related to Pauli tracking.

What this library does

This library does not provide a quantum simulator. Instead it only provides tools to track the Pauli operators through the circuit, while compiling the circuit or while simulating the circuit.

The project is foremost a Rust library providing the pauli_tracker crate. It's a generic and hopefully flexible library which allows you to choose different core data structures fitted to the problem you want to solve.

However, we also have Python package that wraps the basic functionality for easy use from Python. Note that this wrapper might randomly miss some important functionality because we just forgot to wrap it. In that case, please open an issue or a pull request.

Examples

For example code, please look into the crate documentation and maybe also at the Python documentation.

Related projects

  • mbqc_scheduling: Using the Pauli tracking information to solve a scheduling problem in measurement-based quantum computing, that is, when to initialize and when to measure which qubit for space-time optimality.

Issues and Contributing

Don't hold back with issues, I need some feedback at the current stage. Contributions are very welcome, e.g., if you find bugs or need additional Clifford gates. Check out the contributing guidelines.

How to cite

When you use this library in research, please cite this paper:

@misc{ruh2024quantum,
  title={Quantum Circuit Optimisation and {MBQC} Scheduling with a {Pauli} Tracking Library}, 
  author={Jannis Ruh and Simon Devitt},
  year={2024},
  eprint={2405.03970},
  archivePrefix={arXiv},
  primaryClass={quant-ph}
}

and/or this project:

@misc{pauli_tracker_software,
  author = {{Pauli-Tracker contributors}},
  title = {Pauli tracker: A library to track {Pauli} gates through {Clifford} circuits},
  note = {avalaible at \url{https://github.com/taeruh/pauli_tracker}},
  year = {2024},
}

License

The Pauli Tracker project is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT.

About

No description, website, or topics provided.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published