Scroll to navigation

CRYPTOMINISAT5(1) User Commands CRYPTOMINISAT5(1)

NAME

cryptominisat5 - SAT solver

DESCRIPTION

A universal, fast SAT solver with XOR and Gaussian Elimination support. Input can be either plain or gzipped DIMACS with XOR extension

cryptominisat5 [options] inputfile [drat-trim-file]

Preprocessor usage:

cryptominisat5 --preproc 1 [options] inputfile simplified-cnf-file
cryptominisat5 --preproc 2 [options] solution-file

Main options:

Print simple help
Print extensive help
Print version info
[0-10] Verbosity of solver. 0 = only solution
[0..] Random seed
Number of threads
Stop solving after this much time (s)
Stop solving after this many conflicts
Time multiplier for all simplification cutoffs
Multiplier for memory-out checks on inprocessing functions. It limits things such as clause-link-in. Useful when you have limited memory but still want to do some inprocessing
0 = normal run, 1 = preprocess and dump, 2 = read back dump and solution to produce final solution

Polarity options:

{true,false,rnd,auto} Selects polarity mode. 'true' -> selects only positive polarity when branching. 'false' -> selects only negative polarity when branching. 'auto' -> selects last polarity used (also called 'caching')
When to use stable polarities. 0 = always, otherwise every n. Negative is special, see code
Try computing lucky polarities
How often should we use inverted best polarities instead of stable
How often should we use best polarities instead of stable

Restart options:

{geom, glue, luby} Restart strategy to follow.
The size of the moving window for short-term glue history of redundant clauses. If higher, the minimal number of conflicts between restarts is longer
Lower bound on blocking restart -- don't block before this many conflicts
The multiplier used to determine if we should restart during glue-based restart
Ratio of glue vs geometric restarts -- more is more glue

Printing options:

Change verbosity of statistics at the end of the solving [0..3]
Print more thorough, but different stats
Print a line for every restart
Print assignment if solution is SAT
Print restart status lines at least every N conflicts
Write solution(s) to this file

Glue options:

Update glues while analyzing
Maximum glue used by glue-based restart strategy when populating glue history.

Propagation options:

Difference in decision level is more than this, perform chonological backtracking instead of non-chronological backtracking. Giving -1 means it is never turned on (overrides '--confltochrono -1' in this case).

Redundant clause options:

