Skip to main content

PyPI OS License: MIT CI Bindings codecov

MQT QuSAT - A Tool for Utilizing SAT in Quantum Computing

A tool for utilizing satisfiablity testing (SAT) techniques in quantum computing developed by the Chair for Design Automation at the Technical University of Munich based on methods proposed in:

  • [1] L. Berent, L. Burgholzer, and R. Wille. Towards a Satisfiability Encoding for Quantum Circuits. 2022.

QuSAT is part of the Munich Quantum Toolkit (MQT) and builds upon our quantum functionality representation (QFR).

The project is in active development and can currently be used to

  • Encode Clifford circuits in SAT
  • Check the equivalence of Clifford circuits using SAT

If you have any questions, feel free to contact us via quantum.cda@xcit.tum.de or by creating an issue on GitHub.

Towards a Satisfiability Encoding for Quantum Circuits

The results from the paper can be reproduced by first building the project as described below and then executing the resulting qusat_test executable in the build directory. In order to replicate the full range of results, the test/test_satencoder.cpp needs to be modified before building the project. The corresponding lines to be changed are marked with a // Paper Evaluation: comment.

Running the executable, produces several .json files containing the experimental data. The python script /results/visualizer.py can be used to plot the respective data.

Note that, as we use a randomized procedure to generate input data, the exact experimental data will slightly vary everytime the benchmarks are run. The experimental data used in the paper is available in /results directory.

System Requirements

Building (and running) is continuously tested under Linux, MacOS, and Windows using the latest available system versions for GitHub Actions. However, the implementation should be compatible with any current C++ compiler supporting C++17 and a minimum CMake version of 3.14.

The SMT Solver Z3 >= 4.8.3 has to be installed and the dynamic linker has to be able to find the library. This can be accomplished in a multitude of ways:

  • Under Ubuntu 20.04 and newer: sudo apt-get install libz3-dev
  • Under macOS: brew install z3
  • Alternatively: pip install z3-solver and then append the corresponding path to the library path (LD_LIBRARY_PATH under Linux, DYLD_LIBRARY_PATH under macOS), e.g. via
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(python -c "import z3; print(z3.__path__[0]+'/lib')")
    
  • Download pre-built binaries from https://github.com/Z3Prover/z3/releases and copy the files to the respective system directories
  • Build Z3 from source and install it to the system

Configuration and Build

To start off, clone this repository using

git clone https://github.com/cda-tum/qusat --recursive

Note the --recursive flag. It is required to also clone all the required submodules. If you happen to forget passing the flag on your initial clone, you can initialize all the submodules by executing git submodule update --init --recursive in the main project directory.

The project uses CMake as the main build configuration tool. Building a project using CMake is a two-stage process. First, CMake needs to be configured by calling

cmake -S . -B build -DBUILD_QUSAT_TESTS=ON -DZ3_ROOT=/path/to/z3/

This tells CMake to search the current directory . (passed via -S) for a CMakeLists.txt file and process it into a directory build (passed via -B). If your installation of Z3 is recent enough, the Z3_ROOT can typically be omitted.

After configuring with CMake, the library can be built by calling

cmake --build build

This tries to build the project in the build directory (passed via --build). Some operating systems and developer environments explicitly require a configuration to be set, which is why the --config flag is also passed to the build command. The flag --parallel <NUMBER_OF_THREADS> may be added to trigger a parallel build.

Reference

If you use our tool for your research, we would appreciate if you refer to it by citing the appropriate publication:

@inproceedings{berent2022sat,
      title={Towards a SAT Encoding for Quantum Circuits: A Journey From Classical Circuits to Clifford Circuits and Beyond}, 
      author={Lucas Berent and Lukas Burgholzer and Robert Wille},
      year={2022},
      booktitle={International Conference on Theory and Applications of Satisfiability Testing}
}

Metadata

