MINISAT(1)

πŸ’– MINISAT(1) β€” the minisat page, but make it make sense πŸ’–

okay bestie, sit down, hydrate, because we're reading the minisat manual page together and it's actually SO good. this is from the General Commands Manual section, and it's about a fast and lightweight SAT solver. yes. we're doing boolean satisfiability today. it's giving STEM baddie. 🧚✨


🌸 NAME 🌸

minisat β€” fast and lightweight SAT solver. that's it, that's the whole name section, she's concise and she knows it πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

minisat [options] input-file result-output-file

okay so here's the deal: minisat takes as input a plain or gzipped DIMACS formatted file. whether that problem is satisfiable gets told to you two ways β€” through standard output and through the return value. two receipts, one answer. periodt. πŸŽ€


✨ DESCRIPTION ✨

this page documents briefly the minisat command, so don't come for it for being short, it's doing exactly what it promised. πŸ’–

MiniSat is a minimalistic, open-source SAT solver, built to help researchers and developers alike get started on SAT. and babes, she didn't just participate β€” she won all the industrial categories of the SAT 2005 competition. πŸ‘‘ iconic behaviour. so MiniSat is a great starting point both for future research in SAT and for applications that use SAT.

now, the science bit, because you deserve to know: even though the satisfiability problem of Boolean formulas (SAT) is NP complete, SAT solvers are often able to decide it in a reasonable time frame. and because every other NP complete problem is reducible to SAT, these solvers have lowkey become a general purpose tool for that whole class of problems. it's giving "one solver to rule them all" energy fr fr. πŸ”₯


πŸŽ€ OPTIONS πŸŽ€

one bullet per option, no skipping, we're eating the whole plate:

  • --help, --help-verb β€” shows a summary of the options (and --help-verb gives you the verbose version, because sometimes you want the whole essay πŸ’…).
  • -pre, -no-pre β€” turn preprocessing on (that's the default, bestie) or off.
  • -verb {0,1,2} β€” sets how chatty the informational output is. set it to 0 for silent mode (girl is not talking), defaults to 1.
  • -cpu-lim <unsigned> β€” puts a limit on CPU time in seconds, defaults to 2147483647.
  • -mem-lim <unsigned> β€” puts a limit on memory usage in MB, defaults to 2147483647.
  • -dimacs <output-file> β€” prints the (possibly preprocessed) input problem in DIMACS format and then stops. like, prints and dips. 🫢
  • -luby, -no-luby β€” enable (default) or disable the Luby restart sequence.
  • -rnd-init, -no-rnd-init β€” randomize the initial activity values. defaults to off, so she's predictable unless you ask otherwise.
  • -gc-frac <double> β€” the fraction of wasted memory allowed before a garbage collection gets triggered. non-negative, defaults to 0.2.
  • -rinc <double> β€” the page literally just lists this one with no description, so that's all we got, no cap. πŸ™ˆ
  • -var-decay <double> β€” variable activity decay factor, 0 <= value <= 1, defaults to 0.95.
  • -cla-decay <double> β€” clause activity decay factor, 0 <= value <= 1, defaults to 0.999.
  • -rnd-freq <double> β€” how often the decision heuristic tries to pick a random variable, 0 <= value <= 1, defaults to 0.
  • -rnd-seed <double> β€” the random seed for random variable selection, non-negative, defaults to 9.16483e+07.
  • -phase-saving {0,1,2} β€” controls the level of phase saving: 0=none, 1=limited, 2=full. defaults to 2 (full send, always).
  • -ccmin-mode {0,1,2} β€” controls conflict clause minimization: 0=none, 1=basic, 2=deep. defaults to 2.
  • -rfirst <int> β€” the base restart interval, positive, defaults to 100.
  • -rcheck, -no-rcheck β€” enable the (costly) or disable the (default) checking for redundant clauses. yes the costly one is opt-in, she's not doing that for free. πŸ’€
  • -asymm, -no-asymm β€” shrink clauses by asymmetric branching. disabled by default.
  • -elim, -no-elim β€” perform variable elimination. enabled by default.
  • -simp-gc-frac <double> β€” the fraction of wasted memory allowed before a garbage collection is triggered during simplification. non-negative, defaults to 0.5.
  • -sub-lim <int> β€” don't check if subsumption is against a clause larger than this value, -1 <= value, defaults to 1000. -1 means no limit.
  • -cl-lim <int> β€” variables are not eliminated if they produce a resolvent with a length above this limit, -1 <= value, defaults to 20. -1 means no limit.
  • -grow <int> β€” number of additional clauses that may be introduced when eliminating a variable. defaults to 0.

🌈 EXIT CODES 🌈

okay this part actually matters, write it down bestie, the vibes are in the numbers:

  • 0 β€” if parsing the command line options fails, usage information is requested, or output of the input problem in DIMACS format succeeds.
  • 1 β€” if interrupted by SIGINT or if an input file cannot be read.
  • 3 β€” if parsing the input fails.
  • 10 β€” if found satisfiable. πŸŽ‰
  • 20 β€” if found unsatisfiable.
lowkey obsessed with how 0 covers both "you asked for help" and "you typed it wrong". she contains multitudes.

πŸ’œ AUTHOR πŸ’œ

minisat was written by Niklas Een, Niklas Sorensson. ✨

this manual page was written by Michael Tautschnig <mt@debian.org>, for the Debian project (but may be used by others). shoutout, we love a documentation queen. 🫢


⭐ SEE ALSO ⭐

nope, there isn't one β€” this page keeps her circle small. 😌


and that's the whole page, you ate it. πŸ’…βœ¨ this was the minisat manual page, September 3, 2011 edition, bestie β€” go solve something NP complete, i believe in you. πŸŽ€πŸ¦‹πŸ’–