Glue value for lev 0 ('keep') cut
Glue value for lev 1 cut ('give another shot'
If more than this % of clauses is LOW glue (level 0) then lower the glue cutoff by 1 -- once and never again
Reduce lev1 clauses every N
Reduce lev2 clauses every N
Learnt clause must be used in lev1 within this timeframe or be dropped to lev2
Dump redundant clauses of gluecut0&1 to this filename
When dumping redundant clauses, only dump clauses at most this long
When dumping redundant clauses, only dump clauses with at most this large glue

Clause dumping after problem finishing:

Variable branching options:

Branch strategy. E.g. 'vmtf+vsids+maple+rnd'

Conflict options:

Perform recursive minimisation
Perform strong minimisation at conflict gen.
Perform even stronger minimisation at conflict gen.
Always strong-minimise clause
Create decision-based conflict clauses when the UIP clause is too large

Iterative solve options:

Search for given amount of solutions. Thanks to Jannis Harder for the decision-based banning idea
Don't ban the solution once it's found
Parse special comments to run solve/simplify during parsing of CNF

Probing options:

Remove useless binary clauses (transitive reduction)
Carry out intree-based probing
Time in mega-bogoprops to perform intree probing
Perform hyper-binary resolution during probing

Stochastic Local Search options:

Run SLS during simplification
Which SLS to run. Allowed values: walksat, yalsat, ccnr, ccnr_yalsat
Maximum number of MB to give to SLS solver. Doesn't run SLS solver if the memory usage would be more than this.
Run SLS solver every N simplifications only
Run Yalsat with this many mems*million timeout. Limits time of yalsat run
Max 'runs' for WalkSAT. Limits time of WalkSAT run
Get phase from SLS solver, set as new phase for CDCL
Turn aspiration on/off for CCANR
How many variables to bump in CCNR
How many times to bump an individual variable's activity in CCNR
How to calculate what variable to bump. 1 = clause-based, 2 = var-flip-based, 3 = var-score-based
Should SLS set the VSIDS/Maple offsetsd

Simplification schedules:

Perform simplification rounds. If 0, we never perform any.
Perform simplification at the very start
Perform simplification at EVERY start -- only matters in library mode
Never stop the search() process in class SATSolver
Maximum number of simplifiactions to perform for every solve() call. After this, no more inprocessing will take place.
Schedule for simplification during run
Schedule for simplification at startup
Perform occurrence-list-based optimisations (variable elimination, subsumption, bounded variable addition...)
Start first simplification after this many conflicts
Simp rounds increment by this power of N

Occ-based simplification memory limits:

Don't add to occur list any redundant clause larger than this
Don't allow redundant occur size to be beyond this many MB
Don't allow irredundant occur size to be beyond this many MB

Ternary resolution:

Perform Ternary resolution'
Time-out in bogoprops M of ternary resolution as per paper 'Look-Ahead Versus Look-Back for Satisfiability Problems'
Keep ternary resolution clauses only if they are touched within this multiple of 'lev1usewithin'
Create only this multiple (of linked in cls) ternary resolution clauses per simp run
Allow ternary resolving to generate binary clauses

Occ-based subsumption and strengthening time limits:

Perform clause contraction through self-subsuming resolution as part of the occurrence-subsumption system
Time-out in bogoprops M of subsumption of long clauses with long clauses, after computing occur
Ratio of subsumption time limit to spend on sub&str long clauses with bin
Ratio of subsumption time limit to spend on sub long clauses with long
Time-out in bogoprops M of strengthening of long clauses with long clauses, after computing occur
How many times go through subsume

BVE options:

Perform variable elimination as per Een and Biere
Var elimination bogoprops M time limit
Do BVE until the resulting no. of clause increase is less than X. Only power of 2 makes sense, i.e. 2,4,8...
Perform empty resolvent elimination using bit-map trick
Maximum extra MB of memory to use for new clauses during varelim
Eliminate this ratio of free variables at most per variable elimination iteration
Skip BVE resolvents in case they belong to a gate

BVA options:

Perform bounded variable addition
Perform BVA only every N occ-simplify calls
Maximum number of variables to add by BVA per call
BVA with 2-lit difference hack, too. Beware, this reduces the effectiveness of 1-lit diff
BVA time limit in bogoprops M

Equivalent literal options:

Find equivalent literals through SCC and replace them

Component options:

Perform component-finding and separate handling
Component finding only after this many simplification rounds
Only use components in case the number of variables is below this limit
Limit how much time is spent in component-finding

Memory saving options:

Renumber variables to increase CPU cache efficiency
Save memory by deallocating variable space after renumbering. Only works if renumbering is active.
Treat all 'renumber' strategies as 'must-renumber'
Consolidate watchlists fully once every N conflicts. Scheduled during simplification rounds.
Discover long XORs
Maximum XOR size to find
Time limit for finding XORs
Number of _real_ variables per XOR when cutting them. So 2 will have XORs of size 4 because 1 = connecting to previous, 1 = connecting to next, 2 in the midde. If the XOR is 4 long, it will be just one 4-long XOR, no connectors
Maximum matrix size (=num elements) that we should try to echelonize
Force preserving XORs when they have been found. Easier to make sure XORs are not lost through simplifiactions such as strenghtening
Use M4RI
Find gates. Disables all sub-options below
Shorten clauses with OR gates
Remove clauses with AND gates
Find equivalent literals using gates
Print gate structure regularly to file 'gatesX.dot'
Max time in bogoprops M to find gates
Max time to shorten with gates, bogoprops M
Max time to remove with gates, bogoprops M

Gauss options:

Set maximum no. of rows for gaussian matrix. Too large matricesshould bee discarded for reasons of efficiency
Automatically disable gauss when performing badly
Set minimum no. of rows for gaussian matrix. Normally, too small matrices are discarded for reasons of efficiency
Maximum number of matrices to treat.
Detach and reattach XORs
Force using all matrices
If set, verbosity for XOR detach code is upped, ignoring normal verbosity
Turn off Gauss if less than this many usefulenss ratio is recorded

Distill options:

Regularly execute clause distillation
Maximum number of Mega-bogoprops(~time) to spend on vivifying/distilling long cls by enqueueing and propagating
Maximum time in bogoprops M for distillation
Multiplier for current number of conflicts OTF distill
Minimum number of conflicts between OTF distill
How much of tier 1 to distill

Reconf options:

Reconfigure after this many simplifications
Reconfigure after some time to this solver configuration [3,4,6,7,12,13,14,15,16]

Misc options:

Maximum MBP to spend on distilling long irred cls through watches
Subsume and strengthen implicit clauses with each other
Timeout (in bogoprop Millions) of implicit subsumption
Timeout (in bogoprop Millions) of implicit strengthening
Find cardinality constraints

Normal run schedules:

Default schedule: handle-comps, scc-vrepl, sub-impl, intree-probe, sub-str-cls-with-bin, distill-cls, scc-vrepl, sub-impl, str-impl, sub-impl, breakid, occ-backw-sub-str, occ-clean-implicit, occ-bve, occ-bva, occ-ternary-res, occ-xor, card-find, cl-consolidate, str-impl, sub-str-cls-with-bin, distill-cls, scc-vrepl, renumber, bosphorus, sls, lucky
Schedule at startup: sub-impl, breakid, occ-backw-sub-str, occ-clean-implicit, occ-bve, occ-ternary-res, occ-backw-sub-str, occ-xor, card-find, cl-consolidate, scc-vrepl, sub-cls-with-bin, bosphorus, sls, lucky

Preproc run schedule:

handle-comps, scc-vrepl, sub-impl, sub-str-cls-with-bin, distill-cls, scc-vrepl, sub-impl,breakid, occ-backw-sub-str, occ-clean-implicit, occ-bve, occ-bva,occ-ternary-res, occ-xor, cl-consolidate, str-impl, sub-str-cls-with-bin, distill-cls, scc-vrepl, sub-impl,str-impl, sub-impl, sub-str-cls-with-bin,intree-probe, must-renumber

BUG TRACKER

Please don't hesitate to file any and all issues at:

https://github.com/msoos/cryptominisat/issues

AUTHORS

cryptominisat5 is written and maintained by Mate Soos soos.mate@gmail.com

COPYRIGHT

cryptominisat5 is under the MIT license. Please see https://opensource.org/licenses/MIT for the full text

SEE ALSO

More documentation for the cryptominisat5 SAT solver can be found at https://www.msoos.org/cryptominisat5/

December 2020 cryptominisat5 5.8.0