Release files for mqt-qusat 0.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mqt-qusat 0.0.0
File Size Uploaded
mqt.qusat-0.0.0.tar.gz 1.3 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for mqt-qusat 0.0.0
File
mqt.qusat-0.0.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
mqt.qusat-0.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
mqt.qusat-0.0.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
mqt.qusat-0.0.0-cp310-cp310-macosx_10_15_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.15+ x86-64 Details
mqt.qusat-0.0.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
mqt.qusat-0.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
mqt.qusat-0.0.0-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
mqt.qusat-0.0.0-cp39-cp39-macosx_10_15_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.15+ x86-64 Details
mqt.qusat-0.0.0-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
mqt.qusat-0.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
mqt.qusat-0.0.0-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details
mqt.qusat-0.0.0-cp38-cp38-macosx_10_15_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.15+ x86-64 Details
mqt.qusat-0.0.0-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details
mqt.qusat-0.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64 Details
mqt.qusat-0.0.0-cp37-cp37m-macosx_10_15_x86_64.whl CPython 3.7 CPython 3.7 pymalloc macOS 10.15+ x86-64 Details
mqt.qusat-0.0.0-cp36-cp36m-win_amd64.whl CPython 3.6 CPython 3.6 pymalloc Windows x86-64 Details
mqt.qusat-0.0.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.17+ x86-64 Details
mqt.qusat-0.0.0-cp36-cp36m-macosx_10_15_x86_64.whl CPython 3.6 CPython 3.6 pymalloc macOS 10.15+ x86-64 Details

Total release size: 150.5 MB

Release files / mqt.qusat-0.0.0.tar.gz

Download URL mqt.qusat-0.0.0.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
a2271a5bd4916337b2bce3a704aa0a3dca7d1243dbe71a0c13ba56cf86787fa0
BLAKE2b-256 checksum
How to use checksums
3027abf30a94f35bfa9ea4fdedf6a39e66751b2f8c3e2f97e2d92a515915d9be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp310-cp310-win_amd64.whl

Download URL mqt.qusat-0.0.0-cp310-cp310-win_amd64.whl
Size 6.3 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
6c4712a95d5f029784ba3b448bbe9f6e94ac055cb820064e1970c323b6dde9fe
BLAKE2b-256 checksum
How to use checksums
482b789f5708edf019032cc32ca129018b058638fcdb3d63deee63476551efd9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL mqt.qusat-0.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 12.2 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
fee7a39a311f6622ae7a1390814cea4b11a2b0a18d3f74cf840f005c90d9dcd6
BLAKE2b-256 checksum
How to use checksums
863a7f31eaeaf9f336c03c5ea0fa2a39ffc8616354c14a261215c7ba5465e2bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL mqt.qusat-0.0.0-cp310-cp310-macosx_11_0_arm64.whl
Size 6.7 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ba9dbb4a072e90cf20bb4ed62846e165d846adcf55eddee0a2047aa6856bef4b
BLAKE2b-256 checksum
How to use checksums
0be56d886c112cf73a449f2de730b5a5e4129b73a3006484719260adf539503d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp310-cp310-macosx_10_15_x86_64.whl

Download URL mqt.qusat-0.0.0-cp310-cp310-macosx_10_15_x86_64.whl
Size 7.3 MB
Tags CPython 3.10 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
0a3a5c43b052846f1fa1d044c22666522e60665d07924cc5a1b908eaecb53a04
BLAKE2b-256 checksum
How to use checksums
6e4eb437f7ee7d9523f4fe76e572e85a336de6cc371b14923440677052ae7375
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp39-cp39-win_amd64.whl

Download URL mqt.qusat-0.0.0-cp39-cp39-win_amd64.whl
Size 6.3 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
20b8d5e33752bf1a8f16460349b2671a84b25ed582f30ade157caf086d24dd09
BLAKE2b-256 checksum
How to use checksums
6bd439d86d532be1630a4ab8361c7d0055fbf0ecbecf437defbc6562981ed498
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL mqt.qusat-0.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 12.2 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
0bc8bb99b361fc2553f908748e8b0f5b49ee431ee4dbe68167a891fbc8eec674
BLAKE2b-256 checksum
How to use checksums
dd6e6ae25551f67fe77732308265e5b1b1019c06c966c28f4952e87d6df850f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp39-cp39-macosx_11_0_arm64.whl

Download URL mqt.qusat-0.0.0-cp39-cp39-macosx_11_0_arm64.whl
Size 6.7 MB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
df795b5a2a3ea51dbe12a95d5e290dd9c21c9a5805262b50ec79a2df6e111f66
BLAKE2b-256 checksum
How to use checksums
9012db9458c7ccfc3873dda9ab3d2b60cd008323a6a74be329cd3dac255b9360
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp39-cp39-macosx_10_15_x86_64.whl

Download URL mqt.qusat-0.0.0-cp39-cp39-macosx_10_15_x86_64.whl
Size 7.3 MB
Tags CPython 3.9 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
4b3047c1ffadd99190806411a42ccd99a61254d08f5f35ea63622ac41f820192
BLAKE2b-256 checksum
How to use checksums
5c8ff1c3e57daa963472fa8d5353819c455ec7aa9debf143f954e32e84f3e280
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp38-cp38-win_amd64.whl

