debian/ 0000755 0000000 0000000 00000000000 12170065742 007172 5 ustar debian/compat 0000644 0000000 0000000 00000000002 12170065057 010367 0 ustar 9
debian/minisat-user-guide.html 0000644 0000000 0000000 00000020107 11316362464 013575 0 ustar
MiniSAT User Guide: How to use the MiniSAT SAT Solver
MiniSAT User Guide: How to use the MiniSAT SAT Solver
by David A. Wheeler, version 1.00 (2008-06-28)
MiniSat is a minimalistic, open-source Boolean satisfiability problem
(SAT) solver, developed for both researchers and developers; it
is released under the "MIT license".
A SAT solver can determine if it is possible to find assignments to boolean
variables that would make a given expression true, if the expression is
written with only AND, OR, NOT, parentheses, and boolean variables.
If it's satisfiable, most SAT solvers (including MiniSAT)
can also show a set of assignments that make the expression true.
Many problems can be broken down into a large SAT problem
(perhaps with thousands of variables), so SAT solvers have a variety
of uses.
This article is a brief
user guide (documentation) for the MiniSAT (MiniSAT2) program.
It describes how to use MiniSAT, including its input format, options,
and output format.
Conjunctive Normal Form (CNF)
Like many SAT solvers, MiniSAT requires that its input be in
conjunctive normal form (CNF or cnf).
CNF is built from these building blocks:
- term: A term is either a boolean variable (e.g., x4)
or a negated boolean variable (NOT x4, written here as -x4).
- clause: A clause is a set of one or more terms, connected with OR
(written here as |); boolean variables may not repeat inside a clause.
- expression: An expression is a set of one or more clauses,
each connected by AND (written here as &).
An example of CNF is:
(x1 | -x5 | x4) &
(-x1 | x5 | x3 | x4) &
(-x3 | x4).
Any boolean expression can be converted into CNF;
algorithms and code for doing so are available elsewhere
(e.g., see "Artificial Intelligence: A modern Approach"
by Russel and Norvig, 1995).
MiniSAT input format
MiniSAT, like most SAT solvers, accepts its input in a simplified
"DIMACS CNF" format, which is a simple text format.
Every line beginning "c" is a comment.
The first non-comment line must be of the form:
p cnf NUMBER_OF_VARIABLES NUMBER_OF_CLAUSES
Each of the non-comment lines afterwards defines a clause.
Each of these lines is a space-separated list of variables;
a positive value means that corresponding variable
(so 4 means x4), and a negative value means the negation of that variable
(so -5 means -x5).
Each line must end in a space and the number 0.
So the CNF expression above would be written as:
c Here is a comment.
p cnf 5 3
1 -5 4 0
-1 5 3 4 0
-3 -4 0
The "p cnf" line means that this is SAT problem in CNF format with
5 variables and 3 clauses. The first line after it is the first clause,
meaning x1 | -x5 | x4.
You can view this as a single expression.
Alternatively, you can view this as a set of clauses, and the
solver's job is to find the set of boolean variable assignments that
make all the clauses true.
The
SAT 2004 competition has more information.
Invoking MiniSAT
MiniSAT's usage is:
minisat [options] [INPUT-FILE [RESULT-OUTPUT-FILE]]
The INPUT-FILE is in DIMACS CNF format as described above, either
plain text or gzipped.
You can invoke it with the options "-h" or "--help" to see the other options.
The program's options include:
-pre = {none,once} [Turn on preprocessor]
-asymm
-rcheck
-grow = NUM [ must be greater than 0 ]
-polarity-mode = {true,false,rnd}
-decay = NUM [ 0 - 1 ]
-rnd-freq = NUM [ 0 - 1 ]
-dimacs = OUTPUT-FILE
-verbosity = {0,1,2}
Options with a value must be immediately followed by "=" and its value, e.g.:
minisat -pre=once
For many problems, using the preprocessor is a good idea (-pre=once).
MiniSAT output format
When run, miniSAT sends to standard error a number of different
statistics about its execution.
It will output to standard output either
"SATISFIABLE" or "UNSATISFIABLE" (without the quote marks), depending
on whether or not the expression is satisfiable or not.
If you give it a RESULT-OUTPUT-FILE, miniSAT will write text to the file.
The first line will be "SAT" (if it is satisfiable) or "UNSAT"
(if it is not).
If it is SAT, the second line will be set of assignments to the
boolean variables that satisfies the expression.
(There may be many others; it simply has to produce one assignment).
So for the example above, it will produce in the output file:
SAT
1 2 -3 4 5 0
This means that it is satisfiable, with
x1=t, x2=t, x3=f, x4=t, and x5=t (where t is true and f is false).
Going back to our original example, we should see that this is a
solution:
(x1 | -x5 | x4) = t | -t | t = t
(-x1 | x5 | x3 | x4) = -t | t | f | t = t
(-x3 | x4) = -f | t = t
Getting more solutions
If you want to get another solution, the "obvious" way is to
add, as a new clause, the negated form of the previous solution.
E.G., for our example, we could take:
1 2 -3 4 5 0
and create this new input (note that the count of clauses has increased):
p cnf 5 4
1 -5 4 0
-1 5 3 4 0
-3 -4 0
-1 -2 3 -4 -5 0
If we put this in file "second.in", and run:
minisat second.in second.out
We will get a new solution; here's second.out:
SAT
1 -2 -3 4 5 0
IE., x1=t, x2=f, x3=f, x4=t, and x5=t.
This is a different solution from the previous one, because x2=f instead of
x2=t.
We can confirm this (it's the same as last time,
because x2 isn't even in any of the clauses):
(x1 | -x5 | x4) = t | -t | t = t
(-x1 | x5 | x3 | x4) = -t | t | f | t = t
(-x3 | x4) = -f | t = t
For more information
You can get more information from:
This article was written by
David A. Wheeler, and is released
to the public domain.
If you use it or reference it, please credit David A. Wheeler
(though this is not a requirement for its use).
You can get this version at
http://www.dwheeler.com/essays/minisat-user-guide-1.0.html, or
the latest version at
http://www.dwheeler.com/essays/minisat-user-guide.html.
debian/source/ 0000755 0000000 0000000 00000000000 11333002752 010462 5 ustar debian/source/format 0000644 0000000 0000000 00000000014 11355725556 011712 0 ustar 3.0 (quilt)
debian/manpages 0000644 0000000 0000000 00000000021 11544342105 010674 0 ustar debian/minisat.1
debian/changelog 0000644 0000000 0000000 00000006623 12170065115 011045 0 ustar minisat2 (1:2.2.1-4) unstable; urgency=low
* Require a non-zero memory limit (closes: #716229)
* Bumped standards version to 3.9.4 (no changes)
* Bumped compatibility level to 9
-- Michael Tautschnig Fri, 12 Jul 2013 21:42:02 +0100
minisat2 (1:2.2.1-3) unstable; urgency=low
* Updated man page (closes: #638217)
-- Michael Tautschnig Sat, 03 Sep 2011 21:03:43 +0100
minisat2 (1:2.2.1-2) unstable; urgency=low
* Include headers from simp/ directory in package
* Bumped standards version to 3.9.2 (no changes)
-- Michael Tautschnig Mon, 13 Jun 2011 15:13:41 +0200
minisat2 (1:2.2.1-1) unstable; urgency=low
* Upload of package with revamped build system to unstable.
* Rename main binary package to minisat, added transitional package.
* Use debhelper 7.
-- Michael Tautschnig Tue, 29 Mar 2011 13:31:53 +0200
minisat2 (1:2.2.0-3) experimental; urgency=low
* Current upstream git snapshot with fully reworked build system.
- Properly builds shared library (closes: #606846).
- Fixes include hierarchy (closes: #606643).
-- Michael Tautschnig Thu, 20 Jan 2011 22:37:08 +0100
minisat2 (1:2.2.0-2) unstable; urgency=low
* Fix FTBFS due to undefined _FPU_{EXTENDED,DOUBLE} (closes: #590254).
* Fix FTBFS due to undefined memUsedPeak (closes: #590255).
-- Michael Tautschnig Sun, 25 Jul 2010 22:02:54 +0200
minisat2 (1:2.2.0-1) unstable; urgency=low
* New upstream version.
- Introduced epoch as new versioning scheme is in use.
- Added Vcs-Git and Vcs-Browser control fields.
- Bumped SO version as all functions have been moved into a namespace.
- Added patch 9bd8749.
* Switch to dpkg-source 3.0 (quilt) format
* Bumped standards version to 3.9.0 (no changes)
-- Michael Tautschnig Sun, 25 Jul 2010 08:42:10 +0200
minisat2 (070721-8) unstable; urgency=low
* Added Homepage field.
-- Michael Tautschnig Tue, 29 Dec 2009 14:25:31 +0100
minisat2 (070721-7) unstable; urgency=low
* Bumped standards version to 3.8.3 (no changes).
* Use Copyright instead of (C) in debian/copyright.
* Build dynamic library (thanks Pietro Abate
for ideas and patches). (Closes: #537372)
-- Michael Tautschnig Tue, 29 Dec 2009 12:19:36 +0100
minisat2 (070721-6) unstable; urgency=low
* Completed man page (Closes: #501983)
-- Michael Tautschnig Sun, 26 Oct 2008 20:35:45 +0100
minisat2 (070721-5) unstable; urgency=low
* Also test for _FPU_GETCW being defined to fix FTBFS on alpha
-- Michael Tautschnig Sun, 07 Sep 2008 21:09:47 +0200
minisat2 (070721-4) unstable; urgency=low
* Added David A. Wheeler's nice intro to SAT solving
-- Michael Tautschnig Sun, 07 Sep 2008 19:32:20 +0200
minisat2 (070721-3) unstable; urgency=low
* Test, whether _FPU_EXTENDED and _FPU_DOUBLE are defined
(fixes FTBFS)
* Improved description of package (Closes: #486602)
-- Michael Tautschnig Tue, 17 Jun 2008 21:51:01 +0000
minisat2 (070721-2) unstable; urgency=low
* Added libz-dev build-dep to fix FTBFS
-- Michael Tautschnig Mon, 16 Jun 2008 12:51:36 +0000
minisat2 (070721-1) unstable; urgency=low
* Initial release (Closes: #484989)
-- Michael Tautschnig Sat, 7 Jun 2008 17:10:44 +0200
debian/copyright 0000644 0000000 0000000 00000003230 11316373044 011121 0 ustar This package was debianized by Michael Tautschnig on
Sat, 7 Jun 2008 17:10:44 +0200.
It was downloaded from http://minisat.se/downloads/minisat2-070721.zip
Upstream Author: Niklas Eén , Niklas Sörensson
Copyright: 2003-2006, Niklas Een, Niklas Sorensson
License:
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
The file minisat-user-guide.html is Copyright 2008, David A. Wheeler and has
been downloaded from http://www.dwheeler.com/essays/minisat-user-guide.html. It
is released to the public domain.
The Debian packaging is Copyright 2008, Michael Tautschnig and
is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
debian/minisat.1 0000644 0000000 0000000 00000010771 11630533706 010726 0 ustar .\" Hey, EMACS: -*- nroff -*-
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH MINISAT 1 "September 3, 2011"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
.\" .nh disable hyphenation
.\" .hy enable hyphenation
.\" .ad l left justify
.\" .ad b justify to both left and right margins
.\" .nf disable filling
.\" .fi enable filling
.\" .br insert line break
.\" .sp insert n+1 empty lines
.\" for manpage-specific macros, see man(7)
.SH NAME
minisat \- fast and lightweight SAT solver
.SH SYNOPSIS
.B minisat
.RI [ options ] " input-file
.I result-output-file
.B minisat
takes as input a plain or gzipped DIMACS formatted file. The satisfiability of
this input problem is indicated both via standard output and the return value.
.SH DESCRIPTION
This manual page documents briefly the
.B minisat
command. MiniSat is a minimalistic, open-source SAT solver, developed to help
researchers and developers alike to get started on SAT. Winning all the
industrial categories of the SAT 2005 competition, MiniSat is a good starting
point both for future research in SAT, and for applications using SAT.
Despite the NP completeness of the satisfiability problem of Boolean formulas
(SAT), SAT solvers are often able to decide this problem in a reasonable time
frame. As all other NP complete problems are reducible to SAT, the solvers
have become a general purpose tool for this class of problems.
.PP
.SH OPTIONS
.B \-\-help, \-\-help-verb
Show (verbose) summary of options.
.TP
.B \-pre, \-no-pre
Enable (default) or disable preprocessing.
.TP
.B \-verb {0,1,2}
Set the verbosity of informational output (set to 0 for silent, defaults to 1)
.TP
.B \-cpu-lim
Set a limit on CPU time (seconds, defaults to 2147483647).
.TP
.B \-mem-lim
Set a limit on memory usage (MB, defaults to 2147483647).
.TP
.B \-dimacs
Print (possibly preprocessed) input problem in DIMACS format and stop.
.TP
.B \-luby, \-no-luby
Enable (default) or disable the Luby restart sequence.
.TP
.B \-rnd-init, \-no-rnd-init
Randomize the initial activity values (defaults to off).
.TP
.B \-gc-frac
The fraction of wasted memory allowed before a garbage collection is triggered
(non-negative, defaults to 0.2).
.TP
.B \-rinc
.TP
.B \-var-decay
Variable activity decay factor (0 <= value <= 1, defaults to 0.95).
.TP
.B \-cla-decay
Clause activity decay factor (0 <= value <= 1, defaults to 0.999).
.TP
.B \-rnd-freq
The frequency with which the decision heuristic tries to choose a random
variable (0 <= value <= 1, defaults to 0).
.TP
.B \-rnd-seed
Random seed for random variable selection (non-negative, defaults to
9.16483e+07).
.TP
.B \-phase-saving {0,1,2}
Controls the level of phase saving (0=none, 1=limited, 2=full, defaults to 2).
.TP
.B \-ccmin-mode {0,1,2}
Controls conflict clause minimization (0=none, 1=basic, 2=deep, defaults to 2)
.TP
.B \-rfirst
The base restart interval (positive, defaults to 100).
.TP
.B \-rcheck, \-no-rcheck
Enable (costly) or disable (default) checking for redundant clauses.
.TP
.B \-asymm, \-no-asymm
Shrink clauses by asymmetric branching (disabled by default).
.TP
.B \-elim, \-no-elim
Perform variable elimination (enabled by default).
.TP
.B \-simp-gc-frac
The fraction of wasted memory allowed before a garbage collection is triggered
during simplification (non-negative, defaults to 0.5).
.TP
.B \-sub-lim
Do not check if subsumption against a clause larger than this value (\-1 <=
value, defaults to 1000). \-1 means no limit.
.TP
.B \-cl-lim
Variables are not eliminated if they produce a resolvent with a length above
this limit (\-1 <= value, defaults to 20). \-1 means no limit.
.TP
.B \-grow
Number of additional clauses that may be introduced when eliminating a variable.
Defaults to 0.
.PP
.SH EXIT CODES
.B 0
if parsing the command line options fails, usage information is requested, or
output of the input problem in DIMACS format succeeds.
.B 1
if interrupted by SIGINT or if an input file cannot be read,
.B 3
if parsing the input fails,
.B 10
if found satisfiable, and
.B 20
if found unsatisfiable.
.PP
.SH AUTHOR
minisat was written by Niklas Een, Niklas Sorensson
.PP
This manual page was written by Michael Tautschnig ,
for the Debian project (but may be used by others).
debian/install 0000644 0000000 0000000 00000000441 11575406334 010566 0 ustar minisat/core/*.h usr/include/minisat/core/
minisat/mtl/*.h usr/include/minisat/mtl/
minisat/utils/*.h usr/include/minisat/utils/
minisat/simp/*.h usr/include/minisat/simp/
build/release/lib/libminisat.a usr/lib/
build/dynamic/lib/libminisat.so* usr/lib/
build/dynamic/bin/minisat usr/bin/
debian/docs 0000644 0000000 0000000 00000000037 11316362464 010047 0 ustar debian/minisat-user-guide.html
debian/watch 0000644 0000000 0000000 00000000762 12170065630 010224 0 ustar # Compulsory line, this is a version 3 file
version=3
# Uncomment to examine a Webpage
#
#http://www.example.com/downloads.php minisat2-(.*)\.tar\.gz
# Uncomment to examine a Webserver directory
http://minisat.se/downloads/minisat-(.*)\.tar.gz
# Uncommment to examine a FTP server
#ftp://ftp.example.com/pub/minisat2-(.*)\.tar\.gz debian uupdate
# Uncomment to find new files on sourceforge, for debscripts >= 2.9
# http://sf.net/minisat2/minisat2-(.*)\.tar\.gz
debian/doc-base 0000644 0000000 0000000 00000000741 11544344001 010564 0 ustar Document: minisat-user-guide
Title: MiniSAT User Guide: How to use the MiniSAT SAT Solver
Author: David A. Wheeler
Abstract: This article is a brief user guide (documentation)
for the MiniSAT (MiniSAT2) program. It describes how to use
MiniSAT, including its input format, options, and output
format.
Section: Science/Mathematics
Format: HTML
Index: /usr/share/doc/minisat/minisat-user-guide.html
Files: /usr/share/doc/minisat/minisat-user-guide.html
debian/patches/ 0000755 0000000 0000000 00000000000 12170065716 010622 5 ustar debian/patches/memory_limit 0000644 0000000 0000000 00000003671 12170065334 013256 0 ustar Description:
TODO: Put a short summary on the line above and replace this paragraph
with a longer explanation of this change. Complete the meta-information
with other relevant fields (see below for details). To make it easier, the
information below has been extracted from the changelog. Adjust it or drop
it.
.
minisat2 (1:2.2.1-4) unstable; urgency=low
.
* Require a non-zero memory limit (closes: #716229)
* Bumped standards version to 3.9.4 (no changes)
* Bumped compatibility level to 9
Author: Michael Tautschnig
Bug-Debian: http://bugs.debian.org/716229
---
The information above should follow the Patch Tagging Guidelines, please
checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:
Origin: ,
Bug:
Bug-Debian: http://bugs.debian.org/
Bug-Ubuntu: https://launchpad.net/bugs/
Forwarded:
Reviewed-By:
Last-Update:
--- minisat2-2.2.1.orig/minisat/simp/Main.cc
+++ minisat2-2.2.1/minisat/simp/Main.cc
@@ -85,7 +85,7 @@ int main(int argc, char** argv)
BoolOption pre ("MAIN", "pre", "Completely turn on/off any preprocessing.", true);
StringOption dimacs ("MAIN", "dimacs", "If given, stop after preprocessing and write the result to this file.");
IntOption cpu_lim("MAIN", "cpu-lim","Limit on CPU time allowed in seconds.\n", INT32_MAX, IntRange(0, INT32_MAX));
- IntOption mem_lim("MAIN", "mem-lim","Limit on memory usage in megabytes.\n", INT32_MAX, IntRange(0, INT32_MAX));
+ IntOption mem_lim("MAIN", "mem-lim","Limit on memory usage in megabytes.\n", INT32_MAX, IntRange(64, INT32_MAX));
parseOptions(argc, argv, true);
debian/patches/series 0000644 0000000 0000000 00000000015 12170065716 012033 0 ustar memory_limit
debian/control 0000644 0000000 0000000 00000002530 12170065547 010600 0 ustar Source: minisat2
Section: science
Priority: extra
Maintainer: Michael Tautschnig
Build-Depends: debhelper (>= 9), libz-dev
Standards-Version: 3.9.4
Homepage: http://minisat.se/
Vcs-Browser: http://github.com/niklasso/minisat
Vcs-Git: git://gitorious.org/minisat-debian/minisat2.git
Package: minisat
Architecture: any
Provides: minisat2
Replaces: minisat2 (<< 1:2.2.1-1)
Conflicts: minisat2 (<< 1:2.2.1-1)
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Fast and lightweight SAT solver
Despite the NP completeness of the satisfiability problem of Boolean formulas
(SAT), SAT solvers are often able to decide this problem in a reasonable time
frame. As all other NP complete problems are reducible to SAT, the solvers
have become a general purpose tool for this class of problems.
.
MiniSat is a minimalistic, open-source SAT solver, developed to help
researchers and developers alike to get started on SAT. Winning all the
industrial categories of the SAT 2005 competition, MiniSat is a good starting
point both for future research in SAT, and for applications using SAT.
Package: minisat2
Section: oldlibs
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, minisat
Description: Transitional package for minisat
This is a transitional package for minisat, and can be safely removed after
the installation is complete.
debian/rules 0000755 0000000 0000000 00000001052 11544344534 010253 0 ustar #!/usr/bin/make -f
# -*- makefile -*-
#
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.
#
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
%:
dh $@
override_dh_auto_configure:
dh_testdir
$(MAKE) config prefix=/usr
override_dh_installchangelogs:
dh_installchangelogs doc/ReleaseNotes-2.2.0.txt