THIS(1)

๐Ÿ“ฆ version 1.3.2, in ubuntu resolute, ubuntu stonking

๐ŸŒธ THIS(1) ๐ŸŒธ

okay bestie, welcome to This โ€” straight outta the User Commands manual, section 1 of your local man pages. It's the cvc5 theorem prover and it's genuinely that girl. Sit down, hydrate, we're going through every single flag together ๐Ÿซถโœจ


๐Ÿ’– NAME ๐Ÿ’–

This โ€” Theorem prover for SMT problems ๐Ÿ’…


๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

okay so the vibe here is:

cvc5 [options] [input-file]

no cap. If you don't hand it an input file, or you literally just pass it -, cvc5 reads from standard input instead. lowkey iconic of it.

๐ŸŽ€ Most commonly-used cvc5 options ๐ŸŽ€

these are the main-character flags, the ones you'll actually reach for:

  • --incremental, -i โ€” enable incremental solving [*]
  • --lang=LANG, --input-language=LANG, -L LANG โ€” force the input language (default is "auto"; peep --lang help for the tea)
  • --output=TAG, -o TAG โ€” enable output tag.
  • --parse-only โ€” exit right after parsing the input, no further [*]
  • --preprocess-only โ€” exit right after preprocessing the input [*]
  • --quiet, -q โ€” decrease verbosity (and yes, you can repeat it, go off)
  • --rlimit=N โ€” set the resource limit
  • --rlimit-per=N, --reproducible-resource-limit=N โ€” set the resource limit per query
  • --stats โ€” give you statistics on exit [*]
  • --stats-all โ€” print the unchanged (defaulted) statistics too [*]
  • --stats-internal โ€” print the internal (non-public) statistics as well [*]
  • --tlimit=MS โ€” set the time limit in milliseconds of wall clock time
  • --tlimit-per=MS โ€” set the time limit per query in milliseconds
  • --verbose, -v โ€” increase verbosity (also repeatable, we love options)
  • --verbosity=N โ€” the verbosity level of cvc5
  • --decision=MODE, --decision-mode=MODE โ€” choose the decision mode, see --decision=help
  • --copyright โ€” show cvc5's copyright info
  • --early-exit โ€” do not run destructors at exit; default on except in debug builds [*]
  • --help, -h โ€” the full command line reference
  • --help-option-categories โ€” print a summary of options for each category
  • --help-regular, -H โ€” the regular command line reference
  • --interactive โ€” force interactive shell / non-interactive mode [*]
  • --print-success โ€” print the "success" output that SMT-LIBv2 requires [*]
  • --seed=N, --random-seed=N, -s N โ€” seed for the random number generator
  • --show-config โ€” show cvc5's static configuration
  • --version, -V โ€” identify this cvc5 binary
  • --force-logic=LOGIC โ€” set the logic, and override all further user attempts to change it
  • --strict-parsing โ€” be less tolerant of non-conforming inputs, this is an alias for --parsing-mode=strict [*]
  • --dag-thresh=N โ€” dagify common subexprs appearing > N times (1 == default, 0 == don't dagify)
  • --expr-depth=N โ€” print exprs to depth N (0 == default, -1 == no limit)
  • --output-lang=LANG, --output-language=LANG โ€” force the output language (default is "auto"; see --output-lang help)
  • --proof-check=MODE โ€” select the internal proof checking mode
  • --proof-granularity=MODE โ€” modes for proof granularity
  • --proof-print-conclusion โ€” print the conclusion of proof steps when printing AST [*]
  • --proof-print-reference โ€” print a reference to the original file instead of redeclaring [*]
  • --enum-inst โ€” enumerative instantiation: instantiate with ground terms from the relevant domain, then arbitrary ground terms before answering unknown [*]
  • --full-saturate-quant โ€” resort to full effort techniques instead of answering unknown due to limited quantifier reasoning. Currently enables enumerative instantiation [*]
  • --print-inst=MODE โ€” print format for printing instantiations
  • --check-abducts โ€” checks whether produced solutions to get-abduct are correct [*]
  • --check-interpolants โ€” checks whether produced solutions to get-interpolant are correct [*]
  • --check-model-subsolver โ€” use a subsolver to compute values when applicable in calls to get-value and check-models [*]
  • --check-models โ€” after SAT/INVALID/UNKNOWN, check that the generated model satisfies user assertions [*]
  • --check-proofs โ€” after UNSAT/VALID, check the generated proof (with proof) [*]
  • --check-synth-sol โ€” checks whether produced solutions to functions-to-synthesize satisfy the conjecture [*]
  • --check-unsat-cores โ€” after UNSAT/VALID, produce and check an unsat core (heads up: expensive) [*]
  • --debug-check-models โ€” after SAT/INVALID/UNKNOWN, check that the generated model satisfies user and internal assertions [*]
  • --produce-models, -m โ€” support the get-value and get-model commands [*]
  • --produce-proofs โ€” produce proofs, support check-proofs and get-proof [*]
  • --produce-unsat-cores โ€” turn on unsat core generation. Unless otherwise specified, cores will be produced using SAT soving under assumptions and preprocessing proofs. [*]
  • --condense-function-values โ€” condense values for functions in models rather than explicitly representing them [*]
  • --default-function-value-mode=MODE โ€” mode for choosing default values for functions

๐Ÿ’ซ Additional cvc5 options ๐Ÿ’ซ

there's more. there's always more. she's thorough ๐Ÿ’…

๐Ÿงฎ From the Arithmetic Theory module ๐Ÿงฎ

  • --approx-branch-depth=N โ€” maximum branch depth the approximate solver is allowed to take (EXPERTS only)
  • --arith-brab โ€” whether to use simple rounding, similar to a unit-cube test, for integers [*]
  • --arith-eq-solver โ€” whether to use the equality solver in the theory of arithmetic (EXPERTS only) [*]
  • --arith-exp โ€” enables non-standard extensions of the arithmetic solver (EXPERTS only) [*]
  • --arith-prop=MODE โ€” turns on arithmetic propagation (default is 'old', see --arith-prop=help) (EXPERTS only)
  • --arith-prop-clauses=N โ€” rows shorter than this are propagated as clauses (EXPERTS only)
  • --arith-rewrite-equalities โ€” turns on the preprocessing rewrite that turns equalities into a conjunction of inequalities [*]
  • --arith-static-learning โ€” do arithmetic static learning for ite terms based on bounds when static learning is enabled [*]
  • --collect-pivot-stats โ€” collect the pivot history (EXPERTS only) [*]
  • --cut-all-bounded โ€” turns on the integer solving step of periodically cutting all integer variables that have both upper and lower bounds (EXPERTS only) [*]
  • --dio-decomps โ€” let skolem variables for integer divisibility constraints leak from the dio solver (EXPERTS only) [*]
  • --dio-solver โ€” turns on the Linear Diophantine Equation solver (Griggio, JSAT 2012) (EXPERTS only) [*]
  • --dio-turns=N โ€” turns in a row dio solver cutting gets (EXPERTS only)
  • --error-selection-rule=RULE โ€” change the pivot rule for the basic variable (default is 'min', see --pivot-rule help) (EXPERTS only)
  • --fc-penalties โ€” turns on degenerate pivot penalties (EXPERTS only) [*]
  • --heuristic-pivots=N โ€” the number of times to apply the heuristic pivot rule; if N < 0, this defaults to the number of variables; if this is unset, this is tuned by the logic selection (EXPERTS only)
  • --lemmas-on-replay-failure โ€” attempt to use external lemmas if approximate solve integer failed (EXPERTS only) [*]
  • --maxCutsInContext=N โ€” maximum cuts in a given context before signalling a restart (EXPERTS only)
  • --miplib-trick โ€” turns on the preprocessing step of attempting to infer bounds on miplib problems (EXPERTS only) [*]
  • --miplib-trick-subs=N โ€” do substitution for miplib 'tmp' vars if defined in <= N eliminated vars (EXPERTS only)
  • --new-prop โ€” use the new row propagation system (EXPERTS only) [*]
  • --nl-cov โ€” whether to use the cylindrical algebraic coverings solver for non-linear arithmetic [*]
  • --nl-cov-force โ€” forces using the cylindrical algebraic coverings solver, even in cases where it is possibly not safe to do so (EXPERTS only) [*]
  • --nl-cov-lift=MODE โ€” choose the Coverings lifting mode (EXPERTS only)
  • --nl-cov-linear-model=MODE โ€” whether to use the linear model as initial guess for the cylindrical algebraic coverings solver
  • --nl-cov-proj=MODE โ€” choose the Coverings projection operator (EXPERTS only)
  • --nl-cov-prune โ€” whether to prune intervals more aggressively (EXPERTS only) [*]
  • --nl-cov-var-elim โ€” whether to eliminate variables using equalities before going into the cylindrical algebraic coverings solver. It can not be used when producing proofs right now. (EXPERTS only) [*]
  • --nl-ext=MODE โ€” incremental linearization approach to non-linear
  • --nl-ext-ent-conf โ€” check for entailed conflicts in non-linear solver (EXPERTS only) [*]
  • --nl-ext-factor โ€” use factoring inference in non-linear incremental linearization solver [*]
  • --nl-ext-flatten-mon โ€” use inference schema based on flattening monomials [*]
  • --nl-ext-inc-prec โ€” whether to increment the precision for irrational function constraints (EXPERTS only) [*]
  • --nl-ext-purify โ€” purify non-linear terms at preprocess (EXPERTS only) [*]
  • --nl-ext-rbound โ€” use resolution-style inference for inferring new bounds in non-linear incremental linearization solver (EXPERTS only) [*]
  • --nl-ext-rewrite โ€” do context-dependent simplification based on rewrites in non-linear solver [*]
  • --nl-ext-split-zero โ€” initial splits on zero for all variables (EXPERTS only) [*]
  • --nl-ext-tf-taylor-deg=N โ€” initial degree of polynomials for Taylor approximation (EXPERTS only)
  • --nl-ext-tf-tplanes โ€” use non-terminating tangent plane strategy for transcendental functions for non-linear incremental linearization solver [*]
  • --nl-ext-tplanes โ€” use non-terminating tangent plane strategy for non-linear incremental linearization solver [*]
  • --nl-ext-tplanes-interleave โ€” interleave tangent plane strategy for non-linear incremental linearization solver [*]
  • --nl-icp โ€” whether to use ICP-style propagations for non-linear arithmetic (EXPERTS only) [*]
  • --nl-rlv=MODE โ€” choose mode for using relevance of assertions in non-linear arithmetic (EXPERTS only)
  • --nl-rlv-assert-bounds โ€” use bound inference utility to prune when an assertion is entailed by another (EXPERTS only) [*]
  • --pb-rewrites โ€” apply pseudo boolean rewrites (EXPERTS only) [*]
  • --pivot-threshold=N โ€” sets the number of pivots using --pivot-rule per basic variable per simplex instance before using variable order (EXPERTS only)

and bestieโ€ฆ we're not even done yet ๐Ÿ‘€ more parts are coming, don't go anywhere ๐Ÿฆ‹

  • --pp-assert-max-sub-size=N โ€” the threshold for substituting an equality in ppAssert. (EXPERTS only) ๐Ÿงช
  • --prop-row-length=N โ€” sets the maximum row length that gets used in propagation. (EXPERTS only)
  • --replay-early-close-depth=N โ€” multiples of the depths to try to close the approx log eagerly. (EXPERTS only)
  • --replay-lemma-reject-cut=N โ€” maximum complexity of any coefficient while outputting replaying cut lemmas. (EXPERTS only)
  • --replay-num-err-penalty=N โ€” number of solve integer attempts to skips after a numeric failure. (EXPERTS only) ๐Ÿ˜ญ
  • --replay-reject-cut=N โ€” maximum complexity of any coefficient while replaying cuts. (EXPERTS only)
  • --restrict-pivots โ€” have a pivot cap for simplex at effort levels below fullEffort. (EXPERTS only) [*]
  • --revert-arith-models-on-unsat โ€” revert the arithmetic model to a known safe model on unsat, if one is cached. (EXPERTS only) [*] ๐Ÿ›Ÿ
  • --rr-turns=N โ€” round robin turn. (EXPERTS only) ๐Ÿ”„
  • --se-solve-int โ€” attempt to use the approximate solve integer method on standard effort. (EXPERTS only) [*]
  • --simplex-check-period=N โ€” the number of pivots to do in simplex before rechecking for a conflict on all variables. (EXPERTS only)
  • --soi-qe โ€” use quick explain to minimize the sum of infeasibility conflicts. (EXPERTS only) [*]
  • --standard-effort-variable-order-pivots=N โ€” limits the number of pivots in a single invocation of check() at a non-full effort level, using Bland's pivot rule. (EXPERTS only)
  • --unate-lemmas=MODE โ€” determines which lemmas to add before solving (default is 'all', see --unate-lemmas=help). (EXPERTS only)
  • --use-approx โ€” attempt to use an approximate solver. (EXPERTS only) [*]
  • --use-fcsimplex โ€” use focusing and converging simplex (FMCAD 2013 submission). (EXPERTS only) [*]
  • --use-soi โ€” use sum of infeasibility simplex (FMCAD 2013 submission). (EXPERTS only) [*]

๐Ÿ“ From the Arrays Theory module

  • --arrays-eager-index โ€” turn on eager index splitting for generated array lemmas. [*]
  • --arrays-eager-lemmas โ€” turn on eager lemma generation for arrays. (EXPERTS only) [*]
  • --arrays-exp โ€” enable experimental features in the theory of arrays. (EXPERTS only) [*] ๐Ÿงช
  • --arrays-optimize-linear โ€” turn on optimization for linear array terms (see de Moura FMCAD 09 arrays paper). (EXPERTS only) [*]
  • --arrays-prop=N โ€” propagation effort for arrays: 0 is none, 1 is some, 2 is full. (EXPERTS only)
  • --arrays-reduce-sharing โ€” use model information to reduce size of care graph for arrays. (EXPERTS only) [*]
  • --arrays-weak-equiv โ€” use algorithm from Christ/Hoenicke (SMT 2014). (EXPERTS only) [*]

๐Ÿ‘œ From the Bags Theory module

  • --bags โ€” enables the bags solver in applicable logics. (EXPERTS only) [*]

๐Ÿงฑ From the Base module

  • --err=erroutput | --diagnostic-output-channel=erroutput โ€” Set the error (or diagnostic) output channel. Writes to stderr for "stderr" or "--", stdout for "stdout" or the given filename otherwise. (EXPERTS only)
  • --in=input โ€” Set the error (or diagnostic) output channel. Reads from stdin for "stdin" or "--" and the given filename otherwise. (EXPERTS only)
  • --out=output | --regular-output-channel=output โ€” Set the error (or diagnostic) output channel. Writes to stdout for "stdout" or "--", stderr for "stderr" or the given filename otherwise. (EXPERTS only)
ok bestie yes those three really do all say "Set the error (or diagnostic) output channel" in the source text, I'm not messing with you, that's literally what it says ๐Ÿ’€ copy-paste era. Anyway.
  • --plugin-notify-sat-clause-in-solve โ€” only inform plugins of SAT clauses when we are in the main solving loop of the SAT solver. (EXPERTS only) [*]
  • --plugin-share-skolems โ€” true if we permit sharing theory lemmas and SAT clauses with skolems. (EXPERTS only) [*]
  • --rweight=VAL=N โ€” set a single resource weight. (EXPERTS only) โš–๏ธ
  • --safe-mode=MODE โ€” modes for restricting expert options and theories. (EXPERTS only) ๐Ÿ›ก๏ธ
  • --stats-every-query โ€” in incremental mode, print stats after every satisfiability or validity query. [*]
  • --trace=TAG | -t TAG โ€” trace something (e.g. -t pushpop), can repeat and may contain wildcards like (e.g. -t theory::*). (EXPERTS only) ๐Ÿ”

๐Ÿ”ข From the Bitvector Theory module

  • --bitblast=MODE โ€” choose bitblasting mode, see --bitblast=help.
  • --bitwise-eq โ€” lift equivalence with one-bit bit-vectors to be boolean operations. (EXPERTS only) [*]
  • --bool-to-bv=MODE โ€” convert booleans to bit-vectors of size 1 at various levels of aggressiveness, see --bool-to-bv=help.
  • --bv-assert-input โ€” assert input assertions on user-level 0 instead of assuming them in the bit-vector SAT solver. (EXPERTS only) [*]
  • --bv-eager-eval โ€” perform eager context-dependent evaluation for applications of bv kinds in the equality engine. [*]
  • --bv-eq-engine โ€” enable equality engine when possible in bitvector theory. (EXPERTS only) [*]
  • --bv-gauss-elim โ€” simplify formula via Gaussian Elimination if applicable. (EXPERTS only) [*]
  • --bv-intro-pow2 โ€” introduce bitvector powers of two as a preprocessing pass. (EXPERTS only) [*]
  • --bv-propagate โ€” use bit-vector propagation in the bit-blaster. (EXPERTS only) [*]
  • --bv-rw-extend-eq โ€” enable additional rewrites over zero/sign extend over equalities with constants (useful on BV/2017-Preiner-scholl-smt08). (EXPERTS only) [*]
  • --bv-sat-solver=MODE โ€” choose which sat solver to use, see --bv-sat-solver=help.
  • --bv-solver=MODE โ€” choose bit-vector solver, see --bv-solver=help.
  • --bv-to-bool โ€” lift bit-vectors of size 1 to booleans when possible. [*]

๐ŸŒณ From the Datatypes Theory module

  • --cdt-bisimilar โ€” do bisimilarity check for co-datatypes. (EXPERTS only) [*]
  • --datatypes-exp โ€” enables reasoning about codatatypes and extended datatype terms. (EXPERTS only) [*]
  • --dt-binary-split โ€” do binary splits for datatype constructor types. (EXPERTS only) [*]
  • --dt-blast-splits โ€” when applicable, blast splitting lemmas for all variables at once. (EXPERTS only) [*]
  • --dt-cyclic โ€” do cyclicity check for datatypes. (EXPERTS only) [*]
  • --dt-infer-as-lemmas โ€” always send lemmas out instead of making internal inferences. (EXPERTS only) [*]
  • --dt-nested-rec โ€” allow nested recursion in datatype definitions. (EXPERTS only) [*]
  • --dt-polite-optimize โ€” turn on optimization for polite combination. (EXPERTS only) [*]
  • --dt-share-sel โ€” internally use shared selectors across multiple constructors. (EXPERTS only) [*]
  • --sygus-abort-size=N โ€” tells enumerative sygus to only consider solutions up to term size N (-1 == no limit, default).
  • --sygus-fair=MODE โ€” if and how to apply fairness for sygus.
  • --sygus-fair-max โ€” use max instead of sum for multi-function sygus conjectures. (EXPERTS only) [*]
  • --sygus-rewriter=MODE โ€” if and how to apply rewriting for sygus symmetry breaking.
  • --sygus-simple-sym-break=MODE โ€” if and how to apply simple symmetry breaking based on the grammar for smart enumeration.
  • --sygus-sym-break-lazy โ€” lazily add symmetry breaking lemmas for terms. (EXPERTS only) [*]
  • --sygus-sym-break-pbe โ€” sygus symmetry breaking lemmas based on pbe conjectures. [*]
  • --sygus-sym-break-rlv โ€” add relevancy conditions to symmetry breaking lemmas. (EXPERTS only) [*]

๐Ÿง  From the Decision Heuristics module

  • --jh-rlv-order โ€” maintain activity-based ordering for decision justification heuristic. (EXPERTS only) [*]
  • --jh-skolem=MODE โ€” policy for when to satisfy skolem definitions in justification heuristic. (EXPERTS only)
  • --jh-skolem-rlv=MODE โ€” policy for when to consider skolem definitions relevant in justification heuristic. (EXPERTS only)

โœ๏ธ From the Expression module

  • --type-checking โ€” type check expressions. (EXPERTS only) [*]
  • --wf-checking โ€” check that terms passed to API methods are well formed (default false for text interface). (EXPERTS only) [*]

๐ŸŒˆ From the Finite Field Theory module

  • --ff โ€” enables the finite field solver in applicable logics. (EXPERTS only) [*]
  • --ff-bitsum โ€” parse bitsums. (EXPERTS only) [*]
  • --ff-elim-disjunctive-bit โ€” rewrite disjunctive bit constraints (or (= x 1) (= x 0)) as (= (* x x) x). (EXPERTS only) [*]
  • --ff-field-polys โ€” include field polynomials in Groebner basis computation; don't do this. (EXPERTS only) [*] ๐Ÿ’€
  • --ff-solver=MODE โ€” which field solver (default: 'gb'; see --ff-solver=help). (EXPERTS only)
  • --ff-trace-gb โ€” use a traced groebner basis engine. (EXPERTS only) [*]

๐ŸŽˆ From the Floating-Point module

  • --fp โ€” enables the floating point theory in applicable logics. (EXPERTS only) [*]
  • --fp-exp โ€” Allow floating-point sorts of all sizes, rather than only Float32 (8/24) or Float64 (11/53) (experimental). (EXPERTS only) [*] ๐Ÿงช
  • --fp-lazy-wb โ€” Enable lazier word-blasting (on preNotifyFact instead of registerTerm). (EXPERTS only) [*]

๐Ÿš— From the Driver module

  • --dump-difficulty โ€” dump the difficulty measure after every response to check-sat. [*]
  • --dump-instantiations โ€” output instantiations of quantified formulas after every UNSAT/VALID response. [*]
  • --dump-instantiations-debug โ€” output instantiations of quantified formulas after every UNSAT/VALID response, with debug information. (EXPERTS only) [*]
  • --dump-models โ€” output models after every SAT/INVALID/UNKNOWN response. [*]
  • --dump-proofs โ€” output proofs after every UNSAT/VALID response. [*]
  • --dump-unsat-cores โ€” output unsat cores after every UNSAT/VALID response. [*]
  • --dump-unsat-cores-lemmas โ€” output lemmas in unsat cores after every UNSAT/VALID response. [*]
  • --force-no-limit-cpu-while-dump โ€” Force no CPU limit when dumping models and proofs. (EXPERTS only) [*]
  • --portfolio-dry-run โ€” Print the strategies that would be run with --use-portfolio, without executing them. (EXPERTS only) [*]
  • --portfolio-jobs=n โ€” Number of parallel jobs the portfolio engine can run. (EXPERTS only)
  • --segv-spin โ€” spin on segfault/other crash waiting for gdb. (EXPERTS only) [*] ๐Ÿ™ˆ
  • --show-trace-tags โ€” dumps every single tag you could ever trace with (EXPERTS only) ๐Ÿ‘‘
  • --use-portfolio โ€” turns on internal portfolio mode, picked based on the logic (EXPERTS only) [*]

๐Ÿฆ‹ From the Parallel module ๐Ÿฆ‹

  • --append-learned-literals-to-cubes โ€” ships the learned literals out together with the cubes (EXPERTS only) [*]
  • --checks-before-partition=N โ€” how many standard-or-full-effort checks happen before we start partitioning (EXPERTS only)
  • --checks-between-partitions=N โ€” how many checks go down in between partitions (EXPERTS only)
  • --compute-partitions=N โ€” makes n partitions. heads up bestie: if n <2, computing partitions gets switched off completely (EXPERTS only)
  • --partition-check=MODE | --check=MODE โ€” picks whether the partitioning happens at a full check or a standard check (EXPERTS only)
  • --partition-conflict-size=N โ€” the number of literals in a cube; and if no partition size is set, then the partition conflict size gets chosen as log2 of the number of requested partitions (EXPERTS only)
  • --partition-start-time=N โ€” when to start creating partitions, in seconds (EXPERTS only)
  • --partition-strategy=MODE | --partition=MODE โ€” chooses the partition strategy mode (EXPERTS only)
  • --partition-time-interval=N โ€” how long to wait between scatter partitions (EXPERTS only)
  • --partition-tlimit=N โ€” time limit for partitioning, in seconds (EXPERTS only)
  • --partition-when=MODE โ€” chooses when to partition (EXPERTS only)
  • --random-partitioning โ€” creates random partitions (EXPERTS only) [*]
  • --write-partitions-to=output | --partitions-out=output โ€” sets the output channel where partitions get written (EXPERTS only)

๐ŸŽ€ From the Parser module ๐ŸŽ€

  • --filesystem-access โ€” limits file system access when it's set to false (EXPERTS only) [*]
  • --fresh-binders โ€” always builds fresh variables when parsing binders, no exceptions (EXPERTS only) [*]
  • --fresh-declarations โ€” uses the API interface for fresh constants while parsing declarations and definitions [*]
  • --global-declarations โ€” forces every declaration and definition to be global while parsing [*]
  • --parse-skolem-definitions โ€” lets you parse skolems in the input file (EXPERTS only) [*]
  • --parsing-mode=MODE โ€” picks the parsing mode โ€” run --parsing-mode=help to see your options (EXPERTS only)
  • --semantic-checks โ€” switches on semantic checks, type checks included (EXPERTS only) [*]
  • --term-sort-overload โ€” allows terms and sorts to be overloaded (EXPERTS only) [*]

๐Ÿ’… From the Printing module ๐Ÿ’…

  • --bv-print-consts-as-indexed-symbols โ€” prints bit-vector constants in decimal (like (_ bv1 4)) instead of binary (like #b0001), and yeah it applies to SMT-LIB 2.x [*]
  • --flatten-ho-chains โ€” prints (binary) application chains all flattened out, e.g. (a b c) instead of ((a b) c) (EXPERTS only) [*]
  • --model-u-print=MODE โ€” decides how uninterpreted elements get printed inside models
  • --print-arith-lit-token โ€” prints rationals and negative arithmetic literals as lexed tokens, e.g. 1/4, -1.5 (EXPERTS only) [*]
  • --print-skolem-definitions โ€” prints skolems based on their definitions, e.g. @ARRAY_DIFF_N prints instead as (@array.diff A B) (EXPERTS only) [*]

๐Ÿ”ฅ From the Proof module ๐Ÿ”ฅ

  • --check-proof-steps โ€” checks proof steps for satisfiability, for refutation soundness testing. heads up tho: this only checks steps for non-core proof rules (EXPERTS only) [*]
  • --check-proofs-complete โ€” treats an incomplete proof as a failure (and yes, it's enabled by default in safe builds) (EXPERTS only) [*]
  • --drat-binary-format โ€” prints the DRAT proof in binary format (EXPERTS only) [*]
  • --lfsc-expand-trust โ€” prints the children of trusted proof steps (EXPERTS only) [*]
  • --lfsc-flatten โ€” flattens the steps in the LFSC proof (EXPERTS only) [*]
  • --opt-res-reconstruction-size โ€” optimizes resolution reconstruction so the proof gets smaller [*]
  • --print-dot-clusters โ€” says whether the proof node clusters (e.g. SAT, CNF, INPUT) get printed or not when you're using the dot format. (EXPERTS only) [*]
  • --proof-alethe-define-skolems โ€” in Alethe proofs, uses define-funs in the proof preamble for Skolemization terms (EXPERTS only) [*]
  • --proof-alethe-res-pivots โ€” adds pivots to Alethe resolution steps (EXPERTS only) [*]
  • --proof-allow-trust โ€” whether trust is allowed in the proof printer (when it applies) (EXPERTS only) [*]
  • --proof-chain-m-res โ€” uses chain multiset resolution [*]
  • --proof-dag-global โ€” dagifies terms in proofs using global definitions (EXPERTS only) [*]
  • --proof-dot-dag โ€” tells you if the dot proof gets printed as a DAG or as a tree (EXPERTS only) [*]
  • --proof-elim-subtypes โ€” eliminates subtypes (mixed arithmetic) in proofs (EXPERTS only) [*]
  • --proof-format-mode=MODE โ€” selects the language of the proof output (EXPERTS only)
  • --proof-log โ€” proof logging mode (EXPERTS only) [*]
  • --proof-pedantic=N โ€” throws an assertion failure for any incorrect rule application or untrusted lemma with pedantic level <=N that comes with a proof (EXPERTS only)
  • --proof-pp-merge โ€” merges subproofs in the final proof post-processor (EXPERTS only) [*]
  • --proof-pre-simp-lookahead=N โ€” the lookahead depth for merging proofs at previsit (EXPERTS only)
  • --proof-prune-input โ€” prunes unused input assumptions out of the final scope (EXPERTS only) [*]
  • --proof-rewrite-rcons-rec-limit=N โ€” the matching recursion limit for reconstructing proofs of theory rewrites
  • --proof-rewrite-rcons-step-limit=N โ€” the limit of steps considered when reconstructing proofs of theory rewrites
  • --prop-proof-mode=MODE โ€” modes for the type of proof the SAT solver generates
  • --sat-proof-min-dimacs โ€” minimizes the DIMACs emitted when prop-proof-mode is set to sat-external-prove (EXPERTS only) [*]

๐ŸŒˆ From the SAT Layer module ๐ŸŒˆ

  • --minisat-dump-dimacs โ€” instead of actually solving, minisat dumps the asserted clauses in Dimacs format (EXPERTS only) [*]
  • --minisat-simplification=MODE โ€” the simplifications Minisat should perform. (EXPERTS only)
  • --preregister-mode=MODE โ€” modes for when to preregister literals.
  • --random-freq=P | --random-frequency=P โ€” sets the frequency of random decisions in the sat solver (P=0.0 by default) (EXPERTS only)
  • --restart-int-base=N โ€” sets the base restart interval for the sat solver (N=25 by default) (EXPERTS only)
  • --restart-int-inc=F โ€” sets the restart interval increase factor for the sat solver (F=3.0 by default) (EXPERTS only)
  • --sat-random-seed=N โ€” sets the random seed for the sat solver
  • --sat-solver=MODE โ€” chooses which sat solver to use โ€” peep --sat-solver=help for the list (EXPERTS only)

๐Ÿงš From the Quantifiers module ๐Ÿงš

  • --cbqi โ€” enables conflict-based quantifier instantiation [*]
  • --cbqi-all-conflict โ€” adds every available conflicting instance during conflict-based instantiation [*]
  • --cbqi-mode=MODE โ€” what effort to apply the conflict find mechanism with
  • --cbqi-skip-rd โ€” an optimization: skips instances based on possibly irrelevant portions of quantified formulas (EXPERTS only) [*]
  • --cbqi-tconstraint โ€” enables entailment checks for t-constraints in the cbqi algorithm (EXPERTS only) [*]
  • --cbqi-vo-exp โ€” cbqi experimental variable ordering (EXPERTS only) [*]
  • --cegis-sample=MODE โ€” mode for using samples in the counterexample-guided inductive synthesis loop
  • --cegqi โ€” turns on counterexample-based quantifier instantiation [*]
  • --cegqi-all โ€” applies counterexample-based instantiation to all quantified formulas (EXPERTS only) [*]
  • --cegqi-bv โ€” uses the word-level inversion approach for counterexample-guided quantifier instantiation on bit-vectors [*]
  • --cegqi-bv-ineq=MODE โ€” chooses the mode for handling bit-vector inequalities with counterexample-guided instantiation (EXPERTS only)
  • --cegqi-bv-interleave-value โ€” interleaves model value instantiation with the word-level inversion approach (EXPERTS only) [*]
  • --cegqi-bv-linear โ€” linearizes adder chains for variables (EXPERTS only) [*]
  • --cegqi-bv-rm-extract โ€” swaps extract terms out for variables, for counterexample-guided instantiation on bit-vectors (EXPERTS only) [*]
  • --cegqi-bv-solve-nl โ€” tries to solve non-linear bv literals using model value projections (EXPERTS only) [*]
  • --cegqi-full โ€” turns on full effort counterexample-based quantifier instantiation, which may resort to model-value instantiation (EXPERTS only) [*]
  • --cegqi-inf-int โ€” uses integer infinity for vts in counterexample-based quantifier instantiation (EXPERTS only) [*]
  • --cegqi-inf-real โ€” uses real infinity for vts in counterexample-based quantifier instantiation (EXPERTS only) [*]
  • --cegqi-innermost โ€” only processes innermost quantified formulas in counterexample-based quantifier instantiation [*]
  • --cegqi-midpoint โ€” chooses substitutions based on midpoints of lower and upper bounds for counterexample-based quantifier instantiation [*]
  • --cegqi-min-bounds โ€” uses the minimally constrained lower/upper bound for counterexample-based quantifier instantiation (EXPERTS only) [*]
  • --cegqi-multi-inst โ€” when it applies, does multi instantiations per quantifier per round in counterexample-based quantifier instantiation (EXPERTS only) [*]
  • --cegqi-nested-qe โ€” processes nested quantified formulas with quantifier elimination in counterexample-based quantifier instantiation [*]
  • --cegqi-nopt โ€” non-optimal bounds for counterexample-based quantifier instantiation (EXPERTS only) [*]
  • --cegqi-round-up-lia โ€” rounds up integer lower bounds in substitutions for counterexample-based quantifier instantiation (EXPERTS only) [*]
  • --cond-var-split-quant=MODE โ€” splits quantified formulas that lead to variable eliminations (EXPERTS only)
  • --conjecture-gen โ€” generates candidate conjectures for inductive proofs (EXPERTS only) [*]
  • --conjecture-gen-gt-enum=N โ€” how many ground terms to generate for model filtering (EXPERTS only)
  • --conjecture-gen-max-depth=N โ€” the maximum depth of terms to consider for conjectures (EXPERTS only)
  • --conjecture-gen-per-round=N โ€” how many conjectures to generate per instantiation round (EXPERTS only)
  • --cons-exp-triggers โ€” constructor expansion but for single-constructor datatype triggers โœจ (EXPERTS only) [*]
  • --dt-stc-ind โ€” strengthening for existential quantification over datatypes, grounded in structural induction ๐Ÿ’… (EXPERTS only) [*]
  • --dt-var-exp-quant โ€” datatype variables that are bound to exactly one constructor get expanded inside quantifiers ๐ŸŒธ (EXPERTS only) [*]
  • --e-matching โ€” whether we do the heuristic E-matching thing or not ๐Ÿฆ‹ [*]
  • --elim-taut-quant โ€” yeet the tautological disjuncts out of quantified formulas ๐Ÿงน [*]
  • --enum-inst-interleave โ€” interleave enumerative instantiation with the other techniques, so they take turns like civilized queens ๐Ÿ‘‘ [*]
  • --enum-inst-limit=N โ€” max number of rounds of enumerative instantiation to apply (-1 means no limit, bestie, go feral) (EXPERTS only)
  • --enum-inst-rd โ€” do we use relevant domain first for the enumerative instantiation strategy? that's the question ๐Ÿ’ญ (EXPERTS only) [*]
  • --enum-inst-stratify โ€” stratify the effort levels in enumerative instantiation, which lowkey favors speed over fairness ๐Ÿƒโ™€๏ธ (EXPERTS only) [*]
  • --enum-inst-sum โ€” enumerate tuples of quantifiers by increasing the sum of indices instead of the maximum, main character behavior fr fr โœจ [*]
  • --ext-rewrite-quant โ€” extended rewriting, but applied to the bodies of quantified formulas ๐ŸŽ€ [*]
  • --finite-model-find โ€” use the finite model finding heuristic for quantifier instantiation ๐ŸŒˆ [*]
  • --fmf-bound โ€” finite model finding, but specifically on bounded quantification ๐Ÿ“ [*]
  • --fmf-bound-blast โ€” send ALL the instantiations for bounded ranges in one single round, no holding back ๐Ÿ’ฅ (EXPERTS only) [*]
  • --fmf-bound-lazy โ€” enforce bounds for bounded quantification lazily, by using proxy variables ๐Ÿซง (EXPERTS only) [*]
  • --fmf-fun โ€” find models for recursively defined functions; it assumes the functions are admissible ๐Ÿงš (EXPERTS only) [*]
  • --fmf-fun-rlv โ€” same as above, finds models for recursively defined functions, assumes the functions are admissible, and also allows an empty type when the function is irrelevant ๐Ÿ’œ (EXPERTS only) [*]
  • --fmf-mbqi=MODE โ€” pick the mode for model-based quantifier instantiation ๐ŸŽ›๏ธ (EXPERTS only)
  • --fmf-type-completion-thresh=N โ€” the max cardinality of an interpreted type for which exhaustive enumeration in finite model finding even gets attempted ๐Ÿ”ข
  • --full-sygus-verify โ€” go all-in with full effort techniques instead of just answering unknown when checking sygus candidates ๐Ÿ˜ค (EXPERTS only) [*]
  • --global-negate โ€” do a global negation of the input formula ๐Ÿ”„ (EXPERTS only) [*]
  • --ho-elim โ€” eagerly eliminate higher-order constraints, no waiting around โšก (EXPERTS only) [*]
  • --ho-elim-store-ax โ€” use the store axiom during ho-elim ๐Ÿ“ฆ (EXPERTS only) [*]
  • --ho-matching โ€” run the higher-order matching algorithm for triggers that have variable operators ๐ŸŽฏ (EXPERTS only) [*]
  • --ho-merge-term-db โ€” merge term indices modulo equality ๐Ÿค (EXPERTS only) [*]
  • --ieval=MODE โ€” the mode for using instantiation evaluation ๐Ÿงฎ
  • --increment-triggers โ€” generate extra triggers as needed during the search ๐Ÿ” (EXPERTS only) [*]
  • --inst-local โ€” instantiations stay local to the SAT context, they don't go wandering ๐Ÿ  [*]
  • --inst-max-level=N โ€” maximum inst level of terms used to instantiate quantified formulas with (-1 == no limit, which is the default) (EXPERTS only)
  • --inst-max-rounds=N โ€” maximum number of instantiation rounds (-1 == no limit, which is the default) ๐Ÿ”
  • --inst-no-entail โ€” do NOT consider instances of quantified formulas that are currently entailed ๐Ÿšซ [*]
  • --inst-when=MODE โ€” when to apply instantiation โฐ
  • --inst-when-phase=N โ€” how many instantiation rounds quantifiers takes (>=1) before theory combination is allowed to happen (EXPERTS only)
  • --int-wf-ind โ€” apply strengthening for integers based on well-founded induction ๐Ÿงฑ (EXPERTS only) [*]
  • --ite-dtt-split-quant โ€” split ites that have dt testers as their conditions โœ‚๏ธ (EXPERTS only) [*]
  • --ite-lift-quant=MODE โ€” the ite lifting mode for quantified formulas ๐Ÿ—๏ธ
  • --literal-matching=MODE โ€” choose your literal matching mode ๐ŸŽš๏ธ (EXPERTS only)
  • --macros-quant โ€” perform quantifiers macro expansion ๐Ÿช„ [*]
  • --macros-quant-mode=MODE โ€” the mode for quantifiers macro expansion ๐ŸŽ›๏ธ
  • --mbqi โ€” use model-based quantifier instantiation ๐Ÿง  [*]
  • --mbqi-check-timeout=N โ€” timeout (in milliseconds) for verifying subcalls for model-based instantiation (0 == no limit) โณ
  • --mbqi-enum โ€” use fast enumeration to augment instantiations from MBQI ๐Ÿš€ [*]
  • --mbqi-enum-ext-vars-grammar โ€” include variables that are defined in terms of others in the grammars for fast enumerative mbqi ๐Ÿ“š (EXPERTS only) [*]
  • --mbqi-enum-free-syms-grammar โ€” include free symbols from the body of the quantified formula in the grammars for fast enumerative mbqi ๐Ÿ†“ (EXPERTS only) [*]
  • --mbqi-enum-global-syms-grammar โ€” include global symbols from all available assertions in the grammars for fast enumerative mbqi ๐ŸŒ (EXPERTS only) [*]
  • --mbqi-interleave โ€” interleave model-based quantifier instantiation with the other techniques, they can share ๐Ÿซถ (EXPERTS only) [*]
  • --mbqi-nested-check โ€” check nested quantified formulas in MBQI ๐Ÿช† (EXPERTS only) [*]
  • --mbqi-one-inst-per-round โ€” only add ONE instantiation per quantifier per round for mbqi, one at a time bestie โ˜๏ธ [*]
  • --miniscope-quant=MODE โ€” miniscope mode for quantified formulas ๐Ÿ”ฌ
  • --miniscope-quant-user โ€” miniscope quantified formulas that have user patterns ๐Ÿ‘ค [*]
  • --multi-trigger-cache โ€” the caching version of multi triggers ๐Ÿ—ƒ๏ธ [*]
  • --multi-trigger-linear โ€” an implementation of multi triggers where the max number of instantiations is linear with respect to the number of ground terms ๐Ÿ“ˆ [*]
  • --multi-trigger-priority โ€” only try multi triggers if single triggers give you zero instantiations ๐Ÿฅˆ [*]
  • --multi-trigger-when-single โ€” select multi triggers whenever single triggers exist ๐Ÿ‘ฏ [*]
  • --oracles โ€” enable the interface to external oracles ๐Ÿ”ฎ (EXPERTS only) [*]
  • --partial-triggers โ€” use triggers that do NOT contain all the free variables ๐Ÿ™ˆ (EXPERTS only) [*]
  • --pool-inst โ€” pool-based instantiation: instantiate with ground terms that occur in user-specified pools ๐ŸŠโ™€๏ธ (EXPERTS only) [*]
  • --pre-skolem-quant=MODE โ€” modes for applying skolemization eagerly to the bodies of quantified formulas ๐Ÿช“
  • --pre-skolem-quant-nested โ€” apply skolemization to nested quantified formulas ๐Ÿช† (EXPERTS only) [*]
  • --prenex-quant=MODE โ€” prenex mode for quantified formulas ๐Ÿงญ (EXPERTS only)
  • --prenex-quant-user โ€” prenex quantified formulas that have user patterns ๐Ÿ‘ค [*]
  • --print-inst-full โ€” print instantiations for formulas that do NOT have given identifiers ๐Ÿ–จ๏ธ [*]
  • --purify-triggers โ€” purify triggers, e.g. f( x+1 ) becomes f( y ), x mapsto y-1 ๐Ÿงผ (EXPERTS only) [*]
  • --quant-alpha-equiv โ€” infer alpha equivalence between quantified formulas ๐Ÿ”ค [*]
  • --quant-dsplit=MODE โ€” mode for dynamic quantifiers splitting ๐Ÿ’ฅ
  • --quant-fun-wd โ€” assume that the function defined by quantifiers is well defined ๐Ÿ™ (EXPERTS only) [*]
  • --quant-ind โ€” use every available technique for inductive reasoning ๐Ÿง โœจ (EXPERTS only) [*]
  • --quant-rep-mode=MODE โ€” selection mode for representatives in the quantifiers engine ๐ŸŽ–๏ธ (EXPERTS only)
  • --register-quant-body-terms โ€” consider ground terms inside the bodies of quantified formulas for matching ๐Ÿ‘€ (EXPERTS only) [*]
  • --relational-triggers โ€” choose relational triggers like x = f(y), x >= f(y) ๐Ÿ”— (EXPERTS only) [*]
  • --relevant-triggers โ€” prefer the triggers that are more relevant, based on SInE style analysis ๐ŸŽฏ [*]
  • --sub-cbqi โ€” enable the conflict-based instantiation subsolver strategy ๐Ÿงฉ [*]
  • --sub-cbqi-timeout=N โ€” timeout (in milliseconds) for subsolver calls for sub-cbqi โณ (EXPERTS only)
  • --sygus โ€” support SyGuS commands ๐ŸŽค [*]
  • --sygus-add-const-grammar โ€” statically add the constants that appear in the conjecture to the grammars โž• [*]
  • --sygus-arg-relevant โ€” static inference techniques for figuring out whether the arguments of functions-to-synthesize are relevant ๐Ÿ”Ž (EXPERTS only) [*]
  • --sygus-auto-unfold โ€” enable the approach that automatically unfolds transition systems for directly solving invariant synthesis problems ๐ŸŒ€ (EXPERTS only) [*]
  • --sygus-bool-ite-return-const โ€” only use Boolean constants for return values in unification-based function synthesis ๐Ÿ…ฑ๏ธ (EXPERTS only) [*]
  • --sygus-core-connective โ€” use unsat core analysis to construct the Boolean connective for sygus conjectures ๐Ÿงต [*]
  • --sygus-crepair-abort โ€” abort if the constant repair techniques aren't applicable ๐Ÿ˜ต (EXPERTS only) [*]
  • --sygus-enum=MODE โ€” mode for sygus enumeration ๐Ÿ”ข
  • --sygus-enum-fast-num-consts=N โ€” the branching factor for the number of interpreted constants to consider for each size when you're using --sygus-enum=fast ๐ŸŒฟ (EXPERTS only)
  • --sygus-enum-random-p=P โ€” the parameter of the geometric distribution used to determine the size of terms generated by --sygus-enum=random ๐ŸŽฒ (EXPERTS only)
  • --sygus-eval-unfold=MODE โ€” modes for sygus evaluation unfolding ๐Ÿ“‚
  • --sygus-expr-miner-check-timeout=N โ€” timeout (in milliseconds) for satisfiability checks in expression miners โฑ๏ธ (EXPERTS only)
  • --sygus-filter-sol=MODE โ€” mode for filtering sygus solutions ๐Ÿงฝ (EXPERTS only)
  • --sygus-filter-sol-rev โ€” compute backwards filtering, to figure out whether previous solutions get filtered based on later ones โช (EXPERTS only) [*]
  • --sygus-grammar-cons=MODE โ€” mode for SyGuS grammar construction ๐Ÿ—๏ธ
  • --sygus-grammar-ho-partial โ€” add partial function applications to the grammar ๐Ÿงฉ (EXPERTS only) [*]
  • --sygus-grammar-norm โ€” statically normalize sygus grammars based on flattening (linearization) ๐Ÿ“ (EXPERTS only) [*]
  • --sygus-grammar-use-disj โ€” use disjunctions in internally generated grammars. this is set to false when solving abduction queries. ๐Ÿ”€ (EXPERTS only) [*]
  • --sygus-inference=MODE โ€” mode for preprocessing arbitrary inputs to sygus conjectures ๐Ÿช„ (EXPERTS only)
  • --sygus-inst โ€” enable the SyGuS instantiation quantifiers module ๐ŸŽค [*]
  • --sygus-inst-mode=MODE โ€” select the instantiation lemma mode ๐ŸŽš๏ธ (EXPERTS only)
  • --sygus-inst-scope=MODE โ€” select the scope of ground terms ๐Ÿ”ญ (EXPERTS only)
  • --sygus-inst-term-sel=MODE โ€” granularity for ground terms ๐Ÿง‚ (EXPERTS only)

okay bestie we are still in the OPTIONS mines and there is NO escape, but honestly? these are kinda iconic. keep scrolling, we're almost to the end of the alphabet ๐Ÿซถ

  • --sygus-inv-templ=MODE โ€” the template mode for sygus invariant synthesis. your choices are: weaken the pre-condition, strengthen the post-condition, or none. pick your fighter โœจ
  • --sygus-inv-templ-when-sg โ€” use invariant templates (with solution reconstruction) for syntax guided problems. EXPERTS only [*]
  • --sygus-min-grammar โ€” statically minimize sygus grammars [*]
  • --sygus-out=MODE โ€” output mode for sygus
  • --sygus-pbe โ€” enable the approach which unifies conditional solutions, specialized for programming-by-examples (pbe) conjectures [*] ๐Ÿ“
  • --sygus-pbe-multi-fair โ€” when you're using multiple enumerators, make sure we only register the value of the minimal term size. EXPERTS only [*]
  • --sygus-pbe-multi-fair-diff=N โ€” same multiple-enumerator situation, except we only register values of minimal term size plus this value. default is 0. EXPERTS only
  • --sygus-qe-preproc โ€” use quantifier elimination as a preprocessing step for sygus. EXPERTS only [*]
  • --sygus-query-gen=MODE โ€” mode for generating interesting satisfiability queries using SyGuS, for internal fuzzing. EXPERTS only
  • --sygus-query-gen-dump-files=MODE โ€” mode for dumping external files that correspond to interesting satisfiability queries with sygus-query-gen. EXPERTS only
  • --sygus-query-gen-filter-solved โ€” do not print queries that are solved. EXPERTS only [*]
  • --sygus-query-gen-thresh=N โ€” the number of points that we allow to be equal for enumerating satisfiable queries with sygus-query-gen. EXPERTS only
  • --sygus-rec-fun โ€” enable efficient support for recursive functions in sygus. EXPERTS only [*] ๐Ÿ”ฅ
  • --sygus-rec-fun-eval-limit=N โ€” use a hard limit for how many times, in a given evaluator call, a recursive function can be evaluated (so infinite loops can be avoided, periodt). EXPERTS only
  • --sygus-rec-fun-infer โ€” automatically infer recursive definitions for sygus. EXPERTS only [*]
  • --sygus-repair-const โ€” use the approach that repairs constants in sygus candidate solutions [*]
  • --sygus-repair-const-timeout=N โ€” timeout, in milliseconds, for the satisfiability check that repairs constants in sygus candidate solutions. EXPERTS only
  • --sygus-rr-synth-accel โ€” add dynamic symmetry breaking clauses based on candidate rewrites. EXPERTS only [*]
  • --sygus-rr-synth-check โ€” use a satisfiability check to verify the correctness of candidate rewrites. EXPERTS only [*]
  • --sygus-rr-synth-filter-cong โ€” filter candidate rewrites based on congruence. EXPERTS only [*]
  • --sygus-rr-synth-filter-match โ€” filter candidate rewrites based on matching. EXPERTS only [*]
  • --sygus-rr-synth-filter-nl โ€” filter out the non-linear candidate rewrites. EXPERTS only [*]
  • --sygus-rr-synth-filter-order โ€” filter candidate rewrites based on variable ordering. EXPERTS only [*]
  • --sygus-rr-synth-input-nvars=N โ€” the maximum number of variables per type that appear in rewrites from sygus-rr-synth-input. EXPERTS only
  • --sygus-rr-synth-rec โ€” synthesize rewrite rules over all sygus grammar types, recursively. EXPERTS only [*]
  • --sygus-sample-fp-uniform โ€” sample floating-point values uniformly instead of in a biased fashion. EXPERTS only [*]
  • --sygus-sample-grammar โ€” when applicable, use the grammar for choosing sample points. EXPERTS only [*]
  • --sygus-samples=N โ€” number of points to consider when doing sygus rewriter sample testing. EXPERTS only
  • --sygus-si=MODE โ€” mode for processing single invocation synthesis conjectures
  • --sygus-si-abort โ€” abort if the synthesis conjecture is not single invocation [*]
  • --sygus-si-rcons=MODE โ€” policy for reconstructing solutions for single invocation conjectures
  • --sygus-si-rcons-limit=N โ€” number of rounds of enumeration to use during solution reconstruction (a negative value means unlimited). EXPERTS only
  • --sygus-si-rcons-p=P โ€” the parameter of the geometric distribution used to determine the number of unification patterns generated by single invocation techniques. EXPERTS only
  • --sygus-stream โ€” enumerate a stream of solutions instead of terminating after the first one [*] ๐Ÿ’…
  • --sygus-unif-cond-independent-no-repeat-sol โ€” Do not try repeated solutions when using independent synthesis of conditions in unification-based function synthesis. EXPERTS only [*]
  • --sygus-unif-pi=MODE โ€” mode for synthesis via piecewise-independent unification
  • --sygus-unif-shuffle-cond โ€” Shuffle the condition pool when building solutions (this may change solution sizes, jsyk). EXPERTS only [*]
  • --sygus-verify-inst-max-rounds=N โ€” maximum number of instantiation rounds for sygus verification calls. -1 == no limit, and the default is 10. EXPERTS only
  • --sygus-verify-timeout=N โ€” timeout, in milliseconds, for verifying the satisfiability of synthesized terms. 0 == no limit.
  • --term-db-mode=MODE โ€” which ground terms to consider for instantiation
  • --trigger-active-sel=MODE โ€” selection mode to activate triggers. EXPERTS only
  • --trigger-sel=MODE โ€” selection mode for triggers
  • --user-pat=MODE โ€” policy for handling user-provided patterns for quantifier instantiation
  • --user-pool=MODE โ€” policy for handling user-provided pools for quantifier instantiation. EXPERTS only
  • --var-elim-quant โ€” enable simple variable elimination for quantified formulas [*]
  • --var-ent-eq-elim-quant โ€” enable variable elimination for quantified formulas that infers entailed equalities corresponding to eliminations [*]
  • --var-ineq-elim-quant โ€” enable variable elimination based on infinite projection of unbound arithmetic variables [*]

๐Ÿฆ‹ From the Separation Logic Theory module ๐Ÿฆ‹

  • --sep โ€” enables the separation logic solver in applicable logics. EXPERTS only [*]
  • --sep-min-refine โ€” only add refinement lemmas for minimal (innermost) assertions. EXPERTS only [*]
  • --sep-pre-skolem-emp โ€” eliminate the emp constraint at preprocess time. EXPERTS only [*]

๐ŸŽ€ From the Sets Theory module ๐ŸŽ€

  • --rels-exp โ€” enable the relations extension of the theory of sets. EXPERTS only [*]
  • --sets-card-exp โ€” enable the cardinality extension of the theory of sets. EXPERTS only [*]
  • --sets-exp โ€” enable extended symbols such as complement and universe in the theory of sets. EXPERTS only [*]
  • --sets-proxy-lemmas โ€” introduce proxy variables eagerly to shorten lemmas. EXPERTS only [*]

๐ŸŒˆ From the SMT Layer module ๐ŸŒˆ

  • --abstract-values โ€” in models, output arrays (and in the future, maybe others too) using abstract values, as required by the SMT-LIB standard. EXPERTS only [*]
  • --ackermann โ€” eliminate functions by ackermannization. EXPERTS only [*]
  • --bv-to-int-use-pow2 โ€” use the internal pow2 operator when translating shift notes. EXPERTS only [*]
  • --bvand-integer-granularity=N โ€” the granularity to use in --solve-bv-as-int mode and for the iand operator (experimental). EXPERTS only
  • --deep-restart=MODE โ€” mode for deep restarts. EXPERTS only
  • --deep-restart-factor=F โ€” sets the threshold for average assertions per literal before a deep restart happens. EXPERTS only
  • --difficulty-mode=MODE โ€” choose the output mode for get-difficulty, see --difficulty-mode=help. EXPERTS only
  • --early-ite-removal โ€” remove ITEs early in preprocessing. EXPERTS only [*]
  • --ext-rew-prep=MODE โ€” mode for using the extended rewriter as a preprocessing pass, see --ext-rew-prep=help. EXPERTS only
  • --foreign-theory-rewrite โ€” Cross-theory rewrites. EXPERTS only [*]
  • --iand-mode=mode โ€” Set the refinement scheme for integer AND. EXPERTS only
  • --interpolants-mode=MODE โ€” choose the interpolants production mode, see --interpolants-mode=help
  • --ite-simp โ€” turn on ite simplification (Kim (and Somenzi) et al., SAT 2009). EXPERTS only [*]
  • --learned-rewrite โ€” rewrite the input based on learned literals [*]
  • --minimal-unsat-cores โ€” if an unsat core is produced, it gets reduced to a minimal unsat core. EXPERTS only [*]
  • --model-cores=MODE โ€” mode for producing model cores
  • --model-var-elim-uneval โ€” allow variable elimination based on unevaluatable terms to variables. EXPERTS only [*]
  • --on-repeat-ite-simp โ€” do the ite simplification pass again if repeating simplification. EXPERTS only [*]
  • --print-cores-full โ€” print all formulas regardless of whether they are named, e.g. in unsat cores [*]
  • --produce-abducts โ€” support the get-abduct command [*]
  • --produce-assertions | --interactive-mode โ€” keep an assertions list. Note this option is always enabled. [*]
  • --produce-assignments โ€” support the get-assignment command [*]
  • --produce-difficulty โ€” enable tracking of difficulty. [*]
  • --produce-interpolants โ€” turn on interpolation generation. [*]
  • --produce-learned-literals โ€” produce learned literals, support get-learned-literals [*]
  • --produce-unsat-assumptions โ€” turn on unsat assumptions generation [*]
  • --proof-mode=MODE โ€” choose the proof mode, see --proof-mode=help. EXPERTS only
  • --repeat-simp โ€” make multiple passes with the nonclausal simplifier. EXPERTS only [*]
  • --simp-ite-compress โ€” enables compressing ites after ite simplification. EXPERTS only [*]
  • --simp-with-care โ€” enables simplifyWithCare in ite simplification. EXPERTS only [*]
  • --simplification=MODE | --simplification-mode=MODE โ€” choose the simplification mode, see --simplification=help
  • --simplification-bcp โ€” apply Boolean constant propagation as a substitution during simplification. EXPERTS only [*]
  • --solve-bv-as-int=MODE โ€” mode for translating BVAnd to integer
  • --solve-int-as-bv=N โ€” attempt to solve a pure integer satisfiable problem by bitblasting in sufficient bitwidth (experimental)
  • --solve-real-as-int โ€” attempt to solve a pure real satisfiable problem as an integer problem (for non-linear) [*]
  • --sort-inference โ€” calculate sort inference of the input problem, and convert the input based on monotonic sorts. EXPERTS only [*]
  • --static-learning โ€” use static learning (on by default) [*] โญ

okay bestie we are deep in the theory-solver basement now โ€” this is where the EXPERTS-only knobs live and they are not kidding about that label ๐Ÿ’€

  • --timeout-core-timeout=N โ€” timeout (in milliseconds) for satisfiability checks for timeout cores (EXPERTS only)
  • --unconstrained-simp โ€” turn on unconstrained simplification (see Bruttomesso/Brummayer PhD thesis). Fully supported only in (subsets of) the logic QF_ABV. (EXPERTS only) [*]
  • --unsat-cores-mode=MODE โ€” choose unsat core mode, see --unsat-cores-mode=help (EXPERTS only)

๐ŸŽ€ From the Strings Theory module: ๐ŸŽ€

  • --re-elim=MODE โ€” regular expression elimination mode
  • --re-first-class โ€” allow regular expressions as first class terms (EXPERTS only) [*]
  • --re-inter-mode=MODE โ€” determines which regular expressions intersections to compute (EXPERTS only)
  • --seq-array=MODE โ€” use array-inspired solver for sequence updates in eager or lazy mode (EXPERTS only)
  • --strings-alpha-card=N โ€” the assumed cardinality of the alphabet of characters for strings, which is a prefix of the interval of unicode code points in the SMT-LIB standard (EXPERTS only)
  • --strings-check-entail-len โ€” check entailment between length terms to reduce splitting [*]
  • --strings-deq-ext โ€” use extensionality for string disequalities [*]
  • --strings-eager-eval โ€” perform eager context-dependent evaluation for applications of string kinds in the equality engine [*]
  • --strings-eager-len-re โ€” use regular expressions for eager length conflicts [*]
  • --strings-eager-reg โ€” do registration lemmas for terms during preregistration. If false, do registration lemmas for terms when they appear in asserted literals (EXPERTS only) [*]
  • --strings-eager-solver โ€” use the eager solver [*]
  • --strings-exp โ€” experimental features in the theory of strings [*]
  • --strings-ff โ€” do flat form inferences (EXPERTS only) [*]
  • --strings-fmf โ€” the finite model finding used by the theory of strings [*]
  • --strings-infer-as-lemmas โ€” always send lemmas out instead of making internal inferences (EXPERTS only) [*]
  • --strings-infer-sym โ€” generalized inferences in strings based on proxy symbols (EXPERTS only) [*]
  • --strings-lazy-pp โ€” perform string preprocessing lazily [*]
  • --strings-len-norm โ€” strings length normalization lemma (EXPERTS only) [*]
  • --strings-mbr โ€” use models to avoid reductions for extended functions that introduce quantified formulas [*]
  • --strings-model-max-len=N โ€” The maximum size of string values in models (EXPERTS only)
  • --strings-process-loop-mode=MODE โ€” determines how to process looping string equations
  • --strings-re-derive-conf โ€” use regular expression derive for conflict finding (EXPERTS only) [*]
  • --strings-re-posc-eager โ€” eager reduction of positive membership into concatenation (EXPERTS only) [*]
  • --strings-rec-arith-approx โ€” use possibly recursive reasoning when finding approximations for arithmetic string terms (EXPERTS only) [*]
  • --strings-regexp-inclusion โ€” use regular expression inclusion for finding conflicts and avoiding regular expression unfolding [*]
  • --strings-rexplain-lemmas โ€” regression explanations for string lemmas (EXPERTS only) [*]

๐ŸŒˆ From the Theory Layer module: ๐ŸŒˆ

  • --assign-function-values โ€” assign values for uninterpreted functions in models (EXPERTS only) [*]
  • --conflict-process=MODE โ€” mode for processing theory conflicts (EXPERTS only)
  • --ee-mode=MODE โ€” mode for managing equalities across theory solvers
  • --lemma-inprocess=MODE โ€” Modes for inprocessing lemmas. (EXPERTS only)
  • --lemma-inprocess-infer-eq-lit โ€” Infer equivalent literals when using lemma inprocess (EXPERTS only) [*]
  • --lemma-inprocess-subs=MODE โ€” Modes for substitutions for inprocessing lemmas. (EXPERTS only)
  • --relevance-filter โ€” enable analysis of relevance of asserted literals with respect to the input formula (EXPERTS only) [*]
  • --tc-mode=MODE โ€” mode for theory combination (EXPERTS only)
  • --theoryof-mode=MODE โ€” mode for Theory::theoryof() (EXPERTS only)

๐Ÿฆ‹ From the Uninterpreted Functions Theory module: ๐Ÿฆ‹

  • --eager-arith-bv-conv โ€” eagerly expand bit-vector to arithmetic conversions during preprocessing [*]
  • --model-based-arith-bv-conv โ€” model-based inferences for bit-vector to arithmetic conversions (EXPERTS only) [*]
  • --symmetry-breaker โ€” use UF symmetry breaker (Deharbe et al., CADE 2011) [*]
  • --uf-card-exp โ€” allows logics with UF+cardinality (EXPERTS only) [*]
  • --uf-ho-exp โ€” enables the higher-order logic solver in applicable logics (EXPERTS only) [*]
  • --uf-ho-ext โ€” apply extensionality on function symbols (EXPERTS only) [*]
  • --uf-lambda-qe โ€” apply quantifier elimination eagerly when two lambdas are equated (EXPERTS only) [*]
  • --uf-lazy-ll โ€” do lambda lifting lazily [*]
  • --uf-ss=MODE โ€” mode of operation for uf with cardinality solver.
  • --uf-ss-abort-card=N โ€” tells the uf with cardinality to only consider models that interpret uninterpreted sorts of cardinality at most N (-1 == no limit, default)
  • --uf-ss-fair โ€” use fair strategy for finite model finding multiple sorts [*]
  • --uf-ss-fair-monotone โ€” group monotone sorts when enforcing fairness for finite model finding (EXPERTS only) [*]

[*] Each of these options has a --no-OPTIONNAME variant, which reverses the sense of the option.

so yeah, every single [*] one above has a --no- twin that flips it. iykyk ๐Ÿ’…

and this build was:

compiled with GCC version 15.2.0 on Jan 23 2026 14:45:16

Copyright ยฉ 2009-2025 by the authors and their institutional affiliations listed at https://cvc5.github.io/people.html

This build of cvc5 uses GPLed libraries, and is thus covered by the GNU General Public License (GPL) version 3. Versions of cvc5 are available that are covered by the (modified) BSD license. If you want to license cvc5 under this license, please configure cvc5 with the --no-gpl option before building from sources.

THIS SOFTWARE IS PROVIDED AS-IS, WITHOUT ANY WARRANTIES. USE AT YOUR OWN RISK.

This version of cvc5 is linked against the following non-(L)GPL'ed third party libraries.

This version of cvc5 is linked against the following third party libraries covered by the GPLv3 license. See licenses/gpl-3.0.txt for more information.

See the file COPYING (distributed with the source code, and with all binaries) for the full cvc5 copyright, licensing, and (lack of) warranty information.


๐Ÿ” SEE ALSO ๐Ÿ”

The full documentation for This is maintained as a Texinfo manual. If the info and This programs are properly installed at your site, the command

info This

should give you access to the complete manual.


and that's the whole page bestie!! ๐Ÿ’– this is cvc5 version 1.3.2, dated January 2026, and it's THIS(1). go forth and solve some SMT, you absolute icon โœจ๐ŸŽ€

๐Ÿ“ฆ where this page comes from