CADICAL(1)

okay bestie, welcome to cadical(1) from User Commands ๐Ÿซถโœจ

๐ŸŒธ NAME ๐ŸŒธ

cadical โ€” Simplified SAT solver ๐Ÿงš๐Ÿ’–


โœจ DESCRIPTION โœจ

The usage is:

usage: cadical [ <option> ... ] [ <input> [ <proof> ] ]

where <option> is one of the following common options:

  • -h โ€” print only the common-options list instead ๐Ÿซถ
  • --help โ€” print this complete list of all options ๐Ÿ“œ
  • --version โ€” print version ๐Ÿท๏ธ
  • -n โ€” do not print witness (same as --no-witness) ๐Ÿ™ˆ
  • -v โ€” increase verbosity (also see --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 (also see -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] ๐Ÿงฉ
  • --backbone=0..2 โ€” binary clause backbone [1] ๐Ÿฆด
  • --backboneeffort=0..1e5 โ€” binary effort in per mile [20] ๐Ÿ’ช
  • --backbonemaxrounds=0..1e5 โ€” backbone rounds limit [1e3] ๐Ÿ”
  • --backbonerounds=0..1e5 โ€” backbone rounds limit [100] ๐Ÿ”
  • --backbonethresh=0..1e9 โ€” delay if ticks smaller thresh*clauses [5] โณ
  • --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] ๐Ÿ•ณ๏ธ
  • --bumpreasonlimit=1..2e9 โ€” bump reason limit [10] ๐Ÿšง
  • --bumpreasonrate=1..2e9 โ€” bump reason decision rate [100] โšก
  • --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=0..3 โ€” 1 = drat, 2 = lrat, 3 = both [3] ๐Ÿ“
  • --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] ๐Ÿšซ
  • --conditioneffort=1..1e5 โ€” relative efficiency per mille [100] โš™๏ธ
  • --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 [0] ๐Ÿ“‰
  • --congruence=bool โ€” congruence closure [true] ๐Ÿ”—
  • --congruenceand=bool โ€” extract AND gates [true] ๐Ÿšช
  • --congruenceandarity=2..5e7 โ€” AND gate arity limit [1e6] ๐Ÿ“
  • --congruencebinaries=bool โ€” extract binary and strengthen ternary clauses [true] ๐Ÿงฑ
  • --congruenceite=bool โ€” extract ITE gates [true] ๐Ÿšช
  • --congruencexor=bool โ€” extract XOR gates [true] ๐Ÿšช
  • --congruencexorarity=2..31 โ€” XOR gate arity limit [4] ๐Ÿ“
  • --congruencexorcounts=1..5e6 โ€” XOR gate round [1] ๐Ÿ”
  • --cover=bool โ€” covered clause elimination [false] ๐Ÿงน
  • --covereffort=1..1e5 โ€” relative efficiency per mille [4] โš™๏ธ
  • --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 [0] ๐Ÿ“‰
  • --decompose=bool โ€” decompose BIG in SCCs and ELS [true] ๐Ÿงฉ
  • --decomposerounds=1..16 โ€” number of decompose rounds [2] ๐Ÿ”
  • --deduplicate=bool โ€” remove duplicated binaries [true] ๐Ÿงน
  • --deduplicateallinit=bool โ€” remove duplicated clauses once before solving [false] ๐Ÿงน
  • --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] ๐Ÿ”Ž
  • --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] ๐Ÿ“
  • --elimdef=bool โ€” mine definitions with kitten [false] ๐Ÿฑ
  • --elimdefcores=1..100 โ€” number of unsat cores [1] ๐Ÿงฉ
  • --elimdefticks=0..2e9 โ€” kitten ticks limit [2e5] โฑ๏ธ
  • --elimeffort=1..1e5 โ€” relative efficiency per mille [1e3] โš™๏ธ
  • --elimequivs=bool โ€” find equivalence gates [true] ๐ŸŸฐ
  • --elimint=1..2e9 โ€” elimination interval [2e3] โฒ๏ธ
  • --elimites=bool โ€” find if-then-else gates [true] ๐Ÿšช
  • --elimlimited=bool โ€” limit resolutions [true] ๐Ÿšง
  • --elimmaxeff=0..2e9 โ€” maximum elimination efficiency [2e9] ๐Ÿ“ˆ
  • --elimmineff=0..2e9 โ€” minimum elimination efficiency [1e7] ๐Ÿ“‰
  • --elimocclim=0..2e9 โ€” occurrence limit [1e2] ๐Ÿ”ข
  • --elimprod=0..1e4 โ€” elim score product weight [1] โœ–๏ธ
  • --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] ๐Ÿ”Ž
  • --emadecisions=1..2e9 โ€” window decision rate [1e5] ๐ŸชŸ
  • --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] ๐ŸชŸ
  • --exteagerreasons=bool โ€” eagerly ask for all reasons (0: only when needed) [true] ๐Ÿ—ฃ๏ธ
  • --exteagerrecalc=bool โ€” after eagerly asking for reasons recalculate all levels (0: trust the external tool) [true] ๐Ÿ”„
  • --externallrat=bool โ€” external lrat [false] ๐ŸŒ
  • --factor=bool โ€” bounded variable addition [false] โž•
  • --factorcandrounds=0..2e9 โ€” candidates reduction rounds [2] ๐Ÿ”
  • --factorcheck=0..2 โ€” API checks that variables have been declared (1 = only with factor on, 2 = always) [1] โœ…
  • --factordelay=0..12 โ€” delay bounded variable addition between eliminations [4] โณ
  • --factoreffort=0..1e6 โ€” relative effort per mille [50] โš™๏ธ
  • --factoriniticks=1..1e6 โ€” initial effort in millions [300] ๐Ÿš€
  • --factorsize=2..2e9 โ€” clause size limit [5] ๐Ÿ“
  • --factorthresh=0..100 โ€” delay if ticks smaller thresh*clauses [7] โณ
  • --factorunbump=bool โ€” extension variable with lowest importance (1: as in kissat) [true] ๐Ÿ“‰
  • --fastelim=bool โ€” fast BVE during preprocessing [true] โšก
  • --fastelimbound=1..1e3 โ€” fast BVE bound during preprocessing [8] ๐Ÿ“ˆ
  • --fastelimclslim=2..2e9 โ€” fast BVE resolvent size limit [1e2] ๐Ÿ“
  • --fastelimocclim=1..2e9 โ€” fast BVE occurence limit during preprocessing [100] ๐Ÿ”ข
  • --fastelimrounds=1..512 โ€” number of fastelim rounds [4] ๐Ÿ”
  • --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] ๐Ÿ“Œ
  • --frat=0..2 โ€” 1 = frat(lrat), 2 = frat(drat) [0] ๐Ÿ“
  • --idrup=bool โ€” incremental proof format [false] ๐Ÿ’พ
  • --ilb=0..2 โ€” ILB (incremental lazy backtrack) (0: no, 1: assumptions only, 2: everything) [0] ๐Ÿ”„
  • --incdecay=0..4 โ€” decay clauses when doing incremental clauses [1] ๐Ÿ“‰
  • --incdecayint=1..2e9 โ€” decay interval when doing incremental clauses [1e6] โฒ๏ธ
  • --inprobeint=1..2e9 โ€” inprobing interval [100] โฑ๏ธ
  • --inprobing=bool โ€” enable probe inprocessing [true] ๐Ÿ”
  • --inprocessing=bool โ€” enable general 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] 1๏ธโƒฃ
  • --lidrup=bool โ€” linear incremental proof format ๐Ÿ’… ([false])
  • --lrat=bool โ€” use LRAT proof format ๐Ÿ“œ ([false])
  • --lucky=bool โ€” lucky phases ๐Ÿ€ ([true])
  • --luckyassumptions=bool โ€” lucky phases with assumptions ๐Ÿ€โœจ ([true])
  • --luckyearly=bool โ€” lucky phases before preprocessing ๐Ÿ€โฌ…๏ธ ([true])
  • --luckylate=bool โ€” lucky phases after preprocessing ๐Ÿ€โžก๏ธ ([true])
  • --minimize=bool โ€” minimize learned clauses โœ‚๏ธ ([true])
  • --minimizedepth=0..1e3 โ€” minimization depth ๐Ÿ“‰ ([1e3])
  • --minimizeticks=bool โ€” increment ticks in minimization โฑ๏ธ ([true])
  • --otfs=bool โ€” on-the-fly self subsumption ๐Ÿช„ ([true])
  • --phase=bool โ€” initial phase ๐ŸŒ— ([true])
  • --preprocessinit=0..2e9 โ€” initial preprocessing base limit ๐Ÿ—๏ธ ([2e6])
  • --preprocesslight=bool โ€” lightweight preprocessing ๐Ÿชถ ([true])
  • --probe=bool โ€” failed literal probing ๐Ÿ” ([true])
  • --probeeffort=1..1e5 โ€” relative efficiency per mille โšก ([8])
  • --probehbr=bool โ€” learn hyper binary clauses ๐Ÿง  ([true])
  • --probethresh=0..100 โ€” delay if ticks smaller thresh*clauses ๐Ÿข ([0])
  • --profile=0..4 โ€” profiling level ๐Ÿ“Š ([2])
  • --quiet=bool โ€” disable all messages ๐Ÿคซ ([false])
  • --radixsortlim=0..2e9 โ€” radix sort limit ๐Ÿ”ข ([32])
  • --randec=bool โ€” random decisions ๐ŸŽฒ ([false])
  • --randecfocused=bool โ€” random decisions in focused mode ๐ŸŽฒ๐Ÿ”ฆ ([true])
  • --randecinit=2..2e9 โ€” inital random decision interval ๐ŸŽฒโณ ([1e3]) โ€” yes bestie, "inital", that's the original's spelling, we don't touch it ๐Ÿ’€
  • --randecint=0..2e9 โ€” random conflict length ๐ŸŽฒ๐Ÿ“ ([500])
  • --randeclength=1..1e9 โ€” length random decisions phases ๐ŸŽฒ๐ŸŒŠ ([10])
  • --randecstable=bool โ€” random decisions in stable mode ๐ŸŽฒ๐Ÿง˜ ([false])
  • --realtime=bool โ€” real instead of process time โŒš ([false])
  • --recomputetier=bool โ€” recompute tiers ๐Ÿงฎ ([true])
  • --reduce=bool โ€” reduce useless clauses ๐Ÿ—‘๏ธ ([true])
  • --reduceinit=1..1e6 โ€” initial interval ๐Ÿ• ([300])
  • --reduceint=2..1e6 โ€” reduce interval ๐Ÿ” ([25])
  • --reduceopt=0..2 โ€” 0=prct, 1=sqrt, 2=max ๐ŸŽ›๏ธ ([1])
  • --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=bool โ€” stable reluctant doubling restarts ๐Ÿ˜ค ([true])
  • --reluctantint=0..2e9 โ€” reluctant doubling period โฒ๏ธ ([1024])
  • --reluctantmax=0..2e9 โ€” maximum reluctant doubling period โฒ๏ธโฌ†๏ธ ([1048576])
  • --rephase=0..2 โ€” enable resetting phase (0=no, 1=always, 2=stable-only) ๐Ÿ”„ ([1])
  • --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])
  • --restartmarginfocused=0..25 โ€” focused slow fast margin in percent ๐ŸŽฏ ([10])
  • --restartmarginstable=0..25 โ€” stable slow fast margin in percent ๐Ÿง˜๐ŸŽฏ ([25])
  • --restartreusetrail=bool โ€” enable trail reuse ๐Ÿ›ค๏ธ ([true])
  • --restoreall=0..2 โ€” restore all clauses (2=really) ๐Ÿ˜ณ ([0]) โ€” yes the "really" is doing a LOT of heavy lifting there
  • --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 (1=binary-only, 2=minimize-on-pulling, 3=full) ๐Ÿซง ([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])
  • --stabilizeinit=1..2e9 โ€” stabilizing interval ๐Ÿง˜โณ ([1e3])
  • --stabilizeonly=bool โ€” only stabilizing phases ๐Ÿง˜๐Ÿ™… ([false])
  • --stats=bool โ€” print all statistics at the end of the run ๐Ÿ“Š ([false])
  • --stubbornIOfocused=bool โ€” force phases to I/O in focused mode every once in a while (requires rephase==2) ๐Ÿ™ˆ ([false])
  • --subsume=bool โ€” enable clause subsumption ๐Ÿซ‚ ([true])
  • --subsumebinlim=0..2e9 โ€” watch list length limit ๐Ÿ‘€ ([1e4])
  • --subsumeclslim=0..2e9 โ€” clause length limit ๐Ÿ“ ([1e2])
  • --subsumeeffort=1..1e5 โ€” relative efficiency per mille โšก ([1e3])
  • --subsumelimited=bool โ€” limit subsumption checks ๐Ÿšง ([true])
  • --subsumemaxeff=0..2e9 โ€” maximum subsuming efficiency ๐Ÿ“ˆ ([1e8])
  • --subsumemineff=0..2e9 โ€” minimum subsuming efficiency ๐Ÿ“‰ ([0])
  • --subsumeocclim=0..2e9 โ€” watch list length limit ๐Ÿ‘€ ([1e2])
  • --subsumestr=bool โ€” subsume strengthen ๐Ÿ’ช ([true])
  • --sweep=bool โ€” enable SAT sweeping ๐Ÿงน ([true])
  • --sweepclauses=0..2e9 โ€” environment clauses ๐ŸŒ ([1024])
  • --sweepcomplete=bool โ€” run SAT sweeping to completion ๐Ÿงนโœ… ([false])
  • --sweepcountbinary=bool โ€” count binaries to environment ๐ŸŒ๐Ÿ”ข ([true])
  • --sweepdepth=0..2e9 โ€” environment depth ๐ŸŒ๐Ÿ•ณ๏ธ ([2])
  • --sweepeffort=0..1e4 โ€” relative effort in ticks per mille โšก ([1e2])
  • --sweepfliprounds=0..2e9 โ€” flipping rounds ๐Ÿ”„ ([1])
  • --sweepmaxclauses=2..2e9 โ€” maximum environment clauses ๐ŸŒโฌ†๏ธ ([3e5])
  • --sweepmaxdepth=1..2e9 โ€” maximum environment depth ๐ŸŒโฌ†๏ธ๐Ÿ•ณ๏ธ ([3])
  • --sweepmaxvars=2..2e9 โ€” maximum environment variables ๐ŸŒ๐Ÿ”ค ([8192])
  • --sweeprand=bool โ€” randomize sweeping environment ๐ŸŽฒ๐ŸŒ ([false])
  • --sweepthresh=0..100 โ€” delay if ticks smaller thresh*clauses ๐Ÿข ([5])
  • --sweepvars=0..2e9 โ€” environment variables ๐ŸŒ๐Ÿ”ค ([256])
  • --target=0..2 โ€” target phases (1=stable only) ๐ŸŽฏ ([1])
  • --terminateint=0..1e4 โ€” termination check interval ๐Ÿ›‘โฑ๏ธ ([10])
  • --ternary=bool โ€” hyper ternary resolution 3๏ธโƒฃ ([true])
  • --ternaryeffort=1..1e5 โ€” relative efficiency per mille โšก ([8])
  • --ternarymaxadd=0..1e4 โ€” max clauses added in percent โž•๐Ÿ’ฏ ([1e3])
  • --ternaryocclim=1..2e9 โ€” ternary occurrence limit 3๏ธโƒฃ๐Ÿ‘€ ([1e2])
  • --ternaryrounds=1..16 โ€” maximum ternary rounds 3๏ธโƒฃ๐Ÿ” ([2])
  • --ternarythresh=0..100 โ€” delay if ticks smaller thresh*clauses ๐Ÿข ([6])
  • --tier1limit=0..100 โ€” limit of tier1 usage in percentage ๐Ÿ’ฏ ([50])
  • --tier1minglue=0..100 โ€” lowest tier1 limit ๐Ÿฏโฌ‡๏ธ ([0])
  • --tier2limit=0..100 โ€” limit of tier2 usage in percentage ๐Ÿ’ฏ ([90])
  • --tier2minglue=0..100 โ€” lowest tier2 limit ๐Ÿฏโฌ‡๏ธ ([0])
  • --transred=bool โ€” transitive reduction of BIG ๐Ÿซ  ([true])
  • --transredeffort=1..1e5 โ€” relative efficiency per mille โšก ([1e2])
  • --transredmaxeff=0..2e9 โ€” maximum efficiency ๐Ÿ“ˆ ([1e8])
  • --transredmineff=0..2e9 โ€” minimum efficiency ๐Ÿ“‰ ([0])
  • --verbose=0..3 โ€” more verbose messages ๐Ÿ—ฃ๏ธ ([0])
  • --veripb=0..4 โ€” odd=check-deletions, >2 drat ๐Ÿงพ ([0])
  • --vivify=bool โ€” vivification โœจ ([true])
  • --vivifycalctier=bool โ€” recalculate tier limits ๐Ÿงฎ ([false])
  • --vivifydemote=bool โ€” demote irredundant or delete directly โฌ‡๏ธ๐Ÿ—‘๏ธ ([false])
  • --vivifyeffort=0..1e5 โ€” overall efficiency per mille โšก ([50])
  • --vivifyflush=bool โ€” flush subsumed before vivification rounds ๐Ÿšฟ ([true])
  • --vivifyinst=bool โ€” instantiate last literal when vivify โœจ๐Ÿ”ค ([true])
  • --vivifyirred=bool โ€” vivification of irredundant clauses โœจ ([true])
  • --vivifyirredeff=1..100 โ€” irredundant efficiency per mille โšก ([3])
  • --vivifyonce=0..2 โ€” vivify once: 1=red, 2=red+irr 1๏ธโƒฃ ([0])
  • --vivifyretry=0..5 โ€” re-vivify clause if vivify was successful ๐Ÿ”โœจ ([0])
  • --vivifyschedmax=10..2e9 โ€” maximum schedule size ๐Ÿ“…โฌ†๏ธ ([5e3])
  • --vivifythresh=0..100 โ€” delay if ticks smaller thresh*clauses ๐Ÿข ([20])
  • --vivifytier1=bool โ€” vivification tier1 โœจ1๏ธโƒฃ ([true])
  • --vivifytier1eff=0..100 โ€” relative tier1 effort โšก1๏ธโƒฃ ([4])
  • --vivifytier2=bool โ€” vivification tier2 โœจ2๏ธโƒฃ ([true])
  • --vivifytier2eff=1..100 โ€” relative tier2 effort โšก2๏ธโƒฃ ([2])
  • --vivifytier3=bool โ€” vivification tier3 โœจ3๏ธโƒฃ ([true])
  • --vivifytier3eff=1..100 โ€” relative tier3 effort โšก3๏ธโƒฃ ([1])
  • --walk=bool โ€” enable random walks ๐Ÿšถ ([true])
  • --walkeffort=1..1e5 โ€” relative efficiency per mille โšก ([80])
  • --walkfullocc=bool โ€” use Kissat's full occurrences instead of the single watched ๐Ÿ‘€ ([false])
  • --walkmaxeff=0..2e9 โ€” maximum efficiency (in 1e3 ticks) ๐Ÿ“ˆ ([1e7])
  • --walkmineff=0..1e7 โ€” minimum efficiency ๐Ÿ“‰ ([0])
  • --walknonstable=bool โ€” walk in non-stabilizing phase ๐Ÿšถ๐Ÿšซ ([true])
  • --walkredundant=bool โ€” walk redundant clauses too ๐Ÿšถ๐Ÿ” ([false])
  • --warmup=bool โ€” warmup before walk using propagation ๐Ÿ”ฅ๐Ÿšถ ([true])

okay so ๐Ÿ’– the internal options have their default value printed in brackets right after their description, like you just saw. And there's cute shorthand:

  • --<name> is literally the same as --<name>=1 โœจ
  • --no-<name> is literally the same as --<name>=0 โœจ

and you can also use true instead of 1, false instead of 0, and numbers with positive exponent like 1e3 instead of 1000. math girlie behavior, we love it ๐Ÿงš


Alternatively you can drop option values in the header of the DIMACS file, like this:

c --elim=false

or you can set them through environment variables, like:

CADICAL_ELIM=false
Priority check bestie, do NOT mix this up: embedded options in the DIMACS file have the highest priority, then command line options, and then values specified through environment variables. That's the order. Periodt. ๐Ÿ‘‘

The input gets read from <input> and it's 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 gets 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 does the solver print 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 ๐Ÿ–ฅ๏ธ. (because dumping raw binary at your terminal would be a whole crime scene ๐Ÿ˜ญ)

Okay so compression! ๐Ÿ’… If you hand over an input file explicitly and it's got a .gz, .bz2, .xz or .7z suffix, we're gonna assume it's compressed, bestie. Same energy for the output file โ€” suffix says compressed, we treat it as compressed. โœจ

And likeโ€ฆ obviously you need the actual tools for that, because we're not doing magic here. Depending on the format you gotta have gzip, bzip, xz or 7z installed on your system, fr fr. No utility, no zip-unzip, it's giving missing dependency. ๐Ÿ˜ญ

But here's the safety net ๐Ÿซถ โ€” the solver actually peeks at the file type signatures, and if the signature does NOT match, it just falls back to reading the file non-compressed. So a sneaky little mislabeled file isn't gonna ruin your whole day. Iconic behaviour honestly. ๐Ÿ‘‘

And that's a wrap on CADICAL(1) babes!! ๐ŸŒธ This one's cadical 2.2.1, dated April 2026 โ€” go forth and solve, my gorgeous little SAT-solver-using main characters. ๐Ÿฆ‹๐Ÿ’– periodt. โญ

๐Ÿ“ฆ where this page comes from