GCC Code Coverage Report
Directory: . Exec Total Coverage
File: build-coverage/src/main/options.cpp Lines: 603 2486 24.3 %
Date: 2021-09-07 Branches: 785 5634 13.9 %

Line Exec Source
1
/******************************************************************************
2
 * Top contributors (to current version):
3
 *   Tim King, Gereon Kremer, Andrew Reynolds
4
 *
5
 * This file is part of the cvc5 project.
6
 *
7
 * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
8
 * in the top-level source directory and their institutional affiliations.
9
 * All rights reserved.  See the file COPYING in the top-level source
10
 * directory for licensing information.
11
 * ****************************************************************************
12
 *
13
 * Options utilities used in the driver.
14
 */
15
16
#include "main/options.h"
17
18
#if !defined(_BSD_SOURCE) && defined(__MINGW32__) && !defined(__MINGW64__)
19
// force use of optreset; mingw32 croaks on argv-switching otherwise
20
#include "base/cvc5config.h"
21
#define _BSD_SOURCE
22
#undef HAVE_DECL_OPTRESET
23
#define HAVE_DECL_OPTRESET 1
24
#define CVC5_IS_NOT_REALLY_BSD
25
#endif /* !_BSD_SOURCE && __MINGW32__ && !__MINGW64__ */
26
27
#ifdef __MINGW64__
28
extern int optreset;
29
#endif /* __MINGW64__ */
30
31
#include <getopt.h>
32
33
// clean up
34
#ifdef CVC5_IS_NOT_REALLY_BSD
35
#  undef _BSD_SOURCE
36
#endif /* CVC5_IS_NOT_REALLY_BSD */
37
38
#include "base/check.h"
39
#include "base/output.h"
40
#include "options/didyoumean.h"
41
#include "options/option_exception.h"
42
43
#include <cstring>
44
#include <iostream>
45
#include <limits>
46
47
namespace cvc5::main {
48
49
// clang-format off
50
9827
static const std::string commonOptionsDescription =
51
    "Most commonly-used cvc5 options:\n"
52
"  --incremental | -i     enable incremental solving [*]\n"
53
"  --lang=LANG | --input-language=LANG | -L LANG\n"
54
"                         force input language (default is \"auto\"; see --lang\n"
55
"                         help)\n"
56
"  --output-lang=LANG | --output-language=LANG\n"
57
"                         force output language (default is \"auto\"; see\n"
58
"                         --output-lang help)\n"
59
"  --quiet | -q           decrease verbosity (may be repeated)\n"
60
"  --rlimit-per=N | --reproducible-resource-limit=N\n"
61
"                         set resource limit per query\n"
62
"  --rlimit=N             set resource limit\n"
63
"  --stats                give statistics on exit [*]\n"
64
"  --tlimit-per=MS        set time limit per query in milliseconds\n"
65
"  --tlimit=MS            set time limit in milliseconds of wall clock time\n"
66
"  --verbose | -v         increase verbosity (may be repeated)\n"
67
"  --copyright            show cvc5 copyright information\n"
68
"  --help | -h            full command line reference\n"
69
"  --seed=N | -s N        seed for random number generator\n"
70
"  --show-config          show cvc5 static configuration\n"
71
"  --version | -V         identify this cvc5 binary\n"
72
"  --strict-parsing       be less tolerant of non-conforming inputs [*]\n"
73
"  --dump-to=FILE         all dumping goes to FILE (instead of stdout)\n"
74
"  --dump=MODE            dump preprocessed assertions, etc., see --dump=help\n"
75
"  --produce-assertions   keep an assertions list (enables get-assertions\n"
76
"                         command) [*]\n"
77
"  --produce-models | -m  support the get-value and get-model commands [*]\n"
78
    ;
79
80
9827
static const std::string additionalOptionsDescription =
81
    "Additional cvc5 options:\n"
82
"\nFrom the Arithmetic Theory module:\n"
83
"  --approx-branch-depth=N\n"
84
"                         maximum branch depth the approximate solver is allowed\n"
85
"                         to take\n"
86
"  --arith-brab           whether to use simple rounding, similar to a unit-cube\n"
87
"                         test, for integers [*]\n"
88
"  --arith-cong-man       (experimental) whether to use the congruence manager\n"
89
"                         when the equality solver is enabled [*]\n"
90
"  --arith-eq-solver      whether to use the equality solver in the theory of\n"
91
"                         arithmetic [*]\n"
92
"  --arith-no-partial-fun do not use partial function semantics for arithmetic\n"
93
"                         (not SMT LIB compliant) [*]\n"
94
"  --arith-prop-clauses=N rows shorter than this are propagated as clauses\n"
95
"  --arith-prop=MODE      turns on arithmetic propagation (default is 'old', see\n"
96
"                         --arith-prop=help)\n"
97
"  --arith-rewrite-equalities\n"
98
"                         turns on the preprocessing rewrite turning equalities\n"
99
"                         into a conjunction of inequalities [*]\n"
100
"  --collect-pivot-stats  collect the pivot history [*]\n"
101
"  --cut-all-bounded      turns on the integer solving step of periodically\n"
102
"                         cutting all integer variables that have both upper and\n"
103
"                         lower bounds [*]\n"
104
"  --dio-decomps          let skolem variables for integer divisibility\n"
105
"                         constraints leak from the dio solver [*]\n"
106
"  --dio-repeat           handle dio solver constraints in mass or one at a time\n"
107
"                         [*]\n"
108
"  --dio-solver           turns on Linear Diophantine Equation solver (Griggio,\n"
109
"                         JSAT 2012) [*]\n"
110
"  --dio-turns=N          turns in a row dio solver cutting gets\n"
111
"  --error-selection-rule=RULE\n"
112
"                         change the pivot rule for the basic variable (default\n"
113
"                         is 'min', see --pivot-rule help)\n"
114
"  --fc-penalties         turns on degenerate pivot penalties [*]\n"
115
"  --heuristic-pivots=N   the number of times to apply the heuristic pivot rule;\n"
116
"                         if N < 0, this defaults to the number of variables; if\n"
117
"                         this is unset, this is tuned by the logic selection\n"
118
"  --lemmas-on-replay-failure\n"
119
"                         attempt to use external lemmas if approximate solve\n"
120
"                         integer failed [*]\n"
121
"  --maxCutsInContext=N   maximum cuts in a given context before signalling a\n"
122
"                         restart\n"
123
"  --miplib-trick         turns on the preprocessing step of attempting to infer\n"
124
"                         bounds on miplib problems [*]\n"
125
"  --miplib-trick-subs=N  do substitution for miplib 'tmp' vars if defined in <=\n"
126
"                         N eliminated vars\n"
127
"  --new-prop             use the new row propagation system [*]\n"
128
"  --nl-cad               whether to use the cylindrical algebraic decomposition\n"
129
"                         solver for non-linear arithmetic [*]\n"
130
"  --nl-cad-initial       whether to use the linear model as initial guess for\n"
131
"                         the cylindrical algebraic decomposition solver [*]\n"
132
"  --nl-cad-lift=MODE     choose the CAD lifting mode (EXPERTS only)\n"
133
"  --nl-cad-proj=MODE     choose the CAD projection operator (EXPERTS only)\n"
134
"  --nl-ext-ent-conf      check for entailed conflicts in non-linear solver [*]\n"
135
"  --nl-ext-factor        use factoring inference in non-linear incremental\n"
136
"                         linearization solver [*]\n"
137
"  --nl-ext-inc-prec      whether to increment the precision for irrational\n"
138
"                         function constraints [*]\n"
139
"  --nl-ext-purify        purify non-linear terms at preprocess [*]\n"
140
"  --nl-ext-rbound        use resolution-style inference for inferring new bounds\n"
141
"                         in non-linear incremental linearization solver [*]\n"
142
"  --nl-ext-rewrite       do context-dependent simplification based on rewrites\n"
143
"                         in non-linear solver [*]\n"
144
"  --nl-ext-split-zero    initial splits on zero for all variables [*]\n"
145
"  --nl-ext-tf-taylor-deg=N\n"
146
"                         initial degree of polynomials for Taylor approximation\n"
147
"  --nl-ext-tf-tplanes    use non-terminating tangent plane strategy for\n"
148
"                         transcendental functions for non-linear incremental\n"
149
"                         linearization solver [*]\n"
150
"  --nl-ext-tplanes       use non-terminating tangent plane strategy for\n"
151
"                         non-linear incremental linearization solver [*]\n"
152
"  --nl-ext-tplanes-interleave\n"
153
"                         interleave tangent plane strategy for non-linear\n"
154
"                         incremental linearization solver [*]\n"
155
"  --nl-ext=MODE          incremental linearization approach to non-linear\n"
156
"  --nl-icp               whether to use ICP-style propagations for non-linear\n"
157
"                         arithmetic [*]\n"
158
"  --nl-rlv=MODE          choose mode for using relevance of assertions in\n"
159
"                         non-linear arithmetic\n"
160
"  --pb-rewrites          apply pseudo boolean rewrites [*]\n"
161
"  --pivot-threshold=N    sets the number of pivots using --pivot-rule per basic\n"
162
"                         variable per simplex instance before using variable\n"
163
"                         order\n"
164
"  --pp-assert-max-sub-size=N\n"
165
"                         threshold for substituting an equality in ppAssert\n"
166
"  --prop-row-length=N    sets the maximum row length to be used in propagation\n"
167
"  --replay-early-close-depth=N\n"
168
"                         multiples of the depths to try to close the approx log\n"
169
"                         eagerly\n"
170
"  --replay-failure-penalty=N\n"
171
"                         number of solve integer attempts to skips after a\n"
172
"                         numeric failure\n"
173
"  --replay-lemma-reject-cut=N\n"
174
"                         maximum complexity of any coefficient while outputting\n"
175
"                         replaying cut lemmas\n"
176
"  --replay-num-err-penalty=N\n"
177
"                         number of solve integer attempts to skips after a\n"
178
"                         numeric failure\n"
179
"  --replay-reject-cut=N  maximum complexity of any coefficient while replaying\n"
180
"                         cuts\n"
181
"  --replay-soi-major-threshold-pen=N\n"
182
"                         threshold for a major tolerance failure by the\n"
183
"                         approximate solver\n"
184
"  --replay-soi-major-threshold=T\n"
185
"                         threshold for a major tolerance failure by the\n"
186
"                         approximate solver\n"
187
"  --replay-soi-minor-threshold-pen=N\n"
188
"                         threshold for a minor tolerance failure by the\n"
189
"                         approximate solver\n"
190
"  --replay-soi-minor-threshold=T\n"
191
"                         threshold for a minor tolerance failure by the\n"
192
"                         approximate solver\n"
193
"  --restrict-pivots      have a pivot cap for simplex at effort levels below\n"
194
"                         fullEffort [*]\n"
195
"  --revert-arith-models-on-unsat\n"
196
"                         revert the arithmetic model to a known safe model on\n"
197
"                         unsat if one is cached [*]\n"
198
"  --rr-turns=N           round robin turn\n"
199
"  --se-solve-int         attempt to use the approximate solve integer method on\n"
200
"                         standard effort [*]\n"
201
"  --simplex-check-period=N\n"
202
"                         the number of pivots to do in simplex before rechecking\n"
203
"                         for a conflict on all variables\n"
204
"  --soi-qe               use quick explain to minimize the sum of infeasibility\n"
205
"                         conflicts [*]\n"
206
"  --standard-effort-variable-order-pivots=N\n"
207
"                         limits the number of pivots in a single invocation of\n"
208
"                         check() at a non-full effort level using Bland's pivot\n"
209
"                         rule (EXPERTS only)\n"
210
"  --unate-lemmas=MODE    determines which lemmas to add before solving (default\n"
211
"                         is 'all', see --unate-lemmas=help)\n"
212
"  --use-approx           attempt to use an approximate solver [*]\n"
213
"  --use-fcsimplex        use focusing and converging simplex (FMCAD 2013\n"
214
"                         submission) [*]\n"
215
"  --use-soi              use sum of infeasibility simplex (FMCAD 2013\n"
216
"                         submission) [*]\n"
217
"\nFrom the Arrays Theory module:\n"
218
"  --arrays-config=N      set different array option configurations - for\n"
219
"                         developers only\n"
220
"  --arrays-eager-index   turn on eager index splitting for generated array\n"
221
"                         lemmas [*]\n"
222
"  --arrays-eager-lemmas  turn on eager lemma generation for arrays [*]\n"
223
"  --arrays-exp           enable experimental features in the theory of arrays\n"
224
"                         (EXPERTS only) [*]\n"
225
"  --arrays-model-based   turn on model-based array solver [*]\n"
226
"  --arrays-optimize-linear\n"
227
"                         turn on optimization for linear array terms (see de\n"
228
"                         Moura FMCAD 09 arrays paper) [*]\n"
229
"  --arrays-prop=N        propagation effort for arrays: 0 is none, 1 is some, 2\n"
230
"                         is full\n"
231
"  --arrays-reduce-sharing\n"
232
"                         use model information to reduce size of care graph for\n"
233
"                         arrays [*]\n"
234
"  --arrays-weak-equiv    use algorithm from Christ/Hoenicke (SMT 2014) [*]\n"
235
"\nFrom the Base module:\n"
236
"  --debug=TAG | -d TAG   debug something (e.g. -d arith), can repeat\n"
237
"  --output=TAG | -o TAG  Enable output tag.\n"
238
"  --parse-only           exit after parsing input [*]\n"
239
"  --preprocess-only      exit after preprocessing input [*]\n"
240
"  --print-success        print the \"success\" output required of SMT-LIBv2 [*]\n"
241
"  --rweight=VAL=N        set a single resource weight (EXPERTS only)\n"
242
"  --stats-all            print unchanged (defaulted) statistics as well (EXPERTS\n"
243
"                         only) [*]\n"
244
"  --stats-every-query    in incremental mode, print stats after every\n"
245
"                         satisfiability or validity query [*]\n"
246
"  --stats-expert         print expert (non-public) statistics as well (EXPERTS\n"
247
"                         only) [*]\n"
248
"  --trace=TAG | -t TAG   trace something (e.g. -t pushpop), can repeat\n"
249
"  --verbosity=N          the verbosity level of cvc5\n"
250
"\nFrom the Bitvector Theory module:\n"
251
"  --bitblast-aig         bitblast by first converting to AIG (implies\n"
252
"                         --bitblast=eager) [*]\n"
253
"  --bitblast=MODE        choose bitblasting mode, see --bitblast=help\n"
254
"  --bitwise-eq           lift equivalence with one-bit bit-vectors to be boolean\n"
255
"                         operations [*]\n"
256
"  --bool-to-bv=MODE      convert booleans to bit-vectors of size 1 at various\n"
257
"                         levels of aggressiveness, see --bool-to-bv=help\n"
258
"  --bv-aig-simp=COMMAND  abc command to run AIG simplifications (implies\n"
259
"                         --bitblast-aig, default is \"balance;drw\") (EXPERTS\n"
260
"                         only)\n"
261
"  --bv-alg-extf          algebraic inferences for extended functions [*]\n"
262
"  --bv-algebraic-budget=N\n"
263
"                         the budget allowed for the algebraic solver in number\n"
264
"                         of SAT conflicts (EXPERTS only)\n"
265
"  --bv-algebraic-solver  turn on experimental algebraic solver for the\n"
266
"                         bit-vector theory (only if --bv-solver=layered)\n"
267
"                         (EXPERTS only) [*]\n"
268
"  --bv-assert-input      assert input assertions on user-level 0 instead of\n"
269
"                         assuming them in the bit-vector SAT solver [*]\n"
270
"  --bv-eager-explanations\n"
271
"                         compute bit-blasting propagation explanations eagerly\n"
272
"                         (EXPERTS only) [*]\n"
273
"  --bv-eq-solver         use the equality engine for the bit-vector theory (only\n"
274
"                         if --bv-solver=layered) [*]\n"
275
"  --bv-extract-arith     enable rewrite pushing extract [i:0] over arithmetic\n"
276
"                         operations (can blow up) (EXPERTS only) [*]\n"
277
"  --bv-gauss-elim        simplify formula via Gaussian Elimination if applicable\n"
278
"                         (EXPERTS only) [*]\n"
279
"  --bv-inequality-solver turn on the inequality solver for the bit-vector theory\n"
280
"                         (only if --bv-solver=layered) [*]\n"
281
"  --bv-intro-pow2        introduce bitvector powers of two as a preprocessing\n"
282
"                         pass (EXPERTS only) [*]\n"
283
"  --bv-num-func=N        number of function symbols in conflicts that are\n"
284
"                         generalized (EXPERTS only)\n"
285
"  --bv-print-consts-as-indexed-symbols\n"
286
"                         print bit-vector constants in decimal (e.g. (_ bv1 4))\n"
287
"                         instead of binary (e.g. #b0001), applies to SMT-LIB 2.x\n"
288
"                         [*]\n"
289
"  --bv-propagate         use bit-vector propagation in the bit-blaster [*]\n"
290
"  --bv-quick-xplain      minimize bv conflicts using the QuickXplain algorithm\n"
291
"                         (EXPERTS only) [*]\n"
292
"  --bv-sat-solver=MODE   choose which sat solver to use, see\n"
293
"                         --bv-sat-solver=help (EXPERTS only)\n"
294
"  --bv-solver=MODE       choose bit-vector solver, see --bv-solver=help\n"
295
"  --bv-to-bool           lift bit-vectors of size 1 to booleans when possible\n"
296
"                         [*]\n"
297
"\nFrom the Datatypes Theory module:\n"
298
"  --cdt-bisimilar        do bisimilarity check for co-datatypes [*]\n"
299
"  --dt-binary-split      do binary splits for datatype constructor types [*]\n"
300
"  --dt-blast-splits      when applicable, blast splitting lemmas for all\n"
301
"                         variables at once [*]\n"
302
"  --dt-cyclic            do cyclicity check for datatypes [*]\n"
303
"  --dt-force-assignment  force the datatypes solver to give specific values to\n"
304
"                         all datatypes terms before answering sat [*]\n"
305
"  --dt-infer-as-lemmas   always send lemmas out instead of making internal\n"
306
"                         inferences [*]\n"
307
"  --dt-nested-rec        allow nested recursion in datatype definitions [*]\n"
308
"  --dt-polite-optimize   turn on optimization for polite combination (EXPERTS\n"
309
"                         only) [*]\n"
310
"  --dt-rewrite-error-sel rewrite incorrectly applied selectors to arbitrary\n"
311
"                         ground term (EXPERTS only) [*]\n"
312
"  --dt-share-sel         internally use shared selectors across multiple\n"
313
"                         constructors [*]\n"
314
"  --sygus-abort-size=N   tells enumerative sygus to only consider solutions up\n"
315
"                         to term size N (-1 == no limit, default)\n"
316
"  --sygus-fair-max       use max instead of sum for multi-function sygus\n"
317
"                         conjectures [*]\n"
318
"  --sygus-fair=MODE      if and how to apply fairness for sygus\n"
319
"  --sygus-sym-break      simple sygus symmetry breaking lemmas [*]\n"
320
"  --sygus-sym-break-agg  use aggressive checks for simple sygus symmetry\n"
321
"                         breaking lemmas [*]\n"
322
"  --sygus-sym-break-dynamic\n"
323
"                         dynamic sygus symmetry breaking lemmas [*]\n"
324
"  --sygus-sym-break-lazy lazily add symmetry breaking lemmas for terms [*]\n"
325
"  --sygus-sym-break-pbe  sygus symmetry breaking lemmas based on pbe conjectures\n"
326
"                         [*]\n"
327
"  --sygus-sym-break-rlv  add relevancy conditions to symmetry breaking lemmas\n"
328
"                         [*]\n"
329
"\nFrom the Decision Heuristics module:\n"
330
"  --decision-random-weight=N\n"
331
"                         assign random weights to nodes between 0 and N-1 (0:\n"
332
"                         disable) (EXPERTS only)\n"
333
"  --decision-threshold=N ignore all nodes greater than threshold in first\n"
334
"                         attempt to pick decision (EXPERTS only)\n"
335
"  --decision-use-weight  use the weight nodes (locally, by looking at children)\n"
336
"                         to direct recursive search (EXPERTS only) [*]\n"
337
"  --decision-weight-internal=HOW\n"
338
"                         compute weights of internal nodes using children: off,\n"
339
"                         max, sum, usr1 (EXPERTS only)\n"
340
"  --decision=MODE | --decision-mode=MODE\n"
341
"                         choose decision mode, see --decision=help\n"
342
"  --jh-rlv-order         maintain activity-based ordering for decision\n"
343
"                         justification heuristic (EXPERTS only) [*]\n"
344
"  --jh-skolem-rlv=MODE   policy for when to consider skolem definitions relevant\n"
345
"                         in justification heuristic (EXPERTS only)\n"
346
"  --jh-skolem=MODE       policy for when to satisfy skolem definitions in\n"
347
"                         justification heuristic (EXPERTS only)\n"
348
"\nFrom the Expression module:\n"
349
"  --dag-thresh=N         dagify common subexprs appearing > N times (1 ==\n"
350
"                         default, 0 == don't dagify)\n"
351
"  --expr-depth=N         print exprs to depth N (0 == default, -1 == no limit)\n"
352
"  --type-checking        type check expressions [*]\n"
353
"\nFrom the Floating-Point module:\n"
354
"  --fp-exp               Allow floating-point sorts of all sizes, rather than\n"
355
"                         only Float32 (8/24) or Float64 (11/53) (experimental)\n"
356
"                         [*]\n"
357
"  --fp-lazy-wb           Enable lazier word-blasting (on preNotifyFact instead\n"
358
"                         of registerTerm) (EXPERTS only) [*]\n"
359
"\nFrom the Driver module:\n"
360
"  --dump-instantiations  output instantiations of quantified formulas after\n"
361
"                         every UNSAT/VALID response [*]\n"
362
"  --dump-instantiations-debug\n"
363
"                         output instantiations of quantified formulas after\n"
364
"                         every UNSAT/VALID response, with debug information [*]\n"
365
"  --dump-models          output models after every SAT/INVALID/UNKNOWN response\n"
366
"                         [*]\n"
367
"  --dump-proofs          output proofs after every UNSAT/VALID response [*]\n"
368
"  --dump-unsat-cores     output unsat cores after every UNSAT/VALID response [*]\n"
369
"  --dump-unsat-cores-full\n"
370
"                         dump the full unsat core, including unlabeled\n"
371
"                         assertions [*]\n"
372
"  --early-exit           do not run destructors at exit; default on except in\n"
373
"                         debug builds (EXPERTS only) [*]\n"
374
"  --force-no-limit-cpu-while-dump\n"
375
"                         Force no CPU limit when dumping models and proofs [*]\n"
376
"  --interactive          force interactive shell/non-interactive mode [*]\n"
377
"  --segv-spin            spin on segfault/other crash waiting for gdb [*]\n"
378
"  --show-debug-tags      show all available tags for debugging\n"
379
"  --show-trace-tags      show all available tags for tracing\n"
380
"\nFrom the Parser module:\n"
381
"  --force-logic=LOGIC    set the logic, and override all further user attempts\n"
382
"                         to change it (EXPERTS only)\n"
383
"  --global-declarations  force all declarations and definitions to be global [*]\n"
384
"  --mmap                 memory map file input [*]\n"
385
"  --semantic-checks      enable semantic checks, including type checks [*]\n"
386
"\nFrom the Printing module:\n"
387
"  --flatten-ho-chains    print (binary) application chains in a flattened way,\n"
388
"                         e.g. (a b c) rather than ((a b) c) [*]\n"
389
"  --model-format=MODE    print format mode for models, see --model-format=help\n"
390
"  --print-inst-full      print instantiations for formulas that do not have\n"
391
"                         given identifiers [*]\n"
392
"  --print-inst=MODE      print format for printing instantiations\n"
393
"\nFrom the Proof module:\n"
394
"  --proof-check=MODE     select proof checking mode\n"
395
"  --proof-format-mode=MODE\n"
396
"                         select language of proof output\n"
397
"  --proof-granularity=MODE\n"
398
"                         modes for proof granularity\n"
399
"  --proof-pedantic=N     assertion failure for any incorrect rule application or\n"
400
"                         untrusted lemma having pedantic level <=N with proof\n"
401
"  --proof-print-conclusion\n"
402
"                         Print conclusion of proof steps when printing AST [*]\n"
403
"\nFrom the SAT Layer module:\n"
404
"  --minisat-dump-dimacs  instead of solving minisat dumps the asserted clauses\n"
405
"                         in Dimacs format [*]\n"
406
"  --minisat-elimination  use Minisat elimination [*]\n"
407
"  --random-freq=P | --random-frequency=P\n"
408
"                         sets the frequency of random decisions in the sat\n"
409
"                         solver (P=0.0 by default)\n"
410
"  --random-seed=S        sets the random seed for the sat solver\n"
411
"  --refine-conflicts     refine theory conflict clauses (default false) [*]\n"
412
"  --restart-int-base=N   sets the base restart interval for the sat solver (N=25\n"
413
"                         by default)\n"
414
"  --restart-int-inc=F    sets the restart interval increase factor for the sat\n"
415
"                         solver (F=3.0 by default)\n"
416
"\nFrom the Quantifiers module:\n"
417
"  --ag-miniscope-quant   perform aggressive miniscoping for quantifiers [*]\n"
418
"  --cegis-sample=MODE    mode for using samples in the counterexample-guided\n"
419
"                         inductive synthesis loop\n"
420
"  --cegqi                turns on counterexample-based quantifier instantiation\n"
421
"                         [*]\n"
422
"  --cegqi-all            apply counterexample-based instantiation to all\n"
423
"                         quantified formulas [*]\n"
424
"  --cegqi-bv             use word-level inversion approach for\n"
425
"                         counterexample-guided quantifier instantiation for\n"
426
"                         bit-vectors [*]\n"
427
"  --cegqi-bv-concat-inv  compute inverse for concat over equalities rather than\n"
428
"                         producing an invertibility condition [*]\n"
429
"  --cegqi-bv-ineq=MODE   choose mode for handling bit-vector inequalities with\n"
430
"                         counterexample-guided instantiation\n"
431
"  --cegqi-bv-interleave-value\n"
432
"                         interleave model value instantiation with word-level\n"
433
"                         inversion approach [*]\n"
434
"  --cegqi-bv-linear      linearize adder chains for variables [*]\n"
435
"  --cegqi-bv-rm-extract  replaces extract terms with variables for\n"
436
"                         counterexample-guided instantiation for bit-vectors [*]\n"
437
"  --cegqi-bv-solve-nl    try to solve non-linear bv literals using model value\n"
438
"                         projections [*]\n"
439
"  --cegqi-full           turns on full effort counterexample-based quantifier\n"
440
"                         instantiation, which may resort to model-value\n"
441
"                         instantiation [*]\n"
442
"  --cegqi-innermost      only process innermost quantified formulas in\n"
443
"                         counterexample-based quantifier instantiation [*]\n"
444
"  --cegqi-midpoint       choose substitutions based on midpoints of lower and\n"
445
"                         upper bounds for counterexample-based quantifier\n"
446
"                         instantiation [*]\n"
447
"  --cegqi-min-bounds     use minimally constrained lower/upper bound for\n"
448
"                         counterexample-based quantifier instantiation [*]\n"
449
"  --cegqi-model          guide instantiations by model values for\n"
450
"                         counterexample-based quantifier instantiation [*]\n"
451
"  --cegqi-multi-inst     when applicable, do multi instantiations per quantifier\n"
452
"                         per round in counterexample-based quantifier\n"
453
"                         instantiation [*]\n"
454
"  --cegqi-nested-qe      process nested quantified formulas with quantifier\n"
455
"                         elimination in counterexample-based quantifier\n"
456
"                         instantiation [*]\n"
457
"  --cegqi-nopt           non-optimal bounds for counterexample-based quantifier\n"
458
"                         instantiation [*]\n"
459
"  --cegqi-repeat-lit     solve literals more than once in counterexample-based\n"
460
"                         quantifier instantiation [*]\n"
461
"  --cegqi-round-up-lia   round up integer lower bounds in substitutions for\n"
462
"                         counterexample-based quantifier instantiation [*]\n"
463
"  --cegqi-sat            answer sat when quantifiers are asserted with\n"
464
"                         counterexample-based quantifier instantiation [*]\n"
465
"  --cegqi-use-inf-int    use integer infinity for vts in counterexample-based\n"
466
"                         quantifier instantiation [*]\n"
467
"  --cegqi-use-inf-real   use real infinity for vts in counterexample-based\n"
468
"                         quantifier instantiation [*]\n"
469
"  --cond-var-split-agg-quant\n"
470
"                         aggressive split quantified formulas that lead to\n"
471
"                         variable eliminations [*]\n"
472
"  --cond-var-split-quant split quantified formulas that lead to variable\n"
473
"                         eliminations [*]\n"
474
"  --conjecture-filter-active-terms\n"
475
"                         filter based on active terms [*]\n"
476
"  --conjecture-filter-canonical\n"
477
"                         filter based on canonicity [*]\n"
478
"  --conjecture-filter-model\n"
479
"                         filter based on model [*]\n"
480
"  --conjecture-gen       generate candidate conjectures for inductive proofs [*]\n"
481
"  --conjecture-gen-gt-enum=N\n"
482
"                         number of ground terms to generate for model filtering\n"
483
"  --conjecture-gen-max-depth=N\n"
484
"                         maximum depth of terms to consider for conjectures\n"
485
"  --conjecture-gen-per-round=N\n"
486
"                         number of conjectures to generate per instantiation\n"
487
"                         round\n"
488
"  --conjecture-gen-uee-intro\n"
489
"                         more aggressive merging for universal equality engine,\n"
490
"                         introduces terms [*]\n"
491
"  --conjecture-no-filter do not filter conjectures [*]\n"
492
"  --dt-stc-ind           apply strengthening for existential quantification over\n"
493
"                         datatypes based on structural induction [*]\n"
494
"  --dt-var-exp-quant     expand datatype variables bound to one constructor in\n"
495
"                         quantifiers [*]\n"
496
"  --e-matching           whether to do heuristic E-matching [*]\n"
497
"  --elim-taut-quant      eliminate tautological disjuncts of quantified formulas\n"
498
"                         [*]\n"
499
"  --ext-rewrite-quant    apply extended rewriting to bodies of quantified\n"
500
"                         formulas [*]\n"
501
"  --finite-model-find    use finite model finding heuristic for quantifier\n"
502
"                         instantiation [*]\n"
503
"  --fmf-bound            finite model finding on bounded quantification [*]\n"
504
"  --fmf-bound-int        finite model finding on bounded integer quantification\n"
505
"                         [*]\n"
506
"  --fmf-bound-lazy       enforce bounds for bounded quantification lazily via\n"
507
"                         use of proxy variables [*]\n"
508
"  --fmf-fmc-simple       simple models in full model check for finite model\n"
509
"                         finding [*]\n"
510
"  --fmf-fresh-dc         use fresh distinguished representative when applying\n"
511
"                         Inst-Gen techniques [*]\n"
512
"  --fmf-fun              find models for recursively defined functions, assumes\n"
513
"                         functions are admissible [*]\n"
514
"  --fmf-fun-rlv          find models for recursively defined functions, assumes\n"
515
"                         functions are admissible, allows empty type when\n"
516
"                         function is irrelevant [*]\n"
517
"  --fmf-inst-engine      use instantiation engine in conjunction with finite\n"
518
"                         model finding [*]\n"
519
"  --fmf-type-completion-thresh=N\n"
520
"                         the maximum cardinality of an interpreted type for\n"
521
"                         which exhaustive enumeration in finite model finding is\n"
522
"                         attempted\n"
523
"  --fs-interleave        interleave enumerative instantiation with other\n"
524
"                         techniques [*]\n"
525
"  --fs-stratify          stratify effort levels in enumerative instantiation,\n"
526
"                         which favors speed over fairness [*]\n"
527
"  --fs-sum               enumerating tuples of quantifiers by increasing the sum\n"
528
"                         of indices, rather than the maximum [*]\n"
529
"  --full-saturate-quant  enumerative instantiation: instantiate with ground\n"
530
"                         terms from relevant domain, then arbitrary ground terms\n"
531
"                         before answering unknown [*]\n"
532
"  --full-saturate-quant-limit=N\n"
533
"                         maximum number of rounds of enumerative instantiation\n"
534
"                         to apply (-1 means no limit)\n"
535
"  --full-saturate-quant-rd\n"
536
"                         whether to use relevant domain first for enumerative\n"
537
"                         instantiation strategy [*]\n"
538
"  --global-negate        do global negation of input formula [*]\n"
539
"  --ho-elim              eagerly eliminate higher-order constraints [*]\n"
540
"  --ho-elim-store-ax     use store axiom during ho-elim [*]\n"
541
"  --ho-matching          do higher-order matching algorithm for triggers with\n"
542
"                         variable operators [*]\n"
543
"  --ho-matching-var-priority\n"
544
"                         give priority to variable arguments over constant\n"
545
"                         arguments [*]\n"
546
"  --ho-merge-term-db     merge term indices modulo equality [*]\n"
547
"  --increment-triggers   generate additional triggers as needed during search\n"
548
"                         [*]\n"
549
"  --inst-level-input-only\n"
550
"                         only input terms are assigned instantiation level zero\n"
551
"                         [*]\n"
552
"  --inst-max-level=N     maximum inst level of terms used to instantiate\n"
553
"                         quantified formulas with (-1 == no limit, default)\n"
554
"  --inst-max-rounds=N    maximum number of instantiation rounds (-1 == no limit,\n"
555
"                         default)\n"
556
"  --inst-no-entail       do not consider instances of quantified formulas that\n"
557
"                         are currently entailed [*]\n"
558
"  --inst-when-phase=N    instantiation rounds quantifiers takes (>=1) before\n"
559
"                         allowing theory combination to happen\n"
560
"  --inst-when-strict-interleave\n"
561
"                         ensure theory combination and standard quantifier\n"
562
"                         effort strategies take turns [*]\n"
563
"  --inst-when-tc-first   allow theory combination to happen once initially,\n"
564
"                         before quantifier strategies are run [*]\n"
565
"  --inst-when=MODE       when to apply instantiation\n"
566
"  --int-wf-ind           apply strengthening for integers based on well-founded\n"
567
"                         induction [*]\n"
568
"  --ite-dtt-split-quant  split ites with dt testers as conditions [*]\n"
569
"  --ite-lift-quant=MODE  ite lifting mode for quantified formulas\n"
570
"  --literal-matching=MODE\n"
571
"                         choose literal matching mode\n"
572
"  --macros-quant         perform quantifiers macro expansion [*]\n"
573
"  --macros-quant-mode=MODE\n"
574
"                         mode for quantifiers macro expansion\n"
575
"  --mbqi-interleave      interleave model-based quantifier instantiation with\n"
576
"                         other techniques [*]\n"
577
"  --mbqi-one-inst-per-round\n"
578
"                         only add one instantiation per quantifier per round for\n"
579
"                         mbqi [*]\n"
580
"  --mbqi=MODE            choose mode for model-based quantifier instantiation\n"
581
"  --miniscope-quant      miniscope quantifiers [*]\n"
582
"  --miniscope-quant-fv   miniscope quantifiers for ground subformulas [*]\n"
583
"  --multi-trigger-cache  caching version of multi triggers [*]\n"
584
"  --multi-trigger-linear implementation of multi triggers where maximum number\n"
585
"                         of instantiations is linear wrt number of ground terms\n"
586
"                         [*]\n"
587
"  --multi-trigger-priority\n"
588
"                         only try multi triggers if single triggers give no\n"
589
"                         instantiations [*]\n"
590
"  --multi-trigger-when-single\n"
591
"                         select multi triggers when single triggers exist [*]\n"
592
"  --partial-triggers     use triggers that do not contain all free variables [*]\n"
593
"  --pool-inst            pool-based instantiation: instantiate with ground terms\n"
594
"                         occurring in user-specified pools [*]\n"
595
"  --pre-skolem-quant     apply skolemization eagerly to bodies of quantified\n"
596
"                         formulas [*]\n"
597
"  --pre-skolem-quant-agg apply skolemization to quantified formulas aggressively\n"
598
"                         [*]\n"
599
"  --pre-skolem-quant-nested\n"
600
"                         apply skolemization to nested quantified formulas [*]\n"
601
"  --prenex-quant-user    prenex quantified formulas with user patterns [*]\n"
602
"  --prenex-quant=MODE    prenex mode for quantified formulas\n"
603
"  --purify-triggers      purify triggers, e.g. f( x+1 ) becomes f( y ), x mapsto\n"
604
"                         y-1 [*]\n"
605
"  --qcf-all-conflict     add all available conflicting instances during\n"
606
"                         conflict-based instantiation [*]\n"
607
"  --qcf-eager-check-rd   optimization, eagerly check relevant domain of matched\n"
608
"                         position [*]\n"
609
"  --qcf-eager-test       optimization, test qcf instances eagerly [*]\n"
610
"  --qcf-nested-conflict  consider conflicts for nested quantifiers [*]\n"
611
"  --qcf-skip-rd          optimization, skip instances based on possibly\n"
612
"                         irrelevant portions of quantified formulas [*]\n"
613
"  --qcf-tconstraint      enable entailment checks for t-constraints in qcf\n"
614
"                         algorithm [*]\n"
615
"  --qcf-vo-exp           qcf experimental variable ordering [*]\n"
616
"  --quant-alpha-equiv    infer alpha equivalence between quantified formulas [*]\n"
617
"  --quant-cf             enable conflict find mechanism for quantifiers [*]\n"
618
"  --quant-cf-mode=MODE   what effort to apply conflict find mechanism\n"
619
"  --quant-cf-when=MODE   when to invoke conflict find mechanism for quantifiers\n"
620
"  --quant-dsplit-mode=MODE\n"
621
"                         mode for dynamic quantifiers splitting\n"
622
"  --quant-fun-wd         assume that function defined by quantifiers are well\n"
623
"                         defined [*]\n"
624
"  --quant-ind            use all available techniques for inductive reasoning\n"
625
"                         [*]\n"
626
"  --quant-rep-mode=MODE  selection mode for representatives in quantifiers\n"
627
"                         engine\n"
628
"  --quant-split          apply splitting to quantified formulas based on\n"
629
"                         variable disjoint disjuncts [*]\n"
630
"  --register-quant-body-terms\n"
631
"                         consider ground terms within bodies of quantified\n"
632
"                         formulas for matching [*]\n"
633
"  --relational-triggers  choose relational triggers such as x = f(y), x >= f(y)\n"
634
"                         [*]\n"
635
"  --relevant-triggers    prefer triggers that are more relevant based on SInE\n"
636
"                         style analysis [*]\n"
637
"  --sygus                use sygus solver (default is true for sygus inputs) [*]\n"
638
"  --sygus-active-gen-cfactor=N\n"
639
"                         the branching factor for the number of interpreted\n"
640
"                         constants to consider for each size when using\n"
641
"                         --sygus-active-gen=enum\n"
642
"  --sygus-active-gen=MODE\n"
643
"                         mode for actively-generated sygus enumerators\n"
644
"  --sygus-add-const-grammar\n"
645
"                         statically add constants appearing in conjecture to\n"
646
"                         grammars [*]\n"
647
"  --sygus-arg-relevant   static inference techniques for computing whether\n"
648
"                         arguments of functions-to-synthesize are relevant [*]\n"
649
"  --sygus-auto-unfold    enable approach which automatically unfolds transition\n"
650
"                         systems for directly solving invariant synthesis\n"
651
"                         problems [*]\n"
652
"  --sygus-bool-ite-return-const\n"
653
"                         Only use Boolean constants for return values in\n"
654
"                         unification-based function synthesis [*]\n"
655
"  --sygus-core-connective\n"
656
"                         use unsat core analysis to construct Boolean connective\n"
657
"                         to sygus conjectures [*]\n"
658
"  --sygus-crepair-abort  abort if constant repair techniques are not applicable\n"
659
"                         [*]\n"
660
"  --sygus-eval-opt       use optimized approach for evaluation in sygus [*]\n"
661
"  --sygus-eval-unfold    do unfolding of sygus evaluation functions [*]\n"
662
"  --sygus-eval-unfold-bool\n"
663
"                         do unfolding of Boolean evaluation functions that\n"
664
"                         appear in refinement lemmas [*]\n"
665
"  --sygus-expr-miner-check-timeout=N\n"
666
"                         timeout (in milliseconds) for satisfiability checks in\n"
667
"                         expression miners\n"
668
"  --sygus-ext-rew        use extended rewriter for sygus [*]\n"
669
"  --sygus-filter-sol-rev compute backwards filtering to compute whether previous\n"
670
"                         solutions are filtered based on later ones (EXPERTS\n"
671
"                         only) [*]\n"
672
"  --sygus-filter-sol=MODE\n"
673
"                         mode for filtering sygus solutions\n"
674
"  --sygus-grammar-cons=MODE\n"
675
"                         mode for SyGuS grammar construction\n"
676
"  --sygus-grammar-norm   statically normalize sygus grammars based on flattening\n"
677
"                         (linearization) [*]\n"
678
"  --sygus-inference      attempt to preprocess arbitrary inputs to sygus\n"
679
"                         conjectures [*]\n"
680
"  --sygus-inst           Enable SyGuS instantiation quantifiers module [*]\n"
681
"  --sygus-inst-mode=MODE select instantiation lemma mode\n"
682
"  --sygus-inst-scope=MODE\n"
683
"                         select scope of ground terms\n"
684
"  --sygus-inst-term-sel=MODE\n"
685
"                         granularity for ground terms\n"
686
"  --sygus-inv-templ-when-sg\n"
687
"                         use invariant templates (with solution reconstruction)\n"
688
"                         for syntax guided problems [*]\n"
689
"  --sygus-inv-templ=MODE template mode for sygus invariant synthesis (weaken\n"
690
"                         pre-condition, strengthen post-condition, or none)\n"
691
"  --sygus-min-grammar    statically minimize sygus grammars [*]\n"
692
"  --sygus-pbe            enable approach which unifies conditional solutions,\n"
693
"                         specialized for programming-by-examples (pbe)\n"
694
"                         conjectures [*]\n"
695
"  --sygus-pbe-multi-fair when using multiple enumerators, ensure that we only\n"
696
"                         register value of minimial term size [*]\n"
697
"  --sygus-pbe-multi-fair-diff=N\n"
698
"                         when using multiple enumerators, ensure that we only\n"
699
"                         register values of minimial term size plus this value\n"
700
"                         (default 0)\n"
701
"  --sygus-qe-preproc     use quantifier elimination as a preprocessing step for\n"
702
"                         sygus [*]\n"
703
"  --sygus-query-gen      use sygus to enumerate interesting satisfiability\n"
704
"                         queries [*]\n"
705
"  --sygus-query-gen-check\n"
706
"                         use interesting satisfiability queries to check\n"
707
"                         soundness of cvc5 [*]\n"
708
"  --sygus-query-gen-dump-files=MODE\n"
709
"                         mode for dumping external files corresponding to\n"
710
"                         interesting satisfiability queries with sygus-query-gen\n"
711
"  --sygus-query-gen-thresh=N\n"
712
"                         number of points that we allow to be equal for\n"
713
"                         enumerating satisfiable queries with sygus-query-gen\n"
714
"  --sygus-rec-fun        enable efficient support for recursive functions in\n"
715
"                         sygus grammars [*]\n"
716
"  --sygus-rec-fun-eval-limit=N\n"
717
"                         use a hard limit for how many times in a given\n"
718
"                         evaluator call a recursive function can be evaluated\n"
719
"                         (so infinite loops can be avoided)\n"
720
"  --sygus-repair-const   use approach to repair constants in sygus candidate\n"
721
"                         solutions [*]\n"
722
"  --sygus-repair-const-timeout=N\n"
723
"                         timeout (in milliseconds) for the satisfiability check\n"
724
"                         to repair constants in sygus candidate solutions\n"
725
"  --sygus-rr             use sygus to enumerate and verify correctness of\n"
726
"                         rewrite rules [*]\n"
727
"  --sygus-rr-synth       use sygus to enumerate candidate rewrite rules [*]\n"
728
"  --sygus-rr-synth-accel add dynamic symmetry breaking clauses based on\n"
729
"                         candidate rewrites [*]\n"
730
"  --sygus-rr-synth-check use satisfiability check to verify correctness of\n"
731
"                         candidate rewrites [*]\n"
732
"  --sygus-rr-synth-filter-cong\n"
733
"                         filter candidate rewrites based on congruence [*]\n"
734
"  --sygus-rr-synth-filter-match\n"
735
"                         filter candidate rewrites based on matching [*]\n"
736
"  --sygus-rr-synth-filter-nl\n"
737
"                         filter non-linear candidate rewrites [*]\n"
738
"  --sygus-rr-synth-filter-order\n"
739
"                         filter candidate rewrites based on variable ordering\n"
740
"                         [*]\n"
741
"  --sygus-rr-synth-input synthesize rewrite rules based on the input formula [*]\n"
742
"  --sygus-rr-synth-input-nvars=N\n"
743
"                         the maximum number of variables per type that appear in\n"
744
"                         rewrites from sygus-rr-synth-input\n"
745
"  --sygus-rr-synth-input-use-bool\n"
746
"                         synthesize Boolean rewrite rules based on the input\n"
747
"                         formula [*]\n"
748
"  --sygus-rr-synth-rec   synthesize rewrite rules over all sygus grammar types\n"
749
"                         recursively [*]\n"
750
"  --sygus-rr-verify      use sygus to verify the correctness of rewrite rules\n"
751
"                         via sampling [*]\n"
752
"  --sygus-rr-verify-abort\n"
753
"                         abort when sygus-rr-verify finds an instance of\n"
754
"                         unsoundness [*]\n"
755
"  --sygus-sample-fp-uniform\n"
756
"                         sample floating-point values uniformly instead of in a\n"
757
"                         biased fashion [*]\n"
758
"  --sygus-sample-grammar when applicable, use grammar for choosing sample points\n"
759
"                         [*]\n"
760
"  --sygus-samples=N      number of points to consider when doing sygus rewriter\n"
761
"                         sample testing\n"
762
"  --sygus-si-abort       abort if synthesis conjecture is not single invocation\n"
763
"                         [*]\n"
764
"  --sygus-si-partial     combined techniques for synthesis conjectures that are\n"
765
"                         partially single invocation [*]\n"
766
"  --sygus-si-rcons-limit=N\n"
767
"                         number of rounds of enumeration to use during solution\n"
768
"                         reconstruction (negative means unlimited)\n"
769
"  --sygus-si-rcons=MODE  policy for reconstructing solutions for single\n"
770
"                         invocation conjectures\n"
771
"  --sygus-si-reconstruct-const\n"
772
"                         include constants when reconstruct solutions for single\n"
773
"                         invocation conjectures in original grammar [*]\n"
774
"  --sygus-si=MODE        mode for processing single invocation synthesis\n"
775
"                         conjectures\n"
776
"  --sygus-stream         enumerate a stream of solutions instead of terminating\n"
777
"                         after the first one [*]\n"
778
"  --sygus-templ-embed-grammar\n"
779
"                         embed sygus templates into grammars [*]\n"
780
"  --sygus-unif-cond-independent-no-repeat-sol\n"
781
"                         Do not try repeated solutions when using independent\n"
782
"                         synthesis of conditions in unification-based function\n"
783
"                         synthesis [*]\n"
784
"  --sygus-unif-pi=MODE   mode for synthesis via piecewise-indepedent unification\n"
785
"  --sygus-unif-shuffle-cond\n"
786
"                         Shuffle condition pool when building solutions (may\n"
787
"                         change solutions sizes) [*]\n"
788
"  --sygus-verify-inst-max-rounds=N\n"
789
"                         maximum number of instantiation rounds for sygus\n"
790
"                         verification calls (-1 == no limit, default is 3)\n"
791
"  --term-db-cd           register terms in term database based on the SAT\n"
792
"                         context [*]\n"
793
"  --term-db-mode=MODE    which ground terms to consider for instantiation\n"
794
"  --trigger-active-sel=MODE\n"
795
"                         selection mode to activate triggers\n"
796
"  --trigger-sel=MODE     selection mode for triggers\n"
797
"  --user-pat=MODE        policy for handling user-provided patterns for\n"
798
"                         quantifier instantiation\n"
799
"  --var-elim-quant       enable simple variable elimination for quantified\n"
800
"                         formulas [*]\n"
801
"  --var-ineq-elim-quant  enable variable elimination based on infinite\n"
802
"                         projection of unbound arithmetic variables [*]\n"
803
"\nFrom the Separation Logic Theory module:\n"
804
"  --sep-check-neg        check negated spatial assertions [*]\n"
805
"  --sep-child-refine     child-specific refinements of negated star, positive\n"
806
"                         wand [*]\n"
807
"  --sep-deq-c            assume cardinality elements are distinct [*]\n"
808
"  --sep-exp              experimental flag for sep [*]\n"
809
"  --sep-min-refine       only add refinement lemmas for minimal (innermost)\n"
810
"                         assertions [*]\n"
811
"  --sep-pre-skolem-emp   eliminate emp constraint at preprocess time [*]\n"
812
"\nFrom the Sets Theory module:\n"
813
"  --sets-ext             enable extended symbols such as complement and universe\n"
814
"                         in theory of sets [*]\n"
815
"  --sets-infer-as-lemmas send inferences as lemmas [*]\n"
816
"  --sets-proxy-lemmas    introduce proxy variables eagerly to shorten lemmas [*]\n"
817
"\nFrom the SMT Layer module:\n"
818
"  --abstract-values      in models, output arrays (and in future, maybe others)\n"
819
"                         using abstract values, as required by the SMT-LIB\n"
820
"                         standard [*]\n"
821
"  --ackermann            eliminate functions by ackermannization [*]\n"
822
"  --block-models=MODE    mode for producing several models\n"
823
"  --check-abducts        checks whether produced solutions to get-abduct are\n"
824
"                         correct [*]\n"
825
"  --check-interpols      checks whether produced solutions to get-interpol are\n"
826
"                         correct [*]\n"
827
"  --check-models         after SAT/INVALID/UNKNOWN, check that the generated\n"
828
"                         model satisfies user assertions [*]\n"
829
"  --check-proofs         after UNSAT/VALID, check the generated proof (with\n"
830
"                         proof) [*]\n"
831
"  --check-synth-sol      checks whether produced solutions to\n"
832
"                         functions-to-synthesize satisfy the conjecture [*]\n"
833
"  --check-unsat-cores    after UNSAT/VALID, produce and check an unsat core\n"
834
"                         (expensive) [*]\n"
835
"  --debug-check-models   after SAT/INVALID/UNKNOWN, check that the generated\n"
836
"                         model satisfies user and internal assertions [*]\n"
837
"  --early-ite-removal    remove ITEs early in preprocessing (EXPERTS only) [*]\n"
838
"  --expand-definitions   always expand symbol definitions in output [*]\n"
839
"  --ext-rew-prep         use extended rewriter as a preprocessing pass [*]\n"
840
"  --ext-rew-prep-agg     use aggressive extended rewriter as a preprocessing\n"
841
"                         pass [*]\n"
842
"  --foreign-theory-rewrite\n"
843
"                         Cross-theory rewrites [*]\n"
844
"  --ite-simp             turn on ite simplification (Kim (and Somenzi) et al.,\n"
845
"                         SAT 2009) [*]\n"
846
"  --learned-rewrite      rewrite the input based on learned literals [*]\n"
847
"  --minimal-unsat-cores  if an unsat core is produced, it is reduced to a\n"
848
"                         minimal unsat core [*]\n"
849
"  --model-cores=MODE     mode for producing model cores\n"
850
"  --model-u-print=MODE | --model-uninterp-print=MODE\n"
851
"                         determines how to print uninterpreted elements in\n"
852
"                         models\n"
853
"  --model-witness-value  in models, use a witness constant for choice functions\n"
854
"                         [*]\n"
855
"  --on-repeat-ite-simp   do the ite simplification pass again if repeating\n"
856
"                         simplification [*]\n"
857
"  --produce-assignments  support the get-assignment command [*]\n"
858
"  --produce-proofs       produce proofs, support check-proofs and get-proof [*]\n"
859
"  --produce-unsat-assumptions\n"
860
"                         turn on unsat assumptions generation [*]\n"
861
"  --produce-unsat-cores  turn on unsat core generation. Unless otherwise\n"
862
"                         specified, cores will be produced using SAT soving\n"
863
"                         under assumptions and preprocessing proofs. [*]\n"
864
"  --repeat-simp          make multiple passes with nonclausal simplifier [*]\n"
865
"  --simp-ite-compress    enables compressing ites after ite simplification [*]\n"
866
"  --simp-ite-hunt-zombies=N\n"
867
"                         post ite compression enables zombie removal while the\n"
868
"                         number of nodes is above this threshold\n"
869
"  --simp-with-care       enables simplifyWithCare in ite simplificiation [*]\n"
870
"  --simplification=MODE | --simplification-mode=MODE\n"
871
"                         choose simplification mode, see --simplification=help\n"
872
"  --sort-inference       calculate sort inference of input problem, convert the\n"
873
"                         input based on monotonic sorts [*]\n"
874
"  --static-learning      use static learning (on by default) [*]\n"
875
"  --sygus-out=MODE       output mode for sygus\n"
876
"  --sygus-print-callbacks\n"
877
"                         use sygus print callbacks to print sygus terms in the\n"
878
"                         user-provided form (disable for debugging) [*]\n"
879
"  --unconstrained-simp   turn on unconstrained simplification (see\n"
880
"                         Bruttomesso/Brummayer PhD thesis). Fully supported only\n"
881
"                         in (subsets of) the logic QF_ABV. [*]\n"
882
"  --unsat-cores-mode=MODE\n"
883
"                         choose unsat core mode, see --unsat-cores-mode=help\n"
884
"\nFrom the Strings Theory module:\n"
885
"  --re-elim              elimination techniques for regular expressions [*]\n"
886
"  --re-elim-agg          aggressive elimination techniques for regular\n"
887
"                         expressions [*]\n"
888
"  --re-inter-mode=MODE   determines which regular expressions intersections to\n"
889
"                         compute (EXPERTS only)\n"
890
"  --strings-check-entail-len\n"
891
"                         check entailment between length terms to reduce\n"
892
"                         splitting [*]\n"
893
"  --strings-eager        strings eager check [*]\n"
894
"  --strings-eager-eval   perform eager context-dependent evaluation for\n"
895
"                         applications of string kinds [*]\n"
896
"  --strings-eager-len    strings eager length lemmas [*]\n"
897
"  --strings-exp          experimental features in the theory of strings [*]\n"
898
"  --strings-ff           do flat form inferences [*]\n"
899
"  --strings-fmf          the finite model finding used by the theory of strings\n"
900
"                         [*]\n"
901
"  --strings-guess-model  use model guessing to avoid string extended function\n"
902
"                         reductions [*]\n"
903
"  --strings-infer-as-lemmas\n"
904
"                         always send lemmas out instead of making internal\n"
905
"                         inferences [*]\n"
906
"  --strings-infer-sym    strings split on empty string [*]\n"
907
"  --strings-lazy-pp      perform string preprocessing lazily [*]\n"
908
"  --strings-len-norm     strings length normalization lemma [*]\n"
909
"  --strings-lprop-csp    do length propagation based on constant splits [*]\n"
910
"  --strings-min-prefix-explain\n"
911
"                         minimize explanations for prefix of normal forms in\n"
912
"                         strings [*]\n"
913
"  --strings-process-loop-mode=MODE\n"
914
"                         determines how to process looping string equations\n"
915
"                         (EXPERTS only)\n"
916
"  --strings-rexplain-lemmas\n"
917
"                         regression explanations for string lemmas [*]\n"
918
"  --strings-unified-vspt use a single skolem for the variable splitting rule [*]\n"
919
"\nFrom the Theory Layer module:\n"
920
"  --assign-function-values\n"
921
"                         assign values for uninterpreted functions in models [*]\n"
922
"  --condense-function-values\n"
923
"                         condense values for functions in models rather than\n"
924
"                         explicitly representing them [*]\n"
925
"  --ee-mode=MODE         mode for managing equalities across theory solvers\n"
926
"                         (EXPERTS only)\n"
927
"  --relevance-filter     enable analysis of relevance of asserted literals with\n"
928
"                         respect to the input formula [*]\n"
929
"  --tc-mode=MODE         mode for theory combination (EXPERTS only)\n"
930
"  --theoryof-mode=MODE   mode for Theory::theoryof() (EXPERTS only)\n"
931
"\nFrom the Uninterpreted Functions Theory module:\n"
932
"  --symmetry-breaker | --uf-symmetry-breaker\n"
933
"                         use UF symmetry breaker (Deharbe et al., CADE 2011) [*]\n"
934
"  --uf-ho                enable support for higher-order reasoning [*]\n"
935
"  --uf-ho-ext            apply extensionality on function symbols [*]\n"
936
"  --uf-ss-abort-card=N   tells the uf with cardinality to only consider models\n"
937
"                         that interpret uninterpreted sorts of cardinality at\n"
938
"                         most N (-1 == no limit, default)\n"
939
"  --uf-ss-fair           use fair strategy for finite model finding multiple\n"
940
"                         sorts [*]\n"
941
"  --uf-ss-fair-monotone  group monotone sorts when enforcing fairness for finite\n"
942
"                         model finding [*]\n"
943
"  --uf-ss-totality-limited=N\n"
944
"                         apply totality axioms, but only up to cardinality N (-1\n"
945
"                         == do not apply totality axioms, default)\n"
946
"  --uf-ss-totality-sym-break\n"
947
"                         apply symmetry breaking for totality axioms [*]\n"
948
"  --uf-ss=MODE           mode of operation for uf with cardinality solver.\n";
949
950
9827
static const std::string optionsFootnote = "\n\
951
[*] Each of these options has a --no-OPTIONNAME variant, which reverses the\n\
952
    sense of the option.\n\
953
";
954
955
9827
static const std::string languageDescription =
956
    "\
957
Languages currently supported as arguments to the -L / --lang option:\n\
958
  auto                           attempt to automatically determine language\n\
959
  cvc | presentation | pl        CVC presentation language\n\
960
  smt | smtlib | smt2 |\n\
961
  smt2.6 | smtlib2.6             SMT-LIB format 2.6 with support for the strings standard\n\
962
  tptp                           TPTP format (cnf, fof and tff)\n\
963
  sygus | sygus2                 SyGuS version 2.0\n\
964
\n\
965
Languages currently supported as arguments to the --output-lang option:\n\
966
  auto                           match output language to input language\n\
967
  cvc | presentation | pl        CVC presentation language\n\
968
  smt | smtlib | smt2 |\n\
969
  smt2.6 | smtlib2.6             SMT-LIB format 2.6 with support for the strings standard\n\
970
  tptp                           TPTP format\n\
971
  ast                            internal format (simple syntax trees)\n\
972
";
973
// clang-format on
974
975
void printUsage(const std::string& msg, std::ostream& os) {
976
  os << msg << "\n" << commonOptionsDescription << "\n\n" << additionalOptionsDescription << std::endl
977
      << optionsFootnote << std::endl << std::flush;
978
}
979
980
void printShortUsage(const std::string& msg, std::ostream& os) {
981
  os << msg << "\n" << commonOptionsDescription << std::endl
982
      << optionsFootnote << std::endl
983
      << "For full usage, please use --help."
984
      << std::endl << std::endl << std::flush;
985
}
986
987
void printLanguageHelp(std::ostream& os) {
988
  os << languageDescription << std::flush;
989
}
990
991
/**
992
 * This is a table of long options.  By policy, each short option
993
 * should have an equivalent long option (but the reverse isn't the
994
 * case), so this table should thus contain all command-line options.
995
 *
996
 * Each option in this array has four elements:
997
 *
998
 * 1. the long option string
999
 * 2. argument behavior for the option:
1000
 *    no_argument - no argument permitted
1001
 *    required_argument - an argument is expected
1002
 *    optional_argument - an argument is permitted but not required
1003
 * 3. this is a pointer to an int which is set to the 4th entry of the
1004
 *    array if the option is present; or NULL, in which case
1005
 *    getopt_long() returns the 4th entry
1006
 * 4. the return value for getopt_long() when this long option (or the
1007
 *    value to set the 3rd entry to; see #3)
1008
 */
1009
// clang-format off
1010
static struct option cmdlineOptions[] = {
1011
  { "approx-branch-depth", required_argument, nullptr, 256 },
1012
  { "arith-brab", no_argument, nullptr, 257 },
1013
  { "no-arith-brab", no_argument, nullptr, 258 },
1014
  { "arith-cong-man", no_argument, nullptr, 259 },
1015
  { "no-arith-cong-man", no_argument, nullptr, 260 },
1016
  { "arith-eq-solver", no_argument, nullptr, 261 },
1017
  { "no-arith-eq-solver", no_argument, nullptr, 262 },
1018
  { "arith-no-partial-fun", no_argument, nullptr, 263 },
1019
  { "no-arith-no-partial-fun", no_argument, nullptr, 264 },
1020
  { "arith-prop-clauses", required_argument, nullptr, 265 },
1021
  { "arith-prop", required_argument, nullptr, 266 },
1022
  { "arith-rewrite-equalities", no_argument, nullptr, 267 },
1023
  { "no-arith-rewrite-equalities", no_argument, nullptr, 268 },
1024
  { "collect-pivot-stats", no_argument, nullptr, 269 },
1025
  { "no-collect-pivot-stats", no_argument, nullptr, 270 },
1026
  { "cut-all-bounded", no_argument, nullptr, 271 },
1027
  { "no-cut-all-bounded", no_argument, nullptr, 272 },
1028
  { "dio-decomps", no_argument, nullptr, 273 },
1029
  { "no-dio-decomps", no_argument, nullptr, 274 },
1030
  { "dio-repeat", no_argument, nullptr, 275 },
1031
  { "no-dio-repeat", no_argument, nullptr, 276 },
1032
  { "dio-solver", no_argument, nullptr, 277 },
1033
  { "no-dio-solver", no_argument, nullptr, 278 },
1034
  { "dio-turns", required_argument, nullptr, 279 },
1035
  { "error-selection-rule", required_argument, nullptr, 280 },
1036
  { "fc-penalties", no_argument, nullptr, 281 },
1037
  { "no-fc-penalties", no_argument, nullptr, 282 },
1038
  { "heuristic-pivots", required_argument, nullptr, 283 },
1039
  { "lemmas-on-replay-failure", no_argument, nullptr, 284 },
1040
  { "no-lemmas-on-replay-failure", no_argument, nullptr, 285 },
1041
  { "maxCutsInContext", required_argument, nullptr, 286 },
1042
  { "miplib-trick", no_argument, nullptr, 287 },
1043
  { "no-miplib-trick", no_argument, nullptr, 288 },
1044
  { "miplib-trick-subs", required_argument, nullptr, 289 },
1045
  { "new-prop", no_argument, nullptr, 290 },
1046
  { "no-new-prop", no_argument, nullptr, 291 },
1047
  { "nl-cad", no_argument, nullptr, 292 },
1048
  { "no-nl-cad", no_argument, nullptr, 293 },
1049
  { "nl-cad-initial", no_argument, nullptr, 294 },
1050
  { "no-nl-cad-initial", no_argument, nullptr, 295 },
1051
  { "nl-cad-lift", required_argument, nullptr, 296 },
1052
  { "nl-cad-proj", required_argument, nullptr, 297 },
1053
  { "nl-ext-ent-conf", no_argument, nullptr, 298 },
1054
  { "no-nl-ext-ent-conf", no_argument, nullptr, 299 },
1055
  { "nl-ext-factor", no_argument, nullptr, 300 },
1056
  { "no-nl-ext-factor", no_argument, nullptr, 301 },
1057
  { "nl-ext-inc-prec", no_argument, nullptr, 302 },
1058
  { "no-nl-ext-inc-prec", no_argument, nullptr, 303 },
1059
  { "nl-ext-purify", no_argument, nullptr, 304 },
1060
  { "no-nl-ext-purify", no_argument, nullptr, 305 },
1061
  { "nl-ext-rbound", no_argument, nullptr, 306 },
1062
  { "no-nl-ext-rbound", no_argument, nullptr, 307 },
1063
  { "nl-ext-rewrite", no_argument, nullptr, 308 },
1064
  { "no-nl-ext-rewrite", no_argument, nullptr, 309 },
1065
  { "nl-ext-split-zero", no_argument, nullptr, 310 },
1066
  { "no-nl-ext-split-zero", no_argument, nullptr, 311 },
1067
  { "nl-ext-tf-taylor-deg", required_argument, nullptr, 312 },
1068
  { "nl-ext-tf-tplanes", no_argument, nullptr, 313 },
1069
  { "no-nl-ext-tf-tplanes", no_argument, nullptr, 314 },
1070
  { "nl-ext-tplanes", no_argument, nullptr, 315 },
1071
  { "no-nl-ext-tplanes", no_argument, nullptr, 316 },
1072
  { "nl-ext-tplanes-interleave", no_argument, nullptr, 317 },
1073
  { "no-nl-ext-tplanes-interleave", no_argument, nullptr, 318 },
1074
  { "nl-ext", required_argument, nullptr, 319 },
1075
  { "nl-icp", no_argument, nullptr, 320 },
1076
  { "no-nl-icp", no_argument, nullptr, 321 },
1077
  { "nl-rlv", required_argument, nullptr, 322 },
1078
  { "pb-rewrites", no_argument, nullptr, 323 },
1079
  { "no-pb-rewrites", no_argument, nullptr, 324 },
1080
  { "pivot-threshold", required_argument, nullptr, 325 },
1081
  { "pp-assert-max-sub-size", required_argument, nullptr, 326 },
1082
  { "prop-row-length", required_argument, nullptr, 327 },
1083
  { "replay-early-close-depth", required_argument, nullptr, 328 },
1084
  { "replay-failure-penalty", required_argument, nullptr, 329 },
1085
  { "replay-lemma-reject-cut", required_argument, nullptr, 330 },
1086
  { "replay-num-err-penalty", required_argument, nullptr, 331 },
1087
  { "replay-reject-cut", required_argument, nullptr, 332 },
1088
  { "replay-soi-major-threshold-pen", required_argument, nullptr, 333 },
1089
  { "replay-soi-major-threshold", required_argument, nullptr, 334 },
1090
  { "replay-soi-minor-threshold-pen", required_argument, nullptr, 335 },
1091
  { "replay-soi-minor-threshold", required_argument, nullptr, 336 },
1092
  { "restrict-pivots", no_argument, nullptr, 337 },
1093
  { "no-restrict-pivots", no_argument, nullptr, 338 },
1094
  { "revert-arith-models-on-unsat", no_argument, nullptr, 339 },
1095
  { "no-revert-arith-models-on-unsat", no_argument, nullptr, 340 },
1096
  { "rr-turns", required_argument, nullptr, 341 },
1097
  { "se-solve-int", no_argument, nullptr, 342 },
1098
  { "no-se-solve-int", no_argument, nullptr, 343 },
1099
  { "simplex-check-period", required_argument, nullptr, 344 },
1100
  { "soi-qe", no_argument, nullptr, 345 },
1101
  { "no-soi-qe", no_argument, nullptr, 346 },
1102
  { "standard-effort-variable-order-pivots", required_argument, nullptr, 347 },
1103
  { "unate-lemmas", required_argument, nullptr, 348 },
1104
  { "use-approx", no_argument, nullptr, 349 },
1105
  { "no-use-approx", no_argument, nullptr, 350 },
1106
  { "use-fcsimplex", no_argument, nullptr, 351 },
1107
  { "no-use-fcsimplex", no_argument, nullptr, 352 },
1108
  { "use-soi", no_argument, nullptr, 353 },
1109
  { "no-use-soi", no_argument, nullptr, 354 },
1110
  { "arrays-config", required_argument, nullptr, 355 },
1111
  { "arrays-eager-index", no_argument, nullptr, 356 },
1112
  { "no-arrays-eager-index", no_argument, nullptr, 357 },
1113
  { "arrays-eager-lemmas", no_argument, nullptr, 358 },
1114
  { "no-arrays-eager-lemmas", no_argument, nullptr, 359 },
1115
  { "arrays-exp", no_argument, nullptr, 360 },
1116
  { "no-arrays-exp", no_argument, nullptr, 361 },
1117
  { "arrays-model-based", no_argument, nullptr, 362 },
1118
  { "no-arrays-model-based", no_argument, nullptr, 363 },
1119
  { "arrays-optimize-linear", no_argument, nullptr, 364 },
1120
  { "no-arrays-optimize-linear", no_argument, nullptr, 365 },
1121
  { "arrays-prop", required_argument, nullptr, 366 },
1122
  { "arrays-reduce-sharing", no_argument, nullptr, 367 },
1123
  { "no-arrays-reduce-sharing", no_argument, nullptr, 368 },
1124
  { "arrays-weak-equiv", no_argument, nullptr, 369 },
1125
  { "no-arrays-weak-equiv", no_argument, nullptr, 370 },
1126
  { "debug", required_argument, nullptr, 371 },
1127
  { "err", required_argument, nullptr, 372 },
1128
  { "diagnostic-output-channel", required_argument, nullptr, 373 },
1129
  { "in", required_argument, nullptr, 374 },
1130
  { "incremental", no_argument, nullptr, 375 },
1131
  { "no-incremental", no_argument, nullptr, 376 },
1132
  { "lang", required_argument, nullptr, 377 },
1133
  { "input-language", required_argument, nullptr, 378 },
1134
  { "language-help", no_argument, nullptr, 379 },
1135
  { "no-language-help", no_argument, nullptr, 380 },
1136
  { "out", required_argument, nullptr, 381 },
1137
  { "regular-output-channel", required_argument, nullptr, 382 },
1138
  { "output-lang", required_argument, nullptr, 383 },
1139
  { "output-language", required_argument, nullptr, 384 },
1140
  { "output", required_argument, nullptr, 385 },
1141
  { "parse-only", no_argument, nullptr, 386 },
1142
  { "no-parse-only", no_argument, nullptr, 387 },
1143
  { "preprocess-only", no_argument, nullptr, 388 },
1144
  { "no-preprocess-only", no_argument, nullptr, 389 },
1145
  { "print-success", no_argument, nullptr, 390 },
1146
  { "no-print-success", no_argument, nullptr, 391 },
1147
  { "quiet", no_argument, nullptr, 392 },
1148
  { "rlimit-per", required_argument, nullptr, 393 },
1149
  { "reproducible-resource-limit", required_argument, nullptr, 394 },
1150
  { "rlimit", required_argument, nullptr, 395 },
1151
  { "rweight", required_argument, nullptr, 396 },
1152
  { "stats", no_argument, nullptr, 397 },
1153
  { "no-stats", no_argument, nullptr, 398 },
1154
  { "stats-all", no_argument, nullptr, 399 },
1155
  { "no-stats-all", no_argument, nullptr, 400 },
1156
  { "stats-every-query", no_argument, nullptr, 401 },
1157
  { "no-stats-every-query", no_argument, nullptr, 402 },
1158
  { "stats-expert", no_argument, nullptr, 403 },
1159
  { "no-stats-expert", no_argument, nullptr, 404 },
1160
  { "tlimit-per", required_argument, nullptr, 405 },
1161
  { "tlimit", required_argument, nullptr, 406 },
1162
  { "trace", required_argument, nullptr, 407 },
1163
  { "verbose", no_argument, nullptr, 408 },
1164
  { "verbosity", required_argument, nullptr, 409 },
1165
  { "bitblast-aig", no_argument, nullptr, 410 },
1166
  { "no-bitblast-aig", no_argument, nullptr, 411 },
1167
  { "bitblast", required_argument, nullptr, 412 },
1168
  { "bitwise-eq", no_argument, nullptr, 413 },
1169
  { "no-bitwise-eq", no_argument, nullptr, 414 },
1170
  { "bool-to-bv", required_argument, nullptr, 415 },
1171
  { "bv-abstraction", no_argument, nullptr, 416 },
1172
  { "no-bv-abstraction", no_argument, nullptr, 417 },
1173
  { "bv-aig-simp", required_argument, nullptr, 418 },
1174
  { "bv-alg-extf", no_argument, nullptr, 419 },
1175
  { "no-bv-alg-extf", no_argument, nullptr, 420 },
1176
  { "bv-algebraic-budget", required_argument, nullptr, 421 },
1177
  { "bv-algebraic-solver", no_argument, nullptr, 422 },
1178
  { "no-bv-algebraic-solver", no_argument, nullptr, 423 },
1179
  { "bv-assert-input", no_argument, nullptr, 424 },
1180
  { "no-bv-assert-input", no_argument, nullptr, 425 },
1181
  { "bv-eager-explanations", no_argument, nullptr, 426 },
1182
  { "no-bv-eager-explanations", no_argument, nullptr, 427 },
1183
  { "bv-eq-solver", no_argument, nullptr, 428 },
1184
  { "no-bv-eq-solver", no_argument, nullptr, 429 },
1185
  { "bv-extract-arith", no_argument, nullptr, 430 },
1186
  { "no-bv-extract-arith", no_argument, nullptr, 431 },
1187
  { "bv-gauss-elim", no_argument, nullptr, 432 },
1188
  { "no-bv-gauss-elim", no_argument, nullptr, 433 },
1189
  { "bv-inequality-solver", no_argument, nullptr, 434 },
1190
  { "no-bv-inequality-solver", no_argument, nullptr, 435 },
1191
  { "bv-intro-pow2", no_argument, nullptr, 436 },
1192
  { "no-bv-intro-pow2", no_argument, nullptr, 437 },
1193
  { "bv-num-func", required_argument, nullptr, 438 },
1194
  { "bv-print-consts-as-indexed-symbols", no_argument, nullptr, 439 },
1195
  { "no-bv-print-consts-as-indexed-symbols", no_argument, nullptr, 440 },
1196
  { "bv-propagate", no_argument, nullptr, 441 },
1197
  { "no-bv-propagate", no_argument, nullptr, 442 },
1198
  { "bv-quick-xplain", no_argument, nullptr, 443 },
1199
  { "no-bv-quick-xplain", no_argument, nullptr, 444 },
1200
  { "bv-sat-solver", required_argument, nullptr, 445 },
1201
  { "bv-skolemize", no_argument, nullptr, 446 },
1202
  { "no-bv-skolemize", no_argument, nullptr, 447 },
1203
  { "bv-solver", required_argument, nullptr, 448 },
1204
  { "bv-to-bool", no_argument, nullptr, 449 },
1205
  { "no-bv-to-bool", no_argument, nullptr, 450 },
1206
  { "cdt-bisimilar", no_argument, nullptr, 451 },
1207
  { "no-cdt-bisimilar", no_argument, nullptr, 452 },
1208
  { "dt-binary-split", no_argument, nullptr, 453 },
1209
  { "no-dt-binary-split", no_argument, nullptr, 454 },
1210
  { "dt-blast-splits", no_argument, nullptr, 455 },
1211
  { "no-dt-blast-splits", no_argument, nullptr, 456 },
1212
  { "dt-cyclic", no_argument, nullptr, 457 },
1213
  { "no-dt-cyclic", no_argument, nullptr, 458 },
1214
  { "dt-force-assignment", no_argument, nullptr, 459 },
1215
  { "no-dt-force-assignment", no_argument, nullptr, 460 },
1216
  { "dt-infer-as-lemmas", no_argument, nullptr, 461 },
1217
  { "no-dt-infer-as-lemmas", no_argument, nullptr, 462 },
1218
  { "dt-nested-rec", no_argument, nullptr, 463 },
1219
  { "no-dt-nested-rec", no_argument, nullptr, 464 },
1220
  { "dt-polite-optimize", no_argument, nullptr, 465 },
1221
  { "no-dt-polite-optimize", no_argument, nullptr, 466 },
1222
  { "dt-rewrite-error-sel", no_argument, nullptr, 467 },
1223
  { "no-dt-rewrite-error-sel", no_argument, nullptr, 468 },
1224
  { "dt-share-sel", no_argument, nullptr, 469 },
1225
  { "no-dt-share-sel", no_argument, nullptr, 470 },
1226
  { "sygus-abort-size", required_argument, nullptr, 471 },
1227
  { "sygus-fair-max", no_argument, nullptr, 472 },
1228
  { "no-sygus-fair-max", no_argument, nullptr, 473 },
1229
  { "sygus-fair", required_argument, nullptr, 474 },
1230
  { "sygus-sym-break", no_argument, nullptr, 475 },
1231
  { "no-sygus-sym-break", no_argument, nullptr, 476 },
1232
  { "sygus-sym-break-agg", no_argument, nullptr, 477 },
1233
  { "no-sygus-sym-break-agg", no_argument, nullptr, 478 },
1234
  { "sygus-sym-break-dynamic", no_argument, nullptr, 479 },
1235
  { "no-sygus-sym-break-dynamic", no_argument, nullptr, 480 },
1236
  { "sygus-sym-break-lazy", no_argument, nullptr, 481 },
1237
  { "no-sygus-sym-break-lazy", no_argument, nullptr, 482 },
1238
  { "sygus-sym-break-pbe", no_argument, nullptr, 483 },
1239
  { "no-sygus-sym-break-pbe", no_argument, nullptr, 484 },
1240
  { "sygus-sym-break-rlv", no_argument, nullptr, 485 },
1241
  { "no-sygus-sym-break-rlv", no_argument, nullptr, 486 },
1242
  { "decision-random-weight", required_argument, nullptr, 487 },
1243
  { "decision-threshold", required_argument, nullptr, 488 },
1244
  { "decision-use-weight", no_argument, nullptr, 489 },
1245
  { "no-decision-use-weight", no_argument, nullptr, 490 },
1246
  { "decision-weight-internal", required_argument, nullptr, 491 },
1247
  { "decision", required_argument, nullptr, 492 },
1248
  { "decision-mode", required_argument, nullptr, 493 },
1249
  { "jh-rlv-order", no_argument, nullptr, 494 },
1250
  { "no-jh-rlv-order", no_argument, nullptr, 495 },
1251
  { "jh-skolem-rlv", required_argument, nullptr, 496 },
1252
  { "jh-skolem", required_argument, nullptr, 497 },
1253
  { "dag-thresh", required_argument, nullptr, 498 },
1254
  { "expr-depth", required_argument, nullptr, 499 },
1255
  { "type-checking", no_argument, nullptr, 500 },
1256
  { "no-type-checking", no_argument, nullptr, 501 },
1257
  { "fp-exp", no_argument, nullptr, 502 },
1258
  { "no-fp-exp", no_argument, nullptr, 503 },
1259
  { "fp-lazy-wb", no_argument, nullptr, 504 },
1260
  { "no-fp-lazy-wb", no_argument, nullptr, 505 },
1261
  { "copyright", no_argument, nullptr, 506 },
1262
  { "dump-instantiations", no_argument, nullptr, 507 },
1263
  { "no-dump-instantiations", no_argument, nullptr, 508 },
1264
  { "dump-instantiations-debug", no_argument, nullptr, 509 },
1265
  { "no-dump-instantiations-debug", no_argument, nullptr, 510 },
1266
  { "dump-models", no_argument, nullptr, 511 },
1267
  { "no-dump-models", no_argument, nullptr, 512 },
1268
  { "dump-proofs", no_argument, nullptr, 513 },
1269
  { "no-dump-proofs", no_argument, nullptr, 514 },
1270
  { "dump-unsat-cores", no_argument, nullptr, 515 },
1271
  { "no-dump-unsat-cores", no_argument, nullptr, 516 },
1272
  { "dump-unsat-cores-full", no_argument, nullptr, 517 },
1273
  { "no-dump-unsat-cores-full", no_argument, nullptr, 518 },
1274
  { "early-exit", no_argument, nullptr, 519 },
1275
  { "no-early-exit", no_argument, nullptr, 520 },
1276
  { "filename", required_argument, nullptr, 521 },
1277
  { "force-no-limit-cpu-while-dump", no_argument, nullptr, 522 },
1278
  { "no-force-no-limit-cpu-while-dump", no_argument, nullptr, 523 },
1279
  { "help", no_argument, nullptr, 524 },
1280
  { "interactive", no_argument, nullptr, 525 },
1281
  { "no-interactive", no_argument, nullptr, 526 },
1282
  { "seed", required_argument, nullptr, 527 },
1283
  { "segv-spin", no_argument, nullptr, 528 },
1284
  { "no-segv-spin", no_argument, nullptr, 529 },
1285
  { "show-config", no_argument, nullptr, 530 },
1286
  { "show-debug-tags", no_argument, nullptr, 531 },
1287
  { "show-trace-tags", no_argument, nullptr, 532 },
1288
  { "version", no_argument, nullptr, 533 },
1289
  { "filesystem-access", no_argument, nullptr, 534 },
1290
  { "no-filesystem-access", no_argument, nullptr, 535 },
1291
  { "force-logic", required_argument, nullptr, 536 },
1292
  { "global-declarations", no_argument, nullptr, 537 },
1293
  { "no-global-declarations", no_argument, nullptr, 538 },
1294
  { "mmap", no_argument, nullptr, 539 },
1295
  { "no-mmap", no_argument, nullptr, 540 },
1296
  { "semantic-checks", no_argument, nullptr, 541 },
1297
  { "no-semantic-checks", no_argument, nullptr, 542 },
1298
  { "strict-parsing", no_argument, nullptr, 543 },
1299
  { "no-strict-parsing", no_argument, nullptr, 544 },
1300
  { "flatten-ho-chains", no_argument, nullptr, 545 },
1301
  { "no-flatten-ho-chains", no_argument, nullptr, 546 },
1302
  { "model-format", required_argument, nullptr, 547 },
1303
  { "print-inst-full", no_argument, nullptr, 548 },
1304
  { "no-print-inst-full", no_argument, nullptr, 549 },
1305
  { "print-inst", required_argument, nullptr, 550 },
1306
  { "proof-check", required_argument, nullptr, 551 },
1307
  { "proof-format-mode", required_argument, nullptr, 552 },
1308
  { "proof-granularity", required_argument, nullptr, 553 },
1309
  { "proof-pedantic", required_argument, nullptr, 554 },
1310
  { "proof-print-conclusion", no_argument, nullptr, 555 },
1311
  { "no-proof-print-conclusion", no_argument, nullptr, 556 },
1312
  { "minisat-dump-dimacs", no_argument, nullptr, 557 },
1313
  { "no-minisat-dump-dimacs", no_argument, nullptr, 558 },
1314
  { "minisat-elimination", no_argument, nullptr, 559 },
1315
  { "no-minisat-elimination", no_argument, nullptr, 560 },
1316
  { "random-freq", required_argument, nullptr, 561 },
1317
  { "random-frequency", required_argument, nullptr, 562 },
1318
  { "random-seed", required_argument, nullptr, 563 },
1319
  { "refine-conflicts", no_argument, nullptr, 564 },
1320
  { "no-refine-conflicts", no_argument, nullptr, 565 },
1321
  { "restart-int-base", required_argument, nullptr, 566 },
1322
  { "restart-int-inc", required_argument, nullptr, 567 },
1323
  { "ag-miniscope-quant", no_argument, nullptr, 568 },
1324
  { "no-ag-miniscope-quant", no_argument, nullptr, 569 },
1325
  { "cegis-sample", required_argument, nullptr, 570 },
1326
  { "cegqi", no_argument, nullptr, 571 },
1327
  { "no-cegqi", no_argument, nullptr, 572 },
1328
  { "cegqi-all", no_argument, nullptr, 573 },
1329
  { "no-cegqi-all", no_argument, nullptr, 574 },
1330
  { "cegqi-bv", no_argument, nullptr, 575 },
1331
  { "no-cegqi-bv", no_argument, nullptr, 576 },
1332
  { "cegqi-bv-concat-inv", no_argument, nullptr, 577 },
1333
  { "no-cegqi-bv-concat-inv", no_argument, nullptr, 578 },
1334
  { "cegqi-bv-ineq", required_argument, nullptr, 579 },
1335
  { "cegqi-bv-interleave-value", no_argument, nullptr, 580 },
1336
  { "no-cegqi-bv-interleave-value", no_argument, nullptr, 581 },
1337
  { "cegqi-bv-linear", no_argument, nullptr, 582 },
1338
  { "no-cegqi-bv-linear", no_argument, nullptr, 583 },
1339
  { "cegqi-bv-rm-extract", no_argument, nullptr, 584 },
1340
  { "no-cegqi-bv-rm-extract", no_argument, nullptr, 585 },
1341
  { "cegqi-bv-solve-nl", no_argument, nullptr, 586 },
1342
  { "no-cegqi-bv-solve-nl", no_argument, nullptr, 587 },
1343
  { "cegqi-full", no_argument, nullptr, 588 },
1344
  { "no-cegqi-full", no_argument, nullptr, 589 },
1345
  { "cegqi-innermost", no_argument, nullptr, 590 },
1346
  { "no-cegqi-innermost", no_argument, nullptr, 591 },
1347
  { "cegqi-midpoint", no_argument, nullptr, 592 },
1348
  { "no-cegqi-midpoint", no_argument, nullptr, 593 },
1349
  { "cegqi-min-bounds", no_argument, nullptr, 594 },
1350
  { "no-cegqi-min-bounds", no_argument, nullptr, 595 },
1351
  { "cegqi-model", no_argument, nullptr, 596 },
1352
  { "no-cegqi-model", no_argument, nullptr, 597 },
1353
  { "cegqi-multi-inst", no_argument, nullptr, 598 },
1354
  { "no-cegqi-multi-inst", no_argument, nullptr, 599 },
1355
  { "cegqi-nested-qe", no_argument, nullptr, 600 },
1356
  { "no-cegqi-nested-qe", no_argument, nullptr, 601 },
1357
  { "cegqi-nopt", no_argument, nullptr, 602 },
1358
  { "no-cegqi-nopt", no_argument, nullptr, 603 },
1359
  { "cegqi-repeat-lit", no_argument, nullptr, 604 },
1360
  { "no-cegqi-repeat-lit", no_argument, nullptr, 605 },
1361
  { "cegqi-round-up-lia", no_argument, nullptr, 606 },
1362
  { "no-cegqi-round-up-lia", no_argument, nullptr, 607 },
1363
  { "cegqi-sat", no_argument, nullptr, 608 },
1364
  { "no-cegqi-sat", no_argument, nullptr, 609 },
1365
  { "cegqi-use-inf-int", no_argument, nullptr, 610 },
1366
  { "no-cegqi-use-inf-int", no_argument, nullptr, 611 },
1367
  { "cegqi-use-inf-real", no_argument, nullptr, 612 },
1368
  { "no-cegqi-use-inf-real", no_argument, nullptr, 613 },
1369
  { "cond-var-split-agg-quant", no_argument, nullptr, 614 },
1370
  { "no-cond-var-split-agg-quant", no_argument, nullptr, 615 },
1371
  { "cond-var-split-quant", no_argument, nullptr, 616 },
1372
  { "no-cond-var-split-quant", no_argument, nullptr, 617 },
1373
  { "conjecture-filter-active-terms", no_argument, nullptr, 618 },
1374
  { "no-conjecture-filter-active-terms", no_argument, nullptr, 619 },
1375
  { "conjecture-filter-canonical", no_argument, nullptr, 620 },
1376
  { "no-conjecture-filter-canonical", no_argument, nullptr, 621 },
1377
  { "conjecture-filter-model", no_argument, nullptr, 622 },
1378
  { "no-conjecture-filter-model", no_argument, nullptr, 623 },
1379
  { "conjecture-gen", no_argument, nullptr, 624 },
1380
  { "no-conjecture-gen", no_argument, nullptr, 625 },
1381
  { "conjecture-gen-gt-enum", required_argument, nullptr, 626 },
1382
  { "conjecture-gen-max-depth", required_argument, nullptr, 627 },
1383
  { "conjecture-gen-per-round", required_argument, nullptr, 628 },
1384
  { "conjecture-gen-uee-intro", no_argument, nullptr, 629 },
1385
  { "no-conjecture-gen-uee-intro", no_argument, nullptr, 630 },
1386
  { "conjecture-no-filter", no_argument, nullptr, 631 },
1387
  { "no-conjecture-no-filter", no_argument, nullptr, 632 },
1388
  { "dt-stc-ind", no_argument, nullptr, 633 },
1389
  { "no-dt-stc-ind", no_argument, nullptr, 634 },
1390
  { "dt-var-exp-quant", no_argument, nullptr, 635 },
1391
  { "no-dt-var-exp-quant", no_argument, nullptr, 636 },
1392
  { "e-matching", no_argument, nullptr, 637 },
1393
  { "no-e-matching", no_argument, nullptr, 638 },
1394
  { "elim-taut-quant", no_argument, nullptr, 639 },
1395
  { "no-elim-taut-quant", no_argument, nullptr, 640 },
1396
  { "ext-rewrite-quant", no_argument, nullptr, 641 },
1397
  { "no-ext-rewrite-quant", no_argument, nullptr, 642 },
1398
  { "finite-model-find", no_argument, nullptr, 643 },
1399
  { "no-finite-model-find", no_argument, nullptr, 644 },
1400
  { "fmf-bound", no_argument, nullptr, 645 },
1401
  { "no-fmf-bound", no_argument, nullptr, 646 },
1402
  { "fmf-bound-int", no_argument, nullptr, 647 },
1403
  { "no-fmf-bound-int", no_argument, nullptr, 648 },
1404
  { "fmf-bound-lazy", no_argument, nullptr, 649 },
1405
  { "no-fmf-bound-lazy", no_argument, nullptr, 650 },
1406
  { "fmf-fmc-simple", no_argument, nullptr, 651 },
1407
  { "no-fmf-fmc-simple", no_argument, nullptr, 652 },
1408
  { "fmf-fresh-dc", no_argument, nullptr, 653 },
1409
  { "no-fmf-fresh-dc", no_argument, nullptr, 654 },
1410
  { "fmf-fun", no_argument, nullptr, 655 },
1411
  { "no-fmf-fun", no_argument, nullptr, 656 },
1412
  { "fmf-fun-rlv", no_argument, nullptr, 657 },
1413
  { "no-fmf-fun-rlv", no_argument, nullptr, 658 },
1414
  { "fmf-inst-engine", no_argument, nullptr, 659 },
1415
  { "no-fmf-inst-engine", no_argument, nullptr, 660 },
1416
  { "fmf-type-completion-thresh", required_argument, nullptr, 661 },
1417
  { "fs-interleave", no_argument, nullptr, 662 },
1418
  { "no-fs-interleave", no_argument, nullptr, 663 },
1419
  { "fs-stratify", no_argument, nullptr, 664 },
1420
  { "no-fs-stratify", no_argument, nullptr, 665 },
1421
  { "fs-sum", no_argument, nullptr, 666 },
1422
  { "no-fs-sum", no_argument, nullptr, 667 },
1423
  { "full-saturate-quant", no_argument, nullptr, 668 },
1424
  { "no-full-saturate-quant", no_argument, nullptr, 669 },
1425
  { "full-saturate-quant-limit", required_argument, nullptr, 670 },
1426
  { "full-saturate-quant-rd", no_argument, nullptr, 671 },
1427
  { "no-full-saturate-quant-rd", no_argument, nullptr, 672 },
1428
  { "global-negate", no_argument, nullptr, 673 },
1429
  { "no-global-negate", no_argument, nullptr, 674 },
1430
  { "ho-elim", no_argument, nullptr, 675 },
1431
  { "no-ho-elim", no_argument, nullptr, 676 },
1432
  { "ho-elim-store-ax", no_argument, nullptr, 677 },
1433
  { "no-ho-elim-store-ax", no_argument, nullptr, 678 },
1434
  { "ho-matching", no_argument, nullptr, 679 },
1435
  { "no-ho-matching", no_argument, nullptr, 680 },
1436
  { "ho-matching-var-priority", no_argument, nullptr, 681 },
1437
  { "no-ho-matching-var-priority", no_argument, nullptr, 682 },
1438
  { "ho-merge-term-db", no_argument, nullptr, 683 },
1439
  { "no-ho-merge-term-db", no_argument, nullptr, 684 },
1440
  { "increment-triggers", no_argument, nullptr, 685 },
1441
  { "no-increment-triggers", no_argument, nullptr, 686 },
1442
  { "inst-level-input-only", no_argument, nullptr, 687 },
1443
  { "no-inst-level-input-only", no_argument, nullptr, 688 },
1444
  { "inst-max-level", required_argument, nullptr, 689 },
1445
  { "inst-max-rounds", required_argument, nullptr, 690 },
1446
  { "inst-no-entail", no_argument, nullptr, 691 },
1447
  { "no-inst-no-entail", no_argument, nullptr, 692 },
1448
  { "inst-when-phase", required_argument, nullptr, 693 },
1449
  { "inst-when-strict-interleave", no_argument, nullptr, 694 },
1450
  { "no-inst-when-strict-interleave", no_argument, nullptr, 695 },
1451
  { "inst-when-tc-first", no_argument, nullptr, 696 },
1452
  { "no-inst-when-tc-first", no_argument, nullptr, 697 },
1453
  { "inst-when", required_argument, nullptr, 698 },
1454
  { "int-wf-ind", no_argument, nullptr, 699 },
1455
  { "no-int-wf-ind", no_argument, nullptr, 700 },
1456
  { "ite-dtt-split-quant", no_argument, nullptr, 701 },
1457
  { "no-ite-dtt-split-quant", no_argument, nullptr, 702 },
1458
  { "ite-lift-quant", required_argument, nullptr, 703 },
1459
  { "literal-matching", required_argument, nullptr, 704 },
1460
  { "macros-quant", no_argument, nullptr, 705 },
1461
  { "no-macros-quant", no_argument, nullptr, 706 },
1462
  { "macros-quant-mode", required_argument, nullptr, 707 },
1463
  { "mbqi-interleave", no_argument, nullptr, 708 },
1464
  { "no-mbqi-interleave", no_argument, nullptr, 709 },
1465
  { "mbqi-one-inst-per-round", no_argument, nullptr, 710 },
1466
  { "no-mbqi-one-inst-per-round", no_argument, nullptr, 711 },
1467
  { "mbqi", required_argument, nullptr, 712 },
1468
  { "miniscope-quant", no_argument, nullptr, 713 },
1469
  { "no-miniscope-quant", no_argument, nullptr, 714 },
1470
  { "miniscope-quant-fv", no_argument, nullptr, 715 },
1471
  { "no-miniscope-quant-fv", no_argument, nullptr, 716 },
1472
  { "multi-trigger-cache", no_argument, nullptr, 717 },
1473
  { "no-multi-trigger-cache", no_argument, nullptr, 718 },
1474
  { "multi-trigger-linear", no_argument, nullptr, 719 },
1475
  { "no-multi-trigger-linear", no_argument, nullptr, 720 },
1476
  { "multi-trigger-priority", no_argument, nullptr, 721 },
1477
  { "no-multi-trigger-priority", no_argument, nullptr, 722 },
1478
  { "multi-trigger-when-single", no_argument, nullptr, 723 },
1479
  { "no-multi-trigger-when-single", no_argument, nullptr, 724 },
1480
  { "partial-triggers", no_argument, nullptr, 725 },
1481
  { "no-partial-triggers", no_argument, nullptr, 726 },
1482
  { "pool-inst", no_argument, nullptr, 727 },
1483
  { "no-pool-inst", no_argument, nullptr, 728 },
1484
  { "pre-skolem-quant", no_argument, nullptr, 729 },
1485
  { "no-pre-skolem-quant", no_argument, nullptr, 730 },
1486
  { "pre-skolem-quant-agg", no_argument, nullptr, 731 },
1487
  { "no-pre-skolem-quant-agg", no_argument, nullptr, 732 },
1488
  { "pre-skolem-quant-nested", no_argument, nullptr, 733 },
1489
  { "no-pre-skolem-quant-nested", no_argument, nullptr, 734 },
1490
  { "prenex-quant-user", no_argument, nullptr, 735 },
1491
  { "no-prenex-quant-user", no_argument, nullptr, 736 },
1492
  { "prenex-quant", required_argument, nullptr, 737 },
1493
  { "purify-triggers", no_argument, nullptr, 738 },
1494
  { "no-purify-triggers", no_argument, nullptr, 739 },
1495
  { "qcf-all-conflict", no_argument, nullptr, 740 },
1496
  { "no-qcf-all-conflict", no_argument, nullptr, 741 },
1497
  { "qcf-eager-check-rd", no_argument, nullptr, 742 },
1498
  { "no-qcf-eager-check-rd", no_argument, nullptr, 743 },
1499
  { "qcf-eager-test", no_argument, nullptr, 744 },
1500
  { "no-qcf-eager-test", no_argument, nullptr, 745 },
1501
  { "qcf-nested-conflict", no_argument, nullptr, 746 },
1502
  { "no-qcf-nested-conflict", no_argument, nullptr, 747 },
1503
  { "qcf-skip-rd", no_argument, nullptr, 748 },
1504
  { "no-qcf-skip-rd", no_argument, nullptr, 749 },
1505
  { "qcf-tconstraint", no_argument, nullptr, 750 },
1506
  { "no-qcf-tconstraint", no_argument, nullptr, 751 },
1507
  { "qcf-vo-exp", no_argument, nullptr, 752 },
1508
  { "no-qcf-vo-exp", no_argument, nullptr, 753 },
1509
  { "quant-alpha-equiv", no_argument, nullptr, 754 },
1510
  { "no-quant-alpha-equiv", no_argument, nullptr, 755 },
1511
  { "quant-cf", no_argument, nullptr, 756 },
1512
  { "no-quant-cf", no_argument, nullptr, 757 },
1513
  { "quant-cf-mode", required_argument, nullptr, 758 },
1514
  { "quant-cf-when", required_argument, nullptr, 759 },
1515
  { "quant-dsplit-mode", required_argument, nullptr, 760 },
1516
  { "quant-fun-wd", no_argument, nullptr, 761 },
1517
  { "no-quant-fun-wd", no_argument, nullptr, 762 },
1518
  { "quant-ind", no_argument, nullptr, 763 },
1519
  { "no-quant-ind", no_argument, nullptr, 764 },
1520
  { "quant-rep-mode", required_argument, nullptr, 765 },
1521
  { "quant-split", no_argument, nullptr, 766 },
1522
  { "no-quant-split", no_argument, nullptr, 767 },
1523
  { "register-quant-body-terms", no_argument, nullptr, 768 },
1524
  { "no-register-quant-body-terms", no_argument, nullptr, 769 },
1525
  { "relational-triggers", no_argument, nullptr, 770 },
1526
  { "no-relational-triggers", no_argument, nullptr, 771 },
1527
  { "relevant-triggers", no_argument, nullptr, 772 },
1528
  { "no-relevant-triggers", no_argument, nullptr, 773 },
1529
  { "sygus", no_argument, nullptr, 774 },
1530
  { "no-sygus", no_argument, nullptr, 775 },
1531
  { "sygus-active-gen-cfactor", required_argument, nullptr, 776 },
1532
  { "sygus-active-gen", required_argument, nullptr, 777 },
1533
  { "sygus-add-const-grammar", no_argument, nullptr, 778 },
1534
  { "no-sygus-add-const-grammar", no_argument, nullptr, 779 },
1535
  { "sygus-arg-relevant", no_argument, nullptr, 780 },
1536
  { "no-sygus-arg-relevant", no_argument, nullptr, 781 },
1537
  { "sygus-auto-unfold", no_argument, nullptr, 782 },
1538
  { "no-sygus-auto-unfold", no_argument, nullptr, 783 },
1539
  { "sygus-bool-ite-return-const", no_argument, nullptr, 784 },
1540
  { "no-sygus-bool-ite-return-const", no_argument, nullptr, 785 },
1541
  { "sygus-core-connective", no_argument, nullptr, 786 },
1542
  { "no-sygus-core-connective", no_argument, nullptr, 787 },
1543
  { "sygus-crepair-abort", no_argument, nullptr, 788 },
1544
  { "no-sygus-crepair-abort", no_argument, nullptr, 789 },
1545
  { "sygus-eval-opt", no_argument, nullptr, 790 },
1546
  { "no-sygus-eval-opt", no_argument, nullptr, 791 },
1547
  { "sygus-eval-unfold", no_argument, nullptr, 792 },
1548
  { "no-sygus-eval-unfold", no_argument, nullptr, 793 },
1549
  { "sygus-eval-unfold-bool", no_argument, nullptr, 794 },
1550
  { "no-sygus-eval-unfold-bool", no_argument, nullptr, 795 },
1551
  { "sygus-expr-miner-check-timeout", required_argument, nullptr, 796 },
1552
  { "sygus-ext-rew", no_argument, nullptr, 797 },
1553
  { "no-sygus-ext-rew", no_argument, nullptr, 798 },
1554
  { "sygus-filter-sol-rev", no_argument, nullptr, 799 },
1555
  { "no-sygus-filter-sol-rev", no_argument, nullptr, 800 },
1556
  { "sygus-filter-sol", required_argument, nullptr, 801 },
1557
  { "sygus-grammar-cons", required_argument, nullptr, 802 },
1558
  { "sygus-grammar-norm", no_argument, nullptr, 803 },
1559
  { "no-sygus-grammar-norm", no_argument, nullptr, 804 },
1560
  { "sygus-inference", no_argument, nullptr, 805 },
1561
  { "no-sygus-inference", no_argument, nullptr, 806 },
1562
  { "sygus-inst", no_argument, nullptr, 807 },
1563
  { "no-sygus-inst", no_argument, nullptr, 808 },
1564
  { "sygus-inst-mode", required_argument, nullptr, 809 },
1565
  { "sygus-inst-scope", required_argument, nullptr, 810 },
1566
  { "sygus-inst-term-sel", required_argument, nullptr, 811 },
1567
  { "sygus-inv-templ-when-sg", no_argument, nullptr, 812 },
1568
  { "no-sygus-inv-templ-when-sg", no_argument, nullptr, 813 },
1569
  { "sygus-inv-templ", required_argument, nullptr, 814 },
1570
  { "sygus-min-grammar", no_argument, nullptr, 815 },
1571
  { "no-sygus-min-grammar", no_argument, nullptr, 816 },
1572
  { "sygus-pbe", no_argument, nullptr, 817 },
1573
  { "no-sygus-pbe", no_argument, nullptr, 818 },
1574
  { "sygus-pbe-multi-fair", no_argument, nullptr, 819 },
1575
  { "no-sygus-pbe-multi-fair", no_argument, nullptr, 820 },
1576
  { "sygus-pbe-multi-fair-diff", required_argument, nullptr, 821 },
1577
  { "sygus-qe-preproc", no_argument, nullptr, 822 },
1578
  { "no-sygus-qe-preproc", no_argument, nullptr, 823 },
1579
  { "sygus-query-gen", no_argument, nullptr, 824 },
1580
  { "no-sygus-query-gen", no_argument, nullptr, 825 },
1581
  { "sygus-query-gen-check", no_argument, nullptr, 826 },
1582
  { "no-sygus-query-gen-check", no_argument, nullptr, 827 },
1583
  { "sygus-query-gen-dump-files", required_argument, nullptr, 828 },
1584
  { "sygus-query-gen-thresh", required_argument, nullptr, 829 },
1585
  { "sygus-rec-fun", no_argument, nullptr, 830 },
1586
  { "no-sygus-rec-fun", no_argument, nullptr, 831 },
1587
  { "sygus-rec-fun-eval-limit", required_argument, nullptr, 832 },
1588
  { "sygus-repair-const", no_argument, nullptr, 833 },
1589
  { "no-sygus-repair-const", no_argument, nullptr, 834 },
1590
  { "sygus-repair-const-timeout", required_argument, nullptr, 835 },
1591
  { "sygus-rr", no_argument, nullptr, 836 },
1592
  { "no-sygus-rr", no_argument, nullptr, 837 },
1593
  { "sygus-rr-synth", no_argument, nullptr, 838 },
1594
  { "no-sygus-rr-synth", no_argument, nullptr, 839 },
1595
  { "sygus-rr-synth-accel", no_argument, nullptr, 840 },
1596
  { "no-sygus-rr-synth-accel", no_argument, nullptr, 841 },
1597
  { "sygus-rr-synth-check", no_argument, nullptr, 842 },
1598
  { "no-sygus-rr-synth-check", no_argument, nullptr, 843 },
1599
  { "sygus-rr-synth-filter-cong", no_argument, nullptr, 844 },
1600
  { "no-sygus-rr-synth-filter-cong", no_argument, nullptr, 845 },
1601
  { "sygus-rr-synth-filter-match", no_argument, nullptr, 846 },
1602
  { "no-sygus-rr-synth-filter-match", no_argument, nullptr, 847 },
1603
  { "sygus-rr-synth-filter-nl", no_argument, nullptr, 848 },
1604
  { "no-sygus-rr-synth-filter-nl", no_argument, nullptr, 849 },
1605
  { "sygus-rr-synth-filter-order", no_argument, nullptr, 850 },
1606
  { "no-sygus-rr-synth-filter-order", no_argument, nullptr, 851 },
1607
  { "sygus-rr-synth-input", no_argument, nullptr, 852 },
1608
  { "no-sygus-rr-synth-input", no_argument, nullptr, 853 },
1609
  { "sygus-rr-synth-input-nvars", required_argument, nullptr, 854 },
1610
  { "sygus-rr-synth-input-use-bool", no_argument, nullptr, 855 },
1611
  { "no-sygus-rr-synth-input-use-bool", no_argument, nullptr, 856 },
1612
  { "sygus-rr-synth-rec", no_argument, nullptr, 857 },
1613
  { "no-sygus-rr-synth-rec", no_argument, nullptr, 858 },
1614
  { "sygus-rr-verify", no_argument, nullptr, 859 },
1615
  { "no-sygus-rr-verify", no_argument, nullptr, 860 },
1616
  { "sygus-rr-verify-abort", no_argument, nullptr, 861 },
1617
  { "no-sygus-rr-verify-abort", no_argument, nullptr, 862 },
1618
  { "sygus-sample-fp-uniform", no_argument, nullptr, 863 },
1619
  { "no-sygus-sample-fp-uniform", no_argument, nullptr, 864 },
1620
  { "sygus-sample-grammar", no_argument, nullptr, 865 },
1621
  { "no-sygus-sample-grammar", no_argument, nullptr, 866 },
1622
  { "sygus-samples", required_argument, nullptr, 867 },
1623
  { "sygus-si-abort", no_argument, nullptr, 868 },
1624
  { "no-sygus-si-abort", no_argument, nullptr, 869 },
1625
  { "sygus-si-partial", no_argument, nullptr, 870 },
1626
  { "no-sygus-si-partial", no_argument, nullptr, 871 },
1627
  { "sygus-si-rcons-limit", required_argument, nullptr, 872 },
1628
  { "sygus-si-rcons", required_argument, nullptr, 873 },
1629
  { "sygus-si-reconstruct-const", no_argument, nullptr, 874 },
1630
  { "no-sygus-si-reconstruct-const", no_argument, nullptr, 875 },
1631
  { "sygus-si", required_argument, nullptr, 876 },
1632
  { "sygus-stream", no_argument, nullptr, 877 },
1633
  { "no-sygus-stream", no_argument, nullptr, 878 },
1634
  { "sygus-templ-embed-grammar", no_argument, nullptr, 879 },
1635
  { "no-sygus-templ-embed-grammar", no_argument, nullptr, 880 },
1636
  { "sygus-unif-cond-independent-no-repeat-sol", no_argument, nullptr, 881 },
1637
  { "no-sygus-unif-cond-independent-no-repeat-sol", no_argument, nullptr, 882 },
1638
  { "sygus-unif-pi", required_argument, nullptr, 883 },
1639
  { "sygus-unif-shuffle-cond", no_argument, nullptr, 884 },
1640
  { "no-sygus-unif-shuffle-cond", no_argument, nullptr, 885 },
1641
  { "sygus-verify-inst-max-rounds", required_argument, nullptr, 886 },
1642
  { "term-db-cd", no_argument, nullptr, 887 },
1643
  { "no-term-db-cd", no_argument, nullptr, 888 },
1644
  { "term-db-mode", required_argument, nullptr, 889 },
1645
  { "trigger-active-sel", required_argument, nullptr, 890 },
1646
  { "trigger-sel", required_argument, nullptr, 891 },
1647
  { "user-pat", required_argument, nullptr, 892 },
1648
  { "var-elim-quant", no_argument, nullptr, 893 },
1649
  { "no-var-elim-quant", no_argument, nullptr, 894 },
1650
  { "var-ineq-elim-quant", no_argument, nullptr, 895 },
1651
  { "no-var-ineq-elim-quant", no_argument, nullptr, 896 },
1652
  { "sep-check-neg", no_argument, nullptr, 897 },
1653
  { "no-sep-check-neg", no_argument, nullptr, 898 },
1654
  { "sep-child-refine", no_argument, nullptr, 899 },
1655
  { "no-sep-child-refine", no_argument, nullptr, 900 },
1656
  { "sep-deq-c", no_argument, nullptr, 901 },
1657
  { "no-sep-deq-c", no_argument, nullptr, 902 },
1658
  { "sep-exp", no_argument, nullptr, 903 },
1659
  { "no-sep-exp", no_argument, nullptr, 904 },
1660
  { "sep-min-refine", no_argument, nullptr, 905 },
1661
  { "no-sep-min-refine", no_argument, nullptr, 906 },
1662
  { "sep-pre-skolem-emp", no_argument, nullptr, 907 },
1663
  { "no-sep-pre-skolem-emp", no_argument, nullptr, 908 },
1664
  { "sets-ext", no_argument, nullptr, 909 },
1665
  { "no-sets-ext", no_argument, nullptr, 910 },
1666
  { "sets-infer-as-lemmas", no_argument, nullptr, 911 },
1667
  { "no-sets-infer-as-lemmas", no_argument, nullptr, 912 },
1668
  { "sets-proxy-lemmas", no_argument, nullptr, 913 },
1669
  { "no-sets-proxy-lemmas", no_argument, nullptr, 914 },
1670
  { "abstract-values", no_argument, nullptr, 915 },
1671
  { "no-abstract-values", no_argument, nullptr, 916 },
1672
  { "ackermann", no_argument, nullptr, 917 },
1673
  { "no-ackermann", no_argument, nullptr, 918 },
1674
  { "block-models", required_argument, nullptr, 919 },
1675
  { "bvand-integer-granularity", required_argument, nullptr, 920 },
1676
  { "check-abducts", no_argument, nullptr, 921 },
1677
  { "no-check-abducts", no_argument, nullptr, 922 },
1678
  { "check-interpols", no_argument, nullptr, 923 },
1679
  { "no-check-interpols", no_argument, nullptr, 924 },
1680
  { "check-models", no_argument, nullptr, 925 },
1681
  { "no-check-models", no_argument, nullptr, 926 },
1682
  { "check-proofs", no_argument, nullptr, 927 },
1683
  { "no-check-proofs", no_argument, nullptr, 928 },
1684
  { "check-synth-sol", no_argument, nullptr, 929 },
1685
  { "no-check-synth-sol", no_argument, nullptr, 930 },
1686
  { "check-unsat-cores", no_argument, nullptr, 931 },
1687
  { "no-check-unsat-cores", no_argument, nullptr, 932 },
1688
  { "debug-check-models", no_argument, nullptr, 933 },
1689
  { "no-debug-check-models", no_argument, nullptr, 934 },
1690
  { "dump-to", required_argument, nullptr, 935 },
1691
  { "dump", required_argument, nullptr, 936 },
1692
  { "early-ite-removal", no_argument, nullptr, 937 },
1693
  { "no-early-ite-removal", no_argument, nullptr, 938 },
1694
  { "expand-definitions", no_argument, nullptr, 939 },
1695
  { "no-expand-definitions", no_argument, nullptr, 940 },
1696
  { "ext-rew-prep", no_argument, nullptr, 941 },
1697
  { "no-ext-rew-prep", no_argument, nullptr, 942 },
1698
  { "ext-rew-prep-agg", no_argument, nullptr, 943 },
1699
  { "no-ext-rew-prep-agg", no_argument, nullptr, 944 },
1700
  { "foreign-theory-rewrite", no_argument, nullptr, 945 },
1701
  { "no-foreign-theory-rewrite", no_argument, nullptr, 946 },
1702
  { "iand-mode", required_argument, nullptr, 947 },
1703
  { "interactive-mode", no_argument, nullptr, 948 },
1704
  { "no-interactive-mode", no_argument, nullptr, 949 },
1705
  { "ite-simp", no_argument, nullptr, 950 },
1706
  { "no-ite-simp", no_argument, nullptr, 951 },
1707
  { "learned-rewrite", no_argument, nullptr, 952 },
1708
  { "no-learned-rewrite", no_argument, nullptr, 953 },
1709
  { "minimal-unsat-cores", no_argument, nullptr, 954 },
1710
  { "no-minimal-unsat-cores", no_argument, nullptr, 955 },
1711
  { "model-cores", required_argument, nullptr, 956 },
1712
  { "model-u-print", required_argument, nullptr, 957 },
1713
  { "model-uninterp-print", required_argument, nullptr, 958 },
1714
  { "model-witness-value", no_argument, nullptr, 959 },
1715
  { "no-model-witness-value", no_argument, nullptr, 960 },
1716
  { "on-repeat-ite-simp", no_argument, nullptr, 961 },
1717
  { "no-on-repeat-ite-simp", no_argument, nullptr, 962 },
1718
  { "produce-abducts", no_argument, nullptr, 963 },
1719
  { "no-produce-abducts", no_argument, nullptr, 964 },
1720
  { "produce-assertions", no_argument, nullptr, 965 },
1721
  { "no-produce-assertions", no_argument, nullptr, 966 },
1722
  { "produce-assignments", no_argument, nullptr, 967 },
1723
  { "no-produce-assignments", no_argument, nullptr, 968 },
1724
  { "produce-interpols", required_argument, nullptr, 969 },
1725
  { "produce-models", no_argument, nullptr, 970 },
1726
  { "no-produce-models", no_argument, nullptr, 971 },
1727
  { "produce-proofs", no_argument, nullptr, 972 },
1728
  { "no-produce-proofs", no_argument, nullptr, 973 },
1729
  { "produce-unsat-assumptions", no_argument, nullptr, 974 },
1730
  { "no-produce-unsat-assumptions", no_argument, nullptr, 975 },
1731
  { "produce-unsat-cores", no_argument, nullptr, 976 },
1732
  { "no-produce-unsat-cores", no_argument, nullptr, 977 },
1733
  { "repeat-simp", no_argument, nullptr, 978 },
1734
  { "no-repeat-simp", no_argument, nullptr, 979 },
1735
  { "simp-ite-compress", no_argument, nullptr, 980 },
1736
  { "no-simp-ite-compress", no_argument, nullptr, 981 },
1737
  { "simp-ite-hunt-zombies", required_argument, nullptr, 982 },
1738
  { "simp-with-care", no_argument, nullptr, 983 },
1739
  { "no-simp-with-care", no_argument, nullptr, 984 },
1740
  { "simplification", required_argument, nullptr, 985 },
1741
  { "simplification-mode", required_argument, nullptr, 986 },
1742
  { "solve-bv-as-int", required_argument, nullptr, 987 },
1743
  { "solve-int-as-bv", required_argument, nullptr, 988 },
1744
  { "solve-real-as-int", no_argument, nullptr, 989 },
1745
  { "no-solve-real-as-int", no_argument, nullptr, 990 },
1746
  { "sort-inference", no_argument, nullptr, 991 },
1747
  { "no-sort-inference", no_argument, nullptr, 992 },
1748
  { "static-learning", no_argument, nullptr, 993 },
1749
  { "no-static-learning", no_argument, nullptr, 994 },
1750
  { "sygus-out", required_argument, nullptr, 995 },
1751
  { "sygus-print-callbacks", no_argument, nullptr, 996 },
1752
  { "no-sygus-print-callbacks", no_argument, nullptr, 997 },
1753
  { "unconstrained-simp", no_argument, nullptr, 998 },
1754
  { "no-unconstrained-simp", no_argument, nullptr, 999 },
1755
  { "unsat-cores-mode", required_argument, nullptr, 1000 },
1756
  { "re-elim", no_argument, nullptr, 1001 },
1757
  { "no-re-elim", no_argument, nullptr, 1002 },
1758
  { "re-elim-agg", no_argument, nullptr, 1003 },
1759
  { "no-re-elim-agg", no_argument, nullptr, 1004 },
1760
  { "re-inter-mode", required_argument, nullptr, 1005 },
1761
  { "strings-check-entail-len", no_argument, nullptr, 1006 },
1762
  { "no-strings-check-entail-len", no_argument, nullptr, 1007 },
1763
  { "strings-eager", no_argument, nullptr, 1008 },
1764
  { "no-strings-eager", no_argument, nullptr, 1009 },
1765
  { "strings-eager-eval", no_argument, nullptr, 1010 },
1766
  { "no-strings-eager-eval", no_argument, nullptr, 1011 },
1767
  { "strings-eager-len", no_argument, nullptr, 1012 },
1768
  { "no-strings-eager-len", no_argument, nullptr, 1013 },
1769
  { "strings-exp", no_argument, nullptr, 1014 },
1770
  { "no-strings-exp", no_argument, nullptr, 1015 },
1771
  { "strings-ff", no_argument, nullptr, 1016 },
1772
  { "no-strings-ff", no_argument, nullptr, 1017 },
1773
  { "strings-fmf", no_argument, nullptr, 1018 },
1774
  { "no-strings-fmf", no_argument, nullptr, 1019 },
1775
  { "strings-guess-model", no_argument, nullptr, 1020 },
1776
  { "no-strings-guess-model", no_argument, nullptr, 1021 },
1777
  { "strings-infer-as-lemmas", no_argument, nullptr, 1022 },
1778
  { "no-strings-infer-as-lemmas", no_argument, nullptr, 1023 },
1779
  { "strings-infer-sym", no_argument, nullptr, 1024 },
1780
  { "no-strings-infer-sym", no_argument, nullptr, 1025 },
1781
  { "strings-lazy-pp", no_argument, nullptr, 1026 },
1782
  { "no-strings-lazy-pp", no_argument, nullptr, 1027 },
1783
  { "strings-len-norm", no_argument, nullptr, 1028 },
1784
  { "no-strings-len-norm", no_argument, nullptr, 1029 },
1785
  { "strings-lprop-csp", no_argument, nullptr, 1030 },
1786
  { "no-strings-lprop-csp", no_argument, nullptr, 1031 },
1787
  { "strings-min-prefix-explain", no_argument, nullptr, 1032 },
1788
  { "no-strings-min-prefix-explain", no_argument, nullptr, 1033 },
1789
  { "strings-process-loop-mode", required_argument, nullptr, 1034 },
1790
  { "strings-rexplain-lemmas", no_argument, nullptr, 1035 },
1791
  { "no-strings-rexplain-lemmas", no_argument, nullptr, 1036 },
1792
  { "strings-unified-vspt", no_argument, nullptr, 1037 },
1793
  { "no-strings-unified-vspt", no_argument, nullptr, 1038 },
1794
  { "assign-function-values", no_argument, nullptr, 1039 },
1795
  { "no-assign-function-values", no_argument, nullptr, 1040 },
1796
  { "condense-function-values", no_argument, nullptr, 1041 },
1797
  { "no-condense-function-values", no_argument, nullptr, 1042 },
1798
  { "ee-mode", required_argument, nullptr, 1043 },
1799
  { "relevance-filter", no_argument, nullptr, 1044 },
1800
  { "no-relevance-filter", no_argument, nullptr, 1045 },
1801
  { "tc-mode", required_argument, nullptr, 1046 },
1802
  { "theoryof-mode", required_argument, nullptr, 1047 },
1803
  { "symmetry-breaker", no_argument, nullptr, 1048 },
1804
  { "uf-symmetry-breaker", no_argument, nullptr, 1049 },
1805
  { "no-symmetry-breaker", no_argument, nullptr, 1050 },
1806
  { "no-uf-symmetry-breaker", no_argument, nullptr, 1051 },
1807
  { "uf-ho", no_argument, nullptr, 1052 },
1808
  { "no-uf-ho", no_argument, nullptr, 1053 },
1809
  { "uf-ho-ext", no_argument, nullptr, 1054 },
1810
  { "no-uf-ho-ext", no_argument, nullptr, 1055 },
1811
  { "uf-ss-abort-card", required_argument, nullptr, 1056 },
1812
  { "uf-ss-fair", no_argument, nullptr, 1057 },
1813
  { "no-uf-ss-fair", no_argument, nullptr, 1058 },
1814
  { "uf-ss-fair-monotone", no_argument, nullptr, 1059 },
1815
  { "no-uf-ss-fair-monotone", no_argument, nullptr, 1060 },
1816
  { "uf-ss-totality-limited", required_argument, nullptr, 1061 },
1817
  { "uf-ss-totality-sym-break", no_argument, nullptr, 1062 },
1818
  { "no-uf-ss-totality-sym-break", no_argument, nullptr, 1063 },
1819
  { "uf-ss", required_argument, nullptr, 1064 },
1820
  {nullptr, no_argument, nullptr, '\0'}
1821
};
1822
// clang-format on
1823
1824
std::string suggestCommandLineOptions(const std::string& optionName)
1825
{
1826
  DidYouMean didYouMean;
1827
1828
  const char* opt;
1829
  for(size_t i = 0; (opt = cmdlineOptions[i].name) != nullptr; ++i) {
1830
    didYouMean.addWord(std::string("--") + cmdlineOptions[i].name);
1831
  }
1832
1833
  return didYouMean.getMatchAsString(optionName.substr(0, optionName.find('=')));
1834
}
1835
1836
8780
void parseInternal(api::Solver& solver, int argc,
1837
                                    char* argv[],
1838
                                    std::vector<std::string>& nonoptions)
1839
{
1840
8780
  Assert(argv != nullptr);
1841
8780
  if(Debug.isOn("options")) {
1842
    Debug("options") << "starting a new parseInternal with "
1843
                     << argc << " arguments" << std::endl;
1844
    for( int i = 0; i < argc ; i++ ){
1845
      Assert(argv[i] != NULL);
1846
      Debug("options") << "  argv[" << i << "] = " << argv[i] << std::endl;
1847
    }
1848
  }
1849
1850
  // Reset getopt(), in the case of multiple calls to parse().
1851
  // This can be = 1 in newer GNU getopt, but older (< 2007) require = 0.
1852
8780
  optind = 0;
1853
#if HAVE_DECL_OPTRESET
1854
  optreset = 1; // on BSD getopt() (e.g. Mac OS), might need this
1855
#endif /* HAVE_DECL_OPTRESET */
1856
1857
  // We must parse the binary name, which is manually ignored below. Setting
1858
  // this to 1 leads to incorrect behavior on some platforms.
1859
8780
  int main_optind = 0;
1860
  int old_optind;
1861
1862
1863
  while(true) { // Repeat Forever
1864
1865
24253
    optopt = 0;
1866
1867
24253
    optind = main_optind;
1868
24253
    old_optind = main_optind;
1869
1870
    // If we encounter an element that is not at zero and does not start
1871
    // with a "-", this is a non-option. We consume this element as a
1872
    // non-option.
1873
39726
    if (main_optind > 0 && main_optind < argc &&
1874
9313
        argv[main_optind][0] != '-') {
1875
12320
      Debug("options") << "enqueueing " << argv[main_optind]
1876
6160
                       << " as a non-option." << std::endl;
1877
6160
      nonoptions.push_back(argv[main_optind]);
1878
6160
      ++main_optind;
1879
13697
      continue;
1880
    }
1881
1882
1883
36186
    Debug("options") << "[ before, main_optind == " << main_optind << " ]"
1884
18093
                     << std::endl;
1885
18093
    Debug("options") << "[ before, optind == " << optind << " ]" << std::endl;
1886
36186
    Debug("options") << "[ argc == " << argc << ", argv == " << argv << " ]"
1887
18093
                     << std::endl;
1888
    // clang-format off
1889
18093
    int c = getopt_long(argc, argv,
1890
                        "+:d:iL:o:qt:vhs:Vm",
1891
18093
                        cmdlineOptions, NULL);
1892
    // clang-format on
1893
1894
18093
    main_optind = optind;
1895
1896
36186
    Debug("options") << "[ got " << int(c) << " (" << char(c) << ") ]"
1897
18093
                     << "[ next option will be at pos: " << optind << " ]"
1898
18093
                     << std::endl;
1899
1900
    // The initial getopt_long call should always determine that argv[0]
1901
    // is not an option and returns -1. We always manually advance beyond
1902
    // this element.
1903
19470
    if ( old_optind == 0  && c == -1 ) {
1904
1377
      Assert(main_optind > 0);
1905
1377
      continue;
1906
    }
1907
1908
16716
    if ( c == -1 ) {
1909
6160
      if(Debug.isOn("options")) {
1910
        Debug("options") << "done with option parsing" << std::endl;
1911
        for(int index = optind; index < argc; ++index) {
1912
          Debug("options") << "remaining " << argv[index] << std::endl;
1913
        }
1914
      }
1915
12320
      break;
1916
    }
1917
1918
18493
    std::string option = argv[old_optind == 0 ? 1 : old_optind];
1919
18493
    std::string optionarg = (optarg == nullptr) ? "" : optarg;
1920
1921
21112
    Debug("preemptGetopt") << "processing option " << c
1922
10556
                           << " (`" << char(c) << "'), " << option << std::endl;
1923
1924
    // clang-format off
1925
10556
    switch(c)
1926
    {
1927
    case 256: // --approx-branch-depth=N
1928
      solver.setOption("approx-branch-depth", optionarg);
1929
      break;
1930
2
    case 257: // --arith-brab
1931
2
      solver.setOption("arith-brab", "true");
1932
2
      break;
1933
2
    case 258: // --no-arith-brab
1934
2
      solver.setOption("arith-brab", "false");
1935
2
      break;
1936
    case 259: // --arith-cong-man
1937
      solver.setOption("arith-cong-man", "true");
1938
      break;
1939
    case 260: // --no-arith-cong-man
1940
      solver.setOption("arith-cong-man", "false");
1941
      break;
1942
6
    case 261: // --arith-eq-solver
1943
6
      solver.setOption("arith-eq-solver", "true");
1944
6
      break;
1945
    case 262: // --no-arith-eq-solver
1946
      solver.setOption("arith-eq-solver", "false");
1947
      break;
1948
    case 263: // --arith-no-partial-fun
1949
      solver.setOption("arith-no-partial-fun", "true");
1950
      break;
1951
    case 264: // --no-arith-no-partial-fun
1952
      solver.setOption("arith-no-partial-fun", "false");
1953
      break;
1954
    case 265: // --arith-prop-clauses=N
1955
      solver.setOption("arith-prop-clauses", optionarg);
1956
      break;
1957
    case 266: // --arith-prop=MODE
1958
      solver.setOption("arith-prop", optionarg);
1959
      break;
1960
4
    case 267: // --arith-rewrite-equalities
1961
4
      solver.setOption("arith-rewrite-equalities", "true");
1962
4
      break;
1963
    case 268: // --no-arith-rewrite-equalities
1964
      solver.setOption("arith-rewrite-equalities", "false");
1965
      break;
1966
    case 269: // --collect-pivot-stats
1967
      solver.setOption("collect-pivot-stats", "true");
1968
      break;
1969
    case 270: // --no-collect-pivot-stats
1970
      solver.setOption("collect-pivot-stats", "false");
1971
      break;
1972
    case 271: // --cut-all-bounded
1973
      solver.setOption("cut-all-bounded", "true");
1974
      break;
1975
    case 272: // --no-cut-all-bounded
1976
      solver.setOption("cut-all-bounded", "false");
1977
      break;
1978
    case 273: // --dio-decomps
1979
      solver.setOption("dio-decomps", "true");
1980
      break;
1981
    case 274: // --no-dio-decomps
1982
      solver.setOption("dio-decomps", "false");
1983
      break;
1984
    case 275: // --dio-repeat
1985
      solver.setOption("dio-repeat", "true");
1986
      break;
1987
    case 276: // --no-dio-repeat
1988
      solver.setOption("dio-repeat", "false");
1989
      break;
1990
    case 277: // --dio-solver
1991
      solver.setOption("dio-solver", "true");
1992
      break;
1993
    case 278: // --no-dio-solver
1994
      solver.setOption("dio-solver", "false");
1995
      break;
1996
    case 279: // --dio-turns=N
1997
      solver.setOption("dio-turns", optionarg);
1998
      break;
1999
    case 280: // --error-selection-rule=RULE
2000
      solver.setOption("error-selection-rule", optionarg);
2001
      break;
2002
    case 281: // --fc-penalties
2003
      solver.setOption("fc-penalties", "true");
2004
      break;
2005
    case 282: // --no-fc-penalties
2006
      solver.setOption("fc-penalties", "false");
2007
      break;
2008
    case 283: // --heuristic-pivots=N
2009
      solver.setOption("heuristic-pivots", optionarg);
2010
      break;
2011
    case 284: // --lemmas-on-replay-failure
2012
      solver.setOption("lemmas-on-replay-failure", "true");
2013
      break;
2014
    case 285: // --no-lemmas-on-replay-failure
2015
      solver.setOption("lemmas-on-replay-failure", "false");
2016
      break;
2017
    case 286: // --maxCutsInContext=N
2018
      solver.setOption("maxCutsInContext", optionarg);
2019
      break;
2020
8
    case 287: // --miplib-trick
2021
8
      solver.setOption("miplib-trick", "true");
2022
8
      break;
2023
    case 288: // --no-miplib-trick
2024
      solver.setOption("miplib-trick", "false");
2025
      break;
2026
    case 289: // --miplib-trick-subs=N
2027
      solver.setOption("miplib-trick-subs", optionarg);
2028
      break;
2029
    case 290: // --new-prop
2030
      solver.setOption("new-prop", "true");
2031
      break;
2032
8
    case 291: // --no-new-prop
2033
8
      solver.setOption("new-prop", "false");
2034
8
      break;
2035
5
    case 292: // --nl-cad
2036
5
      solver.setOption("nl-cad", "true");
2037
5
      break;
2038
    case 293: // --no-nl-cad
2039
      solver.setOption("nl-cad", "false");
2040
      break;
2041
    case 294: // --nl-cad-initial
2042
      solver.setOption("nl-cad-initial", "true");
2043
      break;
2044
    case 295: // --no-nl-cad-initial
2045
      solver.setOption("nl-cad-initial", "false");
2046
      break;
2047
    case 296: // --nl-cad-lift=MODE
2048
      solver.setOption("nl-cad-lift", optionarg);
2049
      break;
2050
    case 297: // --nl-cad-proj=MODE
2051
      solver.setOption("nl-cad-proj", optionarg);
2052
      break;
2053
    case 298: // --nl-ext-ent-conf
2054
      solver.setOption("nl-ext-ent-conf", "true");
2055
      break;
2056
    case 299: // --no-nl-ext-ent-conf
2057
      solver.setOption("nl-ext-ent-conf", "false");
2058
      break;
2059
    case 300: // --nl-ext-factor
2060
      solver.setOption("nl-ext-factor", "true");
2061
      break;
2062
    case 301: // --no-nl-ext-factor
2063
      solver.setOption("nl-ext-factor", "false");
2064
      break;
2065
    case 302: // --nl-ext-inc-prec
2066
      solver.setOption("nl-ext-inc-prec", "true");
2067
      break;
2068
2
    case 303: // --no-nl-ext-inc-prec
2069
2
      solver.setOption("nl-ext-inc-prec", "false");
2070
2
      break;
2071
2
    case 304: // --nl-ext-purify
2072
2
      solver.setOption("nl-ext-purify", "true");
2073
2
      break;
2074
    case 305: // --no-nl-ext-purify
2075
      solver.setOption("nl-ext-purify", "false");
2076
      break;
2077
    case 306: // --nl-ext-rbound
2078
      solver.setOption("nl-ext-rbound", "true");
2079
      break;
2080
    case 307: // --no-nl-ext-rbound
2081
      solver.setOption("nl-ext-rbound", "false");
2082
      break;
2083
    case 308: // --nl-ext-rewrite
2084
      solver.setOption("nl-ext-rewrite", "true");
2085
      break;
2086
    case 309: // --no-nl-ext-rewrite
2087
      solver.setOption("nl-ext-rewrite", "false");
2088
      break;
2089
    case 310: // --nl-ext-split-zero
2090
      solver.setOption("nl-ext-split-zero", "true");
2091
      break;
2092
    case 311: // --no-nl-ext-split-zero
2093
      solver.setOption("nl-ext-split-zero", "false");
2094
      break;
2095
    case 312: // --nl-ext-tf-taylor-deg=N
2096
      solver.setOption("nl-ext-tf-taylor-deg", optionarg);
2097
      break;
2098
39
    case 313: // --nl-ext-tf-tplanes
2099
39
      solver.setOption("nl-ext-tf-tplanes", "true");
2100
39
      break;
2101
2
    case 314: // --no-nl-ext-tf-tplanes
2102
2
      solver.setOption("nl-ext-tf-tplanes", "false");
2103
2
      break;
2104
42
    case 315: // --nl-ext-tplanes
2105
42
      solver.setOption("nl-ext-tplanes", "true");
2106
42
      break;
2107
    case 316: // --no-nl-ext-tplanes
2108
      solver.setOption("nl-ext-tplanes", "false");
2109
      break;
2110
    case 317: // --nl-ext-tplanes-interleave
2111
      solver.setOption("nl-ext-tplanes-interleave", "true");
2112
      break;
2113
    case 318: // --no-nl-ext-tplanes-interleave
2114
      solver.setOption("nl-ext-tplanes-interleave", "false");
2115
      break;
2116
126
    case 319: // --nl-ext=MODE
2117
126
      solver.setOption("nl-ext", optionarg);
2118
126
      break;
2119
2
    case 320: // --nl-icp
2120
2
      solver.setOption("nl-icp", "true");
2121
2
      break;
2122
    case 321: // --no-nl-icp
2123
      solver.setOption("nl-icp", "false");
2124
      break;
2125
6
    case 322: // --nl-rlv=MODE
2126
6
      solver.setOption("nl-rlv", optionarg);
2127
6
      break;
2128
2
    case 323: // --pb-rewrites
2129
2
      solver.setOption("pb-rewrites", "true");
2130
2
      break;
2131
    case 324: // --no-pb-rewrites
2132
      solver.setOption("pb-rewrites", "false");
2133
      break;
2134
    case 325: // --pivot-threshold=N
2135
      solver.setOption("pivot-threshold", optionarg);
2136
      break;
2137
    case 326: // --pp-assert-max-sub-size=N
2138
      solver.setOption("pp-assert-max-sub-size", optionarg);
2139
      break;
2140
    case 327: // --prop-row-length=N
2141
      solver.setOption("prop-row-length", optionarg);
2142
      break;
2143
    case 328: // --replay-early-close-depth=N
2144
      solver.setOption("replay-early-close-depth", optionarg);
2145
      break;
2146
    case 329: // --replay-failure-penalty=N
2147
      solver.setOption("replay-failure-penalty", optionarg);
2148
      break;
2149
    case 330: // --replay-lemma-reject-cut=N
2150
      solver.setOption("replay-lemma-reject-cut", optionarg);
2151
      break;
2152
    case 331: // --replay-num-err-penalty=N
2153
      solver.setOption("replay-num-err-penalty", optionarg);
2154
      break;
2155
    case 332: // --replay-reject-cut=N
2156
      solver.setOption("replay-reject-cut", optionarg);
2157
      break;
2158
    case 333: // --replay-soi-major-threshold-pen=N
2159
      solver.setOption("replay-soi-major-threshold-pen", optionarg);
2160
      break;
2161
    case 334: // --replay-soi-major-threshold=T
2162
      solver.setOption("replay-soi-major-threshold", optionarg);
2163
      break;
2164
    case 335: // --replay-soi-minor-threshold-pen=N
2165
      solver.setOption("replay-soi-minor-threshold-pen", optionarg);
2166
      break;
2167
    case 336: // --replay-soi-minor-threshold=T
2168
      solver.setOption("replay-soi-minor-threshold", optionarg);
2169
      break;
2170
    case 337: // --restrict-pivots
2171
      solver.setOption("restrict-pivots", "true");
2172
      break;
2173
    case 338: // --no-restrict-pivots
2174
      solver.setOption("restrict-pivots", "false");
2175
      break;
2176
    case 339: // --revert-arith-models-on-unsat
2177
      solver.setOption("revert-arith-models-on-unsat", "true");
2178
      break;
2179
    case 340: // --no-revert-arith-models-on-unsat
2180
      solver.setOption("revert-arith-models-on-unsat", "false");
2181
      break;
2182
    case 341: // --rr-turns=N
2183
      solver.setOption("rr-turns", optionarg);
2184
      break;
2185
    case 342: // --se-solve-int
2186
      solver.setOption("se-solve-int", "true");
2187
      break;
2188
    case 343: // --no-se-solve-int
2189
      solver.setOption("se-solve-int", "false");
2190
      break;
2191
    case 344: // --simplex-check-period=N
2192
      solver.setOption("simplex-check-period", optionarg);
2193
      break;
2194
    case 345: // --soi-qe
2195
      solver.setOption("soi-qe", "true");
2196
      break;
2197
    case 346: // --no-soi-qe
2198
      solver.setOption("soi-qe", "false");
2199
      break;
2200
    case 347: // --standard-effort-variable-order-pivots=N
2201
      solver.setOption("standard-effort-variable-order-pivots", optionarg);
2202
      break;
2203
    case 348: // --unate-lemmas=MODE
2204
      solver.setOption("unate-lemmas", optionarg);
2205
      break;
2206
    case 349: // --use-approx
2207
      solver.setOption("use-approx", "true");
2208
      break;
2209
    case 350: // --no-use-approx
2210
      solver.setOption("use-approx", "false");
2211
      break;
2212
    case 351: // --use-fcsimplex
2213
      solver.setOption("use-fcsimplex", "true");
2214
      break;
2215
    case 352: // --no-use-fcsimplex
2216
      solver.setOption("use-fcsimplex", "false");
2217
      break;
2218
    case 353: // --use-soi
2219
      solver.setOption("use-soi", "true");
2220
      break;
2221
    case 354: // --no-use-soi
2222
      solver.setOption("use-soi", "false");
2223
      break;
2224
    case 355: // --arrays-config=N
2225
      solver.setOption("arrays-config", optionarg);
2226
      break;
2227
    case 356: // --arrays-eager-index
2228
      solver.setOption("arrays-eager-index", "true");
2229
      break;
2230
    case 357: // --no-arrays-eager-index
2231
      solver.setOption("arrays-eager-index", "false");
2232
      break;
2233
    case 358: // --arrays-eager-lemmas
2234
      solver.setOption("arrays-eager-lemmas", "true");
2235
      break;
2236
    case 359: // --no-arrays-eager-lemmas
2237
      solver.setOption("arrays-eager-lemmas", "false");
2238
      break;
2239
3
    case 360: // --arrays-exp
2240
3
      solver.setOption("arrays-exp", "true");
2241
3
      break;
2242
    case 361: // --no-arrays-exp
2243
      solver.setOption("arrays-exp", "false");
2244
      break;
2245
    case 362: // --arrays-model-based
2246
      solver.setOption("arrays-model-based", "true");
2247
      break;
2248
    case 363: // --no-arrays-model-based
2249
      solver.setOption("arrays-model-based", "false");
2250
      break;
2251
    case 364: // --arrays-optimize-linear
2252
      solver.setOption("arrays-optimize-linear", "true");
2253
      break;
2254
    case 365: // --no-arrays-optimize-linear
2255
      solver.setOption("arrays-optimize-linear", "false");
2256
      break;
2257
    case 366: // --arrays-prop=N
2258
      solver.setOption("arrays-prop", optionarg);
2259
      break;
2260
    case 367: // --arrays-reduce-sharing
2261
      solver.setOption("arrays-reduce-sharing", "true");
2262
      break;
2263
    case 368: // --no-arrays-reduce-sharing
2264
      solver.setOption("arrays-reduce-sharing", "false");
2265
      break;
2266
    case 369: // --arrays-weak-equiv
2267
      solver.setOption("arrays-weak-equiv", "true");
2268
      break;
2269
    case 370: // --no-arrays-weak-equiv
2270
      solver.setOption("arrays-weak-equiv", "false");
2271
      break;
2272
    case 'd': // -d
2273
    case 371: // --debug=TAG
2274
      solver.setOption("debug", optionarg);
2275
      break;
2276
    case 372: // --err=erroutput
2277
    case 373: // --diagnostic-output-channel
2278
      solver.setOption("err", optionarg);
2279
      break;
2280
    case 374: // --in=input
2281
      solver.setOption("in", optionarg);
2282
      break;
2283
664
    case 'i': // -i
2284
    case 375: // --incremental
2285
664
      solver.setOption("incremental", "true");
2286
664
      break;
2287
    case 376: // --no-incremental
2288
      solver.setOption("incremental", "false");
2289
      break;
2290
227
    case 'L': // -L
2291
    case 377: // --lang=LANG
2292
    case 378: // --input-language
2293
227
      solver.setOption("lang", optionarg);
2294
227
      break;
2295
    case 379: // --language-help
2296
      solver.setOption("language-help", "true");
2297
      break;
2298
    case 380: // --no-language-help
2299
      solver.setOption("language-help", "false");
2300
      break;
2301
    case 381: // --out=output
2302
    case 382: // --regular-output-channel
2303
      solver.setOption("out", optionarg);
2304
      break;
2305
    case 383: // --output-lang=LANG
2306
    case 384: // --output-language
2307
      solver.setOption("output-lang", optionarg);
2308
      break;
2309
3
    case 'o': // -o
2310
    case 385: // --output=TAG
2311
3
      solver.setOption("output", optionarg);
2312
3
      break;
2313
    case 386: // --parse-only
2314
      solver.setOption("parse-only", "true");
2315
      break;
2316
    case 387: // --no-parse-only
2317
      solver.setOption("parse-only", "false");
2318
      break;
2319
3
    case 388: // --preprocess-only
2320
3
      solver.setOption("preprocess-only", "true");
2321
3
      break;
2322
    case 389: // --no-preprocess-only
2323
      solver.setOption("preprocess-only", "false");
2324
      break;
2325
2
    case 390: // --print-success
2326
2
      solver.setOption("print-success", "true");
2327
2
      break;
2328
    case 391: // --no-print-success
2329
      solver.setOption("print-success", "false");
2330
      break;
2331
190
    case 'q': // -q
2332
    case 392: // --quiet
2333
190
      solver.setOption("quiet", "");
2334
190
      break;
2335
    case 393: // --rlimit-per=N
2336
    case 394: // --reproducible-resource-limit
2337
      solver.setOption("rlimit-per", optionarg);
2338
      break;
2339
    case 395: // --rlimit=N
2340
      solver.setOption("rlimit", optionarg);
2341
      break;
2342
    case 396: // --rweight=VAL=N
2343
      solver.setOption("rweight", optionarg);
2344
      break;
2345
    case 397: // --stats
2346
      solver.setOption("stats", "true");
2347
      break;
2348
    case 398: // --no-stats
2349
      solver.setOption("stats", "false");
2350
      break;
2351
    case 399: // --stats-all
2352
      solver.setOption("stats-all", "true");
2353
      break;
2354
    case 400: // --no-stats-all
2355
      solver.setOption("stats-all", "false");
2356
      break;
2357
    case 401: // --stats-every-query
2358
      solver.setOption("stats-every-query", "true");
2359
      break;
2360
    case 402: // --no-stats-every-query
2361
      solver.setOption("stats-every-query", "false");
2362
      break;
2363
    case 403: // --stats-expert
2364
      solver.setOption("stats-expert", "true");
2365
      break;
2366
    case 404: // --no-stats-expert
2367
      solver.setOption("stats-expert", "false");
2368
      break;
2369
6
    case 405: // --tlimit-per=MS
2370
6
      solver.setOption("tlimit-per", optionarg);
2371
6
      break;
2372
2
    case 406: // --tlimit=MS
2373
2
      solver.setOption("tlimit", optionarg);
2374
2
      break;
2375
    case 't': // -t
2376
    case 407: // --trace=TAG
2377
      solver.setOption("trace", optionarg);
2378
      break;
2379
3
    case 'v': // -v
2380
    case 408: // --verbose
2381
3
      solver.setOption("verbose", "");
2382
3
      break;
2383
    case 409: // --verbosity=N
2384
      solver.setOption("verbosity", optionarg);
2385
      break;
2386
    case 410: // --bitblast-aig
2387
      solver.setOption("bitblast-aig", "true");
2388
      break;
2389
    case 411: // --no-bitblast-aig
2390
      solver.setOption("bitblast-aig", "false");
2391
      break;
2392
38
    case 412: // --bitblast=MODE
2393
38
      solver.setOption("bitblast", optionarg);
2394
38
      break;
2395
    case 413: // --bitwise-eq
2396
      solver.setOption("bitwise-eq", "true");
2397
      break;
2398
    case 414: // --no-bitwise-eq
2399
      solver.setOption("bitwise-eq", "false");
2400
      break;
2401
12
    case 415: // --bool-to-bv=MODE
2402
12
      solver.setOption("bool-to-bv", optionarg);
2403
12
      break;
2404
4
    case 416: // --bv-abstraction
2405
4
      solver.setOption("bv-abstraction", "true");
2406
4
      break;
2407
    case 417: // --no-bv-abstraction
2408
      solver.setOption("bv-abstraction", "false");
2409
      break;
2410
    case 418: // --bv-aig-simp=COMMAND
2411
      solver.setOption("bv-aig-simp", optionarg);
2412
      break;
2413
    case 419: // --bv-alg-extf
2414
      solver.setOption("bv-alg-extf", "true");
2415
      break;
2416
    case 420: // --no-bv-alg-extf
2417
      solver.setOption("bv-alg-extf", "false");
2418
      break;
2419
    case 421: // --bv-algebraic-budget=N
2420
      solver.setOption("bv-algebraic-budget", optionarg);
2421
      break;
2422
    case 422: // --bv-algebraic-solver
2423
      solver.setOption("bv-algebraic-solver", "true");
2424
      break;
2425
    case 423: // --no-bv-algebraic-solver
2426
      solver.setOption("bv-algebraic-solver", "false");
2427
      break;
2428
6
    case 424: // --bv-assert-input
2429
6
      solver.setOption("bv-assert-input", "true");
2430
6
      break;
2431
    case 425: // --no-bv-assert-input
2432
      solver.setOption("bv-assert-input", "false");
2433
      break;
2434
    case 426: // --bv-eager-explanations
2435
      solver.setOption("bv-eager-explanations", "true");
2436
      break;
2437
    case 427: // --no-bv-eager-explanations
2438
      solver.setOption("bv-eager-explanations", "false");
2439
      break;
2440
    case 428: // --bv-eq-solver
2441
      solver.setOption("bv-eq-solver", "true");
2442
      break;
2443
2
    case 429: // --no-bv-eq-solver
2444
2
      solver.setOption("bv-eq-solver", "false");
2445
2
      break;
2446
    case 430: // --bv-extract-arith
2447
      solver.setOption("bv-extract-arith", "true");
2448
      break;
2449
    case 431: // --no-bv-extract-arith
2450
      solver.setOption("bv-extract-arith", "false");
2451
      break;
2452
    case 432: // --bv-gauss-elim
2453
      solver.setOption("bv-gauss-elim", "true");
2454
      break;
2455
    case 433: // --no-bv-gauss-elim
2456
      solver.setOption("bv-gauss-elim", "false");
2457
      break;
2458
    case 434: // --bv-inequality-solver
2459
      solver.setOption("bv-inequality-solver", "true");
2460
      break;
2461
    case 435: // --no-bv-inequality-solver
2462
      solver.setOption("bv-inequality-solver", "false");
2463
      break;
2464
2
    case 436: // --bv-intro-pow2
2465
2
      solver.setOption("bv-intro-pow2", "true");
2466
2
      break;
2467
    case 437: // --no-bv-intro-pow2
2468
      solver.setOption("bv-intro-pow2", "false");
2469
      break;
2470
    case 438: // --bv-num-func=N
2471
      solver.setOption("bv-num-func", optionarg);
2472
      break;
2473
2
    case 439: // --bv-print-consts-as-indexed-symbols
2474
2
      solver.setOption("bv-print-consts-as-indexed-symbols", "true");
2475
2
      break;
2476
    case 440: // --no-bv-print-consts-as-indexed-symbols
2477
      solver.setOption("bv-print-consts-as-indexed-symbols", "false");
2478
      break;
2479
    case 441: // --bv-propagate
2480
      solver.setOption("bv-propagate", "true");
2481
      break;
2482
    case 442: // --no-bv-propagate
2483
      solver.setOption("bv-propagate", "false");
2484
      break;
2485
    case 443: // --bv-quick-xplain
2486
      solver.setOption("bv-quick-xplain", "true");
2487
      break;
2488
    case 444: // --no-bv-quick-xplain
2489
      solver.setOption("bv-quick-xplain", "false");
2490
      break;
2491
14
    case 445: // --bv-sat-solver=MODE
2492
14
      solver.setOption("bv-sat-solver", optionarg);
2493
14
      break;
2494
    case 446: // --bv-skolemize
2495
      solver.setOption("bv-skolemize", "true");
2496
      break;
2497
    case 447: // --no-bv-skolemize
2498
      solver.setOption("bv-skolemize", "false");
2499
      break;
2500
44
    case 448: // --bv-solver=MODE
2501
44
      solver.setOption("bv-solver", optionarg);
2502
44
      break;
2503
10
    case 449: // --bv-to-bool
2504
10
      solver.setOption("bv-to-bool", "true");
2505
10
      break;
2506
    case 450: // --no-bv-to-bool
2507
      solver.setOption("bv-to-bool", "false");
2508
      break;
2509
    case 451: // --cdt-bisimilar
2510
      solver.setOption("cdt-bisimilar", "true");
2511
      break;
2512
    case 452: // --no-cdt-bisimilar
2513
      solver.setOption("cdt-bisimilar", "false");
2514
      break;
2515
    case 453: // --dt-binary-split
2516
      solver.setOption("dt-binary-split", "true");
2517
      break;
2518
    case 454: // --no-dt-binary-split
2519
      solver.setOption("dt-binary-split", "false");
2520
      break;
2521
    case 455: // --dt-blast-splits
2522
      solver.setOption("dt-blast-splits", "true");
2523
      break;
2524
    case 456: // --no-dt-blast-splits
2525
      solver.setOption("dt-blast-splits", "false");
2526
      break;
2527
    case 457: // --dt-cyclic
2528
      solver.setOption("dt-cyclic", "true");
2529
      break;
2530
    case 458: // --no-dt-cyclic
2531
      solver.setOption("dt-cyclic", "false");
2532
      break;
2533
    case 459: // --dt-force-assignment
2534
      solver.setOption("dt-force-assignment", "true");
2535
      break;
2536
    case 460: // --no-dt-force-assignment
2537
      solver.setOption("dt-force-assignment", "false");
2538
      break;
2539
    case 461: // --dt-infer-as-lemmas
2540
      solver.setOption("dt-infer-as-lemmas", "true");
2541
      break;
2542
    case 462: // --no-dt-infer-as-lemmas
2543
      solver.setOption("dt-infer-as-lemmas", "false");
2544
      break;
2545
10
    case 463: // --dt-nested-rec
2546
10
      solver.setOption("dt-nested-rec", "true");
2547
10
      break;
2548
    case 464: // --no-dt-nested-rec
2549
      solver.setOption("dt-nested-rec", "false");
2550
      break;
2551
    case 465: // --dt-polite-optimize
2552
      solver.setOption("dt-polite-optimize", "true");
2553
      break;
2554
    case 466: // --no-dt-polite-optimize
2555
      solver.setOption("dt-polite-optimize", "false");
2556
      break;
2557
5
    case 467: // --dt-rewrite-error-sel
2558
5
      solver.setOption("dt-rewrite-error-sel", "true");
2559
5
      break;
2560
    case 468: // --no-dt-rewrite-error-sel
2561
      solver.setOption("dt-rewrite-error-sel", "false");
2562
      break;
2563
    case 469: // --dt-share-sel
2564
      solver.setOption("dt-share-sel", "true");
2565
      break;
2566
    case 470: // --no-dt-share-sel
2567
      solver.setOption("dt-share-sel", "false");
2568
      break;
2569
11
    case 471: // --sygus-abort-size=N
2570
11
      solver.setOption("sygus-abort-size", optionarg);
2571
11
      break;
2572
    case 472: // --sygus-fair-max
2573
      solver.setOption("sygus-fair-max", "true");
2574
      break;
2575
    case 473: // --no-sygus-fair-max
2576
      solver.setOption("sygus-fair-max", "false");
2577
      break;
2578
2
    case 474: // --sygus-fair=MODE
2579
2
      solver.setOption("sygus-fair", optionarg);
2580
2
      break;
2581
    case 475: // --sygus-sym-break
2582
      solver.setOption("sygus-sym-break", "true");
2583
      break;
2584
6
    case 476: // --no-sygus-sym-break
2585
6
      solver.setOption("sygus-sym-break", "false");
2586
6
      break;
2587
    case 477: // --sygus-sym-break-agg
2588
      solver.setOption("sygus-sym-break-agg", "true");
2589
      break;
2590
    case 478: // --no-sygus-sym-break-agg
2591
      solver.setOption("sygus-sym-break-agg", "false");
2592
      break;
2593
    case 479: // --sygus-sym-break-dynamic
2594
      solver.setOption("sygus-sym-break-dynamic", "true");
2595
      break;
2596
    case 480: // --no-sygus-sym-break-dynamic
2597
      solver.setOption("sygus-sym-break-dynamic", "false");
2598
      break;
2599
    case 481: // --sygus-sym-break-lazy
2600
      solver.setOption("sygus-sym-break-lazy", "true");
2601
      break;
2602
    case 482: // --no-sygus-sym-break-lazy
2603
      solver.setOption("sygus-sym-break-lazy", "false");
2604
      break;
2605
    case 483: // --sygus-sym-break-pbe
2606
      solver.setOption("sygus-sym-break-pbe", "true");
2607
      break;
2608
    case 484: // --no-sygus-sym-break-pbe
2609
      solver.setOption("sygus-sym-break-pbe", "false");
2610
      break;
2611
    case 485: // --sygus-sym-break-rlv
2612
      solver.setOption("sygus-sym-break-rlv", "true");
2613
      break;
2614
    case 486: // --no-sygus-sym-break-rlv
2615
      solver.setOption("sygus-sym-break-rlv", "false");
2616
      break;
2617
    case 487: // --decision-random-weight=N
2618
      solver.setOption("decision-random-weight", optionarg);
2619
      break;
2620
    case 488: // --decision-threshold=N
2621
      solver.setOption("decision-threshold", optionarg);
2622
      break;
2623
    case 489: // --decision-use-weight
2624
      solver.setOption("decision-use-weight", "true");
2625
      break;
2626
    case 490: // --no-decision-use-weight
2627
      solver.setOption("decision-use-weight", "false");
2628
      break;
2629
    case 491: // --decision-weight-internal=HOW
2630
      solver.setOption("decision-weight-internal", optionarg);
2631
      break;
2632
94
    case 492: // --decision=MODE
2633
    case 493: // --decision-mode
2634
94
      solver.setOption("decision", optionarg);
2635
94
      break;
2636
3
    case 494: // --jh-rlv-order
2637
3
      solver.setOption("jh-rlv-order", "true");
2638
3
      break;
2639
7
    case 495: // --no-jh-rlv-order
2640
7
      solver.setOption("jh-rlv-order", "false");
2641
7
      break;
2642
    case 496: // --jh-skolem-rlv=MODE
2643
      solver.setOption("jh-skolem-rlv", optionarg);
2644
      break;
2645
    case 497: // --jh-skolem=MODE
2646
      solver.setOption("jh-skolem", optionarg);
2647
      break;
2648
1
    case 498: // --dag-thresh=N
2649
1
      solver.setOption("dag-thresh", optionarg);
2650
1
      break;
2651
    case 499: // --expr-depth=N
2652
      solver.setOption("expr-depth", optionarg);
2653
      break;
2654
    case 500: // --type-checking
2655
      solver.setOption("type-checking", "true");
2656
      break;
2657
    case 501: // --no-type-checking
2658
      solver.setOption("type-checking", "false");
2659
      break;
2660
22
    case 502: // --fp-exp
2661
22
      solver.setOption("fp-exp", "true");
2662
22
      break;
2663
    case 503: // --no-fp-exp
2664
      solver.setOption("fp-exp", "false");
2665
      break;
2666
3
    case 504: // --fp-lazy-wb
2667
3
      solver.setOption("fp-lazy-wb", "true");
2668
3
      break;
2669
    case 505: // --no-fp-lazy-wb
2670
      solver.setOption("fp-lazy-wb", "false");
2671
      break;
2672
    case 506: // --copyright
2673
      solver.setOption("copyright", "");
2674
      break;
2675
12
    case 507: // --dump-instantiations
2676
12
      solver.setOption("dump-instantiations", "true");
2677
12
      break;
2678
    case 508: // --no-dump-instantiations
2679
      solver.setOption("dump-instantiations", "false");
2680
      break;
2681
    case 509: // --dump-instantiations-debug
2682
      solver.setOption("dump-instantiations-debug", "true");
2683
      break;
2684
    case 510: // --no-dump-instantiations-debug
2685
      solver.setOption("dump-instantiations-debug", "false");
2686
      break;
2687
6
    case 511: // --dump-models
2688
6
      solver.setOption("dump-models", "true");
2689
6
      break;
2690
    case 512: // --no-dump-models
2691
      solver.setOption("dump-models", "false");
2692
      break;
2693
    case 513: // --dump-proofs
2694
      solver.setOption("dump-proofs", "true");
2695
      break;
2696
    case 514: // --no-dump-proofs
2697
      solver.setOption("dump-proofs", "false");
2698
      break;
2699
    case 515: // --dump-unsat-cores
2700
      solver.setOption("dump-unsat-cores", "true");
2701
      break;
2702
    case 516: // --no-dump-unsat-cores
2703
      solver.setOption("dump-unsat-cores", "false");
2704
      break;
2705
3
    case 517: // --dump-unsat-cores-full
2706
3
      solver.setOption("dump-unsat-cores-full", "true");
2707
3
      break;
2708
    case 518: // --no-dump-unsat-cores-full
2709
      solver.setOption("dump-unsat-cores-full", "false");
2710
      break;
2711
    case 519: // --early-exit
2712
      solver.setOption("early-exit", "true");
2713
      break;
2714
    case 520: // --no-early-exit
2715
      solver.setOption("early-exit", "false");
2716
      break;
2717
    case 521: // --filename=FILENAME
2718
      solver.setOption("filename", optionarg);
2719
      break;
2720
    case 522: // --force-no-limit-cpu-while-dump
2721
      solver.setOption("force-no-limit-cpu-while-dump", "true");
2722
      break;
2723
    case 523: // --no-force-no-limit-cpu-while-dump
2724
      solver.setOption("force-no-limit-cpu-while-dump", "false");
2725
      break;
2726
    case 'h': // -h
2727
    case 524: // --help
2728
      solver.setOption("help", "true");
2729
      break;
2730
    case 525: // --interactive
2731
      solver.setOption("interactive", "true");
2732
      break;
2733
    case 526: // --no-interactive
2734
      solver.setOption("interactive", "false");
2735
      break;
2736
    case 's': // -s
2737
    case 527: // --seed=N
2738
      solver.setOption("seed", optionarg);
2739
      break;
2740
    case 528: // --segv-spin
2741
      solver.setOption("segv-spin", "true");
2742
      break;
2743
    case 529: // --no-segv-spin
2744
      solver.setOption("segv-spin", "false");
2745
      break;
2746
2619
    case 530: // --show-config
2747
2619
      solver.setOption("show-config", "");
2748
      break;
2749
    case 531: // --show-debug-tags
2750
      solver.setOption("show-debug-tags", "");
2751
      break;
2752
    case 532: // --show-trace-tags
2753
      solver.setOption("show-trace-tags", "");
2754
      break;
2755
    case 'V': // -V
2756
    case 533: // --version
2757
      solver.setOption("version", "true");
2758
      break;
2759
    case 534: // --filesystem-access
2760
      solver.setOption("filesystem-access", "true");
2761
      break;
2762
    case 535: // --no-filesystem-access
2763
      solver.setOption("filesystem-access", "false");
2764
      break;
2765
9
    case 536: // --force-logic=LOGIC
2766
9
      solver.setOption("force-logic", optionarg);
2767
9
      break;
2768
    case 537: // --global-declarations
2769
      solver.setOption("global-declarations", "true");
2770
      break;
2771
    case 538: // --no-global-declarations
2772
      solver.setOption("global-declarations", "false");
2773
      break;
2774
    case 539: // --mmap
2775
      solver.setOption("mmap", "true");
2776
      break;
2777
    case 540: // --no-mmap
2778
      solver.setOption("mmap", "false");
2779
      break;
2780
    case 541: // --semantic-checks
2781
      solver.setOption("semantic-checks", "true");
2782
      break;
2783
    case 542: // --no-semantic-checks
2784
      solver.setOption("semantic-checks", "false");
2785
      break;
2786
9
    case 543: // --strict-parsing
2787
9
      solver.setOption("strict-parsing", "true");
2788
9
      break;
2789
    case 544: // --no-strict-parsing
2790
      solver.setOption("strict-parsing", "false");
2791
      break;
2792
    case 545: // --flatten-ho-chains
2793
      solver.setOption("flatten-ho-chains", "true");
2794
      break;
2795
    case 546: // --no-flatten-ho-chains
2796
      solver.setOption("flatten-ho-chains", "false");
2797
      break;
2798
    case 547: // --model-format=MODE
2799
      solver.setOption("model-format", optionarg);
2800
      break;
2801
9
    case 548: // --print-inst-full
2802
9
      solver.setOption("print-inst-full", "true");
2803
9
      break;
2804
3
    case 549: // --no-print-inst-full
2805
3
      solver.setOption("print-inst-full", "false");
2806
3
      break;
2807
3
    case 550: // --print-inst=MODE
2808
3
      solver.setOption("print-inst", optionarg);
2809
3
      break;
2810
2
    case 551: // --proof-check=MODE
2811
2
      solver.setOption("proof-check", optionarg);
2812
2
      break;
2813
    case 552: // --proof-format-mode=MODE
2814
      solver.setOption("proof-format-mode", optionarg);
2815
      break;
2816
    case 553: // --proof-granularity=MODE
2817
      solver.setOption("proof-granularity", optionarg);
2818
      break;
2819
    case 554: // --proof-pedantic=N
2820
      solver.setOption("proof-pedantic", optionarg);
2821
      break;
2822
    case 555: // --proof-print-conclusion
2823
      solver.setOption("proof-print-conclusion", "true");
2824
      break;
2825
    case 556: // --no-proof-print-conclusion
2826
      solver.setOption("proof-print-conclusion", "false");
2827
      break;
2828
    case 557: // --minisat-dump-dimacs
2829
      solver.setOption("minisat-dump-dimacs", "true");
2830
      break;
2831
    case 558: // --no-minisat-dump-dimacs
2832
      solver.setOption("minisat-dump-dimacs", "false");
2833
      break;
2834
    case 559: // --minisat-elimination
2835
      solver.setOption("minisat-elimination", "true");
2836
      break;
2837
    case 560: // --no-minisat-elimination
2838
      solver.setOption("minisat-elimination", "false");
2839
      break;
2840
    case 561: // --random-freq=P
2841
    case 562: // --random-frequency
2842
      solver.setOption("random-freq", optionarg);
2843
      break;
2844
    case 563: // --random-seed=S
2845
      solver.setOption("random-seed", optionarg);
2846
      break;
2847
    case 564: // --refine-conflicts
2848
      solver.setOption("refine-conflicts", "true");
2849
      break;
2850
    case 565: // --no-refine-conflicts
2851
      solver.setOption("refine-conflicts", "false");
2852
      break;
2853
    case 566: // --restart-int-base=N
2854
      solver.setOption("restart-int-base", optionarg);
2855
      break;
2856
    case 567: // --restart-int-inc=F
2857
      solver.setOption("restart-int-inc", optionarg);
2858
      break;
2859
    case 568: // --ag-miniscope-quant
2860
      solver.setOption("ag-miniscope-quant", "true");
2861
      break;
2862
    case 569: // --no-ag-miniscope-quant
2863
      solver.setOption("ag-miniscope-quant", "false");
2864
      break;
2865
3
    case 570: // --cegis-sample=MODE
2866
3
      solver.setOption("cegis-sample", optionarg);
2867
3
      break;
2868
17
    case 571: // --cegqi
2869
17
      solver.setOption("cegqi", "true");
2870
17
      break;
2871
2
    case 572: // --no-cegqi
2872
2
      solver.setOption("cegqi", "false");
2873
2
      break;
2874
15
    case 573: // --cegqi-all
2875
15
      solver.setOption("cegqi-all", "true");
2876
15
      break;
2877
    case 574: // --no-cegqi-all
2878
      solver.setOption("cegqi-all", "false");
2879
      break;
2880
106
    case 575: // --cegqi-bv
2881
106
      solver.setOption("cegqi-bv", "true");
2882
106
      break;
2883
    case 576: // --no-cegqi-bv
2884
      solver.setOption("cegqi-bv", "false");
2885
      break;
2886
    case 577: // --cegqi-bv-concat-inv
2887
      solver.setOption("cegqi-bv-concat-inv", "true");
2888
      break;
2889
    case 578: // --no-cegqi-bv-concat-inv
2890
      solver.setOption("cegqi-bv-concat-inv", "false");
2891
      break;
2892
82
    case 579: // --cegqi-bv-ineq=MODE
2893
82
      solver.setOption("cegqi-bv-ineq", optionarg);
2894
82
      break;
2895
    case 580: // --cegqi-bv-interleave-value
2896
      solver.setOption("cegqi-bv-interleave-value", "true");
2897
      break;
2898
    case 581: // --no-cegqi-bv-interleave-value
2899
      solver.setOption("cegqi-bv-interleave-value", "false");
2900
      break;
2901
    case 582: // --cegqi-bv-linear
2902
      solver.setOption("cegqi-bv-linear", "true");
2903
      break;
2904
    case 583: // --no-cegqi-bv-linear
2905
      solver.setOption("cegqi-bv-linear", "false");
2906
      break;
2907
2
    case 584: // --cegqi-bv-rm-extract
2908
2
      solver.setOption("cegqi-bv-rm-extract", "true");
2909
2
      break;
2910
    case 585: // --no-cegqi-bv-rm-extract
2911
      solver.setOption("cegqi-bv-rm-extract", "false");
2912
      break;
2913
    case 586: // --cegqi-bv-solve-nl
2914
      solver.setOption("cegqi-bv-solve-nl", "true");
2915
      break;
2916
    case 587: // --no-cegqi-bv-solve-nl
2917
      solver.setOption("cegqi-bv-solve-nl", "false");
2918
      break;
2919
5
    case 588: // --cegqi-full
2920
5
      solver.setOption("cegqi-full", "true");
2921
5
      break;
2922
82
    case 589: // --no-cegqi-full
2923
82
      solver.setOption("cegqi-full", "false");
2924
82
      break;
2925
    case 590: // --cegqi-innermost
2926
      solver.setOption("cegqi-innermost", "true");
2927
      break;
2928
    case 591: // --no-cegqi-innermost
2929
      solver.setOption("cegqi-innermost", "false");
2930
      break;
2931
    case 592: // --cegqi-midpoint
2932
      solver.setOption("cegqi-midpoint", "true");
2933
      break;
2934
    case 593: // --no-cegqi-midpoint
2935
      solver.setOption("cegqi-midpoint", "false");
2936
      break;
2937
    case 594: // --cegqi-min-bounds
2938
      solver.setOption("cegqi-min-bounds", "true");
2939
      break;
2940
    case 595: // --no-cegqi-min-bounds
2941
      solver.setOption("cegqi-min-bounds", "false");
2942
      break;
2943
    case 596: // --cegqi-model
2944
      solver.setOption("cegqi-model", "true");
2945
      break;
2946
    case 597: // --no-cegqi-model
2947
      solver.setOption("cegqi-model", "false");
2948
      break;
2949
3
    case 598: // --cegqi-multi-inst
2950
3
      solver.setOption("cegqi-multi-inst", "true");
2951
3
      break;
2952
    case 599: // --no-cegqi-multi-inst
2953
      solver.setOption("cegqi-multi-inst", "false");
2954
      break;
2955
7
    case 600: // --cegqi-nested-qe
2956
7
      solver.setOption("cegqi-nested-qe", "true");
2957
7
      break;
2958
    case 601: // --no-cegqi-nested-qe
2959
      solver.setOption("cegqi-nested-qe", "false");
2960
      break;
2961
    case 602: // --cegqi-nopt
2962
      solver.setOption("cegqi-nopt", "true");
2963
      break;
2964
    case 603: // --no-cegqi-nopt
2965
      solver.setOption("cegqi-nopt", "false");
2966
      break;
2967
    case 604: // --cegqi-repeat-lit
2968
      solver.setOption("cegqi-repeat-lit", "true");
2969
      break;
2970
    case 605: // --no-cegqi-repeat-lit
2971
      solver.setOption("cegqi-repeat-lit", "false");
2972
      break;
2973
    case 606: // --cegqi-round-up-lia
2974
      solver.setOption("cegqi-round-up-lia", "true");
2975
      break;
2976
    case 607: // --no-cegqi-round-up-lia
2977
      solver.setOption("cegqi-round-up-lia", "false");
2978
      break;
2979
    case 608: // --cegqi-sat
2980
      solver.setOption("cegqi-sat", "true");
2981
      break;
2982
    case 609: // --no-cegqi-sat
2983
      solver.setOption("cegqi-sat", "false");
2984
      break;
2985
3
    case 610: // --cegqi-use-inf-int
2986
3
      solver.setOption("cegqi-use-inf-int", "true");
2987
3
      break;
2988
    case 611: // --no-cegqi-use-inf-int
2989
      solver.setOption("cegqi-use-inf-int", "false");
2990
      break;
2991
3
    case 612: // --cegqi-use-inf-real
2992
3
      solver.setOption("cegqi-use-inf-real", "true");
2993
3
      break;
2994
    case 613: // --no-cegqi-use-inf-real
2995
      solver.setOption("cegqi-use-inf-real", "false");
2996
      break;
2997
    case 614: // --cond-var-split-agg-quant
2998
      solver.setOption("cond-var-split-agg-quant", "true");
2999
      break;
3000
    case 615: // --no-cond-var-split-agg-quant
3001
      solver.setOption("cond-var-split-agg-quant", "false");
3002
      break;
3003
    case 616: // --cond-var-split-quant
3004
      solver.setOption("cond-var-split-quant", "true");
3005
      break;
3006
    case 617: // --no-cond-var-split-quant
3007
      solver.setOption("cond-var-split-quant", "false");
3008
      break;
3009
    case 618: // --conjecture-filter-active-terms
3010
      solver.setOption("conjecture-filter-active-terms", "true");
3011
      break;
3012
    case 619: // --no-conjecture-filter-active-terms
3013
      solver.setOption("conjecture-filter-active-terms", "false");
3014
      break;
3015
    case 620: // --conjecture-filter-canonical
3016
      solver.setOption("conjecture-filter-canonical", "true");
3017
      break;
3018
    case 621: // --no-conjecture-filter-canonical
3019
      solver.setOption("conjecture-filter-canonical", "false");
3020
      break;
3021
    case 622: // --conjecture-filter-model
3022
      solver.setOption("conjecture-filter-model", "true");
3023
      break;
3024
    case 623: // --no-conjecture-filter-model
3025
      solver.setOption("conjecture-filter-model", "false");
3026
      break;
3027
3
    case 624: // --conjecture-gen
3028
3
      solver.setOption("conjecture-gen", "true");
3029
3
      break;
3030
    case 625: // --no-conjecture-gen
3031
      solver.setOption("conjecture-gen", "false");
3032
      break;
3033
    case 626: // --conjecture-gen-gt-enum=N
3034
      solver.setOption("conjecture-gen-gt-enum", optionarg);
3035
      break;
3036
    case 627: // --conjecture-gen-max-depth=N
3037
      solver.setOption("conjecture-gen-max-depth", optionarg);
3038
      break;
3039
    case 628: // --conjecture-gen-per-round=N
3040
      solver.setOption("conjecture-gen-per-round", optionarg);
3041
      break;
3042
    case 629: // --conjecture-gen-uee-intro
3043
      solver.setOption("conjecture-gen-uee-intro", "true");
3044
      break;
3045
    case 630: // --no-conjecture-gen-uee-intro
3046
      solver.setOption("conjecture-gen-uee-intro", "false");
3047
      break;
3048
    case 631: // --conjecture-no-filter
3049
      solver.setOption("conjecture-no-filter", "true");
3050
      break;
3051
    case 632: // --no-conjecture-no-filter
3052
      solver.setOption("conjecture-no-filter", "false");
3053
      break;
3054
    case 633: // --dt-stc-ind
3055
      solver.setOption("dt-stc-ind", "true");
3056
      break;
3057
    case 634: // --no-dt-stc-ind
3058
      solver.setOption("dt-stc-ind", "false");
3059
      break;
3060
    case 635: // --dt-var-exp-quant
3061
      solver.setOption("dt-var-exp-quant", "true");
3062
      break;
3063
    case 636: // --no-dt-var-exp-quant
3064
      solver.setOption("dt-var-exp-quant", "false");
3065
      break;
3066
    case 637: // --e-matching
3067
      solver.setOption("e-matching", "true");
3068
      break;
3069
    case 638: // --no-e-matching
3070
      solver.setOption("e-matching", "false");
3071
      break;
3072
    case 639: // --elim-taut-quant
3073
      solver.setOption("elim-taut-quant", "true");
3074
      break;
3075
    case 640: // --no-elim-taut-quant
3076
      solver.setOption("elim-taut-quant", "false");
3077
      break;
3078
8
    case 641: // --ext-rewrite-quant
3079
8
      solver.setOption("ext-rewrite-quant", "true");
3080
8
      break;
3081
    case 642: // --no-ext-rewrite-quant
3082
      solver.setOption("ext-rewrite-quant", "false");
3083
      break;
3084
159
    case 643: // --finite-model-find
3085
159
      solver.setOption("finite-model-find", "true");
3086
159
      break;
3087
1
    case 644: // --no-finite-model-find
3088
1
      solver.setOption("finite-model-find", "false");
3089
1
      break;
3090
30
    case 645: // --fmf-bound
3091
30
      solver.setOption("fmf-bound", "true");
3092
30
      break;
3093
    case 646: // --no-fmf-bound
3094
      solver.setOption("fmf-bound", "false");
3095
      break;
3096
6
    case 647: // --fmf-bound-int
3097
6
      solver.setOption("fmf-bound-int", "true");
3098
6
      break;
3099
    case 648: // --no-fmf-bound-int
3100
      solver.setOption("fmf-bound-int", "false");
3101
      break;
3102
3
    case 649: // --fmf-bound-lazy
3103
3
      solver.setOption("fmf-bound-lazy", "true");
3104
3
      break;
3105
    case 650: // --no-fmf-bound-lazy
3106
      solver.setOption("fmf-bound-lazy", "false");
3107
      break;
3108
    case 651: // --fmf-fmc-simple
3109
      solver.setOption("fmf-fmc-simple", "true");
3110
      break;
3111
    case 652: // --no-fmf-fmc-simple
3112
      solver.setOption("fmf-fmc-simple", "false");
3113
      break;
3114
    case 653: // --fmf-fresh-dc
3115
      solver.setOption("fmf-fresh-dc", "true");
3116
      break;
3117
    case 654: // --no-fmf-fresh-dc
3118
      solver.setOption("fmf-fresh-dc", "false");
3119
      break;
3120
37
    case 655: // --fmf-fun
3121
37
      solver.setOption("fmf-fun", "true");
3122
37
      break;
3123
    case 656: // --no-fmf-fun
3124
      solver.setOption("fmf-fun", "false");
3125
      break;
3126
10
    case 657: // --fmf-fun-rlv
3127
10
      solver.setOption("fmf-fun-rlv", "true");
3128
10
      break;
3129
    case 658: // --no-fmf-fun-rlv
3130
      solver.setOption("fmf-fun-rlv", "false");
3131
      break;
3132
7
    case 659: // --fmf-inst-engine
3133
7
      solver.setOption("fmf-inst-engine", "true");
3134
7
      break;
3135
    case 660: // --no-fmf-inst-engine
3136
      solver.setOption("fmf-inst-engine", "false");
3137
      break;
3138
    case 661: // --fmf-type-completion-thresh=N
3139
      solver.setOption("fmf-type-completion-thresh", optionarg);
3140
      break;
3141
    case 662: // --fs-interleave
3142
      solver.setOption("fs-interleave", "true");
3143
      break;
3144
    case 663: // --no-fs-interleave
3145
      solver.setOption("fs-interleave", "false");
3146
      break;
3147
3
    case 664: // --fs-stratify
3148
3
      solver.setOption("fs-stratify", "true");
3149
3
      break;
3150
    case 665: // --no-fs-stratify
3151
      solver.setOption("fs-stratify", "false");
3152
      break;
3153
    case 666: // --fs-sum
3154
      solver.setOption("fs-sum", "true");
3155
      break;
3156
    case 667: // --no-fs-sum
3157
      solver.setOption("fs-sum", "false");
3158
      break;
3159
76
    case 668: // --full-saturate-quant
3160
76
      solver.setOption("full-saturate-quant", "true");
3161
76
      break;
3162
    case 669: // --no-full-saturate-quant
3163
      solver.setOption("full-saturate-quant", "false");
3164
      break;
3165
3
    case 670: // --full-saturate-quant-limit=N
3166
3
      solver.setOption("full-saturate-quant-limit", optionarg);
3167
3
      break;
3168
    case 671: // --full-saturate-quant-rd
3169
      solver.setOption("full-saturate-quant-rd", "true");
3170
      break;
3171
    case 672: // --no-full-saturate-quant-rd
3172
      solver.setOption("full-saturate-quant-rd", "false");
3173
      break;
3174
6
    case 673: // --global-negate
3175
6
      solver.setOption("global-negate", "true");
3176
6
      break;
3177
    case 674: // --no-global-negate
3178
      solver.setOption("global-negate", "false");
3179
      break;
3180
8
    case 675: // --ho-elim
3181
8
      solver.setOption("ho-elim", "true");
3182
8
      break;
3183
    case 676: // --no-ho-elim
3184
      solver.setOption("ho-elim", "false");
3185
      break;
3186
1
    case 677: // --ho-elim-store-ax
3187
1
      solver.setOption("ho-elim-store-ax", "true");
3188
1
      break;
3189
    case 678: // --no-ho-elim-store-ax
3190
      solver.setOption("ho-elim-store-ax", "false");
3191
      break;
3192
    case 679: // --ho-matching
3193
      solver.setOption("ho-matching", "true");
3194
      break;
3195
    case 680: // --no-ho-matching
3196
      solver.setOption("ho-matching", "false");
3197
      break;
3198
    case 681: // --ho-matching-var-priority
3199
      solver.setOption("ho-matching-var-priority", "true");
3200
      break;
3201
    case 682: // --no-ho-matching-var-priority
3202
      solver.setOption("ho-matching-var-priority", "false");
3203
      break;
3204
    case 683: // --ho-merge-term-db
3205
      solver.setOption("ho-merge-term-db", "true");
3206
      break;
3207
    case 684: // --no-ho-merge-term-db
3208
      solver.setOption("ho-merge-term-db", "false");
3209
      break;
3210
    case 685: // --increment-triggers
3211
      solver.setOption("increment-triggers", "true");
3212
      break;
3213
    case 686: // --no-increment-triggers
3214
      solver.setOption("increment-triggers", "false");
3215
      break;
3216
    case 687: // --inst-level-input-only
3217
      solver.setOption("inst-level-input-only", "true");
3218
      break;
3219
    case 688: // --no-inst-level-input-only
3220
      solver.setOption("inst-level-input-only", "false");
3221
      break;
3222
3
    case 689: // --inst-max-level=N
3223
3
      solver.setOption("inst-max-level", optionarg);
3224
3
      break;
3225
    case 690: // --inst-max-rounds=N
3226
      solver.setOption("inst-max-rounds", optionarg);
3227
      break;
3228
    case 691: // --inst-no-entail
3229
      solver.setOption("inst-no-entail", "true");
3230
      break;
3231
    case 692: // --no-inst-no-entail
3232
      solver.setOption("inst-no-entail", "false");
3233
      break;
3234
    case 693: // --inst-when-phase=N
3235
      solver.setOption("inst-when-phase", optionarg);
3236
      break;
3237
    case 694: // --inst-when-strict-interleave
3238
      solver.setOption("inst-when-strict-interleave", "true");
3239
      break;
3240
    case 695: // --no-inst-when-strict-interleave
3241
      solver.setOption("inst-when-strict-interleave", "false");
3242
      break;
3243
    case 696: // --inst-when-tc-first
3244
      solver.setOption("inst-when-tc-first", "true");
3245
      break;
3246
    case 697: // --no-inst-when-tc-first
3247
      solver.setOption("inst-when-tc-first", "false");
3248
      break;
3249
3
    case 698: // --inst-when=MODE
3250
3
      solver.setOption("inst-when", optionarg);
3251
3
      break;
3252
3
    case 699: // --int-wf-ind
3253
3
      solver.setOption("int-wf-ind", "true");
3254
3
      break;
3255
    case 700: // --no-int-wf-ind
3256
      solver.setOption("int-wf-ind", "false");
3257
      break;
3258
    case 701: // --ite-dtt-split-quant
3259
      solver.setOption("ite-dtt-split-quant", "true");
3260
      break;
3261
    case 702: // --no-ite-dtt-split-quant
3262
      solver.setOption("ite-dtt-split-quant", "false");
3263
      break;
3264
    case 703: // --ite-lift-quant=MODE
3265
      solver.setOption("ite-lift-quant", optionarg);
3266
      break;
3267
    case 704: // --literal-matching=MODE
3268
      solver.setOption("literal-matching", optionarg);
3269
      break;
3270
17
    case 705: // --macros-quant
3271
17
      solver.setOption("macros-quant", "true");
3272
17
      break;
3273
    case 706: // --no-macros-quant
3274
      solver.setOption("macros-quant", "false");
3275
      break;
3276
2
    case 707: // --macros-quant-mode=MODE
3277
2
      solver.setOption("macros-quant-mode", optionarg);
3278
2
      break;
3279
    case 708: // --mbqi-interleave
3280
      solver.setOption("mbqi-interleave", "true");
3281
      break;
3282
    case 709: // --no-mbqi-interleave
3283
      solver.setOption("mbqi-interleave", "false");
3284
      break;
3285
    case 710: // --mbqi-one-inst-per-round
3286
      solver.setOption("mbqi-one-inst-per-round", "true");
3287
      break;
3288
    case 711: // --no-mbqi-one-inst-per-round
3289
      solver.setOption("mbqi-one-inst-per-round", "false");
3290
      break;
3291
    case 712: // --mbqi=MODE
3292
      solver.setOption("mbqi", optionarg);
3293
      break;
3294
    case 713: // --miniscope-quant
3295
      solver.setOption("miniscope-quant", "true");
3296
      break;
3297
    case 714: // --no-miniscope-quant
3298
      solver.setOption("miniscope-quant", "false");
3299
      break;
3300
    case 715: // --miniscope-quant-fv
3301
      solver.setOption("miniscope-quant-fv", "true");
3302
      break;
3303
    case 716: // --no-miniscope-quant-fv
3304
      solver.setOption("miniscope-quant-fv", "false");
3305
      break;
3306
3
    case 717: // --multi-trigger-cache
3307
3
      solver.setOption("multi-trigger-cache", "true");
3308
3
      break;
3309
    case 718: // --no-multi-trigger-cache
3310
      solver.setOption("multi-trigger-cache", "false");
3311
      break;
3312
    case 719: // --multi-trigger-linear
3313
      solver.setOption("multi-trigger-linear", "true");
3314
      break;
3315
    case 720: // --no-multi-trigger-linear
3316
      solver.setOption("multi-trigger-linear", "false");
3317
      break;
3318
    case 721: // --multi-trigger-priority
3319
      solver.setOption("multi-trigger-priority", "true");
3320
      break;
3321
    case 722: // --no-multi-trigger-priority
3322
      solver.setOption("multi-trigger-priority", "false");
3323
      break;
3324
    case 723: // --multi-trigger-when-single
3325
      solver.setOption("multi-trigger-when-single", "true");
3326
      break;
3327
    case 724: // --no-multi-trigger-when-single
3328
      solver.setOption("multi-trigger-when-single", "false");
3329
      break;
3330
3
    case 725: // --partial-triggers
3331
3
      solver.setOption("partial-triggers", "true");
3332
3
      break;
3333
    case 726: // --no-partial-triggers
3334
      solver.setOption("partial-triggers", "false");
3335
      break;
3336
3
    case 727: // --pool-inst
3337
3
      solver.setOption("pool-inst", "true");
3338
3
      break;
3339
    case 728: // --no-pool-inst
3340
      solver.setOption("pool-inst", "false");
3341
      break;
3342
    case 729: // --pre-skolem-quant
3343
      solver.setOption("pre-skolem-quant", "true");
3344
      break;
3345
    case 730: // --no-pre-skolem-quant
3346
      solver.setOption("pre-skolem-quant", "false");
3347
      break;
3348
    case 731: // --pre-skolem-quant-agg
3349
      solver.setOption("pre-skolem-quant-agg", "true");
3350
      break;
3351
    case 732: // --no-pre-skolem-quant-agg
3352
      solver.setOption("pre-skolem-quant-agg", "false");
3353
      break;
3354
    case 733: // --pre-skolem-quant-nested
3355
      solver.setOption("pre-skolem-quant-nested", "true");
3356
      break;
3357
    case 734: // --no-pre-skolem-quant-nested
3358
      solver.setOption("pre-skolem-quant-nested", "false");
3359
      break;
3360
    case 735: // --prenex-quant-user
3361
      solver.setOption("prenex-quant-user", "true");
3362
      break;
3363
    case 736: // --no-prenex-quant-user
3364
      solver.setOption("prenex-quant-user", "false");
3365
      break;
3366
    case 737: // --prenex-quant=MODE
3367
      solver.setOption("prenex-quant", optionarg);
3368
      break;
3369
3
    case 738: // --purify-triggers
3370
3
      solver.setOption("purify-triggers", "true");
3371
3
      break;
3372
    case 739: // --no-purify-triggers
3373
      solver.setOption("purify-triggers", "false");
3374
      break;
3375
    case 740: // --qcf-all-conflict
3376
      solver.setOption("qcf-all-conflict", "true");
3377
      break;
3378
    case 741: // --no-qcf-all-conflict
3379
      solver.setOption("qcf-all-conflict", "false");
3380
      break;
3381
    case 742: // --qcf-eager-check-rd
3382
      solver.setOption("qcf-eager-check-rd", "true");
3383
      break;
3384
    case 743: // --no-qcf-eager-check-rd
3385
      solver.setOption("qcf-eager-check-rd", "false");
3386
      break;
3387
    case 744: // --qcf-eager-test
3388
      solver.setOption("qcf-eager-test", "true");
3389
      break;
3390
    case 745: // --no-qcf-eager-test
3391
      solver.setOption("qcf-eager-test", "false");
3392
      break;
3393
    case 746: // --qcf-nested-conflict
3394
      solver.setOption("qcf-nested-conflict", "true");
3395
      break;
3396
    case 747: // --no-qcf-nested-conflict
3397
      solver.setOption("qcf-nested-conflict", "false");
3398
      break;
3399
    case 748: // --qcf-skip-rd
3400
      solver.setOption("qcf-skip-rd", "true");
3401
      break;
3402
    case 749: // --no-qcf-skip-rd
3403
      solver.setOption("qcf-skip-rd", "false");
3404
      break;
3405
6
    case 750: // --qcf-tconstraint
3406
6
      solver.setOption("qcf-tconstraint", "true");
3407
6
      break;
3408
    case 751: // --no-qcf-tconstraint
3409
      solver.setOption("qcf-tconstraint", "false");
3410
      break;
3411
    case 752: // --qcf-vo-exp
3412
      solver.setOption("qcf-vo-exp", "true");
3413
      break;
3414
    case 753: // --no-qcf-vo-exp
3415
      solver.setOption("qcf-vo-exp", "false");
3416
      break;
3417
    case 754: // --quant-alpha-equiv
3418
      solver.setOption("quant-alpha-equiv", "true");
3419
      break;
3420
    case 755: // --no-quant-alpha-equiv
3421
      solver.setOption("quant-alpha-equiv", "false");
3422
      break;
3423
    case 756: // --quant-cf
3424
      solver.setOption("quant-cf", "true");
3425
      break;
3426
    case 757: // --no-quant-cf
3427
      solver.setOption("quant-cf", "false");
3428
      break;
3429
    case 758: // --quant-cf-mode=MODE
3430
      solver.setOption("quant-cf-mode", optionarg);
3431
      break;
3432
    case 759: // --quant-cf-when=MODE
3433
      solver.setOption("quant-cf-when", optionarg);
3434
      break;
3435
    case 760: // --quant-dsplit-mode=MODE
3436
      solver.setOption("quant-dsplit-mode", optionarg);
3437
      break;
3438
    case 761: // --quant-fun-wd
3439
      solver.setOption("quant-fun-wd", "true");
3440
      break;
3441
    case 762: // --no-quant-fun-wd
3442
      solver.setOption("quant-fun-wd", "false");
3443
      break;
3444
6
    case 763: // --quant-ind
3445
6
      solver.setOption("quant-ind", "true");
3446
6
      break;
3447
    case 764: // --no-quant-ind
3448
      solver.setOption("quant-ind", "false");
3449
      break;
3450
    case 765: // --quant-rep-mode=MODE
3451
      solver.setOption("quant-rep-mode", optionarg);
3452
      break;
3453
    case 766: // --quant-split
3454
      solver.setOption("quant-split", "true");
3455
      break;
3456
    case 767: // --no-quant-split
3457
      solver.setOption("quant-split", "false");
3458
      break;
3459
    case 768: // --register-quant-body-terms
3460
      solver.setOption("register-quant-body-terms", "true");
3461
      break;
3462
    case 769: // --no-register-quant-body-terms
3463
      solver.setOption("register-quant-body-terms", "false");
3464
      break;
3465
12
    case 770: // --relational-triggers
3466
12
      solver.setOption("relational-triggers", "true");
3467
12
      break;
3468
3
    case 771: // --no-relational-triggers
3469
3
      solver.setOption("relational-triggers", "false");
3470
3
      break;
3471
3
    case 772: // --relevant-triggers
3472
3
      solver.setOption("relevant-triggers", "true");
3473
3
      break;
3474
    case 773: // --no-relevant-triggers
3475
      solver.setOption("relevant-triggers", "false");
3476
      break;
3477
    case 774: // --sygus
3478
      solver.setOption("sygus", "true");
3479
      break;
3480
    case 775: // --no-sygus
3481
      solver.setOption("sygus", "false");
3482
      break;
3483
    case 776: // --sygus-active-gen-cfactor=N
3484
      solver.setOption("sygus-active-gen-cfactor", optionarg);
3485
      break;
3486
13
    case 777: // --sygus-active-gen=MODE
3487
13
      solver.setOption("sygus-active-gen", optionarg);
3488
13
      break;
3489
1
    case 778: // --sygus-add-const-grammar
3490
1
      solver.setOption("sygus-add-const-grammar", "true");
3491
1
      break;
3492
1
    case 779: // --no-sygus-add-const-grammar
3493
1
      solver.setOption("sygus-add-const-grammar", "false");
3494
1
      break;
3495
3
    case 780: // --sygus-arg-relevant
3496
3
      solver.setOption("sygus-arg-relevant", "true");
3497
3
      break;
3498
    case 781: // --no-sygus-arg-relevant
3499
      solver.setOption("sygus-arg-relevant", "false");
3500
      break;
3501
    case 782: // --sygus-auto-unfold
3502
      solver.setOption("sygus-auto-unfold", "true");
3503
      break;
3504
    case 783: // --no-sygus-auto-unfold
3505
      solver.setOption("sygus-auto-unfold", "false");
3506
      break;
3507
1
    case 784: // --sygus-bool-ite-return-const
3508
1
      solver.setOption("sygus-bool-ite-return-const", "true");
3509
1
      break;
3510
    case 785: // --no-sygus-bool-ite-return-const
3511
      solver.setOption("sygus-bool-ite-return-const", "false");
3512
      break;
3513
5
    case 786: // --sygus-core-connective
3514
5
      solver.setOption("sygus-core-connective", "true");
3515
5
      break;
3516
    case 787: // --no-sygus-core-connective
3517
      solver.setOption("sygus-core-connective", "false");
3518
      break;
3519
    case 788: // --sygus-crepair-abort
3520
      solver.setOption("sygus-crepair-abort", "true");
3521
      break;
3522
    case 789: // --no-sygus-crepair-abort
3523
      solver.setOption("sygus-crepair-abort", "false");
3524
      break;
3525
    case 790: // --sygus-eval-opt
3526
      solver.setOption("sygus-eval-opt", "true");
3527
      break;
3528
    case 791: // --no-sygus-eval-opt
3529
      solver.setOption("sygus-eval-opt", "false");
3530
      break;
3531
    case 792: // --sygus-eval-unfold
3532
      solver.setOption("sygus-eval-unfold", "true");
3533
      break;
3534
    case 793: // --no-sygus-eval-unfold
3535
      solver.setOption("sygus-eval-unfold", "false");
3536
      break;
3537
    case 794: // --sygus-eval-unfold-bool
3538
      solver.setOption("sygus-eval-unfold-bool", "true");
3539
      break;
3540
    case 795: // --no-sygus-eval-unfold-bool
3541
      solver.setOption("sygus-eval-unfold-bool", "false");
3542
      break;
3543
    case 796: // --sygus-expr-miner-check-timeout=N
3544
      solver.setOption("sygus-expr-miner-check-timeout", optionarg);
3545
      break;
3546
    case 797: // --sygus-ext-rew
3547
      solver.setOption("sygus-ext-rew", "true");
3548
      break;
3549
    case 798: // --no-sygus-ext-rew
3550
      solver.setOption("sygus-ext-rew", "false");
3551
      break;
3552
    case 799: // --sygus-filter-sol-rev
3553
      solver.setOption("sygus-filter-sol-rev", "true");
3554
      break;
3555
    case 800: // --no-sygus-filter-sol-rev
3556
      solver.setOption("sygus-filter-sol-rev", "false");
3557
      break;
3558
    case 801: // --sygus-filter-sol=MODE
3559
      solver.setOption("sygus-filter-sol", optionarg);
3560
      break;
3561
6
    case 802: // --sygus-grammar-cons=MODE
3562
6
      solver.setOption("sygus-grammar-cons", optionarg);
3563
6
      break;
3564
    case 803: // --sygus-grammar-norm
3565
      solver.setOption("sygus-grammar-norm", "true");
3566
      break;
3567
    case 804: // --no-sygus-grammar-norm
3568
      solver.setOption("sygus-grammar-norm", "false");
3569
      break;
3570
45
    case 805: // --sygus-inference
3571
45
      solver.setOption("sygus-inference", "true");
3572
45
      break;
3573
    case 806: // --no-sygus-inference
3574
      solver.setOption("sygus-inference", "false");
3575
      break;
3576
14
    case 807: // --sygus-inst
3577
14
      solver.setOption("sygus-inst", "true");
3578
14
      break;
3579
8
    case 808: // --no-sygus-inst
3580
8
      solver.setOption("sygus-inst", "false");
3581
8
      break;
3582
    case 809: // --sygus-inst-mode=MODE
3583
      solver.setOption("sygus-inst-mode", optionarg);
3584
      break;
3585
    case 810: // --sygus-inst-scope=MODE
3586
      solver.setOption("sygus-inst-scope", optionarg);
3587
      break;
3588
    case 811: // --sygus-inst-term-sel=MODE
3589
      solver.setOption("sygus-inst-term-sel", optionarg);
3590
      break;
3591
    case 812: // --sygus-inv-templ-when-sg
3592
      solver.setOption("sygus-inv-templ-when-sg", "true");
3593
      break;
3594
    case 813: // --no-sygus-inv-templ-when-sg
3595
      solver.setOption("sygus-inv-templ-when-sg", "false");
3596
      break;
3597
3
    case 814: // --sygus-inv-templ=MODE
3598
3
      solver.setOption("sygus-inv-templ", optionarg);
3599
3
      break;
3600
    case 815: // --sygus-min-grammar
3601
      solver.setOption("sygus-min-grammar", "true");
3602
      break;
3603
    case 816: // --no-sygus-min-grammar
3604
      solver.setOption("sygus-min-grammar", "false");
3605
      break;
3606
    case 817: // --sygus-pbe
3607
      solver.setOption("sygus-pbe", "true");
3608
      break;
3609
6
    case 818: // --no-sygus-pbe
3610
6
      solver.setOption("sygus-pbe", "false");
3611
6
      break;
3612
    case 819: // --sygus-pbe-multi-fair
3613
      solver.setOption("sygus-pbe-multi-fair", "true");
3614
      break;
3615
    case 820: // --no-sygus-pbe-multi-fair
3616
      solver.setOption("sygus-pbe-multi-fair", "false");
3617
      break;
3618
    case 821: // --sygus-pbe-multi-fair-diff=N
3619
      solver.setOption("sygus-pbe-multi-fair-diff", optionarg);
3620
      break;
3621
4
    case 822: // --sygus-qe-preproc
3622
4
      solver.setOption("sygus-qe-preproc", "true");
3623
4
      break;
3624
    case 823: // --no-sygus-qe-preproc
3625
      solver.setOption("sygus-qe-preproc", "false");
3626
      break;
3627
    case 824: // --sygus-query-gen
3628
      solver.setOption("sygus-query-gen", "true");
3629
      break;
3630
    case 825: // --no-sygus-query-gen
3631
      solver.setOption("sygus-query-gen", "false");
3632
      break;
3633
    case 826: // --sygus-query-gen-check
3634
      solver.setOption("sygus-query-gen-check", "true");
3635
      break;
3636
    case 827: // --no-sygus-query-gen-check
3637
      solver.setOption("sygus-query-gen-check", "false");
3638
      break;
3639
    case 828: // --sygus-query-gen-dump-files=MODE
3640
      solver.setOption("sygus-query-gen-dump-files", optionarg);
3641
      break;
3642
    case 829: // --sygus-query-gen-thresh=N
3643
      solver.setOption("sygus-query-gen-thresh", optionarg);
3644
      break;
3645
1
    case 830: // --sygus-rec-fun
3646
1
      solver.setOption("sygus-rec-fun", "true");
3647
1
      break;
3648
    case 831: // --no-sygus-rec-fun
3649
      solver.setOption("sygus-rec-fun", "false");
3650
      break;
3651
    case 832: // --sygus-rec-fun-eval-limit=N
3652
      solver.setOption("sygus-rec-fun-eval-limit", optionarg);
3653
      break;
3654
5
    case 833: // --sygus-repair-const
3655
5
      solver.setOption("sygus-repair-const", "true");
3656
5
      break;
3657
3
    case 834: // --no-sygus-repair-const
3658
3
      solver.setOption("sygus-repair-const", "false");
3659
3
      break;
3660
    case 835: // --sygus-repair-const-timeout=N
3661
      solver.setOption("sygus-repair-const-timeout", optionarg);
3662
      break;
3663
6
    case 836: // --sygus-rr
3664
6
      solver.setOption("sygus-rr", "true");
3665
6
      break;
3666
    case 837: // --no-sygus-rr
3667
      solver.setOption("sygus-rr", "false");
3668
      break;
3669
1
    case 838: // --sygus-rr-synth
3670
1
      solver.setOption("sygus-rr-synth", "true");
3671
1
      break;
3672
    case 839: // --no-sygus-rr-synth
3673
      solver.setOption("sygus-rr-synth", "false");
3674
      break;
3675
    case 840: // --sygus-rr-synth-accel
3676
      solver.setOption("sygus-rr-synth-accel", "true");
3677
      break;
3678
    case 841: // --no-sygus-rr-synth-accel
3679
      solver.setOption("sygus-rr-synth-accel", "false");
3680
      break;
3681
3
    case 842: // --sygus-rr-synth-check
3682
3
      solver.setOption("sygus-rr-synth-check", "true");
3683
3
      break;
3684
    case 843: // --no-sygus-rr-synth-check
3685
      solver.setOption("sygus-rr-synth-check", "false");
3686
      break;
3687
    case 844: // --sygus-rr-synth-filter-cong
3688
      solver.setOption("sygus-rr-synth-filter-cong", "true");
3689
      break;
3690
    case 845: // --no-sygus-rr-synth-filter-cong
3691
      solver.setOption("sygus-rr-synth-filter-cong", "false");
3692
      break;
3693
    case 846: // --sygus-rr-synth-filter-match
3694
      solver.setOption("sygus-rr-synth-filter-match", "true");
3695
      break;
3696
    case 847: // --no-sygus-rr-synth-filter-match
3697
      solver.setOption("sygus-rr-synth-filter-match", "false");
3698
      break;
3699
    case 848: // --sygus-rr-synth-filter-nl
3700
      solver.setOption("sygus-rr-synth-filter-nl", "true");
3701
      break;
3702
    case 849: // --no-sygus-rr-synth-filter-nl
3703
      solver.setOption("sygus-rr-synth-filter-nl", "false");
3704
      break;
3705
    case 850: // --sygus-rr-synth-filter-order
3706
      solver.setOption("sygus-rr-synth-filter-order", "true");
3707
      break;
3708
    case 851: // --no-sygus-rr-synth-filter-order
3709
      solver.setOption("sygus-rr-synth-filter-order", "false");
3710
      break;
3711
    case 852: // --sygus-rr-synth-input
3712
      solver.setOption("sygus-rr-synth-input", "true");
3713
      break;
3714
    case 853: // --no-sygus-rr-synth-input
3715
      solver.setOption("sygus-rr-synth-input", "false");
3716
      break;
3717
    case 854: // --sygus-rr-synth-input-nvars=N
3718
      solver.setOption("sygus-rr-synth-input-nvars", optionarg);
3719
      break;
3720
    case 855: // --sygus-rr-synth-input-use-bool
3721
      solver.setOption("sygus-rr-synth-input-use-bool", "true");
3722
      break;
3723
    case 856: // --no-sygus-rr-synth-input-use-bool
3724
      solver.setOption("sygus-rr-synth-input-use-bool", "false");
3725
      break;
3726
    case 857: // --sygus-rr-synth-rec
3727
      solver.setOption("sygus-rr-synth-rec", "true");
3728
      break;
3729
    case 858: // --no-sygus-rr-synth-rec
3730
      solver.setOption("sygus-rr-synth-rec", "false");
3731
      break;
3732
    case 859: // --sygus-rr-verify
3733
      solver.setOption("sygus-rr-verify", "true");
3734
      break;
3735
    case 860: // --no-sygus-rr-verify
3736
      solver.setOption("sygus-rr-verify", "false");
3737
      break;
3738
7
    case 861: // --sygus-rr-verify-abort
3739
7
      solver.setOption("sygus-rr-verify-abort", "true");
3740
7
      break;
3741
    case 862: // --no-sygus-rr-verify-abort
3742
      solver.setOption("sygus-rr-verify-abort", "false");
3743
      break;
3744
    case 863: // --sygus-sample-fp-uniform
3745
      solver.setOption("sygus-sample-fp-uniform", "true");
3746
      break;
3747
    case 864: // --no-sygus-sample-fp-uniform
3748
      solver.setOption("sygus-sample-fp-uniform", "false");
3749
      break;
3750
    case 865: // --sygus-sample-grammar
3751
      solver.setOption("sygus-sample-grammar", "true");
3752
      break;
3753
    case 866: // --no-sygus-sample-grammar
3754
      solver.setOption("sygus-sample-grammar", "false");
3755
      break;
3756
7
    case 867: // --sygus-samples=N
3757
7
      solver.setOption("sygus-samples", optionarg);
3758
7
      break;
3759
    case 868: // --sygus-si-abort
3760
      solver.setOption("sygus-si-abort", "true");
3761
      break;
3762
    case 869: // --no-sygus-si-abort
3763
      solver.setOption("sygus-si-abort", "false");
3764
      break;
3765
    case 870: // --sygus-si-partial
3766
      solver.setOption("sygus-si-partial", "true");
3767
      break;
3768
    case 871: // --no-sygus-si-partial
3769
      solver.setOption("sygus-si-partial", "false");
3770
      break;
3771
1
    case 872: // --sygus-si-rcons-limit=N
3772
1
      solver.setOption("sygus-si-rcons-limit", optionarg);
3773
1
      break;
3774
    case 873: // --sygus-si-rcons=MODE
3775
      solver.setOption("sygus-si-rcons", optionarg);
3776
      break;
3777
    case 874: // --sygus-si-reconstruct-const
3778
      solver.setOption("sygus-si-reconstruct-const", "true");
3779
      break;
3780
    case 875: // --no-sygus-si-reconstruct-const
3781
      solver.setOption("sygus-si-reconstruct-const", "false");
3782
      break;
3783
47
    case 876: // --sygus-si=MODE
3784
47
      solver.setOption("sygus-si", optionarg);
3785
47
      break;
3786
4
    case 877: // --sygus-stream
3787
4
      solver.setOption("sygus-stream", "true");
3788
4
      break;
3789
    case 878: // --no-sygus-stream
3790
      solver.setOption("sygus-stream", "false");
3791
      break;
3792
    case 879: // --sygus-templ-embed-grammar
3793
      solver.setOption("sygus-templ-embed-grammar", "true");
3794
      break;
3795
    case 880: // --no-sygus-templ-embed-grammar
3796
      solver.setOption("sygus-templ-embed-grammar", "false");
3797
      break;
3798
    case 881: // --sygus-unif-cond-independent-no-repeat-sol
3799
      solver.setOption("sygus-unif-cond-independent-no-repeat-sol", "true");
3800
      break;
3801
    case 882: // --no-sygus-unif-cond-independent-no-repeat-sol
3802
      solver.setOption("sygus-unif-cond-independent-no-repeat-sol", "false");
3803
      break;
3804
9
    case 883: // --sygus-unif-pi=MODE
3805
9
      solver.setOption("sygus-unif-pi", optionarg);
3806
9
      break;
3807
    case 884: // --sygus-unif-shuffle-cond
3808
      solver.setOption("sygus-unif-shuffle-cond", "true");
3809
      break;
3810
    case 885: // --no-sygus-unif-shuffle-cond
3811
      solver.setOption("sygus-unif-shuffle-cond", "false");
3812
      break;
3813
    case 886: // --sygus-verify-inst-max-rounds=N
3814
      solver.setOption("sygus-verify-inst-max-rounds", optionarg);
3815
      break;
3816
    case 887: // --term-db-cd
3817
      solver.setOption("term-db-cd", "true");
3818
      break;
3819
    case 888: // --no-term-db-cd
3820
      solver.setOption("term-db-cd", "false");
3821
      break;
3822
    case 889: // --term-db-mode=MODE
3823
      solver.setOption("term-db-mode", optionarg);
3824
      break;
3825
    case 890: // --trigger-active-sel=MODE
3826
      solver.setOption("trigger-active-sel", optionarg);
3827
      break;
3828
    case 891: // --trigger-sel=MODE
3829
      solver.setOption("trigger-sel", optionarg);
3830
      break;
3831
    case 892: // --user-pat=MODE
3832
      solver.setOption("user-pat", optionarg);
3833
      break;
3834
    case 893: // --var-elim-quant
3835
      solver.setOption("var-elim-quant", "true");
3836
      break;
3837
    case 894: // --no-var-elim-quant
3838
      solver.setOption("var-elim-quant", "false");
3839
      break;
3840
2
    case 895: // --var-ineq-elim-quant
3841
2
      solver.setOption("var-ineq-elim-quant", "true");
3842
2
      break;
3843
    case 896: // --no-var-ineq-elim-quant
3844
      solver.setOption("var-ineq-elim-quant", "false");
3845
      break;
3846
    case 897: // --sep-check-neg
3847
      solver.setOption("sep-check-neg", "true");
3848
      break;
3849
    case 898: // --no-sep-check-neg
3850
      solver.setOption("sep-check-neg", "false");
3851
      break;
3852
    case 899: // --sep-child-refine
3853
      solver.setOption("sep-child-refine", "true");
3854
      break;
3855
    case 900: // --no-sep-child-refine
3856
      solver.setOption("sep-child-refine", "false");
3857
      break;
3858
    case 901: // --sep-deq-c
3859
      solver.setOption("sep-deq-c", "true");
3860
      break;
3861
    case 902: // --no-sep-deq-c
3862
      solver.setOption("sep-deq-c", "false");
3863
      break;
3864
    case 903: // --sep-exp
3865
      solver.setOption("sep-exp", "true");
3866
      break;
3867
    case 904: // --no-sep-exp
3868
      solver.setOption("sep-exp", "false");
3869
      break;
3870
    case 905: // --sep-min-refine
3871
      solver.setOption("sep-min-refine", "true");
3872
      break;
3873
    case 906: // --no-sep-min-refine
3874
      solver.setOption("sep-min-refine", "false");
3875
      break;
3876
1
    case 907: // --sep-pre-skolem-emp
3877
1
      solver.setOption("sep-pre-skolem-emp", "true");
3878
1
      break;
3879
    case 908: // --no-sep-pre-skolem-emp
3880
      solver.setOption("sep-pre-skolem-emp", "false");
3881
      break;
3882
32
    case 909: // --sets-ext
3883
32
      solver.setOption("sets-ext", "true");
3884
32
      break;
3885
    case 910: // --no-sets-ext
3886
      solver.setOption("sets-ext", "false");
3887
      break;
3888
2
    case 911: // --sets-infer-as-lemmas
3889
2
      solver.setOption("sets-infer-as-lemmas", "true");
3890
2
      break;
3891
    case 912: // --no-sets-infer-as-lemmas
3892
      solver.setOption("sets-infer-as-lemmas", "false");
3893
      break;
3894
    case 913: // --sets-proxy-lemmas
3895
      solver.setOption("sets-proxy-lemmas", "true");
3896
      break;
3897
    case 914: // --no-sets-proxy-lemmas
3898
      solver.setOption("sets-proxy-lemmas", "false");
3899
      break;
3900
4
    case 915: // --abstract-values
3901
4
      solver.setOption("abstract-values", "true");
3902
4
      break;
3903
    case 916: // --no-abstract-values
3904
      solver.setOption("abstract-values", "false");
3905
      break;
3906
31
    case 917: // --ackermann
3907
31
      solver.setOption("ackermann", "true");
3908
31
      break;
3909
    case 918: // --no-ackermann
3910
      solver.setOption("ackermann", "false");
3911
      break;
3912
7
    case 919: // --block-models=MODE
3913
7
      solver.setOption("block-models", optionarg);
3914
7
      break;
3915
78
    case 920: // --bvand-integer-granularity=N
3916
78
      solver.setOption("bvand-integer-granularity", optionarg);
3917
78
      break;
3918
13
    case 921: // --check-abducts
3919
13
      solver.setOption("check-abducts", "true");
3920
13
      break;
3921
    case 922: // --no-check-abducts
3922
      solver.setOption("check-abducts", "false");
3923
      break;
3924
8
    case 923: // --check-interpols
3925
8
      solver.setOption("check-interpols", "true");
3926
8
      break;
3927
    case 924: // --no-check-interpols
3928
      solver.setOption("check-interpols", "false");
3929
      break;
3930
26
    case 925: // --check-models
3931
26
      solver.setOption("check-models", "true");
3932
26
      break;
3933
86
    case 926: // --no-check-models
3934
86
      solver.setOption("check-models", "false");
3935
86
      break;
3936
1153
    case 927: // --check-proofs
3937
1153
      solver.setOption("check-proofs", "true");
3938
1153
      break;
3939
13
    case 928: // --no-check-proofs
3940
13
      solver.setOption("check-proofs", "false");
3941
13
      break;
3942
184
    case 929: // --check-synth-sol
3943
184
      solver.setOption("check-synth-sol", "true");
3944
184
      break;
3945
6
    case 930: // --no-check-synth-sol
3946
6
      solver.setOption("check-synth-sol", "false");
3947
6
      break;
3948
1142
    case 931: // --check-unsat-cores
3949
1142
      solver.setOption("check-unsat-cores", "true");
3950
1142
      break;
3951
42
    case 932: // --no-check-unsat-cores
3952
42
      solver.setOption("check-unsat-cores", "false");
3953
42
      break;
3954
1229
    case 933: // --debug-check-models
3955
1229
      solver.setOption("debug-check-models", "true");
3956
1229
      break;
3957
    case 934: // --no-debug-check-models
3958
      solver.setOption("debug-check-models", "false");
3959
      break;
3960
    case 935: // --dump-to=FILE
3961
      solver.setOption("dump-to", optionarg);
3962
      break;
3963
3
    case 936: // --dump=MODE
3964
4
      solver.setOption("dump", optionarg);
3965
2
      break;
3966
    case 937: // --early-ite-removal
3967
      solver.setOption("early-ite-removal", "true");
3968
      break;
3969
    case 938: // --no-early-ite-removal
3970
      solver.setOption("early-ite-removal", "false");
3971
      break;
3972
    case 939: // --expand-definitions
3973
      solver.setOption("expand-definitions", "true");
3974
      break;
3975
    case 940: // --no-expand-definitions
3976
      solver.setOption("expand-definitions", "false");
3977
      break;
3978
17
    case 941: // --ext-rew-prep
3979
17
      solver.setOption("ext-rew-prep", "true");
3980
17
      break;
3981
    case 942: // --no-ext-rew-prep
3982
      solver.setOption("ext-rew-prep", "false");
3983
      break;
3984
7
    case 943: // --ext-rew-prep-agg
3985
7
      solver.setOption("ext-rew-prep-agg", "true");
3986
7
      break;
3987
    case 944: // --no-ext-rew-prep-agg
3988
      solver.setOption("ext-rew-prep-agg", "false");
3989
      break;
3990
2
    case 945: // --foreign-theory-rewrite
3991
2
      solver.setOption("foreign-theory-rewrite", "true");
3992
2
      break;
3993
    case 946: // --no-foreign-theory-rewrite
3994
      solver.setOption("foreign-theory-rewrite", "false");
3995
      break;
3996
67
    case 947: // --iand-mode=mode
3997
67
      solver.setOption("iand-mode", optionarg);
3998
67
      break;
3999
    case 948: // --interactive-mode
4000
      solver.setOption("interactive-mode", "true");
4001
      break;
4002
    case 949: // --no-interactive-mode
4003
      solver.setOption("interactive-mode", "false");
4004
      break;
4005
    case 950: // --ite-simp
4006
      solver.setOption("ite-simp", "true");
4007
      break;
4008
    case 951: // --no-ite-simp
4009
      solver.setOption("ite-simp", "false");
4010
      break;
4011
2
    case 952: // --learned-rewrite
4012
2
      solver.setOption("learned-rewrite", "true");
4013
2
      break;
4014
    case 953: // --no-learned-rewrite
4015
      solver.setOption("learned-rewrite", "false");
4016
      break;
4017
3
    case 954: // --minimal-unsat-cores
4018
3
      solver.setOption("minimal-unsat-cores", "true");
4019
3
      break;
4020
    case 955: // --no-minimal-unsat-cores
4021
      solver.setOption("minimal-unsat-cores", "false");
4022
      break;
4023
6
    case 956: // --model-cores=MODE
4024
6
      solver.setOption("model-cores", optionarg);
4025
6
      break;
4026
1
    case 957: // --model-u-print=MODE
4027
    case 958: // --model-uninterp-print
4028
1
      solver.setOption("model-u-print", optionarg);
4029
1
      break;
4030
1
    case 959: // --model-witness-value
4031
1
      solver.setOption("model-witness-value", "true");
4032
1
      break;
4033
    case 960: // --no-model-witness-value
4034
      solver.setOption("model-witness-value", "false");
4035
      break;
4036
    case 961: // --on-repeat-ite-simp
4037
      solver.setOption("on-repeat-ite-simp", "true");
4038
      break;
4039
    case 962: // --no-on-repeat-ite-simp
4040
      solver.setOption("on-repeat-ite-simp", "false");
4041
      break;
4042
12
    case 963: // --produce-abducts
4043
12
      solver.setOption("produce-abducts", "true");
4044
12
      break;
4045
    case 964: // --no-produce-abducts
4046
      solver.setOption("produce-abducts", "false");
4047
      break;
4048
    case 965: // --produce-assertions
4049
      solver.setOption("produce-assertions", "true");
4050
      break;
4051
    case 966: // --no-produce-assertions
4052
      solver.setOption("produce-assertions", "false");
4053
      break;
4054
    case 967: // --produce-assignments
4055
      solver.setOption("produce-assignments", "true");
4056
      break;
4057
    case 968: // --no-produce-assignments
4058
      solver.setOption("produce-assignments", "false");
4059
      break;
4060
8
    case 969: // --produce-interpols=MODE
4061
8
      solver.setOption("produce-interpols", optionarg);
4062
8
      break;
4063
37
    case 'm': // -m
4064
    case 970: // --produce-models
4065
37
      solver.setOption("produce-models", "true");
4066
37
      break;
4067
    case 971: // --no-produce-models
4068
      solver.setOption("produce-models", "false");
4069
      break;
4070
9
    case 972: // --produce-proofs
4071
9
      solver.setOption("produce-proofs", "true");
4072
9
      break;
4073
18
    case 973: // --no-produce-proofs
4074
18
      solver.setOption("produce-proofs", "false");
4075
18
      break;
4076
    case 974: // --produce-unsat-assumptions
4077
      solver.setOption("produce-unsat-assumptions", "true");
4078
      break;
4079
    case 975: // --no-produce-unsat-assumptions
4080
      solver.setOption("produce-unsat-assumptions", "false");
4081
      break;
4082
4
    case 976: // --produce-unsat-cores
4083
4
      solver.setOption("produce-unsat-cores", "true");
4084
4
      break;
4085
2
    case 977: // --no-produce-unsat-cores
4086
2
      solver.setOption("produce-unsat-cores", "false");
4087
2
      break;
4088
2
    case 978: // --repeat-simp
4089
2
      solver.setOption("repeat-simp", "true");
4090
2
      break;
4091
    case 979: // --no-repeat-simp
4092
      solver.setOption("repeat-simp", "false");
4093
      break;
4094
    case 980: // --simp-ite-compress
4095
      solver.setOption("simp-ite-compress", "true");
4096
      break;
4097
    case 981: // --no-simp-ite-compress
4098
      solver.setOption("simp-ite-compress", "false");
4099
      break;
4100
    case 982: // --simp-ite-hunt-zombies=N
4101
      solver.setOption("simp-ite-hunt-zombies", optionarg);
4102
      break;
4103
    case 983: // --simp-with-care
4104
      solver.setOption("simp-with-care", "true");
4105
      break;
4106
    case 984: // --no-simp-with-care
4107
      solver.setOption("simp-with-care", "false");
4108
      break;
4109
31
    case 985: // --simplification=MODE
4110
    case 986: // --simplification-mode
4111
31
      solver.setOption("simplification", optionarg);
4112
31
      break;
4113
134
    case 987: // --solve-bv-as-int=MODE
4114
134
      solver.setOption("solve-bv-as-int", optionarg);
4115
134
      break;
4116
13
    case 988: // --solve-int-as-bv=N
4117
13
      solver.setOption("solve-int-as-bv", optionarg);
4118
13
      break;
4119
9
    case 989: // --solve-real-as-int
4120
9
      solver.setOption("solve-real-as-int", "true");
4121
9
      break;
4122
    case 990: // --no-solve-real-as-int
4123
      solver.setOption("solve-real-as-int", "false");
4124
      break;
4125
20
    case 991: // --sort-inference
4126
20
      solver.setOption("sort-inference", "true");
4127
20
      break;
4128
    case 992: // --no-sort-inference
4129
      solver.setOption("sort-inference", "false");
4130
      break;
4131
    case 993: // --static-learning
4132
      solver.setOption("static-learning", "true");
4133
      break;
4134
    case 994: // --no-static-learning
4135
      solver.setOption("static-learning", "false");
4136
      break;
4137
183
    case 995: // --sygus-out=MODE
4138
183
      solver.setOption("sygus-out", optionarg);
4139
183
      break;
4140
    case 996: // --sygus-print-callbacks
4141
      solver.setOption("sygus-print-callbacks", "true");
4142
      break;
4143
    case 997: // --no-sygus-print-callbacks
4144
      solver.setOption("sygus-print-callbacks", "false");
4145
      break;
4146
104
    case 998: // --unconstrained-simp
4147
104
      solver.setOption("unconstrained-simp", "true");
4148
104
      break;
4149
3
    case 999: // --no-unconstrained-simp
4150
3
      solver.setOption("unconstrained-simp", "false");
4151
3
      break;
4152
2
    case 1000: // --unsat-cores-mode=MODE
4153
2
      solver.setOption("unsat-cores-mode", optionarg);
4154
2
      break;
4155
25
    case 1001: // --re-elim
4156
25
      solver.setOption("re-elim", "true");
4157
25
      break;
4158
10
    case 1002: // --no-re-elim
4159
10
      solver.setOption("re-elim", "false");
4160
10
      break;
4161
12
    case 1003: // --re-elim-agg
4162
12
      solver.setOption("re-elim-agg", "true");
4163
12
      break;
4164
    case 1004: // --no-re-elim-agg
4165
      solver.setOption("re-elim-agg", "false");
4166
      break;
4167
    case 1005: // --re-inter-mode=MODE
4168
      solver.setOption("re-inter-mode", optionarg);
4169
      break;
4170
    case 1006: // --strings-check-entail-len
4171
      solver.setOption("strings-check-entail-len", "true");
4172
      break;
4173
    case 1007: // --no-strings-check-entail-len
4174
      solver.setOption("strings-check-entail-len", "false");
4175
      break;
4176
2
    case 1008: // --strings-eager
4177
2
      solver.setOption("strings-eager", "true");
4178
2
      break;
4179
    case 1009: // --no-strings-eager
4180
      solver.setOption("strings-eager", "false");
4181
      break;
4182
    case 1010: // --strings-eager-eval
4183
      solver.setOption("strings-eager-eval", "true");
4184
      break;
4185
    case 1011: // --no-strings-eager-eval
4186
      solver.setOption("strings-eager-eval", "false");
4187
      break;
4188
    case 1012: // --strings-eager-len
4189
      solver.setOption("strings-eager-len", "true");
4190
      break;
4191
    case 1013: // --no-strings-eager-len
4192
      solver.setOption("strings-eager-len", "false");
4193
      break;
4194
331
    case 1014: // --strings-exp
4195
331
      solver.setOption("strings-exp", "true");
4196
331
      break;
4197
    case 1015: // --no-strings-exp
4198
      solver.setOption("strings-exp", "false");
4199
      break;
4200
    case 1016: // --strings-ff
4201
      solver.setOption("strings-ff", "true");
4202
      break;
4203
    case 1017: // --no-strings-ff
4204
      solver.setOption("strings-ff", "false");
4205
      break;
4206
25
    case 1018: // --strings-fmf
4207
25
      solver.setOption("strings-fmf", "true");
4208
25
      break;
4209
    case 1019: // --no-strings-fmf
4210
      solver.setOption("strings-fmf", "false");
4211
      break;
4212
    case 1020: // --strings-guess-model
4213
      solver.setOption("strings-guess-model", "true");
4214
      break;
4215
    case 1021: // --no-strings-guess-model
4216
      solver.setOption("strings-guess-model", "false");
4217
      break;
4218
    case 1022: // --strings-infer-as-lemmas
4219
      solver.setOption("strings-infer-as-lemmas", "true");
4220
      break;
4221
    case 1023: // --no-strings-infer-as-lemmas
4222
      solver.setOption("strings-infer-as-lemmas", "false");
4223
      break;
4224
    case 1024: // --strings-infer-sym
4225
      solver.setOption("strings-infer-sym", "true");
4226
      break;
4227
    case 1025: // --no-strings-infer-sym
4228
      solver.setOption("strings-infer-sym", "false");
4229
      break;
4230
    case 1026: // --strings-lazy-pp
4231
      solver.setOption("strings-lazy-pp", "true");
4232
      break;
4233
21
    case 1027: // --no-strings-lazy-pp
4234
21
      solver.setOption("strings-lazy-pp", "false");
4235
21
      break;
4236
    case 1028: // --strings-len-norm
4237
      solver.setOption("strings-len-norm", "true");
4238
      break;
4239
    case 1029: // --no-strings-len-norm
4240
      solver.setOption("strings-len-norm", "false");
4241
      break;
4242
    case 1030: // --strings-lprop-csp
4243
      solver.setOption("strings-lprop-csp", "true");
4244
      break;
4245
    case 1031: // --no-strings-lprop-csp
4246
      solver.setOption("strings-lprop-csp", "false");
4247
      break;
4248
    case 1032: // --strings-min-prefix-explain
4249
      solver.setOption("strings-min-prefix-explain", "true");
4250
      break;
4251
    case 1033: // --no-strings-min-prefix-explain
4252
      solver.setOption("strings-min-prefix-explain", "false");
4253
      break;
4254
    case 1034: // --strings-process-loop-mode=MODE
4255
      solver.setOption("strings-process-loop-mode", optionarg);
4256
      break;
4257
    case 1035: // --strings-rexplain-lemmas
4258
      solver.setOption("strings-rexplain-lemmas", "true");
4259
      break;
4260
    case 1036: // --no-strings-rexplain-lemmas
4261
      solver.setOption("strings-rexplain-lemmas", "false");
4262
      break;
4263
    case 1037: // --strings-unified-vspt
4264
      solver.setOption("strings-unified-vspt", "true");
4265
      break;
4266
    case 1038: // --no-strings-unified-vspt
4267
      solver.setOption("strings-unified-vspt", "false");
4268
      break;
4269
    case 1039: // --assign-function-values
4270
      solver.setOption("assign-function-values", "true");
4271
      break;
4272
    case 1040: // --no-assign-function-values
4273
      solver.setOption("assign-function-values", "false");
4274
      break;
4275
    case 1041: // --condense-function-values
4276
      solver.setOption("condense-function-values", "true");
4277
      break;
4278
    case 1042: // --no-condense-function-values
4279
      solver.setOption("condense-function-values", "false");
4280
      break;
4281
56
    case 1043: // --ee-mode=MODE
4282
56
      solver.setOption("ee-mode", optionarg);
4283
56
      break;
4284
    case 1044: // --relevance-filter
4285
      solver.setOption("relevance-filter", "true");
4286
      break;
4287
    case 1045: // --no-relevance-filter
4288
      solver.setOption("relevance-filter", "false");
4289
      break;
4290
    case 1046: // --tc-mode=MODE
4291
      solver.setOption("tc-mode", optionarg);
4292
      break;
4293
5
    case 1047: // --theoryof-mode=MODE
4294
5
      solver.setOption("theoryof-mode", optionarg);
4295
5
      break;
4296
    case 1048: // --symmetry-breaker
4297
    case 1049: // --uf-symmetry-breaker
4298
      solver.setOption("symmetry-breaker", "true");
4299
      break;
4300
    case 1050: // --no-symmetry-breaker
4301
    case 1051: // --no-uf-symmetry-breaker
4302
      solver.setOption("symmetry-breaker", "false");
4303
      break;
4304
    case 1052: // --uf-ho
4305
      solver.setOption("uf-ho", "true");
4306
      break;
4307
    case 1053: // --no-uf-ho
4308
      solver.setOption("uf-ho", "false");
4309
      break;
4310
    case 1054: // --uf-ho-ext
4311
      solver.setOption("uf-ho-ext", "true");
4312
      break;
4313
    case 1055: // --no-uf-ho-ext
4314
      solver.setOption("uf-ho-ext", "false");
4315
      break;
4316
    case 1056: // --uf-ss-abort-card=N
4317
      solver.setOption("uf-ss-abort-card", optionarg);
4318
      break;
4319
    case 1057: // --uf-ss-fair
4320
      solver.setOption("uf-ss-fair", "true");
4321
      break;
4322
    case 1058: // --no-uf-ss-fair
4323
      solver.setOption("uf-ss-fair", "false");
4324
      break;
4325
4
    case 1059: // --uf-ss-fair-monotone
4326
4
      solver.setOption("uf-ss-fair-monotone", "true");
4327
4
      break;
4328
    case 1060: // --no-uf-ss-fair-monotone
4329
      solver.setOption("uf-ss-fair-monotone", "false");
4330
      break;
4331
    case 1061: // --uf-ss-totality-limited=N
4332
      solver.setOption("uf-ss-totality-limited", optionarg);
4333
      break;
4334
    case 1062: // --uf-ss-totality-sym-break
4335
      solver.setOption("uf-ss-totality-sym-break", "true");
4336
      break;
4337
    case 1063: // --no-uf-ss-totality-sym-break
4338
      solver.setOption("uf-ss-totality-sym-break", "false");
4339
      break;
4340
7
    case 1064: // --uf-ss=MODE
4341
7
      solver.setOption("uf-ss", optionarg);
4342
7
      break;
4343
4344
      case ':' :
4345
      // This can be a long or short option, and the way to get at the
4346
      // name of it is different.
4347
      throw OptionException(std::string("option `") + option
4348
                            + "' missing its required argument");
4349
4350
      case '?':
4351
      default:
4352
        throw OptionException(std::string("can't understand option `") + option
4353
                              + "'" + suggestCommandLineOptions(option));
4354
    }
4355
15473
  }
4356
  // clang-format on
4357
4358
18480
  Debug("options") << "got " << nonoptions.size()
4359
6160
                   << " non-option arguments." << std::endl;
4360
6160
}
4361
4362
/**
4363
 * Parse argc/argv and put the result into a cvc5::Options.
4364
 * The return value is what's left of the command line (that is, the
4365
 * non-option arguments).
4366
 *
4367
 * Throws OptionException on failures.
4368
 */
4369
8780
std::vector<std::string> parse(
4370
    api::Solver& solver, int argc, char* argv[], std::string& binaryName)
4371
{
4372
8780
  Assert(argv != nullptr);
4373
4374
8780
  const char *progName = argv[0];
4375
4376
  // To debug options parsing, you may prefer to simply uncomment this
4377
  // and recompile. Debug flags have not been parsed yet so these have
4378
  // not been set.
4379
  //DebugChannel.on("options");
4380
4381
8780
  Debug("options") << "argv == " << argv << std::endl;
4382
4383
  // Find the base name of the program.
4384
8780
  const char *x = strrchr(progName, '/');
4385
8780
  if(x != nullptr) {
4386
8780
    progName = x + 1;
4387
  }
4388
8780
  binaryName = std::string(progName);
4389
4390
8780
  std::vector<std::string> nonoptions;
4391
8780
  parseInternal(solver, argc, argv, nonoptions);
4392
6160
  if (Debug.isOn("options")){
4393
    for (const auto& no: nonoptions){
4394
      Debug("options") << "nonoptions " << no << std::endl;
4395
    }
4396
  }
4397
4398
6160
  return nonoptions;
4399
}
4400
4401
29481
}  // namespace cvc5::options