MQT QuSAT - A Tool for Utilizing SAT in Quantum Computing
Project description
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. viaexport 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
Built Distributions
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2271a5bd4916337b2bce3a704aa0a3dca7d1243dbe71a0c13ba56cf86787fa0 |
|
MD5 | 319572f858a83e3397174d3cc03a4213 |
|
BLAKE2b-256 | 3027abf30a94f35bfa9ea4fdedf6a39e66751b2f8c3e2f97e2d92a515915d9be |
File details
Details for the file mqt.qusat-0.0.0-cp310-cp310-win_amd64.whl
.
File metadata
- Download URL: mqt.qusat-0.0.0-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 6.3 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c4712a95d5f029784ba3b448bbe9f6e94ac055cb820064e1970c323b6dde9fe |
|
MD5 | 2e5ec6baf2e40774a40ba8a2453d6787 |
|
BLAKE2b-256 | 482b789f5708edf019032cc32ca129018b058638fcdb3d63deee63476551efd9 |
File details
Details for the file mqt.qusat-0.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: mqt.qusat-0.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 12.2 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fee7a39a311f6622ae7a1390814cea4b11a2b0a18d3f74cf840f005c90d9dcd6 |
|
MD5 | 3eb0ce49e1ba286724c711902af3a9a7 |
|
BLAKE2b-256 | 863a7f31eaeaf9f336c03c5ea0fa2a39ffc8616354c14a261215c7ba5465e2bc |
File details
Details for the file mqt.qusat-0.0.0-cp310-cp310-macosx_11_0_arm64.whl
.
File metadata
- Download URL: mqt.qusat-0.0.0-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 6.7 MB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba9dbb4a072e90cf20bb4ed62846e165d846adcf55eddee0a2047aa6856bef4b |
|
MD5 | 1372f4d7b55d62c0c02249e412f8c7f6 |
|
BLAKE2b-256 | 0be56d886c112cf73a449f2de730b5a5e4129b73a3006484719260adf539503d |
File details
Details for the file mqt.qusat-0.0.0-cp310-cp310-macosx_10_15_x86_64.whl
.
File metadata
- Download URL: mqt.qusat-0.0.0-cp310-cp310-macosx_10_15_x86_64.whl
- Upload date:
- Size: 7.3 MB
- Tags: CPython 3.10, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a3a5c43b052846f1fa1d044c22666522e60665d07924cc5a1b908eaecb53a04 |
|
MD5 | b41301fef0433d26f3d149e5eb056f33 |
|
BLAKE2b-256 | 6e4eb437f7ee7d9523f4fe76e572e85a336de6cc371b14923440677052ae7375 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 20b8d5e33752bf1a8f16460349b2671a84b25ed582f30ade157caf086d24dd09 |
|
MD5 | 22588c37722ddf97862484fe0318ef97 |
|
BLAKE2b-256 | 6bd439d86d532be1630a4ab8361c7d0055fbf0ecbecf437defbc6562981ed498 |
File details
Details for the file mqt.qusat-0.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: mqt.qusat-0.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 12.2 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0bc8bb99b361fc2553f908748e8b0f5b49ee431ee4dbe68167a891fbc8eec674 |
|
MD5 | aafc175041ae28d4bd5dcd80ceb4d103 |
|
BLAKE2b-256 | dd6e6ae25551f67fe77732308265e5b1b1019c06c966c28f4952e87d6df850f2 |
File details
Details for the file mqt.qusat-0.0.0-cp39-cp39-macosx_11_0_arm64.whl
.
File metadata
- Download URL: mqt.qusat-0.0.0-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 6.7 MB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | df795b5a2a3ea51dbe12a95d5e290dd9c21c9a5805262b50ec79a2df6e111f66 |
|
MD5 | 9baa770ca4afe79e8a3b9fce82c755b4 |
|
BLAKE2b-256 | 9012db9458c7ccfc3873dda9ab3d2b60cd008323a6a74be329cd3dac255b9360 |
File details
Details for the file mqt.qusat-0.0.0-cp39-cp39-macosx_10_15_x86_64.whl
.
File metadata
- Download URL: mqt.qusat-0.0.0-cp39-cp39-macosx_10_15_x86_64.whl
- Upload date:
- Size: 7.3 MB
- Tags: CPython 3.9, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4b3047c1ffadd99190806411a42ccd99a61254d08f5f35ea63622ac41f820192 |
|
MD5 | d94e4e4c7519db0ead60650741e24739 |
|
BLAKE2b-256 | 5c8ff1c3e57daa963472fa8d5353819c455ec7aa9debf143f954e32e84f3e280 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0efae1ccb44844ea7391347f498c9d9163590adb03ca21f2f3a8c3f15731d6e3 |
|
MD5 | c1ea424d1eebccc49c6cab32dc7f57b7 |
|
BLAKE2b-256 | b53aad83520023c5267d9cad52e45aaba7404037c08d48a84537ea13aa39fc0d |
File details
Details for the file mqt.qusat-0.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: mqt.qusat-0.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 12.2 MB
- Tags: CPython 3.8, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc361b90aa165c169e236880b0f5e54f321fbb417c452d0bdfb3396a6edba483 |
|
MD5 | 04530808dd538fd1ee3c621ac859f617 |
|
BLAKE2b-256 | 33567c7226ad6931731477b43e5e026fc9fd71091a8c23ea052e52c2db296ca1 |
File details
Details for the file mqt.qusat-0.0.0-cp38-cp38-macosx_11_0_arm64.whl
.
File metadata
- Download URL: mqt.qusat-0.0.0-cp38-cp38-macosx_11_0_arm64.whl
- Upload date:
- Size: 6.7 MB
- Tags: CPython 3.8, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64472c848f380c8016912731efaa2dd75842c7b581cef4f5b640b91c6e44691f |
|
MD5 | 2d98b00e651d55d5f4e28dc5f8b807bc |
|
BLAKE2b-256 | 7fddce1048bea6b803cb6b4e46c554871b5b14e3284537a3ca52e5b1dcb64fe9 |
File details
Details for the file mqt.qusat-0.0.0-cp38-cp38-macosx_10_15_x86_64.whl
.
File metadata
- Download URL: mqt.qusat-0.0.0-cp38-cp38-macosx_10_15_x86_64.whl
- Upload date:
- Size: 7.3 MB
- Tags: CPython 3.8, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e02c2848993e51a52d4853ac09a99d378f59c7aacca99498f5739a0eb25bdc2 |
|
MD5 | fd94adce48a55dcbf94aa446d5b6bc6c |
|
BLAKE2b-256 | 58628c91f46d375269071395d6fafc981d26b8929d05ddc746bd0586b36da466 |
File details
Details for the file mqt.qusat-0.0.0-cp37-cp37m-win_amd64.whl
.
File metadata
- Download URL: mqt.qusat-0.0.0-cp37-cp37m-win_amd64.whl
- Upload date:
- Size: 6.3 MB
- Tags: CPython 3.7m, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 457650475c57079b34e530b5375b43917a1090294af7b1b2c6db7bb296612694 |
|
MD5 | bbe5646a0d49c89d6290bab6e63de69d |
|
BLAKE2b-256 | 31a2efd580726d55b642a8aff790436a726e775f8cc6b75129eac7ef8e787f0f |
File details
Details for the file mqt.qusat-0.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: mqt.qusat-0.0.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 12.2 MB
- Tags: CPython 3.7m, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1f8775c4bb7ff95c69ab84403a14eaee835959376c9a1c18db3c1c2a15dc009 |
|
MD5 | a3b6c8dd613a653e53ebb3e0d78c1015 |
|
BLAKE2b-256 | d51e896560de3b3809a58188755b30a7bb9b37bb8bbe0176a94ebcdd2f26d539 |
File details
Details for the file mqt.qusat-0.0.0-cp37-cp37m-macosx_10_15_x86_64.whl
.
File metadata
- Download URL: mqt.qusat-0.0.0-cp37-cp37m-macosx_10_15_x86_64.whl
- Upload date:
- Size: 7.3 MB
- Tags: CPython 3.7m, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2951232040bb662282b7e7b98c10f78f202cec56face377dff7876b38c3a2630 |
|
MD5 | 60b4d2f0140bffdd35e386c6f2278455 |
|
BLAKE2b-256 | 8b157d04ae39ed13561fc72602f032070e460ac111df7e041d964da4adff0298 |
File details
Details for the file mqt.qusat-0.0.0-cp36-cp36m-win_amd64.whl
.
File metadata
- Download URL: mqt.qusat-0.0.0-cp36-cp36m-win_amd64.whl
- Upload date:
- Size: 6.3 MB
- Tags: CPython 3.6m, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | da38da6b27212a0870a04467afa986e7debff17e52bdda2e6a15385fddf933b6 |
|
MD5 | c04854a25cc075908f27fd107aba6e07 |
|
BLAKE2b-256 | 04d419b1d2ef1b7cb08569f51f84149698809219e6afe6e2dc4cc5852e72a7fc |
File details
Details for the file mqt.qusat-0.0.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: mqt.qusat-0.0.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 12.2 MB
- Tags: CPython 3.6m, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9719491decbabf41afe2618d15b4d14f570db2a6a9fb6c93de0cf608b36109eb |
|
MD5 | 483488aef70a58c89985cdec839e8df4 |
|
BLAKE2b-256 | 73f8fb4f6ff8ada79f55ed4e3d36a03e4cfef62e743caf278ade8a9f3a6a3dc2 |
File details
Details for the file mqt.qusat-0.0.0-cp36-cp36m-macosx_10_15_x86_64.whl
.
File metadata
- Download URL: mqt.qusat-0.0.0-cp36-cp36m-macosx_10_15_x86_64.whl
- Upload date:
- Size: 7.3 MB
- Tags: CPython 3.6m, macOS 10.15+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 59df22b2eeb124990a08e46179ac41db9a190d48d3babb1283038584f7d43f8d |
|
MD5 | 0ddb20f3f4e107be75d74033e36ee56e |
|
BLAKE2b-256 | 91843dca40042a5a4a88d7df9a9b2c82677cda0299fae93144e00427cf3371da |