Linux | Windows | Coverage | Metrics | Sonarcloud |
---|---|---|---|---|
Candy Kingdom is a modular collection of SAT solvers and tools for structure analysis in SAT problems. The original Candy solver is a branch of the famous SAT solver Glucose. Several new approaches (e.g. rsar and rsil-variants) in Candy focus on explicit exploitation of structure analysis in SAT solving. The core of Glucose has been completely reworked with a strong focus on the independence and exchangeability of components in the core solver, while increasing the readability and maintainability of the code. The allocation model of clauses was revisited with a focus on cache efficient memory management. A new sonification module provides Ear Candy, you can now also listen to solver runs.
Candy uses the googletest API, which is why, in order to build Candy you need to initialize and build the googletest submodule like this:
git submodule init
git submodule update
cd lib/googletest
cmake .
cmake --build .
Then you can build Candy like this:
mkdir build
cd build
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DCMAKE_BUILD_TYPE=Release ..
make candy
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 (e.g. rsar or rsil). If you have any questions feel free to contact me.
Credits go to SAT CLIQUE, all the people at ITI and our students.
- 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