Since geometric resolution relies heavily on constraint solving,
the constraint solver is currently the most sophisticated part of Geo III.
The implementation is probably efficient enough for stand-alone use,
outside of geometric resolution. In order to make this possible,
the constraint solver can be download independently.
The implementation is in portable C++(11).
The solver reads input from a specified file, and prints output into stdout, either
SAT and a satisfying substitution. It can be called with
-cnf, which will cause it to transform the problem to CNF (Dimacs format)
without trying to solve it.
The input format is similar to DIMACS format for first-order logic, it is described in Section 7 of this article, which also contains a description of the matching algorithm used.
These are the sources.
In order to run the solver, unzip and untar. If you are lucky, you
./solver gcsp_examples/summer2016/demod06.dim and watch the solver find
touch Makefile, type
make and hope that
the resulting executable works. You need a reasonably
new version of g++, because the solver uses C++-2014.
gcsp_examples contains examples.
The following input formats are possible
./solver Reads input from stdin, and writes a solution or ‘UNSAT’ to stdout.
./solver %filename Reads input from filename, and writes a solution or ‘UNSAT’ to stdout.
./solver -cnf Reads input from stdin, and writes conversion to CNF to stdout.
./solver -cnf %inputfile Reads input from
%filename and writes CNF-conversion to stdout.
The following should work:
./solver -cnf gcsp_examples/summer2016/demod06.dim | minisat,
if you have