Skip to main content

MQT QuSAT - A Tool for Utilizing SAT in Quantum Computing

Project description

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}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mqt.qusat-0.0.0.tar.gz (1.3 MB view details)

Uploaded Source

Built Distributions

mqt.qusat-0.0.0-cp310-cp310-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.10 Windows x86-64

mqt.qusat-0.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

mqt.qusat-0.0.0-cp310-cp310-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

mqt.qusat-0.0.0-cp310-cp310-macosx_10_15_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.10 macOS 10.15+ x86-64

mqt.qusat-0.0.0-cp39-cp39-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.9 Windows x86-64

mqt.qusat-0.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.2 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

mqt.qusat-0.0.0-cp39-cp39-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

mqt.qusat-0.0.0-cp39-cp39-macosx_10_15_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.9 macOS 10.15+ x86-64

mqt.qusat-0.0.0-cp38-cp38-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.8 Windows x86-64

mqt.qusat-0.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.2 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

mqt.qusat-0.0.0-cp38-cp38-macosx_11_0_arm64.whl (6.7 MB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

mqt.qusat-0.0.0-cp38-cp38-macosx_10_15_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

mqt.qusat-0.0.0-cp37-cp37m-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.7m Windows x86-64

mqt.qusat-0.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.2 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

mqt.qusat-0.0.0-cp37-cp37m-macosx_10_15_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.7m macOS 10.15+ x86-64

mqt.qusat-0.0.0-cp36-cp36m-win_amd64.whl (6.3 MB view details)

Uploaded CPython 3.6m Windows x86-64

mqt.qusat-0.0.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.2 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

mqt.qusat-0.0.0-cp36-cp36m-macosx_10_15_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.6m macOS 10.15+ x86-64

File details

Details for the file mqt.qusat-0.0.0.tar.gz.

File metadata

  • Download URL: mqt.qusat-0.0.0.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for mqt.qusat-0.0.0.tar.gz
Algorithm Hash digest
SHA256 a2271a5bd4916337b2bce3a704aa0a3dca7d1243dbe71a0c13ba56cf86787fa0
MD5 319572f858a83e3397174d3cc03a4213
BLAKE2b-256 3027abf30a94f35bfa9ea4fdedf6a39e66751b2f8c3e2f97e2d92a515915d9be

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for mqt.qusat-0.0.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 6c4712a95d5f029784ba3b448bbe9f6e94ac055cb820064e1970c323b6dde9fe
MD5 2e5ec6baf2e40774a40ba8a2453d6787
BLAKE2b-256 482b789f5708edf019032cc32ca129018b058638fcdb3d63deee63476551efd9

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mqt.qusat-0.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fee7a39a311f6622ae7a1390814cea4b11a2b0a18d3f74cf840f005c90d9dcd6
MD5 3eb0ce49e1ba286724c711902af3a9a7
BLAKE2b-256 863a7f31eaeaf9f336c03c5ea0fa2a39ffc8616354c14a261215c7ba5465e2bc

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mqt.qusat-0.0.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ba9dbb4a072e90cf20bb4ed62846e165d846adcf55eddee0a2047aa6856bef4b
MD5 1372f4d7b55d62c0c02249e412f8c7f6
BLAKE2b-256 0be56d886c112cf73a449f2de730b5a5e4129b73a3006484719260adf539503d

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for mqt.qusat-0.0.0-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 0a3a5c43b052846f1fa1d044c22666522e60665d07924cc5a1b908eaecb53a04
MD5 b41301fef0433d26f3d149e5eb056f33
BLAKE2b-256 6e4eb437f7ee7d9523f4fe76e572e85a336de6cc371b14923440677052ae7375

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: mqt.qusat-0.0.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 6.3 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for mqt.qusat-0.0.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 20b8d5e33752bf1a8f16460349b2671a84b25ed582f30ade157caf086d24dd09
MD5 22588c37722ddf97862484fe0318ef97
BLAKE2b-256 6bd439d86d532be1630a4ab8361c7d0055fbf0ecbecf437defbc6562981ed498

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mqt.qusat-0.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0bc8bb99b361fc2553f908748e8b0f5b49ee431ee4dbe68167a891fbc8eec674
MD5 aafc175041ae28d4bd5dcd80ceb4d103
BLAKE2b-256 dd6e6ae25551f67fe77732308265e5b1b1019c06c966c28f4952e87d6df850f2

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mqt.qusat-0.0.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 df795b5a2a3ea51dbe12a95d5e290dd9c21c9a5805262b50ec79a2df6e111f66
MD5 9baa770ca4afe79e8a3b9fce82c755b4
BLAKE2b-256 9012db9458c7ccfc3873dda9ab3d2b60cd008323a6a74be329cd3dac255b9360

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for mqt.qusat-0.0.0-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 4b3047c1ffadd99190806411a42ccd99a61254d08f5f35ea63622ac41f820192
MD5 d94e4e4c7519db0ead60650741e24739
BLAKE2b-256 5c8ff1c3e57daa963472fa8d5353819c455ec7aa9debf143f954e32e84f3e280

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: mqt.qusat-0.0.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 6.3 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for mqt.qusat-0.0.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 0efae1ccb44844ea7391347f498c9d9163590adb03ca21f2f3a8c3f15731d6e3
MD5 c1ea424d1eebccc49c6cab32dc7f57b7
BLAKE2b-256 b53aad83520023c5267d9cad52e45aaba7404037c08d48a84537ea13aa39fc0d

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mqt.qusat-0.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fc361b90aa165c169e236880b0f5e54f321fbb417c452d0bdfb3396a6edba483
MD5 04530808dd538fd1ee3c621ac859f617
BLAKE2b-256 33567c7226ad6931731477b43e5e026fc9fd71091a8c23ea052e52c2db296ca1

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mqt.qusat-0.0.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 64472c848f380c8016912731efaa2dd75842c7b581cef4f5b640b91c6e44691f
MD5 2d98b00e651d55d5f4e28dc5f8b807bc
BLAKE2b-256 7fddce1048bea6b803cb6b4e46c554871b5b14e3284537a3ca52e5b1dcb64fe9

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for mqt.qusat-0.0.0-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 9e02c2848993e51a52d4853ac09a99d378f59c7aacca99498f5739a0eb25bdc2
MD5 fd94adce48a55dcbf94aa446d5b6bc6c
BLAKE2b-256 58628c91f46d375269071395d6fafc981d26b8929d05ddc746bd0586b36da466

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for mqt.qusat-0.0.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 457650475c57079b34e530b5375b43917a1090294af7b1b2c6db7bb296612694
MD5 bbe5646a0d49c89d6290bab6e63de69d
BLAKE2b-256 31a2efd580726d55b642a8aff790436a726e775f8cc6b75129eac7ef8e787f0f

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mqt.qusat-0.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d1f8775c4bb7ff95c69ab84403a14eaee835959376c9a1c18db3c1c2a15dc009
MD5 a3b6c8dd613a653e53ebb3e0d78c1015
BLAKE2b-256 d51e896560de3b3809a58188755b30a7bb9b37bb8bbe0176a94ebcdd2f26d539

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp37-cp37m-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for mqt.qusat-0.0.0-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 2951232040bb662282b7e7b98c10f78f202cec56face377dff7876b38c3a2630
MD5 60b4d2f0140bffdd35e386c6f2278455
BLAKE2b-256 8b157d04ae39ed13561fc72602f032070e460ac111df7e041d964da4adff0298

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp36-cp36m-win_amd64.whl.

File metadata

File hashes

Hashes for mqt.qusat-0.0.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 da38da6b27212a0870a04467afa986e7debff17e52bdda2e6a15385fddf933b6
MD5 c04854a25cc075908f27fd107aba6e07
BLAKE2b-256 04d419b1d2ef1b7cb08569f51f84149698809219e6afe6e2dc4cc5852e72a7fc

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mqt.qusat-0.0.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9719491decbabf41afe2618d15b4d14f570db2a6a9fb6c93de0cf608b36109eb
MD5 483488aef70a58c89985cdec839e8df4
BLAKE2b-256 73f8fb4f6ff8ada79f55ed4e3d36a03e4cfef62e743caf278ade8a9f3a6a3dc2

See more details on using hashes here.

File details

Details for the file mqt.qusat-0.0.0-cp36-cp36m-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for mqt.qusat-0.0.0-cp36-cp36m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 59df22b2eeb124990a08e46179ac41db9a190d48d3babb1283038584f7d43f8d
MD5 0ddb20f3f4e107be75d74033e36ee56e
BLAKE2b-256 91843dca40042a5a4a88d7df9a9b2c82677cda0299fae93144e00427cf3371da

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page