summaryrefslogtreecommitdiff
path: root/src/prop/cryptominisat/NEWS
diff options
context:
space:
mode:
Diffstat (limited to 'src/prop/cryptominisat/NEWS')
-rw-r--r--src/prop/cryptominisat/NEWS334
1 files changed, 334 insertions, 0 deletions
diff --git a/src/prop/cryptominisat/NEWS b/src/prop/cryptominisat/NEWS
new file mode 100644
index 000000000..48494c540
--- /dev/null
+++ b/src/prop/cryptominisat/NEWS
@@ -0,0 +1,334 @@
+ver 2.9.2 22/01/2011
+Bugfixes:
+* Bug in --maxsolutions fixed thanks to Martin Maurer
+* CalcDefPolars was taking >10% time for certain problems. Fixed thanks to
+ Vegard Nossum
+* Bug in StateSaver of saving&restoring double to unsigned fixed thanks to
+ Martin Maurer
+* Cache cleaning is finally fixed
+* Disabling part-finding as it made us loose 3+ points at SAT Comp'11
+* Clauses after empty comments sometimes weren't parsed. Thanks to Remy Delmas
+ for noticing this
+* Solutions were sometimes incorrect when using --maxsolutions=X
+* Random variable picking was turned off after a short while. Thanks to
+ Martin Maurer for noticing this
+* XOR-to-normal clause converting routine was buggy
+* Failed literal probing's hyper-binary resolution engine was taking too
+ much time
+* Performance regressions relative to branch that went into SatComp'11
+ have been worked on
+* FPU check problem fixed thanks to Jerry James
+* Printing problems related to multi-threading and startup in Main.cpp
+ fixed. Thanks to Martin Maurer for reporting this.
+
+Improvements:
+* Manpage thanks to Jerry James
+* We don't exit(-1) any more, instead, whe throw. Thanks to Jerry James for
+ this
+* Time-limiting in subsumption+strengthening+var-elim was not sufficient
+* "strengthened" qualifier removed from Clause
+* Way better subsumption+strengthening with 2- and 3-long clauses.
+* Cache cleaning
+
+ver 2.9.1 26/05/2011
+* Subsumption is now in one go instead handling learnt&non-learnt in different
+ runs.
+* Hyper-bin resolution is fixed(?). The algorithm has become too complex to
+ tell if it's correct -- a complete rewrite will be made for the next version
+* Lots of Gaussian bugs have been fixed -- thanks go to Vegard Nossum
+* A lot of compilation issues have been fixed to the point that the program
+ now compiles with "-pedantic -Wall -Werror" on many different systems.
+ Thanks for this go to: Martin Albrecht, Robert Aston, Martin Maurer, Vegard
+ Nossum and others on the CryptoMiniSat mailing list
+
+ver 2.9.0 20/01/2011
+* Added extended SCC and vivification using cached implications
+* Reachability testing and related branching heuristic using cached
+ implications
+* Corrected subsumption code -- it is now more precise but slower
+* Corrected original problem & learnt dumping. Binary clauses were wrongly
+ dumped, and xor clauses were never dumped
+* Better time-limiting on subsumption, var-elimination, etc.
+* When a variable can be eliminated with no resulting clauses, it is elim-ed
+* On-the-fly transitive self-subsuming resolution is now carried out based
+ on short/long-term average clause sizes and glue numbers
+* More stats are printed. CPU times in stats are better in case a recent
+ (>2.6.26) version of the Linux kernel is used.
+* Multi-threaded solving is no longer default since it hasn't been really
+ tested in terms of performance
+* Lots of debug code is now enabled by default. It slows down things by
+ maybe 5% but keeps the code more sane
+* gcc bug 47365 has been found and workaround is automated through the
+ configure script. If you build using hand-crafted Makefiles, you will bump
+ into this bug for sure.
+
+ver 2.8.0beta5 2/11/2010
+* reason[] was taken to be correct, when in fact it is not updated during
+ canceling
+* Subsumer::unEliminate() erased iterators from std::map that was not inside
+ the map
+
+ver 2.8.0beta4 31/10/2010
+* class Watched is now tuned more towards operations that are executed
+ more. These now require no bit-shifting
+* Bug fix: debug code left in from DimacsParser removed
+
+ver 2.8.0beta3 30/10/2010
+* Bug in hand-coded Tarjan's algorithm. We were manipulating the watchlists
+ while using them. This lead to a segfault.
+* Bug in replace() -- we were using replace(), but the clauses were not always
+ attached (e.g. in ClauseDetacherReattacher) and so the added binary clause
+ was not always l_Undef,l_Undef. A very subtle bug that could have caused
+ solution-sanity problems
+* Fixed bug with opening fileno(stdin)
+
+ver 2.8.0beta2 28/10/2010
+* Boost dependency removed through implementation of Tarjan's algorithm by
+ hand. This also implies a much reduced memory footprint in case there were
+ many binary clauses
+
+ver 2.8.0beta1 27/10/2010
+* Binary clauses are now implicit. This allows for _very_ large problems
+ that contain mostly only binary clauses to work surprisingly well in terms
+ of subsumption and self-subsuming resolution. Also, variable elimination
+ should now be possible for these clauses (been tested problem with 120
+ million binary clauses)
+* Due to implicit binary clauses, we use Tarjan's algorithm, currently
+ from Boost -- this dependency will be removed soon
+* A preliminary multi-threading is possible. Unitary and binary clauses are
+ shared between the threads at regular intervals. Threading is with OpenMP
+ which should be available for all platforms
+* Lots and lots of bugfixes. On many occasions, clauses and xor-clauses have
+ been inserted into the watchlists when these clauses' variables were
+ fixed, leading to some very bad effects.
+
+ver 2.7.1 -- 10/10/2010
+* Bug in DIMACS-parsing fixed. We couldn't read back the dumped clauses'
+ learnt state properly, which lead to parsing problems. Thanks to
+ Vlastislav Weiner for reporting this
+
+ver 2.7.0 -- 5/10/2010
+* Lots of documentation added. At least 1500 lines of in-line documentation
+ is now available. This documentation can be extracted using the Doxygen
+ tool
+* Transitive on-the-fly self-subsuming resolution added for short clauses
+ at the beginning of the solving (<80 million conflict literals).
+* Preliminary learnt-clause parsing -- the dumped learnt clauses are now
+ correctly parsed up to be learnt, and hence a preliminary of stop-
+ solving & restart-solving cycle can be created
+* Memory manager has been debugged. It was segfaulting on certain large
+ instances. (thanks to Rob None for the multiple bug reports)
+* Memory manager no longer needs to keep a map of old clauses<-> new
+ clauses. This is now a direct-access table, speeding up memory
+ consolidation considerably
+
+ver 2.6.0 -- 16/08/2010
+* No more separate watchlists for binary clauses. Class "Watched" knows
+ what it watches. This reduces memory overhead, and reduces jump-around
+ in code and data.
+* Tertiary clauses are handled natively inside the watchlists just like
+ binary clauses
+* Watchlists are sorted to propagate binary clauses first, and tertiary
+ clauses next, finally to propagate normal and xor clauses
+* Clause subsumption has finally been cleared of a number of bugs. We now
+ subsume with learnt clauses on a regular basis.
+* 32-bit pointers are no longer used. Instead, a stack-based implementation
+ is used, on the lines of the description of the solver lingeling by
+ Armin Biere. This leads to minimal (~6%) speedup relative to the original
+ scheme in CryptoMiniSat 2.5.1, but it enables 32-bit pointers on all
+ architectures
+* Asymmetric branching is now used. Clauses are sorted according to size,
+ and the largest ones are shortened with asymm-branching. This brings
+ large benefits, as often the largest clauses are responsible for a good
+ number of the literals in the learnt clauses. Asymmetric branching thus
+ reduces the learnt clause sizes, increasing their potential and making
+ propagation faster
+* On-the-fly self-subsuming resolution of learnt clauses is used to
+ shorten them even further using binary and tertiary (i.e. natively
+ stored) clauses.
+* Since tertiary clauses are first to propagate after binary clauses, the
+ number of tertiary clauses propagating is higher, leading to even less
+ literals in the learnt clauses
+* Printing has been updated. It is still not perfect, but we are making
+ progress.
+* Known regressions: xor clauses could potentially be propagated somewhat
+ slower, statistics generator is currently broken
+
+ver 2.5.2 -- 8/06/2010
+* Fixing serious bug with xor-cutting. We no longer segfault if there are
+ many XORs in the given problem
+
+ver 2.5.1 -- 8/06/2010 --- 'The Obvious Child'
+* Printing updates: everyting is printed much more nicely now
+* Approximated degrees of literals in binary graph are not reset between
+ calculations
+
+ver 2.5.0 -- 7/06/2010 (SAT Race'10 version)
+* A lot of performance bugs have been fixed. Activities of clauses were wrongly
+ updated with their abstract representation during subsumtion for example.
+ Also, we now use a well-tested set of magic constants instead of making
+ them up using intuition. Apparently, intuition in the field of SAT leads
+ to headaches and (in severe cases) to dementia.
+* A lot of code has been added regarding binary clause graphs. It is now
+ regularly cleaned from useless binary clauses. Also, the useless binary
+ clauses are regularly generated to subsume and strenghthen other clauses
+ with them -- and once used, these useless binary clauses are thrown away.
+* Hyper-binary clauses are now generated using an algorithm relying purely
+ on the datastrucures available in modern SAT solvers -- i.e. the fact that
+ binary clauses have their own watchlists, and so allow for efficient
+ propagation of the binary clauses separately from other clauses.
+
+ver 2.4.2 -- 9/05/2010
+* Gaussian elimination has finally been fixed. It can now be tried out with
+ the command-line switch "--gaussuntil=X", where X is the maximum depth. I
+ usually set 100, but this is probably a wrong default. You should experiment
+ with your own cipher. NOTE: Gauss is still experimental. If it segfaults,
+ please file a bug.
+* The solver can now print out all the solutions to a problem. Simply use the
+ "--maxsolutions=X" option, where X is the maximum number of solutions you
+ need. You may use this option in conjunction with the very experimental
+ "--greedyunbound" which unassigns some variables in such a way that the
+ given solution is still correct, but some variables may not appear in it.
+* Command line switches have been corrected. They are now all lower-case and
+ use the prefix "--" instead of "-"
+
+ver 2.4.1 -- 30/04/2010
+Serious bug fixed that read data from change memory in subsume0, and
+hyper-binary resolution has been disabled, since it caused satisfiable
+instances to become unsatisfiable.
+
+ver 2.4.0 -- 26/04/2010
+The first real release of CryptoMiniSat v2. It contains the following set
+of improvements:
+ * XOR clauses are extracted at the beginning of the solving
+ * Anti- or equivalent variables are detected at regular intervals
+ and are replaced with one another, eliminating variables during
+ solving
+ * xor-clauses are regularly XOR-ed with one another such as to obtain
+ binary XOR clauses. These binary xor-clauses are then treated as variable
+ replacements instructions (i.e. "v1 XOR v2 = false" means that v1 is
+ replaced with v2)
+ * Phase calculation using Jeroslow and Wang, and phase saving with
+ randomised search space exploration. The average branch depth is
+ measured for each instance, and the solver makes a random phase
+ flip with 1/avgBranchDepth probability
+ * Random search burst are used to search unexplored areas of the
+ search space at regular intervals
+ * Automatic detection of cryptographic and industrial instances. Dynamic
+ restart is used for industrial instances, and static restart for
+ cryptographical instances. Detection is based on xor-clause percentage
+ and variable activity stability.
+ * Regular full restarts are performed to detect if the problem hasn't
+ changed enough due to learnt clauses and assigned variables to behave
+ more like a cryptographical instance than an industrial instance or
+ vice-versa.
+ * Both GLUCOSE-type learnt clause activity and MiniSat-type learnt clause
+ activity heuristics are supported. During dynamic restarts, the GLUCOSE
+ heuristic is used, while during static restarts, the MiniSat-type
+ heuristic is used.
+ * SatELite-type variable elimination, clause subsumption and clause
+ strengthening is regularly performed. The occurrence lists are, however,
+ not updated all the time such as the case is with PrecoSat. Instead,
+ occurrences are calculated on per-use basis
+ * On-the-fly subsumption is used to check whether the conflict clause
+ automatically subsumes the clause that caused the conflict.
+ * Binary clauses are propagated first before non-binary clauses are
+ propagated.
+ * 32-bit pointers are used for the watchlists on 64-bit architectures,
+ using out the fact that most bits in the 64-bit pointer are actually fixed
+ * Hyper-binary resolution is used when the hyper-binary clause subsumes
+ any of the original clauses
+ * Clauses are regularly scrubbed from variables that have been assigned
+ * Preliminary blocked-clause elimination is used to remove pure literals
+ * Distinct subproblems are regularly searched for and detected. These
+ subproblems and solved with subsolvers. As a side-ntoe, this eliminates
+ the original theoretical need for phase-saving (enabling the random
+ flipping of phase, which is also used)
+ * xor-clause subsumption is regularly performed
+ * So-called dependent variables are removed along with their xor-clauses.
+ This means that variables that only occur in one xor-clause and in no
+ other clause are removed along with the XOR clause. Once the solving has
+ finished, this xor-clause is re-introduced and a suitable value for the
+ variable is found to satisfy the XOR.
+ * Failed variable probing with both-propagated and binary XOR detection.
+ All variables are successively propagated both to TRUE and FALSE. If one
+ of these branches fails, the variable is assigned the other branch.
+ If none fails, but the intersection of assignments is non-empty, those
+ assignments are made. Essentially the same is done to non-binary XOR-s:
+ if both v and !v propagate a given binary XOR, that XOR is learnt.
+ * Designed to work as a library and as a drop-in replacement for MiniSat
+
+ver 2.3.2 -- 28/12/2009
+* further ints have been replaced with uints
+* ZLIB can now be disabled
+* Visual C++ 2008 can now compile the sources
+* Statistics generation is much faster
+ (thanks to Martin Maurer for spotting this)
+
+ver 2.3.0 -- 17/12/2009
+* binary learnts are converted to 2-long xors if possible, and eliminated
+* lots of heuristics tuning
+* Cleanclauses is now default instead of removeSatisfied in simplify()
+* Stable in case used as a library
+* Lots of regression tests added
+* Cleaner logging
+* ints have been replaced with uints (less warnings with -Wall)
+* a lot of speedups for gauss -- packed, multi-matrix representation
+
+ver 2.2 -- 20/11/2009
+* xor-clause finding
+* matrix finding
+* var-replacing
+* heuristics to disable gauss
+* much better+cleaner stats generation (e.g. fcopy.cpp removed)
+* lots of bug-fixing
+* satelite added, with cryptominisat_ext.sh as a wrapper script
+
+ver 2.1.1 -- 30/10/2009
+* Learnt clause distribution stats
+* Added regression testing
+
+ver 2.1.0 -- 28/10/2009
+* hand-made (non-GPL Bignum) packed representation of both matrix' rows
+* removed dependency on GPL Bignum library
+
+ver 2.0.1 -- 24/10/2009
+* Added Gaussian elimination
+
+ver 1.2.6 -- 24/10/2009
+* Corrected unitialised maxRestarts
+
+
+ver 1.2.6 -- 24/10/2009
+* Corrected unitialised maxRestarts
+
+ver 1.2.5 -- 24/10/2009
+* Maximum restarts can be configured
+* Better verbose debug printing
+
+ver 1.2.4 -- 22/10/2009
+* CryptoMiniSat is printed as the first line of the program
+ (instead of "This is MiniSat 2.0 beta")
+
+ver 1.2.3 -- 22/10/2009
+* better README file
+* better use of the automake autoconf toolchain
+
+ver 1.2.2 -- 22/10/2009
+* phase saving added (thank you, glucose solver team)
+* better printing of statistics
+* better explanation of statistics
+* accept 'v' and 'var', 'g' and 'group'
+* better parsing of 'v','var' and 'g','group'
+* don't allow too long group and variable names
+* branch length distribution added
+* better Makefile.cvs
+* cmake option added
+* updated INSTALL instructions
+* '-march=native' is default when using cmake
+
+ver 1.1 -- 29/04/2009
+* Renamed to CryptoMiniSat
+
+ver 1.0 -- 15/04/2009
+* Some updated statistics! Now average rank of guessed var is shown
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback