usage: cadical [ <option> ... ] [ <input> [
<proof> ] ]
where '<option>' is one of the following common options:
- -h
- print alternatively only a list of common options
- --help
- print this complete list of all options
- --version
- print version
- -n
- do not print witness (same as '--no-witness')
- -v
- increase verbosity (see also '--verbose' below)
- -q
- be quiet (same as '--quiet')
- -t <sec>
- set wall clock time limit
Or '<option>' is one of the less common options
- -L<rounds>
- run local search initially (default '0' rounds)
- -O<level>
- increase limits by '2^<level>' or '10^<level>'
- -P<rounds>
- initial preprocessing (default '0' rounds)
Note there is no separating space for the options above while the
following options require a space after the option name:
- -c <limit>
- limit the number of conflicts (default unlimited)
- -d <limit>
- limit the number of decisions (default unlimited)
- -o <output>
- write simplified CNF in DIMACS format to file
- -e <extend>
- write reconstruction/extension stack to file
- --force |
-f
- parsing broken DIMACS header and writing proofs
- --strict
- strict parsing (no white space in header)
- -r <sol>
- read solution in competition output format to check consistency of learned
clauses during testing and debugging
- -w <sol>
- write result including a potential witness solution in competition format
to the given file
- --colors
- force colored output
- --no-colors
- disable colored output to terminal
- --no-witness
- do not print witness (see also '-n' above)
- --build
- print build configuration
- --copyright
- print copyright information
There are pre-defined configurations of advanced internal
options:
- --default
- set default advanced internal options
- --plain
- disable all internal preprocessing options
- --sat
- set internal options to target satisfiable instances
- --unsat
- set internal options to target unsatisfiable instances
Or '<option>' is one of the following advanced internal
options:
- --arena=bool
- allocate clauses in arena [true]
- --arenacompact=bool
- keep clauses compact [true]
- --arenasort=bool
- sort clauses in arena [true]
- --arenatype=1..3
- 1=clause, 2=var, 3=queue [3]
- --binary=bool
- use binary proof format [true]
- --block=bool
- blocked clause elimination [false]
- --blockmaxclslim=1..2e9
- maximum clause size [1e5]
- --blockminclslim=2..2e9
- minimum clause size [2]
- --blockocclim=1..2e9
- occurrence limit [1e2]
- --bump=bool
- bump variables [true]
- --bumpreason=bool
- bump reason literals too [true]
- --bumpreasondepth=1..3
- bump reason depth [1]
- --check=bool
- enable internal checking [false]
- --checkassumptions=bool
- check assumptions satisfied [true]
- --checkconstraint=bool
- check constraint satisfied [true]
- --checkfailed=bool
- check failed literals form core [true]
- --checkfrozen=bool
- check all frozen semantics [false]
- --checkproof=bool
- check proof internally [true]
- --checkwitness=bool
- check witness internally [true]
- --chrono=0..2
- chronological backtracking [1]
- --chronoalways=bool
- force always chronological [false]
- --chronolevelim=0..2e9
- chronological level limit [1e2]
- --chronoreusetrail=bool
- reuse trail chronologically [true]
- --compact=bool
- compact internal variables [true]
- --compactint=1..2e9
- compacting interval [2e3]
- --compactlim=0..1e3
- inactive limit per mille [1e2]
- --compactmin=1..2e9
- minimum inactive limit [1e2]
- --condition=bool
- globally blocked clause elim [false]
- --conditionint=1..2e9
- initial conflict interval [1e4]
- --conditionmaxeff=0..2e9
- maximum condition efficiency [1e7]
- --conditionmaxrat=1..2e9
- maximum clause variable ratio [100]
- --conditionmineff=0..2e9
- minimum condition efficiency [1e6]
- --conditionreleff=1..1e5
- relative efficiency per mille [100]
- --cover=bool
- covered clause elimination [false]
- --covermaxclslim=1..2e9
- maximum clause size [1e5]
- --covermaxeff=0..2e9
- maximum cover efficiency [1e8]
- --coverminclslim=2..2e9
- minimum clause size [2]
- --covermineff=0..2e9
- minimum cover efficiency [1e6]
- --coverreleff=1..1e5
- relative efficiency per mille [4]
- --decompose=bool
- decompose BIG in SCCs and ELS [true]
- --decomposerounds=1..16
- number of decompose rounds [2]
- --deduplicate=bool
- remove duplicated binaries [true]
- --eagersubsume=bool
- subsume recently learned [true]
- --eagersubsumelim=1..1e3
- limit on subsumed candidates [20]
- --elim=bool
- bounded variable elimination [true]
- --elimands=bool
- find AND gates [true]
- --elimaxeff=0..2e9
- maximum elimination efficiency [2e9]
- --elimbackward=bool
- eager backward subsumption [true]
- --elimboundmax=-1..2e6
- maximum elimination bound [16]
- --elimboundmin=-1..2e6
- minimum elimination bound [0]
- --elimclslim=2..2e9
- resolvent size limit [1e2]
- --elimequivs=bool
- find equivalence gates [true]
- --elimineff=0..2e9
- minimum elimination efficiency [1e7]
- --elimint=1..2e9
- elimination interval [2e3]
- --elimites=bool
- find if-then-else gates [true]
- --elimlimited=bool
- limit resolutions [true]
- --elimocclim=0..2e9
- occurrence limit [1e2]
- --elimprod=0..1e4
- elim score product weight [1]
- --elimreleff=1..1e5
- relative efficiency per mille [1e3]
- --elimrounds=1..512
- usual number of rounds [2]
- --elimsubst=bool
- elimination by substitution [true]
- --elimsum=0..1e4
- elimination score sum weight [1]
- --elimxorlim=2..27
- maximum XOR size [5]
- --elimxors=bool
- find XOR gates [true]
- --emagluefast=1..2e9
- window fast glue [33]
- --emaglueslow=1..2e9
- window slow glue [1e5]
- --emajump=1..2e9
- window back-jump level [1e5]
- --emalevel=1..2e9
- window back-track level [1e5]
- --emasize=1..2e9
- window learned clause size [1e5]
- --ematrailfast=1..2e9
- window fast trail [1e2]
- --ematrailslow=1..2e9
- window slow trail [1e5]
- --flush=bool
- flush redundant clauses [false]
- --flushfactor=1..1e3
- interval increase [3]
- --flushint=1..2e9
- initial limit [1e5]
- --forcephase=bool
- always use initial phase [false]
- --inprocessing=bool
- enable inprocessing [true]
- --instantiate=bool
- variable instantiation [false]
--instantiateclslim=2..2e9 minimum clause size
[3]
--instantiateocclim=1..2e9 maximum occurrence
limit [1]
- --instantiateonce=bool
- instantiate each clause once [true]
- --lucky=bool
- search for lucky phases [true]
- --minimize=bool
- minimize learned clauses [true]
- --minimizedepth=0..1e3
- minimization depth [1e3]
- --phase=bool
- initial phase [true]
- --probe=bool
- failed literal probing [true]
- --probehbr=bool
- learn hyper binary clauses [true]
- --probeint=1..2e9
- probing interval [5e3]
- --probemaxeff=0..2e9
- maximum probing efficiency [1e8]
- --probemineff=0..2e9
- minimum probing efficiency [1e6]
- --probereleff=1..1e5
- relative efficiency per mille [20]
- --proberounds=1..16
- probing rounds [1]
- --profile=0..4
- profiling level [2]
- --quiet=bool
- disable all messages [false]
- --radixsortlim=0..2e9
- radix sort limit [800]
- --realtime=bool
- real instead of process time [false]
- --reduce=bool
- reduce useless clauses [true]
- --reduceint=10..1e6
- reduce interval [300]
- --reducetarget=10..1e2
- reduce fraction in percent [75]
- --reducetier1glue=1..2e9
- glue of kept learned clauses [2]
- --reducetier2glue=1..2e9
- glue of tier two clauses [6]
- --reluctant=0..2e9
- reluctant doubling period [1024]
- --reluctantmax=0..2e9
- reluctant doubling period [1048576]
- --rephase=bool
- enable resetting phase [true]
- --rephaseint=1..2e9
- rephase interval [1e3]
- --report=bool
- enable reporting [false]
- --reportall=bool
- report even if not successful [false]
- --reportsolve=bool
- use solving not process time [false]
- --restart=bool
- enable restarts [true]
- --restartint=1..2e9
- restart interval [2]
- --restartmargin=0..1e2
- slow fast margin in percent [10]
- --restartreusetrail=bool
- enable trail reuse [true]
- --restoreall=0..2
- restore all clauses (2=really) [0]
- --restoreflush=bool
- remove satisfied clauses [false]
- --reverse=bool
- reverse variable ordering [false]
- --score=bool
- use EVSIDS scores [true]
- --scorefactor=500..1e3
- score factor per mille [950]
- --seed=0..2e9
- random seed [0]
- --shrink=0..3
- shrink conflict clause [3]
- --shrinkreap=bool
- use a reap for shrinking [true]
- --shuffle=bool
- shuffle variables [false]
- --shufflequeue=bool
- shuffle variable queue [true]
- --shufflerandom=bool
- not reverse but random [false]
- --shufflescores=bool
- shuffle variable scores [true]
- --stabilize=bool
- enable stabilizing phases [true]
--stabilizefactor=101..2e9 phase increase in
percent [200]
- --stabilizeint=1..2e9
- stabilizing interval [1e3]
- --stabilizemaxint=1..2e9
- maximum stabilizing phase [2e9]
- --stabilizeonly=bool
- only stabilizing phases [false]
- --subsume=bool
- enable clause subsumption [true]
- --subsumebinlim=0..2e9
- watch list length limit [1e4]
- --subsumeclslim=0..2e9
- clause length limit [1e2]
- --subsumeint=1..2e9
- subsume interval [1e4]
- --subsumelimited=bool
- limit subsumption checks [true]
- --subsumemaxeff=0..2e9
- maximum subsuming efficiency [1e8]
- --subsumemineff=0..2e9
- minimum subsuming efficiency [1e6]
- --subsumeocclim=0..2e9
- watch list length limit [1e2]
- --subsumereleff=1..1e5
- relative efficiency per mille [1e3]
- --subsumestr=bool
- strengthen during subsume [true]
- --target=0..2
- target phases (1=stable only) [1]
- --terminateint=0..1e4
- termination check interval [10]
- --ternary=bool
- hyper ternary resolution [true]
- --ternarymaxadd=0..1e4
- max clauses added in percent [1e3]
- --ternarymaxeff=0..2e9
- ternary maximum efficiency [1e8]
- --ternarymineff=1..2e9
- minimum ternary efficiency [1e6]
- --ternaryocclim=1..2e9
- ternary occurrence limit [1e2]
- --ternaryreleff=1..1e5
- relative efficiency per mille [10]
- --ternaryrounds=1..16
- maximum ternary rounds [2]
- --transred=bool
- transitive reduction of BIG [true]
- --transredmaxeff=0..2e9
- maximum efficiency [1e8]
- --transredmineff=0..2e9
- minimum efficiency [1e6]
- --transredreleff=1..1e5
- relative efficiency per mille [1e2]
- --verbose=0..3
- more verbose messages [0]
- --vivify=bool
- vivification [true]
- --vivifymaxeff=0..2e9
- maximum efficiency [2e7]
- --vivifymineff=0..2e9
- minimum efficiency [2e4]
- --vivifyonce=0..2
- vivify once: 1=red, 2=red+irr [0]
- --vivifyredeff=0..1e3
- redundant efficiency per mille [75]
- --vivifyreleff=1..1e5
- relative efficiency per mille [20]
- --walk=bool
- enable random walks [true]
- --walkmaxeff=0..2e9
- maximum efficiency [1e7]
- --walkmineff=0..1e7
- minimum efficiency [1e5]
- --walknonstable=bool
- walk in non-stabilizing phase [true]
- --walkredundant=bool
- walk redundant clauses too [false]
- --walkreleff=1..1e5
- relative efficiency per mille [20]
The internal options have their default value printed in brackets
after their description. They can also be used in the form '--<name>'
which is equivalent to '--<name>=1' and in the form
'--no-<name>' which is equivalent to '--<name>=0'. One can also
use 'true' instead of '1', 'false' instead of '0', as well as numbers with
positive exponent such as '1e3' instead of '1000'.
Alternatively option values can also be specified in the header of
the DIMACS file, e.g., 'c --elim=false', or through
environment variables, such as 'CADICAL_ELIM=false'. The embedded options in
the DIMACS file have highest priority, followed by command line options and
then values specified through environment variables.
The input is read from '<input>' assumed to be in DIMACS
format. Incremental 'p inccnf' files are supported too with cubes at the
end. If '<proof>' is given then a DRAT proof is written to that
file.
If '<input>' is missing then the solver reads from
'<stdin>', also if '-' is used as input path name '<input>'.
Similarly,
For incremental files each cube is solved in turn. The solver
stops at the first satisfied cube if there is one and uses that one for the
witness to print. Conflict and decision limits are applied to each
individual cube solving call while '-P', '-L' and '-t' remain global. Only
if all cubes were unsatisfiable the solver prints the standard unsatisfiable
solution line ('s UNSATISFIABLE').
By default the proof is stored in the binary DRAT format unless
the option '--no-binary' is specified or the proof is written to
'<stdout>' and '<stdout>' is connected to a terminal.
The input is assumed to be compressed if it is given explicitly
and has a '.gz', '.bz2', '.xz' or '.7z' suffix. The same applies to the
output file. In order to use compression and decompression the corresponding
utilities 'gzip', 'bzip', 'xz', and '7z' (depending on the format) are
required and need to be installed on the system. The solver checks file type
signatures though and falls back to non-compressed file reading if the
signature does not match.