Hydra is the development repository for the Bella knowledge compiler and the Cara #SAT solver.
A knowledge compiler for:
- (s)d-DNNF circuits,
- wDNNF, pwDNNF, and nwDNNF circuits.
Important
This repository contains the source code. For precompiled binaries and the full description, please visit the BellaCompiler repository.
An isomorphism-aware #SAT solver.
Important
This repository contains the source code. For precompiled binaries and the full description, please visit the CaraSolver repository.
Supported OS: Linux, macOS (Apple Silicon), and Windows
Building requires: CMake, Boost, and GMP.
Note
On Windows, Cygwin is needed.
Both Bella and Cara are built using their respective scripts (bella.sh or cara.sh) located in the scripts/ directory. Compilation takes place in either the build_bella or build_cara directory, depending on the tool you are building.
In the commands below, replace <tool> with either bella or cara, and <Tool> with its capitalised form (that is, either Bella or Cara).
./scripts/<tool>.sh --releaseThe release binary is located in build_<tool>/Release/<Tool>/.
./scripts/<tool>.sh --debugThe debug binary is located in build_<tool>/Debug/<Tool>/.
./scripts/<tool>.sh --testThe test binaries are located in build_<tool>/Test/HydraTest/ and build_<tool>/Test/<Tool>Test/.
./scripts/<tool>.sh
./scripts/<tool>.sh --all
./scripts/<tool>.sh --release --debug --testThe corresponding binaries are in the locations mentioned above.
-
MiniSat 2.2.0 (d4v2 version)
Hydra/external/satSolvers/MiniSat_d4 -
Glucose 3.0 (d4v2 version)
Hydra/external/satSolvers/Glucose_d4 -
MiniSat 2.2.0
implemented, not used
Hydra/external/satSolvers/MiniSat -
Glucose 4.2.1
work in progress
Hydra/external/satSolvers/Glucose -
CaDiCaL 3.0.0
work in progress
Hydra/external/satSolvers/CaDiCaL
-
unordered_dense v4.9.1
Hydra/external/hashMaps/unordered_dense -
robin-hood-hashing 3.11.5
Hydra/external/hashMaps/robin-hood-hashing -
flat_hash_map
implemented, not used
Hydra/external/hashMaps/flat_hash_map
-
PaToH v3.3
used on Linux and macOS
Hydra/external/partitioningHypergraphs/PaToH -
hMETIS 1.5.3
used only on Windows
Hydra/external/partitioningHypergraphs/hMETIS -
KaHyPar v.1.3.3
used on Linux, macOS, and Windows
Hydra/external/partitioningHypergraphs/KaHyPar
Hydra/external/boost(precompiled libraries required by KaHyPar)
- Catch2 v2.13.10
HydraTest/external/unitTesting/Catch2
Hydra is released under the MIT License. The bundled third-party software components in Hydra/external/ (see above) are subject to their own licences. Some of them are restricted to academic and research use.
If you use Bella for (s)d-DNNF/wDNNF circuits in an academic setting, please cite the following paper describing the knowledge compiler:
@article{Illner_Kucera_2024,
author = {Illner, Petr and Ku\v{c}era, Petr},
title = {A Compiler for Weak Decomposable Negation Normal Form},
volume = {38},
url = {https://ojs.aaai.org/index.php/AAAI/article/view/28926},
DOI = {10.1609/aaai.v38i9.28926},
number = {9},
journal = {Proceedings of the AAAI Conference on Artificial Intelligence},
year = {2024},
month = {Mar.},
pages = {10562-10570}
}If you use Bella for pwDNNF/nwDNNF circuits or Cara in an academic setting, please cite the following paper describing the knowledge compiler and caching scheme:
@article{Illner_2025,
author = {Illner, Petr},
title = {New Compilation Languages Based on Restricted Weak Decomposability},
volume = {39},
url = {https://ojs.aaai.org/index.php/AAAI/article/view/33643},
DOI = {10.1609/aaai.v39i14.33643},
number = {14},
journal = {Proceedings of the AAAI Conference on Artificial Intelligence},
year = {2025},
month = {Apr.},
pages = {14987-14996}
}