Rust encodings of integer and pseudo-Boolean constraints into CNF.
Encodings
A constraint is aggregated into a sum of terms, each an integer variable scaled by a coefficient, before any encoder sees it. A term may stand for a single literal, for a group of literals only one of which may hold, or for an integer variable — so each encoder below covers several named encodings from the literature at once. Which, and under what condition — with propagation strength and a reference for each — is tabulated in the encodings reference.
| Encoder | Takes | Propagation |
|---|---|---|
AdderEncoder |
linear, cardinality, at-most-one, count | neither |
DecisionDiagramEncoder |
linear, cardinality, at-most-one, count | domain consistent |
TotalizerEncoder |
linear, cardinality, at-most-one, count | domain consistent |
SequentialCounterEncoder |
linear, cardinality, at-most-one, count | domain consistent |
MixedRadixEncoder |
linear, cardinality, at-most-one, count | neither |
WatchdogEncoder |
linear, cardinality, at-most-one, count | consistency-checking, or domain consistent in its local form |
SortingNetworkEncoder |
cardinality, at-most-one, count | domain consistent |
PairwiseEncoder, LadderEncoder, BitwiseEncoder, ProductEncoder |
at-most-one | see the reference |
TseitinEncoder |
propositional formulas | — |
Integer variables acquire direct, order, or binary views when an encoder needs them and channel between views when more than one is used.
Installation and usage
The Rust crate and Python package expose the same constraint encodings.
Rust
cargo add pindakaas
For more information about the Rust library, please visit the official documentation.
Python
pip install pindakaas
For more information about the Python library, please visit the official documentation.
Citation
If you want to cite Pindakaas please use our general software citation, in addition to any citation to a specific version or paper:
@software{Pindakaas,
author = {Bierlee, Hendrik and Dekker, Jip J.},
license = {MPL-2.0},
title = {{Pindakaas}},
url = {https://doi.org/10.5281/zenodo.10851855},
doi = {10.5281/zenodo.10851855},
}
Note that you might have to use misc instead of software, if your system does not support software as a type.
Acknowledgements
This research was partially funded by the Australian Government through the Australian Research Council Industrial Transformation Training Centre in Optimisation Technologies, Integrated Methodologies, and Applications (OPTIMA), Project ID IC200100009
License
This library is made available under the MPL-2.0 license.
Metadata
Release files for pindakaas 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pindakaas-0.6.0.tar.gz | 1.1 MB | Details |
Built distributions (wheels)
Total release size: 46.5 MB
Release files / pindakaas-0.6.0.tar.gz
| Download URL | pindakaas-0.6.0.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
13f359613680b366858e2a3f4944d49a9909863c5f62b1a5a909cd998d6a64ef
|
|
BLAKE2b-256 checksum How to use checksums |
9ce1eae441b086854f9f9c6dc90bc825584aa2afc90a2a52167340b77927f6a1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pindakaas-0.6.0-cp39-abi3-win_arm64.whl
| Download URL | pindakaas-0.6.0-cp39-abi3-win_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.9 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
53678084aa957c9c1471420b33b6afc7e9f4661fb7428ed0b17d83e40a314b62
|
|
BLAKE2b-256 checksum How to use checksums |
5e78f4f97a56c847ac26bff6fa425a311b75279e42d429a59e3d476005872d16
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pindakaas-0.6.0-cp39-abi3-win_amd64.whl
| Download URL | pindakaas-0.6.0-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
da6073561a601a82d67822cdf337c2fca19ef92b9a8569c846d2435819db62d1
|
|
BLAKE2b-256 checksum How to use checksums |
3c7bb52d86717df9feebd0df3727a6a570aabdce7478f73474d4656e56774f32
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pindakaas-0.6.0-cp39-abi3-win32.whl
| Download URL | pindakaas-0.6.0-cp39-abi3-win32.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.9 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
92618a5d28611cf1fb2bf2cfad838b9666fbbec69414c9d48c1439eb3a6e787e
|
|
BLAKE2b-256 checksum How to use checksums |
dc9aaff515d4269de1d0b273b45f3eb7bd4b1ca6554eea50550928855e553727
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pindakaas-0.6.0-cp39-abi3-musllinux_1_2_x86_64.whl
| Download URL | pindakaas-0.6.0-cp39-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 8.0 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
1b1cf8af025b49765befa410c4ad1e58ea22de90735ad31b3d7e12ca6d0f036f
|
|
BLAKE2b-256 checksum How to use checksums |
84c0ede096784b7844e0563ddca7b03ca49215ba716fd1ddc85215fc880e67ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pindakaas-0.6.0-cp39-abi3-musllinux_1_2_i686.whl
| Download URL | pindakaas-0.6.0-cp39-abi3-musllinux_1_2_i686.whl |
|---|---|
| Size | 8.0 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
f7c81eac16dc48ead36b2e75a64bad839ec8aa5af2399114b1deafea4b816d50
|
|
BLAKE2b-256 checksum How to use checksums |
66d6a259181ca0d5426e6a8031e20ad8f937a7cbba68f33d7dc43e154d1db96a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pindakaas-0.6.0-cp39-abi3-musllinux_1_2_armv7l.whl
| Download URL | pindakaas-0.6.0-cp39-abi3-musllinux_1_2_armv7l.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.9 Linux musl 1.2+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
f81061df0736fa9a28f73c7c7feae7727de22c7407f05c43e1a875a123cd06e3
|
|
BLAKE2b-256 checksum How to use checksums |
f6cd7c675ecabcb9600c4558bff4a2f26deb9f1626073ca13aee7e4be76d2624
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pindakaas-0.6.0-cp39-abi3-musllinux_1_2_aarch64.whl
| Download URL | pindakaas-0.6.0-cp39-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.9 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
bb934c5f91ff3610cfe148f6cd580a6899b4d837b523f7fdbcc0263685695ff1
|
|
BLAKE2b-256 checksum How to use checksums |
bb907dcee4e4b28d882dd3a92d84bd0e9b5b60f3c1b19e01067b37d2b789709c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pindakaas-0.6.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pindakaas-0.6.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
49e025b3dc01aa4b6b9243746eb9e22ae77397a55d33d42e7c96a45baf88476c
|
|
BLAKE2b-256 checksum How to use checksums |
5533e7ea4d3cbd3c8f8efd1e96e2716990742521bfda683cb11b04b70c271eef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pindakaas-0.6.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
| Download URL | pindakaas-0.6.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ IBM System/390x abi3 |
|
SHA-256 checksum How to use checksums |
dde1567f438dae48a2b98401a69edae55c92019061985efba0a101fa0fc28b04
|
|
BLAKE2b-256 checksum How to use checksums |
9efda355e5a69170ed6e05e21fb8f84b886cf8598319c7ffc06ad8050283cb0f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pindakaas-0.6.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
| Download URL | pindakaas-0.6.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ PowerPC 64-le abi3 |
|
SHA-256 checksum How to use checksums |
7f818585085651bdc4cb3a1047097d572b93b440be2949f278483baaeca33f00
|
|
BLAKE2b-256 checksum How to use checksums |
a23b67387f114b97289e9353f55a563b90e49cef096e66223565c9f187509489
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pindakaas-0.6.0-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
| Download URL | pindakaas-0.6.0-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
801fe95f9eec38a8e60b0eeaa396799a5fc70c9390ad7e6544e48323a8843447
|
|
BLAKE2b-256 checksum How to use checksums |
61b2d40b2d7f51ea1bc716dd966ceceeb9bada166c3782ce65bb6d0135eadc01
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pindakaas-0.6.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
| Download URL | pindakaas-0.6.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
f8d580e5a95bb01c19a0b17c6b8daf60dd7c61b5e490c2c31d4fc672d8a9368e
|
|
BLAKE2b-256 checksum How to use checksums |
4f492556e7c82d18f5d1f1fbc5de02f0a5cb1003fe74a2109644267341450e28
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pindakaas-0.6.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | pindakaas-0.6.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
3b98b47444f5281d25b2e422aa16461fb07af140047e54550d2d2a95ef64cfc6
|
|
BLAKE2b-256 checksum How to use checksums |
583447667413257bfb2197eee880ac82cde8bccaa50dd8028a4b77c9ae468e5a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pindakaas-0.6.0-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | pindakaas-0.6.0-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
0106dcbcfd0ef77df614cd4138c6519ac2419c2ba92483489d352bdfd56b0c27
|
|
BLAKE2b-256 checksum How to use checksums |
ad9f6197e1c8a9b1dd1c102648e9462101a5930313ce0f957e87bbbd33c8558b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pindakaas-0.6.0-cp39-abi3-macosx_10_12_x86_64.whl
| Download URL | pindakaas-0.6.0-cp39-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.9 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
967575b07b3ccfccdd8646d2fed260ce849b1942e79922f3b9f27301286db528
|
|
BLAKE2b-256 checksum How to use checksums |
1841aa6fd7181d7c777571d443c3f1576e1f031f5d7f4b04c2be7acf9de915c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|