Download URL mqt.qusat-0.0.0-cp38-cp38-win_amd64.whl
Size 6.3 MB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
0efae1ccb44844ea7391347f498c9d9163590adb03ca21f2f3a8c3f15731d6e3
BLAKE2b-256 checksum
How to use checksums
b53aad83520023c5267d9cad52e45aaba7404037c08d48a84537ea13aa39fc0d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL mqt.qusat-0.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 12.2 MB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
fc361b90aa165c169e236880b0f5e54f321fbb417c452d0bdfb3396a6edba483
BLAKE2b-256 checksum
How to use checksums
33567c7226ad6931731477b43e5e026fc9fd71091a8c23ea052e52c2db296ca1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp38-cp38-macosx_11_0_arm64.whl

Download URL mqt.qusat-0.0.0-cp38-cp38-macosx_11_0_arm64.whl
Size 6.7 MB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
64472c848f380c8016912731efaa2dd75842c7b581cef4f5b640b91c6e44691f
BLAKE2b-256 checksum
How to use checksums
7fddce1048bea6b803cb6b4e46c554871b5b14e3284537a3ca52e5b1dcb64fe9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp38-cp38-macosx_10_15_x86_64.whl

Download URL mqt.qusat-0.0.0-cp38-cp38-macosx_10_15_x86_64.whl
Size 7.3 MB
Tags CPython 3.8 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
9e02c2848993e51a52d4853ac09a99d378f59c7aacca99498f5739a0eb25bdc2
BLAKE2b-256 checksum
How to use checksums
58628c91f46d375269071395d6fafc981d26b8929d05ddc746bd0586b36da466
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp37-cp37m-win_amd64.whl

Download URL mqt.qusat-0.0.0-cp37-cp37m-win_amd64.whl
Size 6.3 MB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
457650475c57079b34e530b5375b43917a1090294af7b1b2c6db7bb296612694
BLAKE2b-256 checksum
How to use checksums
31a2efd580726d55b642a8aff790436a726e775f8cc6b75129eac7ef8e787f0f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL mqt.qusat-0.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 12.2 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d1f8775c4bb7ff95c69ab84403a14eaee835959376c9a1c18db3c1c2a15dc009
BLAKE2b-256 checksum
How to use checksums
d51e896560de3b3809a58188755b30a7bb9b37bb8bbe0176a94ebcdd2f26d539
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp37-cp37m-macosx_10_15_x86_64.whl

Download URL mqt.qusat-0.0.0-cp37-cp37m-macosx_10_15_x86_64.whl
Size 7.3 MB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
2951232040bb662282b7e7b98c10f78f202cec56face377dff7876b38c3a2630
BLAKE2b-256 checksum
How to use checksums
8b157d04ae39ed13561fc72602f032070e460ac111df7e041d964da4adff0298
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp36-cp36m-win_amd64.whl

Download URL mqt.qusat-0.0.0-cp36-cp36m-win_amd64.whl
Size 6.3 MB
Tags CPython 3.6 CPython 3.6 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
da38da6b27212a0870a04467afa986e7debff17e52bdda2e6a15385fddf933b6
BLAKE2b-256 checksum
How to use checksums
04d419b1d2ef1b7cb08569f51f84149698809219e6afe6e2dc4cc5852e72a7fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL mqt.qusat-0.0.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 12.2 MB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
9719491decbabf41afe2618d15b4d14f570db2a6a9fb6c93de0cf608b36109eb
BLAKE2b-256 checksum
How to use checksums
73f8fb4f6ff8ada79f55ed4e3d36a03e4cfef62e743caf278ade8a9f3a6a3dc2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release files / mqt.qusat-0.0.0-cp36-cp36m-macosx_10_15_x86_64.whl

Download URL mqt.qusat-0.0.0-cp36-cp36m-macosx_10_15_x86_64.whl
Size 7.3 MB
Tags CPython 3.6 CPython 3.6 pymalloc macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
59df22b2eeb124990a08e46179ac41db9a190d48d3babb1283038584f7d43f8d
BLAKE2b-256 checksum
How to use checksums
91843dca40042a5a4a88d7df9a9b2c82677cda0299fae93144e00427cf3371da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.9.12

Release history Release notifications | RSS feed

1.5.0

11 release files

1.4.0

43 release files

1.2.0

31 release files

1.1.0

16 release files

1.0.0

15 release files

0.1.1

19 release files

This release

0.0.0 This release

19 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page