SAT 2003 Competitor Toolbox
Last updated: January 23, 2003.
This web page is intented to provide useful tools and information for
competitors of the forthcoming SAT 2003 competition.
Those programs are provided in order to help competitors to check the
competition input/output requirements and to allow people to take a
look at the programs used during the competition process. Those
programs are provided under the GNU General Public Licence.
Please feel free to send comments about those programs to SATcompetition@satlive.org.
The compile those files on most unix boxes:
# make <filename_without_extension>
You can get all thoses programs in the archive.
Counter.c: this program checks that benchmarks
comply with the competition input requirements.
Input: benchmark file name.
Output: the number of literals in the benchmark if the
instance complies with the input format, else an error message
indicating where a problem was detected.
To run it:
# counter <instance_file_name>
# ./counter aim/aim-50-1_6-no-1.cnf
In that benchmark, the clause 63 is 4 44 -44 0, a tautological clause.
Clause 63, variable 44:
A variable occurs twice in a clause
The same message would be displayed for the clause 4 44 44 0.
# ./counter aim/aim-50-1_6-no-2.cnf
There are 240 literals in that benchmark.
Verifier.c: this program is used to check that
the solvers comply with the competition output requirements.
Input: the solver output on STDIN and the instance filename for
checking satisfiability certificate.
Output: an explicit message concerning the solver output.
To run it:
# <yoursolver> <theinstancename> | verifier <theinstancename>
#./limmat-1.3/limmat aim/aim-50-1_6-yes1-1.cnf | ./verifier aim/aim-50-1_6-yes1-1.cnf
c~~ verifier: OK: SATISFIABLE claimed, and implicant is correct
# ./limmat-1.3/limmat aim/aim-50-1_6-no-1.cnf | ./verifier aim/aim-50-1_6-no-1.cnf
c~~ verifier: OK: UNSATISFIABLE claimed, no model provided by solver
Reorder.c: this program is used to shuffle
clauses and to rename literals in the benchmarks submitted for the
That program is not ANSI C compliant (it uses long long int). Use g++
for instance to compile it:
# g++ -o reorder reorder.c
Input: A benchmark file name and a random seed.
Output: the shuffled instance is displayed on STDOUT.
./reorder /home-local/benchs/bw_large.a.cnf 123
GenAlea.c: this program was used to generate
some random 3SAT instances for the SAT2002 competition (uniform 3SAT
The files my_random.h and my_random.c are needed to compile it.