/candy

Candy Reduced to its Core

Primary LanguageC++OtherNOASSERTION

Candy

Candy is a modular SAT solver forked from Candy Kingdom and reduced to its core. The original Candy solver is a branch of the well-known SAT solver Glucose. It has been refactored w.r.t. independence and exchangeability of components in the core solver, while increasing the readability and maintainability of the code.

Build

You can build Candy like this:

mkdir build
cd build
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DCMAKE_BUILD_TYPE=Release ..
make candy

Run

In order to run candy and solve a problem example.cnf invoke:

./candy example.cnf

Candy offers a multitude of options, like paramaters to tune heuristics and thresholds, or parameters to select an alternative solving strategy:

./candy --help

Credits

Credits go to SAT CLIQUE, all the people at ITI and to our students.

Build and make on Windows

  • mingw installed (mingw-64 (posix))
  • mingw32-pthreads (mingw32-libpthreadgc-dll, mingw32-libpthreadgc-dev, mingw32-pthreads-w32*)
  • mingw32-libz-dll and mingw32-libz-dev
  • mingw32-libgomp-dll for OpenMP (if needed)
  • everything else required to compile c/c++
  • mingw64\bin directory added to PATH
mkdir release
cd release
cmake -G "MinGW Makefiles" -DZLIB_INCLUDE_DIR=<mingw-include-dir> -DZLIB_LIBRARY=<path-to-mingw-libz.a> -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DCMAKE_BUILD_TYPE=Release ..
cmake --bild . --target candy

example path-to-mingw-include-dir: C:/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/include

example path-to-mingw-libz: C:/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/x86_64-w64-mingw32/lib/libz.a