2 name = "Arithmetic Theory"
5 name = "arithUnateLemmaMode"
7 long = "unate-lemmas=MODE"
8 type = "ArithUnateLemmaMode"
10 help = "determines which lemmas to add before solving (default is 'all', see --unate-lemmas=help)"
11 help_mode = "Unate lemmas are generated before SAT search begins using the relationship of constant terms and polynomials."
14 help = "A combination of inequalities and equalities."
15 [[option.mode.EQUALITY]]
17 help = "Outputs lemmas of the general forms (= p c) implies (<= p d) for c < d, or (= p c) implies (not (= p d)) for c != d."
18 [[option.mode.INEQUALITY]]
20 help = "Outputs lemmas of the general form (<= p c) implies (<= p d) for c < d."
25 name = "arithPropagationMode"
27 long = "arith-prop=MODE"
28 type = "ArithPropagationMode"
30 help = "turns on arithmetic propagation (default is 'old', see --arith-prop=help)"
31 help_mode = "This decides on kind of propagation arithmetic attempts to do during the search."
32 [[option.mode.NO_PROP]]
34 [[option.mode.UNATE_PROP]]
36 help = "Use constraints to do unate propagation."
37 [[option.mode.BOUND_INFERENCE_PROP]]
39 help = "(Bounds Inference) infers bounds on basic variables using the upper and lower bounds of the non-basic variables in the tableau."
40 [[option.mode.BOTH_PROP]]
42 help = "Use bounds inference and unate."
46 # The maximum number of difference pivots to do per invocation of simplex.
47 # If this is negative, the number of pivots done is the number of variables.
48 # If this is not set by the user, different logics are free to chose different
51 name = "arithHeuristicPivots"
53 long = "heuristic-pivots=N"
56 help = "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"
59 # The maximum number of variable order pivots to do per invocation of simplex.
60 # If this is negative, the number of pivots done is unlimited.
61 # If this is not set by the user, different logics are free to chose different
64 name = "arithStandardCheckVarOrderPivots"
66 long = "standard-effort-variable-order-pivots=N"
69 help = "limits the number of pivots in a single invocation of check() at a non-full effort level using Bland's pivot rule"
72 name = "arithErrorSelectionRule"
74 long = "error-selection-rule=RULE"
75 type = "ErrorSelectionRule"
76 default = "MINIMUM_AMOUNT"
77 help = "change the pivot rule for the basic variable (default is 'min', see --pivot-rule help)"
78 help_mode = "This decides on the rule used by simplex during heuristic rounds for deciding the next basic variable to select."
79 [[option.mode.MINIMUM_AMOUNT]]
81 help = "The minimum abs() value of the variable's violation of its bound."
82 [[option.mode.VAR_ORDER]]
84 help = "The variable order."
85 [[option.mode.MAXIMUM_AMOUNT]]
87 help = "The maximum violation the bound."
88 [[option.mode.SUM_METRIC]]
91 # The number of pivots before simplex rechecks every basic variable for a conflict
93 name = "arithSimplexCheckPeriod"
95 long = "simplex-check-period=N"
98 help = "the number of pivots to do in simplex before rechecking for a conflict on all variables"
100 # This is the pivots per basic variable that can be done using heuristic choices
101 # before variable order must be used.
102 # If this is not set by the user, different logics are free to chose different
105 name = "arithPivotThreshold"
107 long = "pivot-threshold=N"
110 help = "sets the number of pivots using --pivot-rule per basic variable per simplex instance before using variable order"
113 name = "arithPropagateMaxLength"
115 long = "prop-row-length=N"
118 help = "sets the maximum row length to be used in propagation"
121 name = "arithDioSolver"
126 help = "turns on Linear Diophantine Equation solver (Griggio, JSAT 2012)"
128 # Whether to split (= x y) into (and (<= x y) (>= x y)) in
129 # arithmetic preprocessing.
131 name = "arithRewriteEq"
133 long = "arith-rewrite-equalities"
136 help = "turns on the preprocessing rewrite turning equalities into a conjunction of inequalities"
139 name = "arithMLTrick"
141 long = "miplib-trick"
144 help = "turns on the preprocessing step of attempting to infer bounds on miplib problems"
147 name = "arithMLTrickSubstitutions"
149 long = "miplib-trick-subs=N"
152 help = "do substitution for miplib 'tmp' vars if defined in <= N eliminated vars"
155 name = "doCutAllBounded"
157 long = "cut-all-bounded"
160 help = "turns on the integer solving step of periodically cutting all integer variables that have both upper and lower bounds"
163 name = "maxCutsInContext"
165 long = "maxCutsInContext=N"
168 help = "maximum cuts in a given context before signalling a restart"
171 name = "revertArithModels"
173 long = "revert-arith-models-on-unsat"
176 help = "revert the arithmetic model to a known safe model on unsat if one is cached"
179 name = "havePenalties"
181 long = "fc-penalties"
184 help = "turns on degenerate pivot penalties"
189 long = "use-fcsimplex"
192 help = "use focusing and converging simplex (FMCAD 2013 submission)"
200 help = "use sum of infeasibility simplex (FMCAD 2013 submission)"
203 name = "restrictedPivots"
205 long = "restrict-pivots"
208 help = "have a pivot cap for simplex at effort levels below fullEffort"
211 name = "collectPivots"
213 long = "collect-pivot-stats"
216 help = "collect the pivot history"
224 help = "attempt to use an approximate solver"
227 name = "maxApproxDepth"
229 long = "approx-branch-depth=N"
232 help = "maximum branch depth the approximate solver is allowed to take"
235 name = "exportDioDecompositions"
240 help = "let skolem variables for integer divisibility constraints leak from the dio solver"
248 help = "use the new row propagation system"
251 name = "arithPropAsLemmaLength"
253 long = "arith-prop-clauses=N"
256 help = "rows shorter than this are propagated as clauses"
259 name = "soiQuickExplain"
264 help = "use quick explain to minimize the sum of infeasibility conflicts"
267 name = "trySolveIntStandardEffort"
269 long = "se-solve-int"
272 help = "attempt to use the approximate solve integer method on standard effort"
275 name = "replayFailureLemma"
277 long = "lemmas-on-replay-failure"
280 help = "attempt to use external lemmas if approximate solve integer failed"
283 name = "dioSolverTurns"
288 help = "turns in a row dio solver cutting gets"
296 help = "round robin turn"
299 name = "replayEarlyCloseDepths"
301 long = "replay-early-close-depth=N"
304 help = "multiples of the depths to try to close the approx log eagerly"
307 name = "replayNumericFailurePenalty"
309 long = "replay-num-err-penalty=N"
312 help = "number of solve integer attempts to skips after a numeric failure"
315 name = "replayRejectCutSize"
317 long = "replay-reject-cut=N"
320 help = "maximum complexity of any coefficient while replaying cuts"
323 name = "lemmaRejectCutSize"
325 long = "replay-lemma-reject-cut=N"
328 help = "maximum complexity of any coefficient while outputting replaying cut lemmas"
331 name = "ppAssertMaxSubSize"
333 long = "pp-assert-max-sub-size=N"
336 help = "threshold for substituting an equality in ppAssert"
339 name = "arithNoPartialFun"
341 long = "arith-no-partial-fun"
344 help = "do not use partial function semantics for arithmetic (not SMT LIB compliant)"
352 help = "apply pseudo boolean rewrites"
360 help = "incremental linearization approach to non-linear"
361 help_mode = "Modes for the non-linear linearization"
364 help = "Disable linearization approach"
365 [[option.mode.LIGHT]]
367 help = "Only use a few light-weight lemma schemes"
370 help = "Use all lemma schemes"
373 name = "nlRlvAssertBounds"
375 long = "nl-rlv-assert-bounds"
378 help = "use bound inference utility to prune when an assertion is entailed by another"
381 name = "nlExtResBound"
383 long = "nl-ext-rbound"
386 help = "use resolution-style inference for inferring new bounds in non-linear incremental linearization solver"
391 long = "nl-ext-factor"
394 help = "use factoring inference in non-linear incremental linearization solver"
397 name = "nlExtTangentPlanes"
399 long = "nl-ext-tplanes"
402 help = "use non-terminating tangent plane strategy for non-linear incremental linearization solver"
405 name = "nlExtTangentPlanesInterleave"
407 long = "nl-ext-tplanes-interleave"
410 help = "interleave tangent plane strategy for non-linear incremental linearization solver"
413 name = "nlExtTfTangentPlanes"
415 long = "nl-ext-tf-tplanes"
418 help = "use non-terminating tangent plane strategy for transcendental functions for non-linear incremental linearization solver"
421 name = "nlExtEntailConflicts"
423 long = "nl-ext-ent-conf"
426 help = "check for entailed conflicts in non-linear solver"
429 name = "nlExtRewrites"
431 long = "nl-ext-rewrite"
434 help = "do context-dependent simplification based on rewrites in non-linear solver"
439 long = "nl-ext-purify"
442 help = "purify non-linear terms at preprocess"
445 name = "nlExtSplitZero"
447 long = "nl-ext-split-zero"
450 help = "initial splits on zero for all variables"
453 name = "nlExtTfTaylorDegree"
455 long = "nl-ext-tf-taylor-deg=N"
458 help = "initial degree of polynomials for Taylor approximation"
461 name = "nlExtIncPrecision"
463 long = "nl-ext-inc-prec"
466 help = "whether to increment the precision for irrational function constraints"
474 help = "choose mode for using relevance of assertions in non-linear arithmetic"
475 help_mode = "Modes for using relevance of assertions in non-linear arithmetic."
478 help = "Do not use relevance."
479 [[option.mode.INTERLEAVE]]
481 help = "Alternate rounds using relevance."
482 [[option.mode.ALWAYS]]
484 help = "Always use relevance."
492 help = "whether to use simple rounding, similar to a unit-cube test, for integers"
500 help = "whether to use the cylindrical algebraic coverings solver for non-linear arithmetic"
503 name = "nlCadVarElim"
505 long = "nl-cad-var-elim"
508 help = "whether to eliminate variables using equalities before going into the cylindrical algebraic coverings solver"
513 long = "nl-cad-prune"
516 help = "whether to prune intervals more agressively"
519 name = "nlCadLinearModel"
521 long = "nl-cad-linear-model=MODE"
522 type = "NlCadLinearModelMode"
524 help = "whether to use the linear model as initial guess for the cylindrical algebraic coverings solver"
525 help_mode = "Modes for the usage of the linear model in non-linear arithmetic."
528 help = "Do not use linear model to seed nonlinear model"
529 [[option.mode.INITIAL]]
531 help = "Use linear model to seed nonlinear model initially, discard it when it does not work"
532 [[option.mode.PERSISTENT]]
534 help = "Use linear model to seed nonlinear model whenever possible"
537 name = "nlCadProjection"
539 long = "nl-cad-proj=MODE"
540 type = "NlCadProjectionMode"
542 help = "choose the CAD projection operator"
543 help_mode = "Modes for the CAD projection operator in non-linear arithmetic."
544 [[option.mode.MCCALLUM]]
546 help = "McCallum's projection operator."
547 [[option.mode.LAZARD]]
549 help = "Lazard's projection operator."
550 [[option.mode.LAZARDMOD]]
552 help = "A modification of Lazard's projection operator."
555 name = "nlCadLifting"
557 long = "nl-cad-lift=MODE"
558 type = "NlCadLiftingMode"
560 help = "choose the CAD lifting mode"
561 help_mode = "Modes for the CAD lifting in non-linear arithmetic."
562 [[option.mode.REGULAR]]
564 help = "Regular lifting."
565 [[option.mode.LAZARD]]
567 help = "Lazard's lifting scheme."
575 help = "whether to use ICP-style propagations for non-linear arithmetic"
578 name = "arithEqSolver"
580 long = "arith-eq-solver"
583 help = "whether to use the equality solver in the theory of arithmetic"
586 name = "arithCongMan"
588 long = "arith-cong-man"
591 help = "(experimental) whether to use the congruence manager when the equality solver is enabled"