[10] | 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 |
---|