Go to the source code of this file.
This first version of the OKsolver is made accessible here. Since it has a rather canonical "semantics", it can serve as a kind of standard implementation of
Procedural specifications at the Lisp/Maxima level are given in ComputerAlgebra/Satisfiability/Lisp/Backtracking/OKsolver2002.mac.
The most important macro options (that is, compile time options):
NBAUMRES is defined, then tree resolution pruning ("intelligent backtracking") is turned off, while otherwise (the default) it is turned on (that is, BAUMRES gets defined). NLITTAB is defined, then the more space efficient (but less time time efficient) special datastructure is not used. LITTAB gets defined). ASSIGNMENT is defined, then if a satisfying assignment is found, it is output, while otherwise only the satisfiability status is returned. (Internally, ASSIGNMENT is translated yet into BELEGUNG.) OUTPUTTREEDATAXML is defined, then the search tree is output into a file, using a simple XML structure and adorning each node with some statistics. ALLSAT is defined, then all satisfying assignments are found. Currently combination with BAUMRES or ASSIGNMENT is not possible (and thus yet we just count all satisfying assignments. NSAT_BITS specifies the number of bits for the unsigned int value of the number of satisfying assignments. NSAT_BITS (however whether the value is 0 or not is correctly reported).
The optimised version of a program has the optimisation options in the name. The following programs are created (in both versions, unoptimised and optimised), as usual in /home/csoliver/SAT-Algorithmen/OKplatform/system_directories/bin:
OKsolver_2002 (the default version; a link is also provided in the public bin-directory /home/csoliver/SAT-Algorithmen/OKplatform/bin) OKsolver_2002_NTP (no tree pruning) OKsolver_2002_NLT (tree pruning needs more space, but is faster) OKsolver_2002_osa (outputs satisfying assignments) OKsolver_2002_NTP_osa OKsolver_2002_NLT_osa
The solver reads the arguments in order, processes each and exits.
--help creates a short help message. --version prints version information. --author prints information about the author. --info shows how to interpret the (standard) output. --specification prints a solver specification in XML. --language=x switches the output-language; supported values are x=0 for German and x=1 for English (the default). --timeout=n for a time-out in n seconds (wall-clock), where n=0 means no time-out. --standard=x switches the input-format; supported values are -F for printing the results also to files (default is OFF). -M for monitoring the level d of the backtracking tree (default is OFF), where d=6 by default (watching 2^6 = 64 nodes).
d can be set using-Dd, for example -D10 for watching 2^10 = 1024 nodes at depth 10. Range 0 <= d <= 30.
Once a node at level d is completed, its number is printed out, followed by the number of leaves below it, the total running-time until now, and the anticipated running time for the remaining nodes at this level, using the current average running time for the monitored nodes (always in seconds).
If file-output is activated, then the monitoring output is echoed to file "FullInputFileName.mo".
Given the process identity id, a signal called "SIGNAL" is sent to the process via kill -s SIGNAL id.
SIGUSR1 to the OKsolver causes the printout of the current statistics. SIGINT to the OKsolver aborts the computation after printing the statistics. This signal is send to a program when pressing CTRL C on the command line.
reduced_maximal_clause_length: how much the maximal clause-length was decreased by the reduction. reduced_number_of_variables: How many variables where eliminated by the reduction. reduced_number_of_clauses: How many clauses where eliminated by the reduction. reduced_number_of_literal_occurrences: How many literal occurrences where eliminated by the reduction. initial_number_of_2-clauses: Number of 2-clauses after reduction. Definition in file general.hpp.