Skip to content

Repository files navigation

Hydra

Hydra is the development repository for the Bella knowledge compiler and the Cara #SAT solver.

Bella

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.

Cara

An isomorphism-aware #SAT solver.

Important

This repository contains the source code. For precompiled binaries and the full description, please visit the CaraSolver repository.

Build Instructions

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).

Release

./scripts/<tool>.sh --release

The release binary is located in build_<tool>/Release/<Tool>/.

Debug

./scripts/<tool>.sh --debug

The debug binary is located in build_<tool>/Debug/<Tool>/.

Test

./scripts/<tool>.sh --test

The test binaries are located in build_<tool>/Test/HydraTest/ and build_<tool>/Test/<Tool>Test/.

All (Release, Debug, and Test)

./scripts/<tool>.sh
./scripts/<tool>.sh --all
./scripts/<tool>.sh --release --debug --test

The corresponding binaries are in the locations mentioned above.

Third-Party Software

SAT Solvers

Hash Maps

Hypergraph Partitioning

  • 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)

Unit Testing

Licence

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.

Papers

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

About

Hydra is the development repository for the Bella knowledge compiler and the Cara #SAT solver

Topics

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Contributors

Languages