| 1 | [2008.10.12]
|
|---|
| 2 | This is the same as 2007.3.12 but can be compiled with g++-4.3
|
|---|
| 3 |
|
|---|
| 4 | [2007.3.12]
|
|---|
| 5 | Fixed the inefficiency bug in zverify_df. Thanks to Allen Van Gelder and
|
|---|
| 6 | Tjark Weber.
|
|---|
| 7 |
|
|---|
| 8 | [2004.11.15 Simplified]
|
|---|
| 9 | This is just a simplified version of 2004.5.13. Many portions of dead
|
|---|
| 10 | codes are removed. Some of codes are re-written and re-formatted for
|
|---|
| 11 | easy reading. You might experience a little speedup. Please switch back
|
|---|
| 12 | to 2004.5.13 if the functionalities you need are removed in the simplified
|
|---|
| 13 | version.
|
|---|
| 14 |
|
|---|
| 15 | [2004.5.13]
|
|---|
| 16 | Some performace update. This is the version we used for SAT04 competition.
|
|---|
| 17 | Please consult our website for the detailed description.
|
|---|
| 18 |
|
|---|
| 19 | [2003.12.04]
|
|---|
| 20 | Fixed:
|
|---|
| 21 | 1. Various bugs in add_clause_incr(). We would like to thank Alexander
|
|---|
| 22 | Smith from University of Toronto for his suggestion and experiments on
|
|---|
| 23 | this issue.
|
|---|
| 24 | 2. SAT_HOOK added.
|
|---|
| 25 | 3. unset_force_terminate added.
|
|---|
| 26 |
|
|---|
| 27 | [2003.11.04]
|
|---|
| 28 | Fixed:
|
|---|
| 29 | 1. Compile under g++ 3.3 and above
|
|---|
| 30 | 2. Assertion error for certain instances in core extraction
|
|---|
| 31 | 3. A typo in run_till_fix. Now it takes the second argument as the max
|
|---|
| 32 | number of iterations to run as intended.
|
|---|
| 33 |
|
|---|
| 34 | [2003.10.09]
|
|---|
| 35 | Fixes in this release:
|
|---|
| 36 | 1. Bug fixed for time overflow after 2147 seconds.
|
|---|
| 37 | 2. The Perl script run_till_fix is updated such that it works for cnf
|
|---|
| 38 | files located in other directory.
|
|---|
| 39 | 3. zverify_df.cpp now also verifies the conflict clause given in
|
|---|
| 40 | resolve_trace with the one constructed by zverify itself using the
|
|---|
| 41 | information given in resolve_trace.
|
|---|
| 42 | [2003.7.22]
|
|---|
| 43 | NOTE: If your code is in C instead of C++, please use SAT_C.h instead of
|
|---|
| 44 | SAT.h as the header file.
|
|---|
| 45 |
|
|---|
| 46 | This is a new (as of June, 2003) release of zchaff, a SAT solver from
|
|---|
| 47 | Princeton University. The main difference between this one and the
|
|---|
| 48 | previous (2001.2.17) version are listed in the following:
|
|---|
| 49 | 1. This version of zchaff has incremental SAT solving capability
|
|---|
| 50 | In practice, many SAT instances are related in the sense that they only
|
|---|
| 51 | differ in a small number of clauses. Zchaff can solve a set of
|
|---|
| 52 | such instances incrementally, leveraging the knowledge (clauses) learned
|
|---|
| 53 | from previous runs to help current runs. This feature can only be invoked
|
|---|
| 54 | through the functional call interface. Please read SAT.h for more
|
|---|
| 55 | information about assigning clauses with Group IDs and how to delete
|
|---|
| 56 | clause or add clauses by groups.
|
|---|
| 57 |
|
|---|
| 58 |
|
|---|
| 59 | 2. This version of zchaff is certifiable
|
|---|
| 60 | Now zchaff can produce a verifiable trace that can be checked by a third
|
|---|
| 61 | party checker. To invoke this, modify zchaff_solver.cpp and uncomment
|
|---|
| 62 | #define VERIFY_ON and compile again. Now zchaff will produce a trace
|
|---|
| 63 | called resolution_trace after each run and this can be checked by
|
|---|
| 64 | zverify_bf or zverify_df, which are two checkers based on breadth-first
|
|---|
| 65 | and depth-first search.
|
|---|
| 66 |
|
|---|
| 67 |
|
|---|
| 68 | 3. This version of zchaff can produce an unsatisfiable core from an
|
|---|
| 69 | unsatisifable formula Unsatisfiable core extraction can be useful for
|
|---|
| 70 | some applications. This version of zchaff implement the idea presented
|
|---|
| 71 | in our SAT 2003 paper about extracting unsat cores.
|
|---|
| 72 |
|
|---|
| 73 | 4. This version can compile under gcc 3.x.
|
|---|
| 74 |
|
|---|
| 75 | 5. This version fixed a couple of serious bugs in the previous version.
|
|---|
| 76 | (But may have introduced other bugs :().
|
|---|
| 77 |
|
|---|
| 78 |
|
|---|
| 79 | How to Install:
|
|---|
| 80 | Use "make" to compile, or "make all" to compile zchaff with extra utilities
|
|---|
| 81 | (e.g. core extractor, verifier). It should work without any problem
|
|---|
| 82 | under Linux, Cygwin or Solaris.
|
|---|
| 83 |
|
|---|
| 84 | To compile a native Windows executable, Open Visual Studio .Net, create
|
|---|
| 85 | a project, and add these files into the project:
|
|---|
| 86 | zchaff_base.cpp,
|
|---|
| 87 | zchaff_cpp_wrapper.cpp (this can be obtained by rename
|
|---|
| 88 | zchaff_wrapper.wrp to zchaff_cpp_wrapper.cpp and delete all occurance of
|
|---|
| 89 | "EXTERN" in the file.)
|
|---|
| 90 | zchaff_dbase.cpp
|
|---|
| 91 | zchaff_solver.cpp
|
|---|
| 92 | zchaff_utils.cpp
|
|---|
| 93 | sat_solver.cpp
|
|---|
| 94 |
|
|---|
| 95 | Also, modify files that contain headers "sys/*.h". Delete those troublesome
|
|---|
| 96 | headers, replace them with "#include <time.h>", and replace the code for
|
|---|
| 97 | function get_cpu_time() with:
|
|---|
| 98 |
|
|---|
| 99 | double get_cpu_time(void) {
|
|---|
| 100 | return (double)clock()/(double)(CLOCKS_PER_SEC);
|
|---|
| 101 | }
|
|---|
| 102 | This function will overflow after 2147 seconds. So the reported time
|
|---|
| 103 | may not be correct. This is a temporary solution and hopefully we will fix it in
|
|---|
| 104 | the future.
|
|---|
| 105 |
|
|---|
| 106 | MSVC will report a lot of warnings. Hopefully none is serious. :(. As
|
|---|
| 107 | you suspected, zchaff is not tested under native Windows enviroment.
|
|---|
| 108 | But anyway, this is the hack.
|
|---|
| 109 |
|
|---|
| 110 | How to use:
|
|---|
| 111 | the main executable is zchaff. The command line is
|
|---|
| 112 | zchaff CNF_FILE [TimeLimit]
|
|---|
| 113 | Other executables will print out a help info when executed with no
|
|---|
| 114 | argument.
|
|---|
| 115 |
|
|---|
| 116 | run_till_fix can obtain a small core by iteratively run core extraction.
|
|---|
| 117 | Do turn
|
|---|
| 118 | VERIFY_ON in zchaff_solver.cpp when compile.
|
|---|
| 119 |
|
|---|
| 120 | For any questions or bug reports, please send email to
|
|---|
| 121 | Yogesh Mahajan at yogism@Princeton.EDU
|
|---|
| 122 |
|
|---|
| 123 | Thanks.
|
|---|
| 124 |
|
|---|
| 125 | The SAT Group at Princeton University
|
|---|