The glucose SAT solver
See the codeThis is the release 4.2.1 of the glucose SAT solver. It is based on Minisat 2.2
Glucose is an award winning SAT solver based on a scoring scheme we introduced in 2009 for the clause learning mechanism of so called “Modern” SAT solvers (see our IJCAI’09 paper). It is designed to be parallel, since 2014 and was enterly rebooted in 2021. Glucose is developed by a very friendly team: Gilles Audemard and Laurent Simon.
The name of the Solver name is a contraction of the concept of “glue clauses”, a particular kind of clauses that glucose detects and preserves during search.
Glucose is heavily based on Minisat, so please do cite Minisat also if you want to cite Glucose. Glucose is based on the Minisat 2.2 version. We strongly encourage you to visit the Minisat web pages, and to try the original Minisat too.
Learning (in CDCL algorithms) was firstly introduced for completeness. But, if we study all Glucose 2’s traces of the competition 2011, for instance, phase 2, in the categories Applications and Crafted, Glucose 2 learnt 973,468,489 clauses (sum over all traces) but removed 909,123,525 of them, i.e. more than 93% of the clauses are removed. This view is really new and contradicts previous beliefs. Thus, we thought that one of the performance keys of our solver is not only based on the identification of good clauses, but also on the removing of bad ones. As a side effect, by aggressively deleting those clauses, Glucose increases the CDCL incompleteness (keeping learnt clauses is essential for completeness). We should also emphasize here that Glucose 2 was ranked fourth on the parallel track in the SAT 2011 competition beside the fact that it was sequential. This shows that even with a single core, our solver performed better, in user time (not CPU) than many parallel solvers exploiting the 8 cores of the parallel machine. One of the reasons for this is that Glucose 2 is good at finding the shortest (but easiest) proof as possible.
Among the short list of programs of Prof. Don Knuth, you may want to take a deep look at the SAT13.w, his CDCL implementation. Very interesting and insightful. With glucose-techniques inside!
Note: Don’t change the preprocessing switches on this version (you can turn off the preprocessing but when using it, don’t play with the preprocessing options). We were reported some discrepancies in the results when using the -rcheck argument. You can choose to compile the following Glucose alternatives:
Glucose sequential (with/without Satelite, decided by command line arguments)
Glucose sequential, incremental mode
Glucose sequential, certified unsat proof logging
Glucose parallel with satelite ( not yet a parallel certified unsat / parallel incremental)
Choose your directory (simp or parallel) and type ‘make’.
We are often asked how to use/install/call our SAT solver.
C++
97.5%
C
1.3%
The glucose SAT solver
See the codeThis is the release 4.2.1 of the glucose SAT solver. It is based on Minisat 2.2
Glucose is an award winning SAT solver based on a scoring scheme we introduced in 2009 for the clause learning mechanism of so called “Modern” SAT solvers (see our IJCAI’09 paper). It is designed to be parallel, since 2014 and was enterly rebooted in 2021. Glucose is developed by a very friendly team: Gilles Audemard and Laurent Simon.
The name of the Solver name is a contraction of the concept of “glue clauses”, a particular kind of clauses that glucose detects and preserves during search.
Glucose is heavily based on Minisat, so please do cite Minisat also if you want to cite Glucose. Glucose is based on the Minisat 2.2 version. We strongly encourage you to visit the Minisat web pages, and to try the original Minisat too.
Learning (in CDCL algorithms) was firstly introduced for completeness. But, if we study all Glucose 2’s traces of the competition 2011, for instance, phase 2, in the categories Applications and Crafted, Glucose 2 learnt 973,468,489 clauses (sum over all traces) but removed 909,123,525 of them, i.e. more than 93% of the clauses are removed. This view is really new and contradicts previous beliefs. Thus, we thought that one of the performance keys of our solver is not only based on the identification of good clauses, but also on the removing of bad ones. As a side effect, by aggressively deleting those clauses, Glucose increases the CDCL incompleteness (keeping learnt clauses is essential for completeness). We should also emphasize here that Glucose 2 was ranked fourth on the parallel track in the SAT 2011 competition beside the fact that it was sequential. This shows that even with a single core, our solver performed better, in user time (not CPU) than many parallel solvers exploiting the 8 cores of the parallel machine. One of the reasons for this is that Glucose 2 is good at finding the shortest (but easiest) proof as possible.
Among the short list of programs of Prof. Don Knuth, you may want to take a deep look at the SAT13.w, his CDCL implementation. Very interesting and insightful. With glucose-techniques inside!
Note: Don’t change the preprocessing switches on this version (you can turn off the preprocessing but when using it, don’t play with the preprocessing options). We were reported some discrepancies in the results when using the -rcheck argument. You can choose to compile the following Glucose alternatives:
Glucose sequential (with/without Satelite, decided by command line arguments)
Glucose sequential, incremental mode
Glucose sequential, certified unsat proof logging
Glucose parallel with satelite ( not yet a parallel certified unsat / parallel incremental)
Choose your directory (simp or parallel) and type ‘make’.
We are often asked how to use/install/call our SAT solver.
C++
97.5%
C
1.3%