GCC Code Coverage Report
Directory: . Exec Total Coverage
File: build-coverage/src/options/options_public.cpp Lines: 2731 7988 34.2 %
Date: 2021-08-20 Branches: 3126 19348 16.2 %

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
 * Global (command-line, set-option, ...) parameters for SMT.
14
 */
15
16
#include "options/options_public.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/options_handler.h"
42
#include "options/options_listener.h"
43
#include "options/options.h"
44
#include "options/uf_options.h"
45
#include "options/arith_options.h"
46
#include "options/arrays_options.h"
47
#include "options/base_options.h"
48
#include "options/booleans_options.h"
49
#include "options/builtin_options.h"
50
#include "options/bv_options.h"
51
#include "options/datatypes_options.h"
52
#include "options/decision_options.h"
53
#include "options/expr_options.h"
54
#include "options/fp_options.h"
55
#include "options/main_options.h"
56
#include "options/parser_options.h"
57
#include "options/printer_options.h"
58
#include "options/proof_options.h"
59
#include "options/prop_options.h"
60
#include "options/quantifiers_options.h"
61
#include "options/sep_options.h"
62
#include "options/sets_options.h"
63
#include "options/smt_options.h"
64
#include "options/strings_options.h"
65
#include "options/theory_options.h"
66
#include "options/uf_options.h"
67
68
69
#include <cstring>
70
#include <iostream>
71
#include <limits>
72
73
namespace cvc5::options {
74
75
bool getUfHo(const Options& opts) { return opts.uf.ufHo; }
76
77
// clang-format off
78
9786
static const std::string mostCommonOptionsDescription =
79
    "\
80
Most commonly-used cvc5 options:\n"
81
"  --incremental | -i     enable incremental solving [*]\n"
82
"  --lang=LANG | --input-language=LANG | -L LANG\n"
83
"                         force input language (default is \"auto\"; see --lang\n"
84
"                         help)\n"
85
"  --output-lang=LANG | --output-language=LANG\n"
86
"                         force output language (default is \"auto\"; see\n"
87
"                         --output-lang help)\n"
88
"  --quiet | -q           decrease verbosity (may be repeated)\n"
89
"  --rlimit-per=N | --reproducible-resource-limit=N\n"
90
"                         set resource limit per query\n"
91
"  --rlimit=N             set resource limit\n"
92
"  --stats                give statistics on exit [*]\n"
93
"  --tlimit-per=MS        set time limit per query in milliseconds\n"
94
"  --tlimit=MS            set time limit in milliseconds of wall clock time\n"
95
"  --verbose | -v         increase verbosity (may be repeated)\n"
96
"  --copyright            show cvc5 copyright information\n"
97
"  --help | -h            full command line reference\n"
98
"  --seed=N | -s N        seed for random number generator\n"
99
"  --show-config          show cvc5 static configuration\n"
100
"  --version | -V         identify this cvc5 binary\n"
101
"  --strict-parsing       be less tolerant of non-conforming inputs [*]\n"
102
"  --dump-to=FILE         all dumping goes to FILE (instead of stdout)\n"
103
"  --dump=MODE            dump preprocessed assertions, etc., see --dump=help\n"
104
"  --produce-assertions   keep an assertions list (enables get-assertions\n"
105
"                         command) [*]\n"
106
"  --produce-models | -m  support the get-value and get-model commands [*]\n"
107
    ;
108
109
9786
static const std::string optionsDescription =
110
    mostCommonOptionsDescription + "\n\nAdditional cvc5 options:\n"
111
"\nFrom the Arithmetic Theory module:\n"
112
"  --approx-branch-depth=N\n"
113
"                         maximum branch depth the approximate solver is allowed\n"
114
"                         to take\n"
115
"  --arith-brab           whether to use simple rounding, similar to a unit-cube\n"
116
"                         test, for integers [*]\n"
117
"  --arith-cong-man       (experimental) whether to use the congruence manager\n"
118
"                         when the equality solver is enabled [*]\n"
119
"  --arith-eq-solver      whether to use the equality solver in the theory of\n"
120
"                         arithmetic [*]\n"
121
"  --arith-no-partial-fun do not use partial function semantics for arithmetic\n"
122
"                         (not SMT LIB compliant) [*]\n"
123
"  --arith-prop-clauses=N rows shorter than this are propagated as clauses\n"
124
"  --arith-prop=MODE      turns on arithmetic propagation (default is 'old', see\n"
125
"                         --arith-prop=help)\n"
126
"  --arith-rewrite-equalities\n"
127
"                         turns on the preprocessing rewrite turning equalities\n"
128
"                         into a conjunction of inequalities [*]\n"
129
"  --collect-pivot-stats  collect the pivot history [*]\n"
130
"  --cut-all-bounded      turns on the integer solving step of periodically\n"
131
"                         cutting all integer variables that have both upper and\n"
132
"                         lower bounds [*]\n"
133
"  --dio-decomps          let skolem variables for integer divisibility\n"
134
"                         constraints leak from the dio solver [*]\n"
135
"  --dio-repeat           handle dio solver constraints in mass or one at a time\n"
136
"                         [*]\n"
137
"  --dio-solver           turns on Linear Diophantine Equation solver (Griggio,\n"
138
"                         JSAT 2012) [*]\n"
139
"  --dio-turns=N          turns in a row dio solver cutting gets\n"
140
"  --error-selection-rule=RULE\n"
141
"                         change the pivot rule for the basic variable (default\n"
142
"                         is 'min', see --pivot-rule help)\n"
143
"  --fc-penalties         turns on degenerate pivot penalties [*]\n"
144
"  --heuristic-pivots=N   the number of times to apply the heuristic pivot rule;\n"
145
"                         if N < 0, this defaults to the number of variables; if\n"
146
"                         this is unset, this is tuned by the logic selection\n"
147
"  --lemmas-on-replay-failure\n"
148
"                         attempt to use external lemmas if approximate solve\n"
149
"                         integer failed [*]\n"
150
"  --maxCutsInContext=N   maximum cuts in a given context before signalling a\n"
151
"                         restart\n"
152
"  --miplib-trick         turns on the preprocessing step of attempting to infer\n"
153
"                         bounds on miplib problems [*]\n"
154
"  --miplib-trick-subs=N  do substitution for miplib 'tmp' vars if defined in <=\n"
155
"                         N eliminated vars\n"
156
"  --new-prop             use the new row propagation system [*]\n"
157
"  --nl-cad               whether to use the cylindrical algebraic decomposition\n"
158
"                         solver for non-linear arithmetic [*]\n"
159
"  --nl-cad-initial       whether to use the linear model as initial guess for\n"
160
"                         the cylindrical algebraic decomposition solver [*]\n"
161
"  --nl-cad-lift=MODE     choose the CAD lifting mode (EXPERTS only)\n"
162
"  --nl-cad-proj=MODE     choose the CAD projection operator (EXPERTS only)\n"
163
"  --nl-ext-ent-conf      check for entailed conflicts in non-linear solver [*]\n"
164
"  --nl-ext-factor        use factoring inference in non-linear incremental\n"
165
"                         linearization solver [*]\n"
166
"  --nl-ext-inc-prec      whether to increment the precision for irrational\n"
167
"                         function constraints [*]\n"
168
"  --nl-ext-purify        purify non-linear terms at preprocess [*]\n"
169
"  --nl-ext-rbound        use resolution-style inference for inferring new bounds\n"
170
"                         in non-linear incremental linearization solver [*]\n"
171
"  --nl-ext-rewrite       do context-dependent simplification based on rewrites\n"
172
"                         in non-linear solver [*]\n"
173
"  --nl-ext-split-zero    initial splits on zero for all variables [*]\n"
174
"  --nl-ext-tf-taylor-deg=N\n"
175
"                         initial degree of polynomials for Taylor approximation\n"
176
"  --nl-ext-tf-tplanes    use non-terminating tangent plane strategy for\n"
177
"                         transcendental functions for non-linear incremental\n"
178
"                         linearization solver [*]\n"
179
"  --nl-ext-tplanes       use non-terminating tangent plane strategy for\n"
180
"                         non-linear incremental linearization solver [*]\n"
181
"  --nl-ext-tplanes-interleave\n"
182
"                         interleave tangent plane strategy for non-linear\n"
183
"                         incremental linearization solver [*]\n"
184
"  --nl-ext=MODE          incremental linearization approach to non-linear\n"
185
"  --nl-icp               whether to use ICP-style propagations for non-linear\n"
186
"                         arithmetic [*]\n"
187
"  --nl-rlv=MODE          choose mode for using relevance of assertions in\n"
188
"                         non-linear arithmetic\n"
189
"  --pb-rewrites          apply pseudo boolean rewrites [*]\n"
190
"  --pivot-threshold=N    sets the number of pivots using --pivot-rule per basic\n"
191
"                         variable per simplex instance before using variable\n"
192
"                         order\n"
193
"  --pp-assert-max-sub-size=N\n"
194
"                         threshold for substituting an equality in ppAssert\n"
195
"  --prop-row-length=N    sets the maximum row length to be used in propagation\n"
196
"  --replay-early-close-depth=N\n"
197
"                         multiples of the depths to try to close the approx log\n"
198
"                         eagerly\n"
199
"  --replay-failure-penalty=N\n"
200
"                         number of solve integer attempts to skips after a\n"
201
"                         numeric failure\n"
202
"  --replay-lemma-reject-cut=N\n"
203
"                         maximum complexity of any coefficient while outputting\n"
204
"                         replaying cut lemmas\n"
205
"  --replay-num-err-penalty=N\n"
206
"                         number of solve integer attempts to skips after a\n"
207
"                         numeric failure\n"
208
"  --replay-reject-cut=N  maximum complexity of any coefficient while replaying\n"
209
"                         cuts\n"
210
"  --replay-soi-major-threshold-pen=N\n"
211
"                         threshold for a major tolerance failure by the\n"
212
"                         approximate solver\n"
213
"  --replay-soi-major-threshold=T\n"
214
"                         threshold for a major tolerance failure by the\n"
215
"                         approximate solver\n"
216
"  --replay-soi-minor-threshold-pen=N\n"
217
"                         threshold for a minor tolerance failure by the\n"
218
"                         approximate solver\n"
219
"  --replay-soi-minor-threshold=T\n"
220
"                         threshold for a minor tolerance failure by the\n"
221
"                         approximate solver\n"
222
"  --restrict-pivots      have a pivot cap for simplex at effort levels below\n"
223
"                         fullEffort [*]\n"
224
"  --revert-arith-models-on-unsat\n"
225
"                         revert the arithmetic model to a known safe model on\n"
226
"                         unsat if one is cached [*]\n"
227
"  --rr-turns=N           round robin turn\n"
228
"  --se-solve-int         attempt to use the approximate solve integer method on\n"
229
"                         standard effort [*]\n"
230
"  --simplex-check-period=N\n"
231
"                         the number of pivots to do in simplex before rechecking\n"
232
"                         for a conflict on all variables\n"
233
"  --soi-qe               use quick explain to minimize the sum of infeasibility\n"
234
"                         conflicts [*]\n"
235
"  --standard-effort-variable-order-pivots=N\n"
236
"                         limits the number of pivots in a single invocation of\n"
237
"                         check() at a non-full effort level using Bland's pivot\n"
238
"                         rule (EXPERTS only)\n"
239
"  --unate-lemmas=MODE    determines which lemmas to add before solving (default\n"
240
"                         is 'all', see --unate-lemmas=help)\n"
241
"  --use-approx           attempt to use an approximate solver [*]\n"
242
"  --use-fcsimplex        use focusing and converging simplex (FMCAD 2013\n"
243
"                         submission) [*]\n"
244
"  --use-soi              use sum of infeasibility simplex (FMCAD 2013\n"
245
"                         submission) [*]\n"
246
"\nFrom the Arrays Theory module:\n"
247
"  --arrays-config=N      set different array option configurations - for\n"
248
"                         developers only\n"
249
"  --arrays-eager-index   turn on eager index splitting for generated array\n"
250
"                         lemmas [*]\n"
251
"  --arrays-eager-lemmas  turn on eager lemma generation for arrays [*]\n"
252
"  --arrays-exp           enable experimental features in the theory of arrays\n"
253
"                         [*]\n"
254
"  --arrays-model-based   turn on model-based array solver [*]\n"
255
"  --arrays-optimize-linear\n"
256
"                         turn on optimization for linear array terms (see de\n"
257
"                         Moura FMCAD 09 arrays paper) [*]\n"
258
"  --arrays-prop=N        propagation effort for arrays: 0 is none, 1 is some, 2\n"
259
"                         is full\n"
260
"  --arrays-reduce-sharing\n"
261
"                         use model information to reduce size of care graph for\n"
262
"                         arrays [*]\n"
263
"  --arrays-weak-equiv    use algorithm from Christ/Hoenicke (SMT 2014) [*]\n"
264
"\nFrom the Base module:\n"
265
"  --debug=TAG | -d TAG   debug something (e.g. -d arith), can repeat\n"
266
"  --output=TAG | -o TAG  Enable output tag.\n"
267
"  --parse-only           exit after parsing input [*]\n"
268
"  --preprocess-only      exit after preprocessing input [*]\n"
269
"  --print-success        print the \"success\" output required of SMT-LIBv2 [*]\n"
270
"  --rweight=VAL=N        set a single resource weight (EXPERTS only)\n"
271
"  --stats-all            print unchanged (defaulted) statistics as well (EXPERTS\n"
272
"                         only) [*]\n"
273
"  --stats-every-query    in incremental mode, print stats after every\n"
274
"                         satisfiability or validity query [*]\n"
275
"  --stats-expert         print expert (non-public) statistics as well (EXPERTS\n"
276
"                         only) [*]\n"
277
"  --trace=TAG | -t TAG   trace something (e.g. -t pushpop), can repeat\n"
278
"  --verbosity=N          the verbosity level of cvc5\n"
279
"\nFrom the Bitvector Theory module:\n"
280
"  --bitblast-aig         bitblast by first converting to AIG (implies\n"
281
"                         --bitblast=eager) [*]\n"
282
"  --bitblast=MODE        choose bitblasting mode, see --bitblast=help\n"
283
"  --bitwise-eq           lift equivalence with one-bit bit-vectors to be boolean\n"
284
"                         operations [*]\n"
285
"  --bool-to-bv=MODE      convert booleans to bit-vectors of size 1 at various\n"
286
"                         levels of aggressiveness, see --bool-to-bv=help\n"
287
"  --bv-aig-simp=COMMAND  abc command to run AIG simplifications (implies\n"
288
"                         --bitblast-aig, default is \"balance;drw\") (EXPERTS\n"
289
"                         only)\n"
290
"  --bv-alg-extf          algebraic inferences for extended functions [*]\n"
291
"  --bv-algebraic-budget=N\n"
292
"                         the budget allowed for the algebraic solver in number\n"
293
"                         of SAT conflicts (EXPERTS only)\n"
294
"  --bv-algebraic-solver  turn on experimental algebraic solver for the\n"
295
"                         bit-vector theory (only if --bv-solver=layered) [*]\n"
296
"  --bv-assert-input      assert input assertions on user-level 0 instead of\n"
297
"                         assuming them in the bit-vector SAT solver [*]\n"
298
"  --bv-eager-explanations\n"
299
"                         compute bit-blasting propagation explanations eagerly\n"
300
"                         (EXPERTS only) [*]\n"
301
"  --bv-eq-solver         use the equality engine for the bit-vector theory (only\n"
302
"                         if --bv-solver=layered) [*]\n"
303
"  --bv-extract-arith     enable rewrite pushing extract [i:0] over arithmetic\n"
304
"                         operations (can blow up) (EXPERTS only) [*]\n"
305
"  --bv-gauss-elim        simplify formula via Gaussian Elimination if applicable\n"
306
"                         (EXPERTS only) [*]\n"
307
"  --bv-inequality-solver turn on the inequality solver for the bit-vector theory\n"
308
"                         (only if --bv-solver=layered) [*]\n"
309
"  --bv-intro-pow2        introduce bitvector powers of two as a preprocessing\n"
310
"                         pass (EXPERTS only) [*]\n"
311
"  --bv-num-func=N        number of function symbols in conflicts that are\n"
312
"                         generalized (EXPERTS only)\n"
313
"  --bv-print-consts-as-indexed-symbols\n"
314
"                         print bit-vector constants in decimal (e.g. (_ bv1 4))\n"
315
"                         instead of binary (e.g. #b0001), applies to SMT-LIB 2.x\n"
316
"                         [*]\n"
317
"  --bv-propagate         use bit-vector propagation in the bit-blaster [*]\n"
318
"  --bv-quick-xplain      minimize bv conflicts using the QuickXplain algorithm\n"
319
"                         (EXPERTS only) [*]\n"
320
"  --bv-sat-solver=MODE   choose which sat solver to use, see\n"
321
"                         --bv-sat-solver=help (EXPERTS only)\n"
322
"  --bv-solver=MODE       choose bit-vector solver, see --bv-solver=help\n"
323
"  --bv-to-bool           lift bit-vectors of size 1 to booleans when possible\n"
324
"                         [*]\n"
325
"\nFrom the Datatypes Theory module:\n"
326
"  --cdt-bisimilar        do bisimilarity check for co-datatypes [*]\n"
327
"  --dt-binary-split      do binary splits for datatype constructor types [*]\n"
328
"  --dt-blast-splits      when applicable, blast splitting lemmas for all\n"
329
"                         variables at once [*]\n"
330
"  --dt-cyclic            do cyclicity check for datatypes [*]\n"
331
"  --dt-force-assignment  force the datatypes solver to give specific values to\n"
332
"                         all datatypes terms before answering sat [*]\n"
333
"  --dt-infer-as-lemmas   always send lemmas out instead of making internal\n"
334
"                         inferences [*]\n"
335
"  --dt-nested-rec        allow nested recursion in datatype definitions [*]\n"
336
"  --dt-polite-optimize   turn on optimization for polite combination [*]\n"
337
"  --dt-rewrite-error-sel rewrite incorrectly applied selectors to arbitrary\n"
338
"                         ground term (EXPERTS only) [*]\n"
339
"  --dt-share-sel         internally use shared selectors across multiple\n"
340
"                         constructors [*]\n"
341
"  --sygus-abort-size=N   tells enumerative sygus to only consider solutions up\n"
342
"                         to term size N (-1 == no limit, default)\n"
343
"  --sygus-fair-max       use max instead of sum for multi-function sygus\n"
344
"                         conjectures [*]\n"
345
"  --sygus-fair=MODE      if and how to apply fairness for sygus\n"
346
"  --sygus-sym-break      simple sygus symmetry breaking lemmas [*]\n"
347
"  --sygus-sym-break-agg  use aggressive checks for simple sygus symmetry\n"
348
"                         breaking lemmas [*]\n"
349
"  --sygus-sym-break-dynamic\n"
350
"                         dynamic sygus symmetry breaking lemmas [*]\n"
351
"  --sygus-sym-break-lazy lazily add symmetry breaking lemmas for terms [*]\n"
352
"  --sygus-sym-break-pbe  sygus symmetry breaking lemmas based on pbe conjectures\n"
353
"                         [*]\n"
354
"  --sygus-sym-break-rlv  add relevancy conditions to symmetry breaking lemmas\n"
355
"                         [*]\n"
356
"\nFrom the Decision Heuristics module:\n"
357
"  --decision-random-weight=N\n"
358
"                         assign random weights to nodes between 0 and N-1 (0:\n"
359
"                         disable) (EXPERTS only)\n"
360
"  --decision-threshold=N ignore all nodes greater than threshold in first\n"
361
"                         attempt to pick decision (EXPERTS only)\n"
362
"  --decision-use-weight  use the weight nodes (locally, by looking at children)\n"
363
"                         to direct recursive search (EXPERTS only) [*]\n"
364
"  --decision-weight-internal=HOW\n"
365
"                         compute weights of internal nodes using children: off,\n"
366
"                         max, sum, usr1 (EXPERTS only)\n"
367
"  --decision=MODE | --decision-mode=MODE\n"
368
"                         choose decision mode, see --decision=help\n"
369
"  --jh-rlv-order         maintain activity-based ordering for decision\n"
370
"                         justification heuristic (EXPERTS only) [*]\n"
371
"  --jh-skolem-rlv=MODE   policy for when to consider skolem definitions relevant\n"
372
"                         in justification heuristic (EXPERTS only)\n"
373
"  --jh-skolem=MODE       policy for when to satisfy skolem definitions in\n"
374
"                         justification heuristic (EXPERTS only)\n"
375
"\nFrom the Expression module:\n"
376
"  --dag-thresh=N         dagify common subexprs appearing > N times (1 ==\n"
377
"                         default, 0 == don't dagify)\n"
378
"  --expr-depth=N         print exprs to depth N (0 == default, -1 == no limit)\n"
379
"  --type-checking        type check expressions [*]\n"
380
"\nFrom the Floating-Point module:\n"
381
"  --fp-exp               Allow floating-point sorts of all sizes, rather than\n"
382
"                         only Float32 (8/24) or Float64 (11/53) (experimental)\n"
383
"                         [*]\n"
384
"  --fp-lazy-wb           Enable lazier word-blasting (on preNotifyFact instead\n"
385
"                         of registerTerm) [*]\n"
386
"\nFrom the Driver module:\n"
387
"  --dump-instantiations  output instantiations of quantified formulas after\n"
388
"                         every UNSAT/VALID response [*]\n"
389
"  --dump-instantiations-debug\n"
390
"                         output instantiations of quantified formulas after\n"
391
"                         every UNSAT/VALID response, with debug information [*]\n"
392
"  --dump-models          output models after every SAT/INVALID/UNKNOWN response\n"
393
"                         [*]\n"
394
"  --dump-proofs          output proofs after every UNSAT/VALID response [*]\n"
395
"  --dump-unsat-cores     output unsat cores after every UNSAT/VALID response [*]\n"
396
"  --dump-unsat-cores-full\n"
397
"                         dump the full unsat core, including unlabeled\n"
398
"                         assertions [*]\n"
399
"  --early-exit           do not run destructors at exit; default on except in\n"
400
"                         debug builds (EXPERTS only) [*]\n"
401
"  --force-no-limit-cpu-while-dump\n"
402
"                         Force no CPU limit when dumping models and proofs [*]\n"
403
"  --interactive          force interactive shell/non-interactive mode [*]\n"
404
"  --segv-spin            spin on segfault/other crash waiting for gdb [*]\n"
405
"  --show-debug-tags      show all available tags for debugging\n"
406
"  --show-trace-tags      show all available tags for tracing\n"
407
"\nFrom the Parser module:\n"
408
"  --force-logic=LOGIC    set the logic, and override all further user attempts\n"
409
"                         to change it (EXPERTS only)\n"
410
"  --global-declarations  force all declarations and definitions to be global [*]\n"
411
"  --mmap                 memory map file input [*]\n"
412
"  --semantic-checks      enable semantic checks, including type checks [*]\n"
413
"\nFrom the Printing module:\n"
414
"  --flatten-ho-chains    print (binary) application chains in a flattened way,\n"
415
"                         e.g. (a b c) rather than ((a b) c) [*]\n"
416
"  --model-format=MODE    print format mode for models, see --model-format=help\n"
417
"  --print-inst-full      print instantiations for formulas that do not have\n"
418
"                         given identifiers [*]\n"
419
"  --print-inst=MODE      print format for printing instantiations\n"
420
"\nFrom the Proof module:\n"
421
"  --proof-eager-checking check proofs eagerly with proof for local debugging [*]\n"
422
"  --proof-format-mode=MODE\n"
423
"                         select language of proof output\n"
424
"  --proof-granularity=MODE\n"
425
"                         modes for proof granularity\n"
426
"  --proof-pedantic=N     assertion failure for any incorrect rule application or\n"
427
"                         untrusted lemma having pedantic level <=N with proof\n"
428
"  --proof-print-conclusion\n"
429
"                         Print conclusion of proof steps when printing AST [*]\n"
430
"\nFrom the SAT Layer module:\n"
431
"  --minisat-dump-dimacs  instead of solving minisat dumps the asserted clauses\n"
432
"                         in Dimacs format [*]\n"
433
"  --minisat-elimination  use Minisat elimination [*]\n"
434
"  --random-freq=P | --random-frequency=P\n"
435
"                         sets the frequency of random decisions in the sat\n"
436
"                         solver (P=0.0 by default)\n"
437
"  --random-seed=S        sets the random seed for the sat solver\n"
438
"  --refine-conflicts     refine theory conflict clauses (default false) [*]\n"
439
"  --restart-int-base=N   sets the base restart interval for the sat solver (N=25\n"
440
"                         by default)\n"
441
"  --restart-int-inc=F    sets the restart interval increase factor for the sat\n"
442
"                         solver (F=3.0 by default)\n"
443
"\nFrom the Quantifiers module:\n"
444
"  --ag-miniscope-quant   perform aggressive miniscoping for quantifiers [*]\n"
445
"  --cegis-sample=MODE    mode for using samples in the counterexample-guided\n"
446
"                         inductive synthesis loop\n"
447
"  --cegqi                turns on counterexample-based quantifier instantiation\n"
448
"                         [*]\n"
449
"  --cegqi-all            apply counterexample-based instantiation to all\n"
450
"                         quantified formulas [*]\n"
451
"  --cegqi-bv             use word-level inversion approach for\n"
452
"                         counterexample-guided quantifier instantiation for\n"
453
"                         bit-vectors [*]\n"
454
"  --cegqi-bv-concat-inv  compute inverse for concat over equalities rather than\n"
455
"                         producing an invertibility condition [*]\n"
456
"  --cegqi-bv-ineq=MODE   choose mode for handling bit-vector inequalities with\n"
457
"                         counterexample-guided instantiation\n"
458
"  --cegqi-bv-interleave-value\n"
459
"                         interleave model value instantiation with word-level\n"
460
"                         inversion approach [*]\n"
461
"  --cegqi-bv-linear      linearize adder chains for variables [*]\n"
462
"  --cegqi-bv-rm-extract  replaces extract terms with variables for\n"
463
"                         counterexample-guided instantiation for bit-vectors [*]\n"
464
"  --cegqi-bv-solve-nl    try to solve non-linear bv literals using model value\n"
465
"                         projections [*]\n"
466
"  --cegqi-full           turns on full effort counterexample-based quantifier\n"
467
"                         instantiation, which may resort to model-value\n"
468
"                         instantiation [*]\n"
469
"  --cegqi-innermost      only process innermost quantified formulas in\n"
470
"                         counterexample-based quantifier instantiation [*]\n"
471
"  --cegqi-midpoint       choose substitutions based on midpoints of lower and\n"
472
"                         upper bounds for counterexample-based quantifier\n"
473
"                         instantiation [*]\n"
474
"  --cegqi-min-bounds     use minimally constrained lower/upper bound for\n"
475
"                         counterexample-based quantifier instantiation [*]\n"
476
"  --cegqi-model          guide instantiations by model values for\n"
477
"                         counterexample-based quantifier instantiation [*]\n"
478
"  --cegqi-multi-inst     when applicable, do multi instantiations per quantifier\n"
479
"                         per round in counterexample-based quantifier\n"
480
"                         instantiation [*]\n"
481
"  --cegqi-nested-qe      process nested quantified formulas with quantifier\n"
482
"                         elimination in counterexample-based quantifier\n"
483
"                         instantiation [*]\n"
484
"  --cegqi-nopt           non-optimal bounds for counterexample-based quantifier\n"
485
"                         instantiation [*]\n"
486
"  --cegqi-repeat-lit     solve literals more than once in counterexample-based\n"
487
"                         quantifier instantiation [*]\n"
488
"  --cegqi-round-up-lia   round up integer lower bounds in substitutions for\n"
489
"                         counterexample-based quantifier instantiation [*]\n"
490
"  --cegqi-sat            answer sat when quantifiers are asserted with\n"
491
"                         counterexample-based quantifier instantiation [*]\n"
492
"  --cegqi-use-inf-int    use integer infinity for vts in counterexample-based\n"
493
"                         quantifier instantiation [*]\n"
494
"  --cegqi-use-inf-real   use real infinity for vts in counterexample-based\n"
495
"                         quantifier instantiation [*]\n"
496
"  --cond-var-split-agg-quant\n"
497
"                         aggressive split quantified formulas that lead to\n"
498
"                         variable eliminations [*]\n"
499
"  --cond-var-split-quant split quantified formulas that lead to variable\n"
500
"                         eliminations [*]\n"
501
"  --conjecture-filter-active-terms\n"
502
"                         filter based on active terms [*]\n"
503
"  --conjecture-filter-canonical\n"
504
"                         filter based on canonicity [*]\n"
505
"  --conjecture-filter-model\n"
506
"                         filter based on model [*]\n"
507
"  --conjecture-gen       generate candidate conjectures for inductive proofs [*]\n"
508
"  --conjecture-gen-gt-enum=N\n"
509
"                         number of ground terms to generate for model filtering\n"
510
"  --conjecture-gen-max-depth=N\n"
511
"                         maximum depth of terms to consider for conjectures\n"
512
"  --conjecture-gen-per-round=N\n"
513
"                         number of conjectures to generate per instantiation\n"
514
"                         round\n"
515
"  --conjecture-gen-uee-intro\n"
516
"                         more aggressive merging for universal equality engine,\n"
517
"                         introduces terms [*]\n"
518
"  --conjecture-no-filter do not filter conjectures [*]\n"
519
"  --dt-stc-ind           apply strengthening for existential quantification over\n"
520
"                         datatypes based on structural induction [*]\n"
521
"  --dt-var-exp-quant     expand datatype variables bound to one constructor in\n"
522
"                         quantifiers [*]\n"
523
"  --e-matching           whether to do heuristic E-matching [*]\n"
524
"  --elim-taut-quant      eliminate tautological disjuncts of quantified formulas\n"
525
"                         [*]\n"
526
"  --ext-rewrite-quant    apply extended rewriting to bodies of quantified\n"
527
"                         formulas [*]\n"
528
"  --finite-model-find    use finite model finding heuristic for quantifier\n"
529
"                         instantiation [*]\n"
530
"  --fmf-bound            finite model finding on bounded quantification [*]\n"
531
"  --fmf-bound-int        finite model finding on bounded integer quantification\n"
532
"                         [*]\n"
533
"  --fmf-bound-lazy       enforce bounds for bounded quantification lazily via\n"
534
"                         use of proxy variables [*]\n"
535
"  --fmf-fmc-simple       simple models in full model check for finite model\n"
536
"                         finding [*]\n"
537
"  --fmf-fresh-dc         use fresh distinguished representative when applying\n"
538
"                         Inst-Gen techniques [*]\n"
539
"  --fmf-fun              find models for recursively defined functions, assumes\n"
540
"                         functions are admissible [*]\n"
541
"  --fmf-fun-rlv          find models for recursively defined functions, assumes\n"
542
"                         functions are admissible, allows empty type when\n"
543
"                         function is irrelevant [*]\n"
544
"  --fmf-inst-engine      use instantiation engine in conjunction with finite\n"
545
"                         model finding [*]\n"
546
"  --fmf-type-completion-thresh=N\n"
547
"                         the maximum cardinality of an interpreted type for\n"
548
"                         which exhaustive enumeration in finite model finding is\n"
549
"                         attempted\n"
550
"  --fs-interleave        interleave enumerative instantiation with other\n"
551
"                         techniques [*]\n"
552
"  --fs-stratify          stratify effort levels in enumerative instantiation,\n"
553
"                         which favors speed over fairness [*]\n"
554
"  --fs-sum               enumerating tuples of quantifiers by increasing the sum\n"
555
"                         of indices, rather than the maximum [*]\n"
556
"  --full-saturate-quant  enumerative instantiation: instantiate with ground\n"
557
"                         terms from relevant domain, then arbitrary ground terms\n"
558
"                         before answering unknown [*]\n"
559
"  --full-saturate-quant-limit=N\n"
560
"                         maximum number of rounds of enumerative instantiation\n"
561
"                         to apply (-1 means no limit)\n"
562
"  --full-saturate-quant-rd\n"
563
"                         whether to use relevant domain first for enumerative\n"
564
"                         instantiation strategy [*]\n"
565
"  --global-negate        do global negation of input formula [*]\n"
566
"  --ho-elim              eagerly eliminate higher-order constraints [*]\n"
567
"  --ho-elim-store-ax     use store axiom during ho-elim [*]\n"
568
"  --ho-matching          do higher-order matching algorithm for triggers with\n"
569
"                         variable operators [*]\n"
570
"  --ho-matching-var-priority\n"
571
"                         give priority to variable arguments over constant\n"
572
"                         arguments [*]\n"
573
"  --ho-merge-term-db     merge term indices modulo equality [*]\n"
574
"  --increment-triggers   generate additional triggers as needed during search\n"
575
"                         [*]\n"
576
"  --inst-level-input-only\n"
577
"                         only input terms are assigned instantiation level zero\n"
578
"                         [*]\n"
579
"  --inst-max-level=N     maximum inst level of terms used to instantiate\n"
580
"                         quantified formulas with (-1 == no limit, default)\n"
581
"  --inst-max-rounds=N    maximum number of instantiation rounds (-1 == no limit,\n"
582
"                         default)\n"
583
"  --inst-no-entail       do not consider instances of quantified formulas that\n"
584
"                         are currently entailed [*]\n"
585
"  --inst-when-phase=N    instantiation rounds quantifiers takes (>=1) before\n"
586
"                         allowing theory combination to happen\n"
587
"  --inst-when-strict-interleave\n"
588
"                         ensure theory combination and standard quantifier\n"
589
"                         effort strategies take turns [*]\n"
590
"  --inst-when-tc-first   allow theory combination to happen once initially,\n"
591
"                         before quantifier strategies are run [*]\n"
592
"  --inst-when=MODE       when to apply instantiation\n"
593
"  --int-wf-ind           apply strengthening for integers based on well-founded\n"
594
"                         induction [*]\n"
595
"  --ite-dtt-split-quant  split ites with dt testers as conditions [*]\n"
596
"  --ite-lift-quant=MODE  ite lifting mode for quantified formulas\n"
597
"  --literal-matching=MODE\n"
598
"                         choose literal matching mode\n"
599
"  --macros-quant         perform quantifiers macro expansion [*]\n"
600
"  --macros-quant-mode=MODE\n"
601
"                         mode for quantifiers macro expansion\n"
602
"  --mbqi-interleave      interleave model-based quantifier instantiation with\n"
603
"                         other techniques [*]\n"
604
"  --mbqi-one-inst-per-round\n"
605
"                         only add one instantiation per quantifier per round for\n"
606
"                         mbqi [*]\n"
607
"  --mbqi=MODE            choose mode for model-based quantifier instantiation\n"
608
"  --miniscope-quant      miniscope quantifiers [*]\n"
609
"  --miniscope-quant-fv   miniscope quantifiers for ground subformulas [*]\n"
610
"  --multi-trigger-cache  caching version of multi triggers [*]\n"
611
"  --multi-trigger-linear implementation of multi triggers where maximum number\n"
612
"                         of instantiations is linear wrt number of ground terms\n"
613
"                         [*]\n"
614
"  --multi-trigger-priority\n"
615
"                         only try multi triggers if single triggers give no\n"
616
"                         instantiations [*]\n"
617
"  --multi-trigger-when-single\n"
618
"                         select multi triggers when single triggers exist [*]\n"
619
"  --partial-triggers     use triggers that do not contain all free variables [*]\n"
620
"  --pool-inst            pool-based instantiation: instantiate with ground terms\n"
621
"                         occurring in user-specified pools [*]\n"
622
"  --pre-skolem-quant     apply skolemization eagerly to bodies of quantified\n"
623
"                         formulas [*]\n"
624
"  --pre-skolem-quant-agg apply skolemization to quantified formulas aggressively\n"
625
"                         [*]\n"
626
"  --pre-skolem-quant-nested\n"
627
"                         apply skolemization to nested quantified formulas [*]\n"
628
"  --prenex-quant-user    prenex quantified formulas with user patterns [*]\n"
629
"  --prenex-quant=MODE    prenex mode for quantified formulas\n"
630
"  --purify-triggers      purify triggers, e.g. f( x+1 ) becomes f( y ), x mapsto\n"
631
"                         y-1 [*]\n"
632
"  --qcf-all-conflict     add all available conflicting instances during\n"
633
"                         conflict-based instantiation [*]\n"
634
"  --qcf-eager-check-rd   optimization, eagerly check relevant domain of matched\n"
635
"                         position [*]\n"
636
"  --qcf-eager-test       optimization, test qcf instances eagerly [*]\n"
637
"  --qcf-nested-conflict  consider conflicts for nested quantifiers [*]\n"
638
"  --qcf-skip-rd          optimization, skip instances based on possibly\n"
639
"                         irrelevant portions of quantified formulas [*]\n"
640
"  --qcf-tconstraint      enable entailment checks for t-constraints in qcf\n"
641
"                         algorithm [*]\n"
642
"  --qcf-vo-exp           qcf experimental variable ordering [*]\n"
643
"  --quant-alpha-equiv    infer alpha equivalence between quantified formulas [*]\n"
644
"  --quant-cf             enable conflict find mechanism for quantifiers [*]\n"
645
"  --quant-cf-mode=MODE   what effort to apply conflict find mechanism\n"
646
"  --quant-cf-when=MODE   when to invoke conflict find mechanism for quantifiers\n"
647
"  --quant-dsplit-mode=MODE\n"
648
"                         mode for dynamic quantifiers splitting\n"
649
"  --quant-fun-wd         assume that function defined by quantifiers are well\n"
650
"                         defined [*]\n"
651
"  --quant-ind            use all available techniques for inductive reasoning\n"
652
"                         [*]\n"
653
"  --quant-rep-mode=MODE  selection mode for representatives in quantifiers\n"
654
"                         engine\n"
655
"  --quant-split          apply splitting to quantified formulas based on\n"
656
"                         variable disjoint disjuncts [*]\n"
657
"  --register-quant-body-terms\n"
658
"                         consider ground terms within bodies of quantified\n"
659
"                         formulas for matching [*]\n"
660
"  --relational-triggers  choose relational triggers such as x = f(y), x >= f(y)\n"
661
"                         [*]\n"
662
"  --relevant-triggers    prefer triggers that are more relevant based on SInE\n"
663
"                         style analysis [*]\n"
664
"  --sygus                use sygus solver (default is true for sygus inputs) [*]\n"
665
"  --sygus-active-gen-cfactor=N\n"
666
"                         the branching factor for the number of interpreted\n"
667
"                         constants to consider for each size when using\n"
668
"                         --sygus-active-gen=enum\n"
669
"  --sygus-active-gen=MODE\n"
670
"                         mode for actively-generated sygus enumerators\n"
671
"  --sygus-add-const-grammar\n"
672
"                         statically add constants appearing in conjecture to\n"
673
"                         grammars [*]\n"
674
"  --sygus-arg-relevant   static inference techniques for computing whether\n"
675
"                         arguments of functions-to-synthesize are relevant [*]\n"
676
"  --sygus-auto-unfold    enable approach which automatically unfolds transition\n"
677
"                         systems for directly solving invariant synthesis\n"
678
"                         problems [*]\n"
679
"  --sygus-bool-ite-return-const\n"
680
"                         Only use Boolean constants for return values in\n"
681
"                         unification-based function synthesis [*]\n"
682
"  --sygus-core-connective\n"
683
"                         use unsat core analysis to construct Boolean connective\n"
684
"                         to sygus conjectures [*]\n"
685
"  --sygus-crepair-abort  abort if constant repair techniques are not applicable\n"
686
"                         [*]\n"
687
"  --sygus-eval-opt       use optimized approach for evaluation in sygus [*]\n"
688
"  --sygus-eval-unfold    do unfolding of sygus evaluation functions [*]\n"
689
"  --sygus-eval-unfold-bool\n"
690
"                         do unfolding of Boolean evaluation functions that\n"
691
"                         appear in refinement lemmas [*]\n"
692
"  --sygus-expr-miner-check-timeout=N\n"
693
"                         timeout (in milliseconds) for satisfiability checks in\n"
694
"                         expression miners\n"
695
"  --sygus-ext-rew        use extended rewriter for sygus [*]\n"
696
"  --sygus-filter-sol-rev compute backwards filtering to compute whether previous\n"
697
"                         solutions are filtered based on later ones (EXPERTS\n"
698
"                         only) [*]\n"
699
"  --sygus-filter-sol=MODE\n"
700
"                         mode for filtering sygus solutions\n"
701
"  --sygus-grammar-cons=MODE\n"
702
"                         mode for SyGuS grammar construction\n"
703
"  --sygus-grammar-norm   statically normalize sygus grammars based on flattening\n"
704
"                         (linearization) [*]\n"
705
"  --sygus-inference      attempt to preprocess arbitrary inputs to sygus\n"
706
"                         conjectures [*]\n"
707
"  --sygus-inst           Enable SyGuS instantiation quantifiers module [*]\n"
708
"  --sygus-inst-mode=MODE select instantiation lemma mode\n"
709
"  --sygus-inst-scope=MODE\n"
710
"                         select scope of ground terms\n"
711
"  --sygus-inst-term-sel=MODE\n"
712
"                         granularity for ground terms\n"
713
"  --sygus-inv-templ-when-sg\n"
714
"                         use invariant templates (with solution reconstruction)\n"
715
"                         for syntax guided problems [*]\n"
716
"  --sygus-inv-templ=MODE template mode for sygus invariant synthesis (weaken\n"
717
"                         pre-condition, strengthen post-condition, or none)\n"
718
"  --sygus-min-grammar    statically minimize sygus grammars [*]\n"
719
"  --sygus-pbe            enable approach which unifies conditional solutions,\n"
720
"                         specialized for programming-by-examples (pbe)\n"
721
"                         conjectures [*]\n"
722
"  --sygus-pbe-multi-fair when using multiple enumerators, ensure that we only\n"
723
"                         register value of minimial term size [*]\n"
724
"  --sygus-pbe-multi-fair-diff=N\n"
725
"                         when using multiple enumerators, ensure that we only\n"
726
"                         register values of minimial term size plus this value\n"
727
"                         (default 0)\n"
728
"  --sygus-qe-preproc     use quantifier elimination as a preprocessing step for\n"
729
"                         sygus [*]\n"
730
"  --sygus-query-gen      use sygus to enumerate interesting satisfiability\n"
731
"                         queries [*]\n"
732
"  --sygus-query-gen-check\n"
733
"                         use interesting satisfiability queries to check\n"
734
"                         soundness of cvc5 [*]\n"
735
"  --sygus-query-gen-dump-files=MODE\n"
736
"                         mode for dumping external files corresponding to\n"
737
"                         interesting satisfiability queries with sygus-query-gen\n"
738
"  --sygus-query-gen-thresh=N\n"
739
"                         number of points that we allow to be equal for\n"
740
"                         enumerating satisfiable queries with sygus-query-gen\n"
741
"  --sygus-rec-fun        enable efficient support for recursive functions in\n"
742
"                         sygus grammars [*]\n"
743
"  --sygus-rec-fun-eval-limit=N\n"
744
"                         use a hard limit for how many times in a given\n"
745
"                         evaluator call a recursive function can be evaluated\n"
746
"                         (so infinite loops can be avoided)\n"
747
"  --sygus-repair-const   use approach to repair constants in sygus candidate\n"
748
"                         solutions [*]\n"
749
"  --sygus-repair-const-timeout=N\n"
750
"                         timeout (in milliseconds) for the satisfiability check\n"
751
"                         to repair constants in sygus candidate solutions\n"
752
"  --sygus-rr             use sygus to enumerate and verify correctness of\n"
753
"                         rewrite rules [*]\n"
754
"  --sygus-rr-synth       use sygus to enumerate candidate rewrite rules [*]\n"
755
"  --sygus-rr-synth-accel add dynamic symmetry breaking clauses based on\n"
756
"                         candidate rewrites [*]\n"
757
"  --sygus-rr-synth-check use satisfiability check to verify correctness of\n"
758
"                         candidate rewrites [*]\n"
759
"  --sygus-rr-synth-filter-cong\n"
760
"                         filter candidate rewrites based on congruence [*]\n"
761
"  --sygus-rr-synth-filter-match\n"
762
"                         filter candidate rewrites based on matching [*]\n"
763
"  --sygus-rr-synth-filter-nl\n"
764
"                         filter non-linear candidate rewrites [*]\n"
765
"  --sygus-rr-synth-filter-order\n"
766
"                         filter candidate rewrites based on variable ordering\n"
767
"                         [*]\n"
768
"  --sygus-rr-synth-input synthesize rewrite rules based on the input formula [*]\n"
769
"  --sygus-rr-synth-input-nvars=N\n"
770
"                         the maximum number of variables per type that appear in\n"
771
"                         rewrites from sygus-rr-synth-input\n"
772
"  --sygus-rr-synth-input-use-bool\n"
773
"                         synthesize Boolean rewrite rules based on the input\n"
774
"                         formula [*]\n"
775
"  --sygus-rr-synth-rec   synthesize rewrite rules over all sygus grammar types\n"
776
"                         recursively [*]\n"
777
"  --sygus-rr-verify      use sygus to verify the correctness of rewrite rules\n"
778
"                         via sampling [*]\n"
779
"  --sygus-rr-verify-abort\n"
780
"                         abort when sygus-rr-verify finds an instance of\n"
781
"                         unsoundness [*]\n"
782
"  --sygus-sample-fp-uniform\n"
783
"                         sample floating-point values uniformly instead of in a\n"
784
"                         biased fashion [*]\n"
785
"  --sygus-sample-grammar when applicable, use grammar for choosing sample points\n"
786
"                         [*]\n"
787
"  --sygus-samples=N      number of points to consider when doing sygus rewriter\n"
788
"                         sample testing\n"
789
"  --sygus-si-abort       abort if synthesis conjecture is not single invocation\n"
790
"                         [*]\n"
791
"  --sygus-si-partial     combined techniques for synthesis conjectures that are\n"
792
"                         partially single invocation [*]\n"
793
"  --sygus-si-rcons-limit=N\n"
794
"                         number of rounds of enumeration to use during solution\n"
795
"                         reconstruction (negative means unlimited)\n"
796
"  --sygus-si-rcons=MODE  policy for reconstructing solutions for single\n"
797
"                         invocation conjectures\n"
798
"  --sygus-si-reconstruct-const\n"
799
"                         include constants when reconstruct solutions for single\n"
800
"                         invocation conjectures in original grammar [*]\n"
801
"  --sygus-si=MODE        mode for processing single invocation synthesis\n"
802
"                         conjectures\n"
803
"  --sygus-stream         enumerate a stream of solutions instead of terminating\n"
804
"                         after the first one [*]\n"
805
"  --sygus-templ-embed-grammar\n"
806
"                         embed sygus templates into grammars [*]\n"
807
"  --sygus-unif-cond-independent-no-repeat-sol\n"
808
"                         Do not try repeated solutions when using independent\n"
809
"                         synthesis of conditions in unification-based function\n"
810
"                         synthesis [*]\n"
811
"  --sygus-unif-pi=MODE   mode for synthesis via piecewise-indepedent unification\n"
812
"  --sygus-unif-shuffle-cond\n"
813
"                         Shuffle condition pool when building solutions (may\n"
814
"                         change solutions sizes) [*]\n"
815
"  --sygus-verify-inst-max-rounds=N\n"
816
"                         maximum number of instantiation rounds for sygus\n"
817
"                         verification calls (-1 == no limit, default is 3)\n"
818
"  --term-db-cd           register terms in term database based on the SAT\n"
819
"                         context [*]\n"
820
"  --term-db-mode=MODE    which ground terms to consider for instantiation\n"
821
"  --trigger-active-sel=MODE\n"
822
"                         selection mode to activate triggers\n"
823
"  --trigger-sel=MODE     selection mode for triggers\n"
824
"  --user-pat=MODE        policy for handling user-provided patterns for\n"
825
"                         quantifier instantiation\n"
826
"  --var-elim-quant       enable simple variable elimination for quantified\n"
827
"                         formulas [*]\n"
828
"  --var-ineq-elim-quant  enable variable elimination based on infinite\n"
829
"                         projection of unbound arithmetic variables [*]\n"
830
"\nFrom the Separation Logic Theory module:\n"
831
"  --sep-check-neg        check negated spatial assertions [*]\n"
832
"  --sep-child-refine     child-specific refinements of negated star, positive\n"
833
"                         wand [*]\n"
834
"  --sep-deq-c            assume cardinality elements are distinct [*]\n"
835
"  --sep-exp              experimental flag for sep [*]\n"
836
"  --sep-min-refine       only add refinement lemmas for minimal (innermost)\n"
837
"                         assertions [*]\n"
838
"  --sep-pre-skolem-emp   eliminate emp constraint at preprocess time [*]\n"
839
"\nFrom the Sets Theory module:\n"
840
"  --sets-ext             enable extended symbols such as complement and universe\n"
841
"                         in theory of sets [*]\n"
842
"  --sets-infer-as-lemmas send inferences as lemmas [*]\n"
843
"  --sets-proxy-lemmas    introduce proxy variables eagerly to shorten lemmas [*]\n"
844
"\nFrom the SMT Layer module:\n"
845
"  --abstract-values      in models, output arrays (and in future, maybe others)\n"
846
"                         using abstract values, as required by the SMT-LIB\n"
847
"                         standard [*]\n"
848
"  --ackermann            eliminate functions by ackermannization [*]\n"
849
"  --block-models=MODE    mode for producing several models\n"
850
"  --check-abducts        checks whether produced solutions to get-abduct are\n"
851
"                         correct [*]\n"
852
"  --check-interpols      checks whether produced solutions to get-interpol are\n"
853
"                         correct [*]\n"
854
"  --check-models         after SAT/INVALID/UNKNOWN, check that the generated\n"
855
"                         model satisfies user assertions [*]\n"
856
"  --check-proofs         after UNSAT/VALID, check the generated proof (with\n"
857
"                         proof) [*]\n"
858
"  --check-synth-sol      checks whether produced solutions to\n"
859
"                         functions-to-synthesize satisfy the conjecture [*]\n"
860
"  --check-unsat-cores    after UNSAT/VALID, produce and check an unsat core\n"
861
"                         (expensive) [*]\n"
862
"  --debug-check-models   after SAT/INVALID/UNKNOWN, check that the generated\n"
863
"                         model satisfies user and internal assertions [*]\n"
864
"  --early-ite-removal    remove ITEs early in preprocessing [*]\n"
865
"  --expand-definitions   always expand symbol definitions in output [*]\n"
866
"  --ext-rew-prep         use extended rewriter as a preprocessing pass [*]\n"
867
"  --ext-rew-prep-agg     use aggressive extended rewriter as a preprocessing\n"
868
"                         pass [*]\n"
869
"  --foreign-theory-rewrite\n"
870
"                         Cross-theory rewrites [*]\n"
871
"  --ite-simp             turn on ite simplification (Kim (and Somenzi) et al.,\n"
872
"                         SAT 2009) [*]\n"
873
"  --learned-rewrite      rewrite the input based on learned literals [*]\n"
874
"  --minimal-unsat-cores  if an unsat core is produced, it is reduced to a\n"
875
"                         minimal unsat core [*]\n"
876
"  --model-cores=MODE     mode for producing model cores\n"
877
"  --model-u-print=MODE | --model-uninterp-print=MODE\n"
878
"                         determines how to print uninterpreted elements in\n"
879
"                         models\n"
880
"  --model-witness-value  in models, use a witness constant for choice functions\n"
881
"                         [*]\n"
882
"  --on-repeat-ite-simp   do the ite simplification pass again if repeating\n"
883
"                         simplification [*]\n"
884
"  --produce-assignments  support the get-assignment command [*]\n"
885
"  --produce-proofs       produce proofs, support check-proofs and get-proof [*]\n"
886
"  --produce-unsat-assumptions\n"
887
"                         turn on unsat assumptions generation [*]\n"
888
"  --produce-unsat-cores  turn on unsat core generation. Unless otherwise\n"
889
"                         specified, cores will be produced using SAT soving\n"
890
"                         under assumptions and preprocessing proofs. [*]\n"
891
"  --repeat-simp          make multiple passes with nonclausal simplifier [*]\n"
892
"  --simp-ite-compress    enables compressing ites after ite simplification [*]\n"
893
"  --simp-ite-hunt-zombies=N\n"
894
"                         post ite compression enables zombie removal while the\n"
895
"                         number of nodes is above this threshold\n"
896
"  --simp-with-care       enables simplifyWithCare in ite simplificiation [*]\n"
897
"  --simplification=MODE | --simplification-mode=MODE\n"
898
"                         choose simplification mode, see --simplification=help\n"
899
"  --sort-inference       calculate sort inference of input problem, convert the\n"
900
"                         input based on monotonic sorts [*]\n"
901
"  --static-learning      use static learning (on by default) [*]\n"
902
"  --sygus-out=MODE       output mode for sygus\n"
903
"  --sygus-print-callbacks\n"
904
"                         use sygus print callbacks to print sygus terms in the\n"
905
"                         user-provided form (disable for debugging) [*]\n"
906
"  --unconstrained-simp   turn on unconstrained simplification (see\n"
907
"                         Bruttomesso/Brummayer PhD thesis). Fully supported only\n"
908
"                         in (subsets of) the logic QF_ABV. [*]\n"
909
"  --unsat-cores-mode=MODE\n"
910
"                         choose unsat core mode, see --unsat-cores-mode=help\n"
911
"\nFrom the Strings Theory module:\n"
912
"  --re-elim              elimination techniques for regular expressions [*]\n"
913
"  --re-elim-agg          aggressive elimination techniques for regular\n"
914
"                         expressions [*]\n"
915
"  --re-inter-mode=MODE   determines which regular expressions intersections to\n"
916
"                         compute (EXPERTS only)\n"
917
"  --strings-check-entail-len\n"
918
"                         check entailment between length terms to reduce\n"
919
"                         splitting [*]\n"
920
"  --strings-eager        strings eager check [*]\n"
921
"  --strings-eager-eval   perform eager context-dependent evaluation for\n"
922
"                         applications of string kinds [*]\n"
923
"  --strings-eager-len    strings eager length lemmas [*]\n"
924
"  --strings-exp          experimental features in the theory of strings [*]\n"
925
"  --strings-ff           do flat form inferences [*]\n"
926
"  --strings-fmf          the finite model finding used by the theory of strings\n"
927
"                         [*]\n"
928
"  --strings-guess-model  use model guessing to avoid string extended function\n"
929
"                         reductions [*]\n"
930
"  --strings-infer-as-lemmas\n"
931
"                         always send lemmas out instead of making internal\n"
932
"                         inferences [*]\n"
933
"  --strings-infer-sym    strings split on empty string [*]\n"
934
"  --strings-lazy-pp      perform string preprocessing lazily [*]\n"
935
"  --strings-len-norm     strings length normalization lemma [*]\n"
936
"  --strings-lprop-csp    do length propagation based on constant splits [*]\n"
937
"  --strings-min-prefix-explain\n"
938
"                         minimize explanations for prefix of normal forms in\n"
939
"                         strings [*]\n"
940
"  --strings-process-loop-mode=MODE\n"
941
"                         determines how to process looping string equations\n"
942
"                         (EXPERTS only)\n"
943
"  --strings-rexplain-lemmas\n"
944
"                         regression explanations for string lemmas [*]\n"
945
"  --strings-unified-vspt use a single skolem for the variable splitting rule [*]\n"
946
"\nFrom the Theory Layer module:\n"
947
"  --assign-function-values\n"
948
"                         assign values for uninterpreted functions in models [*]\n"
949
"  --condense-function-values\n"
950
"                         condense values for functions in models rather than\n"
951
"                         explicitly representing them [*]\n"
952
"  --ee-mode=MODE         mode for managing equalities across theory solvers\n"
953
"                         (EXPERTS only)\n"
954
"  --relevance-filter     enable analysis of relevance of asserted literals with\n"
955
"                         respect to the input formula [*]\n"
956
"  --tc-mode=MODE         mode for theory combination (EXPERTS only)\n"
957
"  --theoryof-mode=MODE   mode for Theory::theoryof() (EXPERTS only)\n"
958
"\nFrom the Uninterpreted Functions Theory module:\n"
959
"  --symmetry-breaker | --uf-symmetry-breaker\n"
960
"                         use UF symmetry breaker (Deharbe et al., CADE 2011) [*]\n"
961
"  --uf-ho                enable support for higher-order reasoning [*]\n"
962
"  --uf-ho-ext            apply extensionality on function symbols [*]\n"
963
"  --uf-ss-abort-card=N   tells the uf with cardinality to only consider models\n"
964
"                         that interpret uninterpreted sorts of cardinality at\n"
965
"                         most N (-1 == no limit, default)\n"
966
"  --uf-ss-fair           use fair strategy for finite model finding multiple\n"
967
"                         sorts [*]\n"
968
"  --uf-ss-fair-monotone  group monotone sorts when enforcing fairness for finite\n"
969
"                         model finding [*]\n"
970
"  --uf-ss-totality-limited=N\n"
971
"                         apply totality axioms, but only up to cardinality N (-1\n"
972
"                         == do not apply totality axioms, default)\n"
973
"  --uf-ss-totality-sym-break\n"
974
"                         apply symmetry breaking for totality axioms [*]\n"
975
"  --uf-ss=MODE           mode of operation for uf with cardinality solver.\n";
976
977
9786
static const std::string optionsFootnote = "\n\
978
[*] Each of these options has a --no-OPTIONNAME variant, which reverses the\n\
979
    sense of the option.\n\
980
";
981
982
9786
static const std::string languageDescription =
983
    "\
984
Languages currently supported as arguments to the -L / --lang option:\n\
985
  auto                           attempt to automatically determine language\n\
986
  cvc | presentation | pl        CVC presentation language\n\
987
  smt | smtlib | smt2 |\n\
988
  smt2.6 | smtlib2.6             SMT-LIB format 2.6 with support for the strings standard\n\
989
  tptp                           TPTP format (cnf, fof and tff)\n\
990
  sygus | sygus2                 SyGuS version 2.0\n\
991
\n\
992
Languages currently supported as arguments to the --output-lang option:\n\
993
  auto                           match output language to input language\n\
994
  cvc | presentation | pl        CVC presentation language\n\
995
  smt | smtlib | smt2 |\n\
996
  smt2.6 | smtlib2.6             SMT-LIB format 2.6 with support for the strings standard\n\
997
  tptp                           TPTP format\n\
998
  ast                            internal format (simple syntax trees)\n\
999
";
1000
// clang-format on
1001
1002
const std::string& getDescription()
1003
{
1004
  return optionsDescription;
1005
}
1006
1007
void printUsage(const std::string& msg, std::ostream& os) {
1008
  os << msg << optionsDescription << std::endl
1009
      << optionsFootnote << std::endl << std::flush;
1010
}
1011
1012
void printShortUsage(const std::string& msg, std::ostream& os) {
1013
  os << msg << mostCommonOptionsDescription << std::endl
1014
      << optionsFootnote << std::endl
1015
      << "For full usage, please use --help."
1016
      << std::endl << std::endl << std::flush;
1017
}
1018
1019
void printLanguageHelp(std::ostream& os) {
1020
  os << languageDescription << std::flush;
1021
}
1022
1023
/** Set a given Options* as "current" just for a particular scope. */
1024
class OptionsGuard {
1025
  Options** d_field;
1026
  Options* d_old;
1027
public:
1028
8808
  OptionsGuard(Options** field, Options* opts) :
1029
    d_field(field),
1030
8808
    d_old(*field) {
1031
8808
    *field = opts;
1032
8808
  }
1033
12396
  ~OptionsGuard() {
1034
6198
    *d_field = d_old;
1035
6198
  }
1036
};/* class OptionsGuard */
1037
1038
/**
1039
 * This is a table of long options.  By policy, each short option
1040
 * should have an equivalent long option (but the reverse isn't the
1041
 * case), so this table should thus contain all command-line options.
1042
 *
1043
 * Each option in this array has four elements:
1044
 *
1045
 * 1. the long option string
1046
 * 2. argument behavior for the option:
1047
 *    no_argument - no argument permitted
1048
 *    required_argument - an argument is expected
1049
 *    optional_argument - an argument is permitted but not required
1050
 * 3. this is a pointer to an int which is set to the 4th entry of the
1051
 *    array if the option is present; or NULL, in which case
1052
 *    getopt_long() returns the 4th entry
1053
 * 4. the return value for getopt_long() when this long option (or the
1054
 *    value to set the 3rd entry to; see #3)
1055
 *
1056
 * If you add something here, you should add it in src/main/usage.h
1057
 * also, to document it.
1058
 *
1059
 * If you add something that has a short option equivalent, you should
1060
 * add it to the getopt_long() call in parse().
1061
 */
1062
// clang-format off
1063
static struct option cmdlineOptions[] = {
1064
  { "approx-branch-depth", required_argument, nullptr, 256 },
1065
  { "arith-brab", no_argument, nullptr, 257 },
1066
  { "no-arith-brab", no_argument, nullptr, 258 },
1067
  { "arith-cong-man", no_argument, nullptr, 259 },
1068
  { "no-arith-cong-man", no_argument, nullptr, 260 },
1069
  { "arith-eq-solver", no_argument, nullptr, 261 },
1070
  { "no-arith-eq-solver", no_argument, nullptr, 262 },
1071
  { "arith-no-partial-fun", no_argument, nullptr, 263 },
1072
  { "no-arith-no-partial-fun", no_argument, nullptr, 264 },
1073
  { "arith-prop-clauses", required_argument, nullptr, 265 },
1074
  { "arith-prop", required_argument, nullptr, 266 },
1075
  { "arith-rewrite-equalities", no_argument, nullptr, 267 },
1076
  { "no-arith-rewrite-equalities", no_argument, nullptr, 268 },
1077
  { "collect-pivot-stats", no_argument, nullptr, 269 },
1078
  { "no-collect-pivot-stats", no_argument, nullptr, 270 },
1079
  { "cut-all-bounded", no_argument, nullptr, 271 },
1080
  { "no-cut-all-bounded", no_argument, nullptr, 272 },
1081
  { "dio-decomps", no_argument, nullptr, 273 },
1082
  { "no-dio-decomps", no_argument, nullptr, 274 },
1083
  { "dio-repeat", no_argument, nullptr, 275 },
1084
  { "no-dio-repeat", no_argument, nullptr, 276 },
1085
  { "dio-solver", no_argument, nullptr, 277 },
1086
  { "no-dio-solver", no_argument, nullptr, 278 },
1087
  { "dio-turns", required_argument, nullptr, 279 },
1088
  { "error-selection-rule", required_argument, nullptr, 280 },
1089
  { "fc-penalties", no_argument, nullptr, 281 },
1090
  { "no-fc-penalties", no_argument, nullptr, 282 },
1091
  { "heuristic-pivots", required_argument, nullptr, 283 },
1092
  { "lemmas-on-replay-failure", no_argument, nullptr, 284 },
1093
  { "no-lemmas-on-replay-failure", no_argument, nullptr, 285 },
1094
  { "maxCutsInContext", required_argument, nullptr, 286 },
1095
  { "miplib-trick", no_argument, nullptr, 287 },
1096
  { "no-miplib-trick", no_argument, nullptr, 288 },
1097
  { "miplib-trick-subs", required_argument, nullptr, 289 },
1098
  { "new-prop", no_argument, nullptr, 290 },
1099
  { "no-new-prop", no_argument, nullptr, 291 },
1100
  { "nl-cad", no_argument, nullptr, 292 },
1101
  { "no-nl-cad", no_argument, nullptr, 293 },
1102
  { "nl-cad-initial", no_argument, nullptr, 294 },
1103
  { "no-nl-cad-initial", no_argument, nullptr, 295 },
1104
  { "nl-cad-lift", required_argument, nullptr, 296 },
1105
  { "nl-cad-proj", required_argument, nullptr, 297 },
1106
  { "nl-ext-ent-conf", no_argument, nullptr, 298 },
1107
  { "no-nl-ext-ent-conf", no_argument, nullptr, 299 },
1108
  { "nl-ext-factor", no_argument, nullptr, 300 },
1109
  { "no-nl-ext-factor", no_argument, nullptr, 301 },
1110
  { "nl-ext-inc-prec", no_argument, nullptr, 302 },
1111
  { "no-nl-ext-inc-prec", no_argument, nullptr, 303 },
1112
  { "nl-ext-purify", no_argument, nullptr, 304 },
1113
  { "no-nl-ext-purify", no_argument, nullptr, 305 },
1114
  { "nl-ext-rbound", no_argument, nullptr, 306 },
1115
  { "no-nl-ext-rbound", no_argument, nullptr, 307 },
1116
  { "nl-ext-rewrite", no_argument, nullptr, 308 },
1117
  { "no-nl-ext-rewrite", no_argument, nullptr, 309 },
1118
  { "nl-ext-split-zero", no_argument, nullptr, 310 },
1119
  { "no-nl-ext-split-zero", no_argument, nullptr, 311 },
1120
  { "nl-ext-tf-taylor-deg", required_argument, nullptr, 312 },
1121
  { "nl-ext-tf-tplanes", no_argument, nullptr, 313 },
1122
  { "no-nl-ext-tf-tplanes", no_argument, nullptr, 314 },
1123
  { "nl-ext-tplanes", no_argument, nullptr, 315 },
1124
  { "no-nl-ext-tplanes", no_argument, nullptr, 316 },
1125
  { "nl-ext-tplanes-interleave", no_argument, nullptr, 317 },
1126
  { "no-nl-ext-tplanes-interleave", no_argument, nullptr, 318 },
1127
  { "nl-ext", required_argument, nullptr, 319 },
1128
  { "nl-icp", no_argument, nullptr, 320 },
1129
  { "no-nl-icp", no_argument, nullptr, 321 },
1130
  { "nl-rlv", required_argument, nullptr, 322 },
1131
  { "pb-rewrites", no_argument, nullptr, 323 },
1132
  { "no-pb-rewrites", no_argument, nullptr, 324 },
1133
  { "pivot-threshold", required_argument, nullptr, 325 },
1134
  { "pp-assert-max-sub-size", required_argument, nullptr, 326 },
1135
  { "prop-row-length", required_argument, nullptr, 327 },
1136
  { "replay-early-close-depth", required_argument, nullptr, 328 },
1137
  { "replay-failure-penalty", required_argument, nullptr, 329 },
1138
  { "replay-lemma-reject-cut", required_argument, nullptr, 330 },
1139
  { "replay-num-err-penalty", required_argument, nullptr, 331 },
1140
  { "replay-reject-cut", required_argument, nullptr, 332 },
1141
  { "replay-soi-major-threshold-pen", required_argument, nullptr, 333 },
1142
  { "replay-soi-major-threshold", required_argument, nullptr, 334 },
1143
  { "replay-soi-minor-threshold-pen", required_argument, nullptr, 335 },
1144
  { "replay-soi-minor-threshold", required_argument, nullptr, 336 },
1145
  { "restrict-pivots", no_argument, nullptr, 337 },
1146
  { "no-restrict-pivots", no_argument, nullptr, 338 },
1147
  { "revert-arith-models-on-unsat", no_argument, nullptr, 339 },
1148
  { "no-revert-arith-models-on-unsat", no_argument, nullptr, 340 },
1149
  { "rr-turns", required_argument, nullptr, 341 },
1150
  { "se-solve-int", no_argument, nullptr, 342 },
1151
  { "no-se-solve-int", no_argument, nullptr, 343 },
1152
  { "simplex-check-period", required_argument, nullptr, 344 },
1153
  { "soi-qe", no_argument, nullptr, 345 },
1154
  { "no-soi-qe", no_argument, nullptr, 346 },
1155
  { "standard-effort-variable-order-pivots", required_argument, nullptr, 347 },
1156
  { "unate-lemmas", required_argument, nullptr, 348 },
1157
  { "use-approx", no_argument, nullptr, 349 },
1158
  { "no-use-approx", no_argument, nullptr, 350 },
1159
  { "use-fcsimplex", no_argument, nullptr, 351 },
1160
  { "no-use-fcsimplex", no_argument, nullptr, 352 },
1161
  { "use-soi", no_argument, nullptr, 353 },
1162
  { "no-use-soi", no_argument, nullptr, 354 },
1163
  { "arrays-config", required_argument, nullptr, 355 },
1164
  { "arrays-eager-index", no_argument, nullptr, 356 },
1165
  { "no-arrays-eager-index", no_argument, nullptr, 357 },
1166
  { "arrays-eager-lemmas", no_argument, nullptr, 358 },
1167
  { "no-arrays-eager-lemmas", no_argument, nullptr, 359 },
1168
  { "arrays-exp", no_argument, nullptr, 360 },
1169
  { "no-arrays-exp", no_argument, nullptr, 361 },
1170
  { "arrays-model-based", no_argument, nullptr, 362 },
1171
  { "no-arrays-model-based", no_argument, nullptr, 363 },
1172
  { "arrays-optimize-linear", no_argument, nullptr, 364 },
1173
  { "no-arrays-optimize-linear", no_argument, nullptr, 365 },
1174
  { "arrays-prop", required_argument, nullptr, 366 },
1175
  { "arrays-reduce-sharing", no_argument, nullptr, 367 },
1176
  { "no-arrays-reduce-sharing", no_argument, nullptr, 368 },
1177
  { "arrays-weak-equiv", no_argument, nullptr, 369 },
1178
  { "no-arrays-weak-equiv", no_argument, nullptr, 370 },
1179
  { "debug", required_argument, nullptr, 371 },
1180
  { "err", required_argument, nullptr, 372 },
1181
  { "diagnostic-output-channel", required_argument, nullptr, 373 },
1182
  { "in", required_argument, nullptr, 374 },
1183
  { "incremental", no_argument, nullptr, 375 },
1184
  { "no-incremental", no_argument, nullptr, 376 },
1185
  { "lang", required_argument, nullptr, 377 },
1186
  { "input-language", required_argument, nullptr, 378 },
1187
  { "out", required_argument, nullptr, 379 },
1188
  { "regular-output-channel", required_argument, nullptr, 380 },
1189
  { "output-lang", required_argument, nullptr, 381 },
1190
  { "output-language", required_argument, nullptr, 382 },
1191
  { "output", required_argument, nullptr, 383 },
1192
  { "parse-only", no_argument, nullptr, 384 },
1193
  { "no-parse-only", no_argument, nullptr, 385 },
1194
  { "preprocess-only", no_argument, nullptr, 386 },
1195
  { "no-preprocess-only", no_argument, nullptr, 387 },
1196
  { "print-success", no_argument, nullptr, 388 },
1197
  { "no-print-success", no_argument, nullptr, 389 },
1198
  { "quiet", no_argument, nullptr, 390 },
1199
  { "rlimit-per", required_argument, nullptr, 391 },
1200
  { "reproducible-resource-limit", required_argument, nullptr, 392 },
1201
  { "rlimit", required_argument, nullptr, 393 },
1202
  { "rweight", required_argument, nullptr, 394 },
1203
  { "stats", no_argument, nullptr, 395 },
1204
  { "no-stats", no_argument, nullptr, 396 },
1205
  { "stats-all", no_argument, nullptr, 397 },
1206
  { "no-stats-all", no_argument, nullptr, 398 },
1207
  { "stats-every-query", no_argument, nullptr, 399 },
1208
  { "no-stats-every-query", no_argument, nullptr, 400 },
1209
  { "stats-expert", no_argument, nullptr, 401 },
1210
  { "no-stats-expert", no_argument, nullptr, 402 },
1211
  { "tlimit-per", required_argument, nullptr, 403 },
1212
  { "tlimit", required_argument, nullptr, 404 },
1213
  { "trace", required_argument, nullptr, 405 },
1214
  { "verbose", no_argument, nullptr, 406 },
1215
  { "verbosity", required_argument, nullptr, 407 },
1216
  { "bitblast-aig", no_argument, nullptr, 408 },
1217
  { "no-bitblast-aig", no_argument, nullptr, 409 },
1218
  { "bitblast", required_argument, nullptr, 410 },
1219
  { "bitwise-eq", no_argument, nullptr, 411 },
1220
  { "no-bitwise-eq", no_argument, nullptr, 412 },
1221
  { "bool-to-bv", required_argument, nullptr, 413 },
1222
  { "bv-abstraction", no_argument, nullptr, 414 },
1223
  { "no-bv-abstraction", no_argument, nullptr, 415 },
1224
  { "bv-aig-simp", required_argument, nullptr, 416 },
1225
  { "bv-alg-extf", no_argument, nullptr, 417 },
1226
  { "no-bv-alg-extf", no_argument, nullptr, 418 },
1227
  { "bv-algebraic-budget", required_argument, nullptr, 419 },
1228
  { "bv-algebraic-solver", no_argument, nullptr, 420 },
1229
  { "no-bv-algebraic-solver", no_argument, nullptr, 421 },
1230
  { "bv-assert-input", no_argument, nullptr, 422 },
1231
  { "no-bv-assert-input", no_argument, nullptr, 423 },
1232
  { "bv-eager-explanations", no_argument, nullptr, 424 },
1233
  { "no-bv-eager-explanations", no_argument, nullptr, 425 },
1234
  { "bv-eq-solver", no_argument, nullptr, 426 },
1235
  { "no-bv-eq-solver", no_argument, nullptr, 427 },
1236
  { "bv-extract-arith", no_argument, nullptr, 428 },
1237
  { "no-bv-extract-arith", no_argument, nullptr, 429 },
1238
  { "bv-gauss-elim", no_argument, nullptr, 430 },
1239
  { "no-bv-gauss-elim", no_argument, nullptr, 431 },
1240
  { "bv-inequality-solver", no_argument, nullptr, 432 },
1241
  { "no-bv-inequality-solver", no_argument, nullptr, 433 },
1242
  { "bv-intro-pow2", no_argument, nullptr, 434 },
1243
  { "no-bv-intro-pow2", no_argument, nullptr, 435 },
1244
  { "bv-num-func", required_argument, nullptr, 436 },
1245
  { "bv-print-consts-as-indexed-symbols", no_argument, nullptr, 437 },
1246
  { "no-bv-print-consts-as-indexed-symbols", no_argument, nullptr, 438 },
1247
  { "bv-propagate", no_argument, nullptr, 439 },
1248
  { "no-bv-propagate", no_argument, nullptr, 440 },
1249
  { "bv-quick-xplain", no_argument, nullptr, 441 },
1250
  { "no-bv-quick-xplain", no_argument, nullptr, 442 },
1251
  { "bv-sat-solver", required_argument, nullptr, 443 },
1252
  { "bv-skolemize", no_argument, nullptr, 444 },
1253
  { "no-bv-skolemize", no_argument, nullptr, 445 },
1254
  { "bv-solver", required_argument, nullptr, 446 },
1255
  { "bv-to-bool", no_argument, nullptr, 447 },
1256
  { "no-bv-to-bool", no_argument, nullptr, 448 },
1257
  { "cdt-bisimilar", no_argument, nullptr, 449 },
1258
  { "no-cdt-bisimilar", no_argument, nullptr, 450 },
1259
  { "dt-binary-split", no_argument, nullptr, 451 },
1260
  { "no-dt-binary-split", no_argument, nullptr, 452 },
1261
  { "dt-blast-splits", no_argument, nullptr, 453 },
1262
  { "no-dt-blast-splits", no_argument, nullptr, 454 },
1263
  { "dt-cyclic", no_argument, nullptr, 455 },
1264
  { "no-dt-cyclic", no_argument, nullptr, 456 },
1265
  { "dt-force-assignment", no_argument, nullptr, 457 },
1266
  { "no-dt-force-assignment", no_argument, nullptr, 458 },
1267
  { "dt-infer-as-lemmas", no_argument, nullptr, 459 },
1268
  { "no-dt-infer-as-lemmas", no_argument, nullptr, 460 },
1269
  { "dt-nested-rec", no_argument, nullptr, 461 },
1270
  { "no-dt-nested-rec", no_argument, nullptr, 462 },
1271
  { "dt-polite-optimize", no_argument, nullptr, 463 },
1272
  { "no-dt-polite-optimize", no_argument, nullptr, 464 },
1273
  { "dt-rewrite-error-sel", no_argument, nullptr, 465 },
1274
  { "no-dt-rewrite-error-sel", no_argument, nullptr, 466 },
1275
  { "dt-share-sel", no_argument, nullptr, 467 },
1276
  { "no-dt-share-sel", no_argument, nullptr, 468 },
1277
  { "sygus-abort-size", required_argument, nullptr, 469 },
1278
  { "sygus-fair-max", no_argument, nullptr, 470 },
1279
  { "no-sygus-fair-max", no_argument, nullptr, 471 },
1280
  { "sygus-fair", required_argument, nullptr, 472 },
1281
  { "sygus-sym-break", no_argument, nullptr, 473 },
1282
  { "no-sygus-sym-break", no_argument, nullptr, 474 },
1283
  { "sygus-sym-break-agg", no_argument, nullptr, 475 },
1284
  { "no-sygus-sym-break-agg", no_argument, nullptr, 476 },
1285
  { "sygus-sym-break-dynamic", no_argument, nullptr, 477 },
1286
  { "no-sygus-sym-break-dynamic", no_argument, nullptr, 478 },
1287
  { "sygus-sym-break-lazy", no_argument, nullptr, 479 },
1288
  { "no-sygus-sym-break-lazy", no_argument, nullptr, 480 },
1289
  { "sygus-sym-break-pbe", no_argument, nullptr, 481 },
1290
  { "no-sygus-sym-break-pbe", no_argument, nullptr, 482 },
1291
  { "sygus-sym-break-rlv", no_argument, nullptr, 483 },
1292
  { "no-sygus-sym-break-rlv", no_argument, nullptr, 484 },
1293
  { "decision-random-weight", required_argument, nullptr, 485 },
1294
  { "decision-threshold", required_argument, nullptr, 486 },
1295
  { "decision-use-weight", no_argument, nullptr, 487 },
1296
  { "no-decision-use-weight", no_argument, nullptr, 488 },
1297
  { "decision-weight-internal", required_argument, nullptr, 489 },
1298
  { "decision", required_argument, nullptr, 490 },
1299
  { "decision-mode", required_argument, nullptr, 491 },
1300
  { "jh-rlv-order", no_argument, nullptr, 492 },
1301
  { "no-jh-rlv-order", no_argument, nullptr, 493 },
1302
  { "jh-skolem-rlv", required_argument, nullptr, 494 },
1303
  { "jh-skolem", required_argument, nullptr, 495 },
1304
  { "dag-thresh", required_argument, nullptr, 496 },
1305
  { "expr-depth", required_argument, nullptr, 497 },
1306
  { "type-checking", no_argument, nullptr, 498 },
1307
  { "no-type-checking", no_argument, nullptr, 499 },
1308
  { "fp-exp", no_argument, nullptr, 500 },
1309
  { "no-fp-exp", no_argument, nullptr, 501 },
1310
  { "fp-lazy-wb", no_argument, nullptr, 502 },
1311
  { "no-fp-lazy-wb", no_argument, nullptr, 503 },
1312
  { "copyright", no_argument, nullptr, 504 },
1313
  { "dump-instantiations", no_argument, nullptr, 505 },
1314
  { "no-dump-instantiations", no_argument, nullptr, 506 },
1315
  { "dump-instantiations-debug", no_argument, nullptr, 507 },
1316
  { "no-dump-instantiations-debug", no_argument, nullptr, 508 },
1317
  { "dump-models", no_argument, nullptr, 509 },
1318
  { "no-dump-models", no_argument, nullptr, 510 },
1319
  { "dump-proofs", no_argument, nullptr, 511 },
1320
  { "no-dump-proofs", no_argument, nullptr, 512 },
1321
  { "dump-unsat-cores", no_argument, nullptr, 513 },
1322
  { "no-dump-unsat-cores", no_argument, nullptr, 514 },
1323
  { "dump-unsat-cores-full", no_argument, nullptr, 515 },
1324
  { "no-dump-unsat-cores-full", no_argument, nullptr, 516 },
1325
  { "early-exit", no_argument, nullptr, 517 },
1326
  { "no-early-exit", no_argument, nullptr, 518 },
1327
  { "force-no-limit-cpu-while-dump", no_argument, nullptr, 519 },
1328
  { "no-force-no-limit-cpu-while-dump", no_argument, nullptr, 520 },
1329
  { "help", no_argument, nullptr, 521 },
1330
  { "interactive", no_argument, nullptr, 522 },
1331
  { "no-interactive", no_argument, nullptr, 523 },
1332
  { "seed", required_argument, nullptr, 524 },
1333
  { "segv-spin", no_argument, nullptr, 525 },
1334
  { "no-segv-spin", no_argument, nullptr, 526 },
1335
  { "show-config", no_argument, nullptr, 527 },
1336
  { "show-debug-tags", no_argument, nullptr, 528 },
1337
  { "show-trace-tags", no_argument, nullptr, 529 },
1338
  { "version", no_argument, nullptr, 530 },
1339
  { "filesystem-access", no_argument, nullptr, 531 },
1340
  { "no-filesystem-access", no_argument, nullptr, 532 },
1341
  { "force-logic", required_argument, nullptr, 533 },
1342
  { "global-declarations", no_argument, nullptr, 534 },
1343
  { "no-global-declarations", no_argument, nullptr, 535 },
1344
  { "mmap", no_argument, nullptr, 536 },
1345
  { "no-mmap", no_argument, nullptr, 537 },
1346
  { "semantic-checks", no_argument, nullptr, 538 },
1347
  { "no-semantic-checks", no_argument, nullptr, 539 },
1348
  { "strict-parsing", no_argument, nullptr, 540 },
1349
  { "no-strict-parsing", no_argument, nullptr, 541 },
1350
  { "flatten-ho-chains", no_argument, nullptr, 542 },
1351
  { "no-flatten-ho-chains", no_argument, nullptr, 543 },
1352
  { "model-format", required_argument, nullptr, 544 },
1353
  { "print-inst-full", no_argument, nullptr, 545 },
1354
  { "no-print-inst-full", no_argument, nullptr, 546 },
1355
  { "print-inst", required_argument, nullptr, 547 },
1356
  { "proof-eager-checking", no_argument, nullptr, 548 },
1357
  { "no-proof-eager-checking", no_argument, nullptr, 549 },
1358
  { "proof-format-mode", required_argument, nullptr, 550 },
1359
  { "proof-granularity", required_argument, nullptr, 551 },
1360
  { "proof-pedantic", required_argument, nullptr, 552 },
1361
  { "proof-print-conclusion", no_argument, nullptr, 553 },
1362
  { "no-proof-print-conclusion", no_argument, nullptr, 554 },
1363
  { "minisat-dump-dimacs", no_argument, nullptr, 555 },
1364
  { "no-minisat-dump-dimacs", no_argument, nullptr, 556 },
1365
  { "minisat-elimination", no_argument, nullptr, 557 },
1366
  { "no-minisat-elimination", no_argument, nullptr, 558 },
1367
  { "random-freq", required_argument, nullptr, 559 },
1368
  { "random-frequency", required_argument, nullptr, 560 },
1369
  { "random-seed", required_argument, nullptr, 561 },
1370
  { "refine-conflicts", no_argument, nullptr, 562 },
1371
  { "no-refine-conflicts", no_argument, nullptr, 563 },
1372
  { "restart-int-base", required_argument, nullptr, 564 },
1373
  { "restart-int-inc", required_argument, nullptr, 565 },
1374
  { "ag-miniscope-quant", no_argument, nullptr, 566 },
1375
  { "no-ag-miniscope-quant", no_argument, nullptr, 567 },
1376
  { "cegis-sample", required_argument, nullptr, 568 },
1377
  { "cegqi", no_argument, nullptr, 569 },
1378
  { "no-cegqi", no_argument, nullptr, 570 },
1379
  { "cegqi-all", no_argument, nullptr, 571 },
1380
  { "no-cegqi-all", no_argument, nullptr, 572 },
1381
  { "cegqi-bv", no_argument, nullptr, 573 },
1382
  { "no-cegqi-bv", no_argument, nullptr, 574 },
1383
  { "cegqi-bv-concat-inv", no_argument, nullptr, 575 },
1384
  { "no-cegqi-bv-concat-inv", no_argument, nullptr, 576 },
1385
  { "cegqi-bv-ineq", required_argument, nullptr, 577 },
1386
  { "cegqi-bv-interleave-value", no_argument, nullptr, 578 },
1387
  { "no-cegqi-bv-interleave-value", no_argument, nullptr, 579 },
1388
  { "cegqi-bv-linear", no_argument, nullptr, 580 },
1389
  { "no-cegqi-bv-linear", no_argument, nullptr, 581 },
1390
  { "cegqi-bv-rm-extract", no_argument, nullptr, 582 },
1391
  { "no-cegqi-bv-rm-extract", no_argument, nullptr, 583 },
1392
  { "cegqi-bv-solve-nl", no_argument, nullptr, 584 },
1393
  { "no-cegqi-bv-solve-nl", no_argument, nullptr, 585 },
1394
  { "cegqi-full", no_argument, nullptr, 586 },
1395
  { "no-cegqi-full", no_argument, nullptr, 587 },
1396
  { "cegqi-innermost", no_argument, nullptr, 588 },
1397
  { "no-cegqi-innermost", no_argument, nullptr, 589 },
1398
  { "cegqi-midpoint", no_argument, nullptr, 590 },
1399
  { "no-cegqi-midpoint", no_argument, nullptr, 591 },
1400
  { "cegqi-min-bounds", no_argument, nullptr, 592 },
1401
  { "no-cegqi-min-bounds", no_argument, nullptr, 593 },
1402
  { "cegqi-model", no_argument, nullptr, 594 },
1403
  { "no-cegqi-model", no_argument, nullptr, 595 },
1404
  { "cegqi-multi-inst", no_argument, nullptr, 596 },
1405
  { "no-cegqi-multi-inst", no_argument, nullptr, 597 },
1406
  { "cegqi-nested-qe", no_argument, nullptr, 598 },
1407
  { "no-cegqi-nested-qe", no_argument, nullptr, 599 },
1408
  { "cegqi-nopt", no_argument, nullptr, 600 },
1409
  { "no-cegqi-nopt", no_argument, nullptr, 601 },
1410
  { "cegqi-repeat-lit", no_argument, nullptr, 602 },
1411
  { "no-cegqi-repeat-lit", no_argument, nullptr, 603 },
1412
  { "cegqi-round-up-lia", no_argument, nullptr, 604 },
1413
  { "no-cegqi-round-up-lia", no_argument, nullptr, 605 },
1414
  { "cegqi-sat", no_argument, nullptr, 606 },
1415
  { "no-cegqi-sat", no_argument, nullptr, 607 },
1416
  { "cegqi-use-inf-int", no_argument, nullptr, 608 },
1417
  { "no-cegqi-use-inf-int", no_argument, nullptr, 609 },
1418
  { "cegqi-use-inf-real", no_argument, nullptr, 610 },
1419
  { "no-cegqi-use-inf-real", no_argument, nullptr, 611 },
1420
  { "cond-var-split-agg-quant", no_argument, nullptr, 612 },
1421
  { "no-cond-var-split-agg-quant", no_argument, nullptr, 613 },
1422
  { "cond-var-split-quant", no_argument, nullptr, 614 },
1423
  { "no-cond-var-split-quant", no_argument, nullptr, 615 },
1424
  { "conjecture-filter-active-terms", no_argument, nullptr, 616 },
1425
  { "no-conjecture-filter-active-terms", no_argument, nullptr, 617 },
1426
  { "conjecture-filter-canonical", no_argument, nullptr, 618 },
1427
  { "no-conjecture-filter-canonical", no_argument, nullptr, 619 },
1428
  { "conjecture-filter-model", no_argument, nullptr, 620 },
1429
  { "no-conjecture-filter-model", no_argument, nullptr, 621 },
1430
  { "conjecture-gen", no_argument, nullptr, 622 },
1431
  { "no-conjecture-gen", no_argument, nullptr, 623 },
1432
  { "conjecture-gen-gt-enum", required_argument, nullptr, 624 },
1433
  { "conjecture-gen-max-depth", required_argument, nullptr, 625 },
1434
  { "conjecture-gen-per-round", required_argument, nullptr, 626 },
1435
  { "conjecture-gen-uee-intro", no_argument, nullptr, 627 },
1436
  { "no-conjecture-gen-uee-intro", no_argument, nullptr, 628 },
1437
  { "conjecture-no-filter", no_argument, nullptr, 629 },
1438
  { "no-conjecture-no-filter", no_argument, nullptr, 630 },
1439
  { "dt-stc-ind", no_argument, nullptr, 631 },
1440
  { "no-dt-stc-ind", no_argument, nullptr, 632 },
1441
  { "dt-var-exp-quant", no_argument, nullptr, 633 },
1442
  { "no-dt-var-exp-quant", no_argument, nullptr, 634 },
1443
  { "e-matching", no_argument, nullptr, 635 },
1444
  { "no-e-matching", no_argument, nullptr, 636 },
1445
  { "elim-taut-quant", no_argument, nullptr, 637 },
1446
  { "no-elim-taut-quant", no_argument, nullptr, 638 },
1447
  { "ext-rewrite-quant", no_argument, nullptr, 639 },
1448
  { "no-ext-rewrite-quant", no_argument, nullptr, 640 },
1449
  { "finite-model-find", no_argument, nullptr, 641 },
1450
  { "no-finite-model-find", no_argument, nullptr, 642 },
1451
  { "fmf-bound", no_argument, nullptr, 643 },
1452
  { "no-fmf-bound", no_argument, nullptr, 644 },
1453
  { "fmf-bound-int", no_argument, nullptr, 645 },
1454
  { "no-fmf-bound-int", no_argument, nullptr, 646 },
1455
  { "fmf-bound-lazy", no_argument, nullptr, 647 },
1456
  { "no-fmf-bound-lazy", no_argument, nullptr, 648 },
1457
  { "fmf-fmc-simple", no_argument, nullptr, 649 },
1458
  { "no-fmf-fmc-simple", no_argument, nullptr, 650 },
1459
  { "fmf-fresh-dc", no_argument, nullptr, 651 },
1460
  { "no-fmf-fresh-dc", no_argument, nullptr, 652 },
1461
  { "fmf-fun", no_argument, nullptr, 653 },
1462
  { "no-fmf-fun", no_argument, nullptr, 654 },
1463
  { "fmf-fun-rlv", no_argument, nullptr, 655 },
1464
  { "no-fmf-fun-rlv", no_argument, nullptr, 656 },
1465
  { "fmf-inst-engine", no_argument, nullptr, 657 },
1466
  { "no-fmf-inst-engine", no_argument, nullptr, 658 },
1467
  { "fmf-type-completion-thresh", required_argument, nullptr, 659 },
1468
  { "fs-interleave", no_argument, nullptr, 660 },
1469
  { "no-fs-interleave", no_argument, nullptr, 661 },
1470
  { "fs-stratify", no_argument, nullptr, 662 },
1471
  { "no-fs-stratify", no_argument, nullptr, 663 },
1472
  { "fs-sum", no_argument, nullptr, 664 },
1473
  { "no-fs-sum", no_argument, nullptr, 665 },
1474
  { "full-saturate-quant", no_argument, nullptr, 666 },
1475
  { "no-full-saturate-quant", no_argument, nullptr, 667 },
1476
  { "full-saturate-quant-limit", required_argument, nullptr, 668 },
1477
  { "full-saturate-quant-rd", no_argument, nullptr, 669 },
1478
  { "no-full-saturate-quant-rd", no_argument, nullptr, 670 },
1479
  { "global-negate", no_argument, nullptr, 671 },
1480
  { "no-global-negate", no_argument, nullptr, 672 },
1481
  { "ho-elim", no_argument, nullptr, 673 },
1482
  { "no-ho-elim", no_argument, nullptr, 674 },
1483
  { "ho-elim-store-ax", no_argument, nullptr, 675 },
1484
  { "no-ho-elim-store-ax", no_argument, nullptr, 676 },
1485
  { "ho-matching", no_argument, nullptr, 677 },
1486
  { "no-ho-matching", no_argument, nullptr, 678 },
1487
  { "ho-matching-var-priority", no_argument, nullptr, 679 },
1488
  { "no-ho-matching-var-priority", no_argument, nullptr, 680 },
1489
  { "ho-merge-term-db", no_argument, nullptr, 681 },
1490
  { "no-ho-merge-term-db", no_argument, nullptr, 682 },
1491
  { "increment-triggers", no_argument, nullptr, 683 },
1492
  { "no-increment-triggers", no_argument, nullptr, 684 },
1493
  { "inst-level-input-only", no_argument, nullptr, 685 },
1494
  { "no-inst-level-input-only", no_argument, nullptr, 686 },
1495
  { "inst-max-level", required_argument, nullptr, 687 },
1496
  { "inst-max-rounds", required_argument, nullptr, 688 },
1497
  { "inst-no-entail", no_argument, nullptr, 689 },
1498
  { "no-inst-no-entail", no_argument, nullptr, 690 },
1499
  { "inst-when-phase", required_argument, nullptr, 691 },
1500
  { "inst-when-strict-interleave", no_argument, nullptr, 692 },
1501
  { "no-inst-when-strict-interleave", no_argument, nullptr, 693 },
1502
  { "inst-when-tc-first", no_argument, nullptr, 694 },
1503
  { "no-inst-when-tc-first", no_argument, nullptr, 695 },
1504
  { "inst-when", required_argument, nullptr, 696 },
1505
  { "int-wf-ind", no_argument, nullptr, 697 },
1506
  { "no-int-wf-ind", no_argument, nullptr, 698 },
1507
  { "ite-dtt-split-quant", no_argument, nullptr, 699 },
1508
  { "no-ite-dtt-split-quant", no_argument, nullptr, 700 },
1509
  { "ite-lift-quant", required_argument, nullptr, 701 },
1510
  { "literal-matching", required_argument, nullptr, 702 },
1511
  { "macros-quant", no_argument, nullptr, 703 },
1512
  { "no-macros-quant", no_argument, nullptr, 704 },
1513
  { "macros-quant-mode", required_argument, nullptr, 705 },
1514
  { "mbqi-interleave", no_argument, nullptr, 706 },
1515
  { "no-mbqi-interleave", no_argument, nullptr, 707 },
1516
  { "mbqi-one-inst-per-round", no_argument, nullptr, 708 },
1517
  { "no-mbqi-one-inst-per-round", no_argument, nullptr, 709 },
1518
  { "mbqi", required_argument, nullptr, 710 },
1519
  { "miniscope-quant", no_argument, nullptr, 711 },
1520
  { "no-miniscope-quant", no_argument, nullptr, 712 },
1521
  { "miniscope-quant-fv", no_argument, nullptr, 713 },
1522
  { "no-miniscope-quant-fv", no_argument, nullptr, 714 },
1523
  { "multi-trigger-cache", no_argument, nullptr, 715 },
1524
  { "no-multi-trigger-cache", no_argument, nullptr, 716 },
1525
  { "multi-trigger-linear", no_argument, nullptr, 717 },
1526
  { "no-multi-trigger-linear", no_argument, nullptr, 718 },
1527
  { "multi-trigger-priority", no_argument, nullptr, 719 },
1528
  { "no-multi-trigger-priority", no_argument, nullptr, 720 },
1529
  { "multi-trigger-when-single", no_argument, nullptr, 721 },
1530
  { "no-multi-trigger-when-single", no_argument, nullptr, 722 },
1531
  { "partial-triggers", no_argument, nullptr, 723 },
1532
  { "no-partial-triggers", no_argument, nullptr, 724 },
1533
  { "pool-inst", no_argument, nullptr, 725 },
1534
  { "no-pool-inst", no_argument, nullptr, 726 },
1535
  { "pre-skolem-quant", no_argument, nullptr, 727 },
1536
  { "no-pre-skolem-quant", no_argument, nullptr, 728 },
1537
  { "pre-skolem-quant-agg", no_argument, nullptr, 729 },
1538
  { "no-pre-skolem-quant-agg", no_argument, nullptr, 730 },
1539
  { "pre-skolem-quant-nested", no_argument, nullptr, 731 },
1540
  { "no-pre-skolem-quant-nested", no_argument, nullptr, 732 },
1541
  { "prenex-quant-user", no_argument, nullptr, 733 },
1542
  { "no-prenex-quant-user", no_argument, nullptr, 734 },
1543
  { "prenex-quant", required_argument, nullptr, 735 },
1544
  { "purify-triggers", no_argument, nullptr, 736 },
1545
  { "no-purify-triggers", no_argument, nullptr, 737 },
1546
  { "qcf-all-conflict", no_argument, nullptr, 738 },
1547
  { "no-qcf-all-conflict", no_argument, nullptr, 739 },
1548
  { "qcf-eager-check-rd", no_argument, nullptr, 740 },
1549
  { "no-qcf-eager-check-rd", no_argument, nullptr, 741 },
1550
  { "qcf-eager-test", no_argument, nullptr, 742 },
1551
  { "no-qcf-eager-test", no_argument, nullptr, 743 },
1552
  { "qcf-nested-conflict", no_argument, nullptr, 744 },
1553
  { "no-qcf-nested-conflict", no_argument, nullptr, 745 },
1554
  { "qcf-skip-rd", no_argument, nullptr, 746 },
1555
  { "no-qcf-skip-rd", no_argument, nullptr, 747 },
1556
  { "qcf-tconstraint", no_argument, nullptr, 748 },
1557
  { "no-qcf-tconstraint", no_argument, nullptr, 749 },
1558
  { "qcf-vo-exp", no_argument, nullptr, 750 },
1559
  { "no-qcf-vo-exp", no_argument, nullptr, 751 },
1560
  { "quant-alpha-equiv", no_argument, nullptr, 752 },
1561
  { "no-quant-alpha-equiv", no_argument, nullptr, 753 },
1562
  { "quant-cf", no_argument, nullptr, 754 },
1563
  { "no-quant-cf", no_argument, nullptr, 755 },
1564
  { "quant-cf-mode", required_argument, nullptr, 756 },
1565
  { "quant-cf-when", required_argument, nullptr, 757 },
1566
  { "quant-dsplit-mode", required_argument, nullptr, 758 },
1567
  { "quant-fun-wd", no_argument, nullptr, 759 },
1568
  { "no-quant-fun-wd", no_argument, nullptr, 760 },
1569
  { "quant-ind", no_argument, nullptr, 761 },
1570
  { "no-quant-ind", no_argument, nullptr, 762 },
1571
  { "quant-rep-mode", required_argument, nullptr, 763 },
1572
  { "quant-split", no_argument, nullptr, 764 },
1573
  { "no-quant-split", no_argument, nullptr, 765 },
1574
  { "register-quant-body-terms", no_argument, nullptr, 766 },
1575
  { "no-register-quant-body-terms", no_argument, nullptr, 767 },
1576
  { "relational-triggers", no_argument, nullptr, 768 },
1577
  { "no-relational-triggers", no_argument, nullptr, 769 },
1578
  { "relevant-triggers", no_argument, nullptr, 770 },
1579
  { "no-relevant-triggers", no_argument, nullptr, 771 },
1580
  { "sygus", no_argument, nullptr, 772 },
1581
  { "no-sygus", no_argument, nullptr, 773 },
1582
  { "sygus-active-gen-cfactor", required_argument, nullptr, 774 },
1583
  { "sygus-active-gen", required_argument, nullptr, 775 },
1584
  { "sygus-add-const-grammar", no_argument, nullptr, 776 },
1585
  { "no-sygus-add-const-grammar", no_argument, nullptr, 777 },
1586
  { "sygus-arg-relevant", no_argument, nullptr, 778 },
1587
  { "no-sygus-arg-relevant", no_argument, nullptr, 779 },
1588
  { "sygus-auto-unfold", no_argument, nullptr, 780 },
1589
  { "no-sygus-auto-unfold", no_argument, nullptr, 781 },
1590
  { "sygus-bool-ite-return-const", no_argument, nullptr, 782 },
1591
  { "no-sygus-bool-ite-return-const", no_argument, nullptr, 783 },
1592
  { "sygus-core-connective", no_argument, nullptr, 784 },
1593
  { "no-sygus-core-connective", no_argument, nullptr, 785 },
1594
  { "sygus-crepair-abort", no_argument, nullptr, 786 },
1595
  { "no-sygus-crepair-abort", no_argument, nullptr, 787 },
1596
  { "sygus-eval-opt", no_argument, nullptr, 788 },
1597
  { "no-sygus-eval-opt", no_argument, nullptr, 789 },
1598
  { "sygus-eval-unfold", no_argument, nullptr, 790 },
1599
  { "no-sygus-eval-unfold", no_argument, nullptr, 791 },
1600
  { "sygus-eval-unfold-bool", no_argument, nullptr, 792 },
1601
  { "no-sygus-eval-unfold-bool", no_argument, nullptr, 793 },
1602
  { "sygus-expr-miner-check-timeout", required_argument, nullptr, 794 },
1603
  { "sygus-ext-rew", no_argument, nullptr, 795 },
1604
  { "no-sygus-ext-rew", no_argument, nullptr, 796 },
1605
  { "sygus-filter-sol-rev", no_argument, nullptr, 797 },
1606
  { "no-sygus-filter-sol-rev", no_argument, nullptr, 798 },
1607
  { "sygus-filter-sol", required_argument, nullptr, 799 },
1608
  { "sygus-grammar-cons", required_argument, nullptr, 800 },
1609
  { "sygus-grammar-norm", no_argument, nullptr, 801 },
1610
  { "no-sygus-grammar-norm", no_argument, nullptr, 802 },
1611
  { "sygus-inference", no_argument, nullptr, 803 },
1612
  { "no-sygus-inference", no_argument, nullptr, 804 },
1613
  { "sygus-inst", no_argument, nullptr, 805 },
1614
  { "no-sygus-inst", no_argument, nullptr, 806 },
1615
  { "sygus-inst-mode", required_argument, nullptr, 807 },
1616
  { "sygus-inst-scope", required_argument, nullptr, 808 },
1617
  { "sygus-inst-term-sel", required_argument, nullptr, 809 },
1618
  { "sygus-inv-templ-when-sg", no_argument, nullptr, 810 },
1619
  { "no-sygus-inv-templ-when-sg", no_argument, nullptr, 811 },
1620
  { "sygus-inv-templ", required_argument, nullptr, 812 },
1621
  { "sygus-min-grammar", no_argument, nullptr, 813 },
1622
  { "no-sygus-min-grammar", no_argument, nullptr, 814 },
1623
  { "sygus-pbe", no_argument, nullptr, 815 },
1624
  { "no-sygus-pbe", no_argument, nullptr, 816 },
1625
  { "sygus-pbe-multi-fair", no_argument, nullptr, 817 },
1626
  { "no-sygus-pbe-multi-fair", no_argument, nullptr, 818 },
1627
  { "sygus-pbe-multi-fair-diff", required_argument, nullptr, 819 },
1628
  { "sygus-qe-preproc", no_argument, nullptr, 820 },
1629
  { "no-sygus-qe-preproc", no_argument, nullptr, 821 },
1630
  { "sygus-query-gen", no_argument, nullptr, 822 },
1631
  { "no-sygus-query-gen", no_argument, nullptr, 823 },
1632
  { "sygus-query-gen-check", no_argument, nullptr, 824 },
1633
  { "no-sygus-query-gen-check", no_argument, nullptr, 825 },
1634
  { "sygus-query-gen-dump-files", required_argument, nullptr, 826 },
1635
  { "sygus-query-gen-thresh", required_argument, nullptr, 827 },
1636
  { "sygus-rec-fun", no_argument, nullptr, 828 },
1637
  { "no-sygus-rec-fun", no_argument, nullptr, 829 },
1638
  { "sygus-rec-fun-eval-limit", required_argument, nullptr, 830 },
1639
  { "sygus-repair-const", no_argument, nullptr, 831 },
1640
  { "no-sygus-repair-const", no_argument, nullptr, 832 },
1641
  { "sygus-repair-const-timeout", required_argument, nullptr, 833 },
1642
  { "sygus-rr", no_argument, nullptr, 834 },
1643
  { "no-sygus-rr", no_argument, nullptr, 835 },
1644
  { "sygus-rr-synth", no_argument, nullptr, 836 },
1645
  { "no-sygus-rr-synth", no_argument, nullptr, 837 },
1646
  { "sygus-rr-synth-accel", no_argument, nullptr, 838 },
1647
  { "no-sygus-rr-synth-accel", no_argument, nullptr, 839 },
1648
  { "sygus-rr-synth-check", no_argument, nullptr, 840 },
1649
  { "no-sygus-rr-synth-check", no_argument, nullptr, 841 },
1650
  { "sygus-rr-synth-filter-cong", no_argument, nullptr, 842 },
1651
  { "no-sygus-rr-synth-filter-cong", no_argument, nullptr, 843 },
1652
  { "sygus-rr-synth-filter-match", no_argument, nullptr, 844 },
1653
  { "no-sygus-rr-synth-filter-match", no_argument, nullptr, 845 },
1654
  { "sygus-rr-synth-filter-nl", no_argument, nullptr, 846 },
1655
  { "no-sygus-rr-synth-filter-nl", no_argument, nullptr, 847 },
1656
  { "sygus-rr-synth-filter-order", no_argument, nullptr, 848 },
1657
  { "no-sygus-rr-synth-filter-order", no_argument, nullptr, 849 },
1658
  { "sygus-rr-synth-input", no_argument, nullptr, 850 },
1659
  { "no-sygus-rr-synth-input", no_argument, nullptr, 851 },
1660
  { "sygus-rr-synth-input-nvars", required_argument, nullptr, 852 },
1661
  { "sygus-rr-synth-input-use-bool", no_argument, nullptr, 853 },
1662
  { "no-sygus-rr-synth-input-use-bool", no_argument, nullptr, 854 },
1663
  { "sygus-rr-synth-rec", no_argument, nullptr, 855 },
1664
  { "no-sygus-rr-synth-rec", no_argument, nullptr, 856 },
1665
  { "sygus-rr-verify", no_argument, nullptr, 857 },
1666
  { "no-sygus-rr-verify", no_argument, nullptr, 858 },
1667
  { "sygus-rr-verify-abort", no_argument, nullptr, 859 },
1668
  { "no-sygus-rr-verify-abort", no_argument, nullptr, 860 },
1669
  { "sygus-sample-fp-uniform", no_argument, nullptr, 861 },
1670
  { "no-sygus-sample-fp-uniform", no_argument, nullptr, 862 },
1671
  { "sygus-sample-grammar", no_argument, nullptr, 863 },
1672
  { "no-sygus-sample-grammar", no_argument, nullptr, 864 },
1673
  { "sygus-samples", required_argument, nullptr, 865 },
1674
  { "sygus-si-abort", no_argument, nullptr, 866 },
1675
  { "no-sygus-si-abort", no_argument, nullptr, 867 },
1676
  { "sygus-si-partial", no_argument, nullptr, 868 },
1677
  { "no-sygus-si-partial", no_argument, nullptr, 869 },
1678
  { "sygus-si-rcons-limit", required_argument, nullptr, 870 },
1679
  { "sygus-si-rcons", required_argument, nullptr, 871 },
1680
  { "sygus-si-reconstruct-const", no_argument, nullptr, 872 },
1681
  { "no-sygus-si-reconstruct-const", no_argument, nullptr, 873 },
1682
  { "sygus-si", required_argument, nullptr, 874 },
1683
  { "sygus-stream", no_argument, nullptr, 875 },
1684
  { "no-sygus-stream", no_argument, nullptr, 876 },
1685
  { "sygus-templ-embed-grammar", no_argument, nullptr, 877 },
1686
  { "no-sygus-templ-embed-grammar", no_argument, nullptr, 878 },
1687
  { "sygus-unif-cond-independent-no-repeat-sol", no_argument, nullptr, 879 },
1688
  { "no-sygus-unif-cond-independent-no-repeat-sol", no_argument, nullptr, 880 },
1689
  { "sygus-unif-pi", required_argument, nullptr, 881 },
1690
  { "sygus-unif-shuffle-cond", no_argument, nullptr, 882 },
1691
  { "no-sygus-unif-shuffle-cond", no_argument, nullptr, 883 },
1692
  { "sygus-verify-inst-max-rounds", required_argument, nullptr, 884 },
1693
  { "term-db-cd", no_argument, nullptr, 885 },
1694
  { "no-term-db-cd", no_argument, nullptr, 886 },
1695
  { "term-db-mode", required_argument, nullptr, 887 },
1696
  { "trigger-active-sel", required_argument, nullptr, 888 },
1697
  { "trigger-sel", required_argument, nullptr, 889 },
1698
  { "user-pat", required_argument, nullptr, 890 },
1699
  { "var-elim-quant", no_argument, nullptr, 891 },
1700
  { "no-var-elim-quant", no_argument, nullptr, 892 },
1701
  { "var-ineq-elim-quant", no_argument, nullptr, 893 },
1702
  { "no-var-ineq-elim-quant", no_argument, nullptr, 894 },
1703
  { "sep-check-neg", no_argument, nullptr, 895 },
1704
  { "no-sep-check-neg", no_argument, nullptr, 896 },
1705
  { "sep-child-refine", no_argument, nullptr, 897 },
1706
  { "no-sep-child-refine", no_argument, nullptr, 898 },
1707
  { "sep-deq-c", no_argument, nullptr, 899 },
1708
  { "no-sep-deq-c", no_argument, nullptr, 900 },
1709
  { "sep-exp", no_argument, nullptr, 901 },
1710
  { "no-sep-exp", no_argument, nullptr, 902 },
1711
  { "sep-min-refine", no_argument, nullptr, 903 },
1712
  { "no-sep-min-refine", no_argument, nullptr, 904 },
1713
  { "sep-pre-skolem-emp", no_argument, nullptr, 905 },
1714
  { "no-sep-pre-skolem-emp", no_argument, nullptr, 906 },
1715
  { "sets-ext", no_argument, nullptr, 907 },
1716
  { "no-sets-ext", no_argument, nullptr, 908 },
1717
  { "sets-infer-as-lemmas", no_argument, nullptr, 909 },
1718
  { "no-sets-infer-as-lemmas", no_argument, nullptr, 910 },
1719
  { "sets-proxy-lemmas", no_argument, nullptr, 911 },
1720
  { "no-sets-proxy-lemmas", no_argument, nullptr, 912 },
1721
  { "abstract-values", no_argument, nullptr, 913 },
1722
  { "no-abstract-values", no_argument, nullptr, 914 },
1723
  { "ackermann", no_argument, nullptr, 915 },
1724
  { "no-ackermann", no_argument, nullptr, 916 },
1725
  { "block-models", required_argument, nullptr, 917 },
1726
  { "bvand-integer-granularity", required_argument, nullptr, 918 },
1727
  { "check-abducts", no_argument, nullptr, 919 },
1728
  { "no-check-abducts", no_argument, nullptr, 920 },
1729
  { "check-interpols", no_argument, nullptr, 921 },
1730
  { "no-check-interpols", no_argument, nullptr, 922 },
1731
  { "check-models", no_argument, nullptr, 923 },
1732
  { "no-check-models", no_argument, nullptr, 924 },
1733
  { "check-proofs", no_argument, nullptr, 925 },
1734
  { "no-check-proofs", no_argument, nullptr, 926 },
1735
  { "check-synth-sol", no_argument, nullptr, 927 },
1736
  { "no-check-synth-sol", no_argument, nullptr, 928 },
1737
  { "check-unsat-cores", no_argument, nullptr, 929 },
1738
  { "no-check-unsat-cores", no_argument, nullptr, 930 },
1739
  { "debug-check-models", no_argument, nullptr, 931 },
1740
  { "no-debug-check-models", no_argument, nullptr, 932 },
1741
  { "dump-to", required_argument, nullptr, 933 },
1742
  { "dump", required_argument, nullptr, 934 },
1743
  { "early-ite-removal", no_argument, nullptr, 935 },
1744
  { "no-early-ite-removal", no_argument, nullptr, 936 },
1745
  { "expand-definitions", no_argument, nullptr, 937 },
1746
  { "no-expand-definitions", no_argument, nullptr, 938 },
1747
  { "ext-rew-prep", no_argument, nullptr, 939 },
1748
  { "no-ext-rew-prep", no_argument, nullptr, 940 },
1749
  { "ext-rew-prep-agg", no_argument, nullptr, 941 },
1750
  { "no-ext-rew-prep-agg", no_argument, nullptr, 942 },
1751
  { "foreign-theory-rewrite", no_argument, nullptr, 943 },
1752
  { "no-foreign-theory-rewrite", no_argument, nullptr, 944 },
1753
  { "iand-mode", required_argument, nullptr, 945 },
1754
  { "interactive-mode", no_argument, nullptr, 946 },
1755
  { "no-interactive-mode", no_argument, nullptr, 947 },
1756
  { "ite-simp", no_argument, nullptr, 948 },
1757
  { "no-ite-simp", no_argument, nullptr, 949 },
1758
  { "learned-rewrite", no_argument, nullptr, 950 },
1759
  { "no-learned-rewrite", no_argument, nullptr, 951 },
1760
  { "minimal-unsat-cores", no_argument, nullptr, 952 },
1761
  { "no-minimal-unsat-cores", no_argument, nullptr, 953 },
1762
  { "model-cores", required_argument, nullptr, 954 },
1763
  { "model-u-print", required_argument, nullptr, 955 },
1764
  { "model-uninterp-print", required_argument, nullptr, 956 },
1765
  { "model-witness-value", no_argument, nullptr, 957 },
1766
  { "no-model-witness-value", no_argument, nullptr, 958 },
1767
  { "on-repeat-ite-simp", no_argument, nullptr, 959 },
1768
  { "no-on-repeat-ite-simp", no_argument, nullptr, 960 },
1769
  { "produce-abducts", no_argument, nullptr, 961 },
1770
  { "no-produce-abducts", no_argument, nullptr, 962 },
1771
  { "produce-assertions", no_argument, nullptr, 963 },
1772
  { "no-produce-assertions", no_argument, nullptr, 964 },
1773
  { "produce-assignments", no_argument, nullptr, 965 },
1774
  { "no-produce-assignments", no_argument, nullptr, 966 },
1775
  { "produce-interpols", required_argument, nullptr, 967 },
1776
  { "produce-models", no_argument, nullptr, 968 },
1777
  { "no-produce-models", no_argument, nullptr, 969 },
1778
  { "produce-proofs", no_argument, nullptr, 970 },
1779
  { "no-produce-proofs", no_argument, nullptr, 971 },
1780
  { "produce-unsat-assumptions", no_argument, nullptr, 972 },
1781
  { "no-produce-unsat-assumptions", no_argument, nullptr, 973 },
1782
  { "produce-unsat-cores", no_argument, nullptr, 974 },
1783
  { "no-produce-unsat-cores", no_argument, nullptr, 975 },
1784
  { "repeat-simp", no_argument, nullptr, 976 },
1785
  { "no-repeat-simp", no_argument, nullptr, 977 },
1786
  { "simp-ite-compress", no_argument, nullptr, 978 },
1787
  { "no-simp-ite-compress", no_argument, nullptr, 979 },
1788
  { "simp-ite-hunt-zombies", required_argument, nullptr, 980 },
1789
  { "simp-with-care", no_argument, nullptr, 981 },
1790
  { "no-simp-with-care", no_argument, nullptr, 982 },
1791
  { "simplification", required_argument, nullptr, 983 },
1792
  { "simplification-mode", required_argument, nullptr, 984 },
1793
  { "solve-bv-as-int", required_argument, nullptr, 985 },
1794
  { "solve-int-as-bv", required_argument, nullptr, 986 },
1795
  { "solve-real-as-int", no_argument, nullptr, 987 },
1796
  { "no-solve-real-as-int", no_argument, nullptr, 988 },
1797
  { "sort-inference", no_argument, nullptr, 989 },
1798
  { "no-sort-inference", no_argument, nullptr, 990 },
1799
  { "static-learning", no_argument, nullptr, 991 },
1800
  { "no-static-learning", no_argument, nullptr, 992 },
1801
  { "sygus-out", required_argument, nullptr, 993 },
1802
  { "sygus-print-callbacks", no_argument, nullptr, 994 },
1803
  { "no-sygus-print-callbacks", no_argument, nullptr, 995 },
1804
  { "unconstrained-simp", no_argument, nullptr, 996 },
1805
  { "no-unconstrained-simp", no_argument, nullptr, 997 },
1806
  { "unsat-cores-mode", required_argument, nullptr, 998 },
1807
  { "re-elim", no_argument, nullptr, 999 },
1808
  { "no-re-elim", no_argument, nullptr, 1000 },
1809
  { "re-elim-agg", no_argument, nullptr, 1001 },
1810
  { "no-re-elim-agg", no_argument, nullptr, 1002 },
1811
  { "re-inter-mode", required_argument, nullptr, 1003 },
1812
  { "strings-check-entail-len", no_argument, nullptr, 1004 },
1813
  { "no-strings-check-entail-len", no_argument, nullptr, 1005 },
1814
  { "strings-eager", no_argument, nullptr, 1006 },
1815
  { "no-strings-eager", no_argument, nullptr, 1007 },
1816
  { "strings-eager-eval", no_argument, nullptr, 1008 },
1817
  { "no-strings-eager-eval", no_argument, nullptr, 1009 },
1818
  { "strings-eager-len", no_argument, nullptr, 1010 },
1819
  { "no-strings-eager-len", no_argument, nullptr, 1011 },
1820
  { "strings-exp", no_argument, nullptr, 1012 },
1821
  { "no-strings-exp", no_argument, nullptr, 1013 },
1822
  { "strings-ff", no_argument, nullptr, 1014 },
1823
  { "no-strings-ff", no_argument, nullptr, 1015 },
1824
  { "strings-fmf", no_argument, nullptr, 1016 },
1825
  { "no-strings-fmf", no_argument, nullptr, 1017 },
1826
  { "strings-guess-model", no_argument, nullptr, 1018 },
1827
  { "no-strings-guess-model", no_argument, nullptr, 1019 },
1828
  { "strings-infer-as-lemmas", no_argument, nullptr, 1020 },
1829
  { "no-strings-infer-as-lemmas", no_argument, nullptr, 1021 },
1830
  { "strings-infer-sym", no_argument, nullptr, 1022 },
1831
  { "no-strings-infer-sym", no_argument, nullptr, 1023 },
1832
  { "strings-lazy-pp", no_argument, nullptr, 1024 },
1833
  { "no-strings-lazy-pp", no_argument, nullptr, 1025 },
1834
  { "strings-len-norm", no_argument, nullptr, 1026 },
1835
  { "no-strings-len-norm", no_argument, nullptr, 1027 },
1836
  { "strings-lprop-csp", no_argument, nullptr, 1028 },
1837
  { "no-strings-lprop-csp", no_argument, nullptr, 1029 },
1838
  { "strings-min-prefix-explain", no_argument, nullptr, 1030 },
1839
  { "no-strings-min-prefix-explain", no_argument, nullptr, 1031 },
1840
  { "strings-process-loop-mode", required_argument, nullptr, 1032 },
1841
  { "strings-rexplain-lemmas", no_argument, nullptr, 1033 },
1842
  { "no-strings-rexplain-lemmas", no_argument, nullptr, 1034 },
1843
  { "strings-unified-vspt", no_argument, nullptr, 1035 },
1844
  { "no-strings-unified-vspt", no_argument, nullptr, 1036 },
1845
  { "assign-function-values", no_argument, nullptr, 1037 },
1846
  { "no-assign-function-values", no_argument, nullptr, 1038 },
1847
  { "condense-function-values", no_argument, nullptr, 1039 },
1848
  { "no-condense-function-values", no_argument, nullptr, 1040 },
1849
  { "ee-mode", required_argument, nullptr, 1041 },
1850
  { "relevance-filter", no_argument, nullptr, 1042 },
1851
  { "no-relevance-filter", no_argument, nullptr, 1043 },
1852
  { "tc-mode", required_argument, nullptr, 1044 },
1853
  { "theoryof-mode", required_argument, nullptr, 1045 },
1854
  { "symmetry-breaker", no_argument, nullptr, 1046 },
1855
  { "uf-symmetry-breaker", no_argument, nullptr, 1047 },
1856
  { "no-symmetry-breaker", no_argument, nullptr, 1048 },
1857
  { "no-uf-symmetry-breaker", no_argument, nullptr, 1049 },
1858
  { "uf-ho", no_argument, nullptr, 1050 },
1859
  { "no-uf-ho", no_argument, nullptr, 1051 },
1860
  { "uf-ho-ext", no_argument, nullptr, 1052 },
1861
  { "no-uf-ho-ext", no_argument, nullptr, 1053 },
1862
  { "uf-ss-abort-card", required_argument, nullptr, 1054 },
1863
  { "uf-ss-fair", no_argument, nullptr, 1055 },
1864
  { "no-uf-ss-fair", no_argument, nullptr, 1056 },
1865
  { "uf-ss-fair-monotone", no_argument, nullptr, 1057 },
1866
  { "no-uf-ss-fair-monotone", no_argument, nullptr, 1058 },
1867
  { "uf-ss-totality-limited", required_argument, nullptr, 1059 },
1868
  { "uf-ss-totality-sym-break", no_argument, nullptr, 1060 },
1869
  { "no-uf-ss-totality-sym-break", no_argument, nullptr, 1061 },
1870
  { "uf-ss", required_argument, nullptr, 1062 },
1871
  {nullptr, no_argument, nullptr, '\0'}};
1872
// clang-format on
1873
1874
std::string suggestCommandLineOptions(const std::string& optionName)
1875
{
1876
  DidYouMean didYouMean;
1877
1878
  const char* opt;
1879
  for(size_t i = 0; (opt = cmdlineOptions[i].name) != nullptr; ++i) {
1880
    didYouMean.addWord(std::string("--") + cmdlineOptions[i].name);
1881
  }
1882
1883
  return didYouMean.getMatchAsString(optionName.substr(0, optionName.find('=')));
1884
}
1885
1886
/**
1887
 * This is a default handler for options of built-in C++ type.  This
1888
 * template is really just a helper for the handleOption() template,
1889
 * below.  Variants of this template handle numeric and non-numeric,
1890
 * integral and non-integral, signed and unsigned C++ types.
1891
 * handleOption() makes sure to instantiate the right one.
1892
 *
1893
 * This implements default behavior when e.g. an option is
1894
 * unsigned but the user specifies a negative argument; etc.
1895
 */
1896
template <class T, bool is_numeric, bool is_integer>
1897
struct OptionHandler {
1898
  static T handle(const std::string& option, const std::string& flag, const std::string& optionarg);
1899
};/* struct OptionHandler<> */
1900
1901
/** Variant for integral C++ types */
1902
template <class T>
1903
struct OptionHandler<T, true, true> {
1904
134
  static bool stringToInt(T& t, const std::string& str) {
1905
268
    std::istringstream ss(str);
1906
134
    ss >> t;
1907
    char tmp;
1908
268
    return !(ss.fail() || ss.get(tmp));
1909
  }
1910
1911
101
  static bool containsMinus(const std::string& str) {
1912
101
    return str.find('-') != std::string::npos;
1913
  }
1914
1915
134
  static T handle(const std::string& option, const std::string& flag, const std::string& optionarg) {
1916
    try {
1917
      T i;
1918
134
      bool success = stringToInt(i, optionarg);
1919
1920
134
      if(!success){
1921
        throw OptionException(flag + ": failed to parse "+ optionarg +
1922
                              " as an integer of the appropriate type.");
1923
      }
1924
1925
      // Depending in the platform unsigned numbers with '-' signs may parse.
1926
      // Reject these by looking for any minus if it is not signed.
1927
101
      if( (! std::numeric_limits<T>::is_signed) && containsMinus(optionarg) ) {
1928
        // unsigned type but user gave negative argument
1929
        throw OptionException(flag + " requires a nonnegative argument");
1930
134
      } else if(i < std::numeric_limits<T>::min()) {
1931
        // negative overflow for type
1932
        std::stringstream ss;
1933
        ss << flag << " requires an argument >= "
1934
           << std::numeric_limits<T>::min();
1935
        throw OptionException(ss.str());
1936
134
      } else if(i > std::numeric_limits<T>::max()) {
1937
        // positive overflow for type
1938
        std::stringstream ss;
1939
        ss << flag << " requires an argument <= "
1940
           << std::numeric_limits<T>::max();
1941
        throw OptionException(ss.str());
1942
      }
1943
1944
134
      return i;
1945
1946
      // if(std::numeric_limits<T>::is_signed) {
1947
      //   return T(i.getLong());
1948
      // } else {
1949
      //   return T(i.getUnsignedLong());
1950
      // }
1951
    } catch(std::invalid_argument&) {
1952
      // user gave something other than an integer
1953
      throw OptionException(flag + " requires an integer argument");
1954
    }
1955
  }
1956
};/* struct OptionHandler<T, true, true> */
1957
1958
/** Variant for numeric but non-integral C++ types */
1959
template <class T>
1960
struct OptionHandler<T, true, false> {
1961
  static T handle(const std::string& option, const std::string& flag, const std::string& optionarg) {
1962
    std::stringstream inss(optionarg);
1963
    long double r;
1964
    inss >> r;
1965
    if(! inss.eof()) {
1966
      // we didn't consume the whole string (junk at end)
1967
      throw OptionException(flag + " requires a numeric argument");
1968
    }
1969
1970
    if(! std::numeric_limits<T>::is_signed && r < 0.0) {
1971
      // unsigned type but user gave negative value
1972
      throw OptionException(flag + " requires a nonnegative argument");
1973
    } else if(r < -std::numeric_limits<T>::max()) {
1974
      // negative overflow for type
1975
      std::stringstream ss;
1976
      ss << flag << " requires an argument >= "
1977
         << -std::numeric_limits<T>::max();
1978
      throw OptionException(ss.str());
1979
    } else if(r > std::numeric_limits<T>::max()) {
1980
      // positive overflow for type
1981
      std::stringstream ss;
1982
      ss << flag << " requires an argument <= "
1983
         << std::numeric_limits<T>::max();
1984
      throw OptionException(ss.str());
1985
    }
1986
1987
    return T(r);
1988
  }
1989
};/* struct OptionHandler<T, true, false> */
1990
1991
/** Variant for non-numeric C++ types */
1992
template <class T>
1993
struct OptionHandler<T, false, false> {
1994
  static T handle(const std::string& option, const std::string& flag, const std::string& optionarg) {
1995
    T::unsupported_handleOption_call___please_write_me;
1996
    // The above line causes a compiler error if this version of the template
1997
    // is ever instantiated (meaning that a specialization is missing).  So
1998
    // don't worry about the segfault in the next line, the "return" is only
1999
    // there to keep the compiler from giving additional, distracting errors
2000
    // and warnings.
2001
    return *(T*)0;
2002
  }
2003
};/* struct OptionHandler<T, false, false> */
2004
2005
/** Specialization for ManagedErr */
2006
template <>
2007
struct OptionHandler<ManagedErr, false, false>
2008
{
2009
  static ManagedErr handle(const std::string& option,
2010
                           const std::string& flag,
2011
                           const std::string& optionarg)
2012
  {
2013
    ManagedErr res;
2014
    res.open(optionarg);
2015
    return res;
2016
  }
2017
};
2018
/** Specialization for ManagedIn */
2019
template <>
2020
struct OptionHandler<ManagedIn, false, false>
2021
{
2022
  static ManagedIn handle(const std::string& option,
2023
                          const std::string& flag,
2024
                          const std::string& optionarg)
2025
  {
2026
    ManagedIn res;
2027
    res.open(optionarg);
2028
    return res;
2029
  }
2030
};
2031
/** Specialization for ManagedOut */
2032
template <>
2033
struct OptionHandler<ManagedOut, false, false>
2034
{
2035
  static ManagedOut handle(const std::string& option,
2036
                           const std::string& flag,
2037
                           const std::string& optionarg)
2038
  {
2039
    ManagedOut res;
2040
    res.open(optionarg);
2041
    return res;
2042
  }
2043
};
2044
2045
/** Handle an option of type T in the default way. */
2046
template <class T>
2047
134
T handleOption(const std::string& option, const std::string& flag, const std::string& optionarg) {
2048
134
  return OptionHandler<T, std::numeric_limits<T>::is_specialized, std::numeric_limits<T>::is_integer>::handle(option, flag, optionarg);
2049
}
2050
2051
/** Handle an option of type std::string in the default way. */
2052
template <>
2053
12
std::string handleOption<std::string>(const std::string& option, const std::string& flag, const std::string& optionarg) {
2054
12
  return optionarg;
2055
}
2056
2057
// clang-format off
2058
2059
void assign_arith_maxApproxDepth(Options& opts, const std::string& option, const std::string& optionarg) {
2060
  auto value = handleOption<int64_t>("approx-branch-depth", option, optionarg);
2061
2062
  opts.arith.maxApproxDepth = value;
2063
  opts.arith.maxApproxDepthWasSetByUser = true;
2064
  Trace("options") << "user assigned option maxApproxDepth = " << value << std::endl;
2065
}
2066
2067
4
void assign_arith_brabTest(Options& opts, const std::string& option, bool value) {
2068
2069
4
  opts.arith.brabTest = value;
2070
4
  opts.arith.brabTestWasSetByUser = true;
2071
4
  Trace("options") << "user assigned option brabTest = " << value << std::endl;
2072
4
}
2073
2074
void assign_arith_arithCongMan(Options& opts, const std::string& option, bool value) {
2075
2076
  opts.arith.arithCongMan = value;
2077
  opts.arith.arithCongManWasSetByUser = true;
2078
  Trace("options") << "user assigned option arithCongMan = " << value << std::endl;
2079
}
2080
2081
6
void assign_arith_arithEqSolver(Options& opts, const std::string& option, bool value) {
2082
2083
6
  opts.arith.arithEqSolver = value;
2084
6
  opts.arith.arithEqSolverWasSetByUser = true;
2085
6
  Trace("options") << "user assigned option arithEqSolver = " << value << std::endl;
2086
6
}
2087
2088
3
void assign_arith_arithNoPartialFun(Options& opts, const std::string& option, bool value) {
2089
2090
3
  opts.arith.arithNoPartialFun = value;
2091
3
  opts.arith.arithNoPartialFunWasSetByUser = true;
2092
3
  Trace("options") << "user assigned option arithNoPartialFun = " << value << std::endl;
2093
3
}
2094
2095
void assign_arith_arithPropAsLemmaLength(Options& opts, const std::string& option, const std::string& optionarg) {
2096
  auto value = handleOption<uint64_t>("arith-prop-clauses", option, optionarg);
2097
2098
  opts.arith.arithPropAsLemmaLength = value;
2099
  opts.arith.arithPropAsLemmaLengthWasSetByUser = true;
2100
  Trace("options") << "user assigned option arithPropAsLemmaLength = " << value << std::endl;
2101
}
2102
2103
void assign_arith_arithPropagationMode(Options& opts, const std::string& option, const std::string& optionarg) {
2104
  auto value = stringToArithPropagationMode(optionarg);
2105
2106
  opts.arith.arithPropagationMode = value;
2107
  opts.arith.arithPropagationModeWasSetByUser = true;
2108
  Trace("options") << "user assigned option arithPropagationMode = " << value << std::endl;
2109
}
2110
2111
9
void assign_arith_arithRewriteEq(Options& opts, const std::string& option, bool value) {
2112
2113
9
  opts.arith.arithRewriteEq = value;
2114
9
  opts.arith.arithRewriteEqWasSetByUser = true;
2115
9
  Trace("options") << "user assigned option arithRewriteEq = " << value << std::endl;
2116
9
}
2117
2118
void assign_arith_collectPivots(Options& opts, const std::string& option, bool value) {
2119
2120
  opts.arith.collectPivots = value;
2121
  opts.arith.collectPivotsWasSetByUser = true;
2122
  Trace("options") << "user assigned option collectPivots = " << value << std::endl;
2123
}
2124
2125
void assign_arith_doCutAllBounded(Options& opts, const std::string& option, bool value) {
2126
2127
  opts.arith.doCutAllBounded = value;
2128
  opts.arith.doCutAllBoundedWasSetByUser = true;
2129
  Trace("options") << "user assigned option doCutAllBounded = " << value << std::endl;
2130
}
2131
2132
void assign_arith_exportDioDecompositions(Options& opts, const std::string& option, bool value) {
2133
2134
  opts.arith.exportDioDecompositions = value;
2135
  opts.arith.exportDioDecompositionsWasSetByUser = true;
2136
  Trace("options") << "user assigned option exportDioDecompositions = " << value << std::endl;
2137
}
2138
2139
void assign_arith_dioRepeat(Options& opts, const std::string& option, bool value) {
2140
2141
  opts.arith.dioRepeat = value;
2142
  opts.arith.dioRepeatWasSetByUser = true;
2143
  Trace("options") << "user assigned option dioRepeat = " << value << std::endl;
2144
}
2145
2146
void assign_arith_arithDioSolver(Options& opts, const std::string& option, bool value) {
2147
2148
  opts.arith.arithDioSolver = value;
2149
  opts.arith.arithDioSolverWasSetByUser = true;
2150
  Trace("options") << "user assigned option arithDioSolver = " << value << std::endl;
2151
}
2152
2153
void assign_arith_dioSolverTurns(Options& opts, const std::string& option, const std::string& optionarg) {
2154
  auto value = handleOption<int64_t>("dio-turns", option, optionarg);
2155
2156
  opts.arith.dioSolverTurns = value;
2157
  opts.arith.dioSolverTurnsWasSetByUser = true;
2158
  Trace("options") << "user assigned option dioSolverTurns = " << value << std::endl;
2159
}
2160
2161
void assign_arith_arithErrorSelectionRule(Options& opts, const std::string& option, const std::string& optionarg) {
2162
  auto value = stringToErrorSelectionRule(optionarg);
2163
2164
  opts.arith.arithErrorSelectionRule = value;
2165
  opts.arith.arithErrorSelectionRuleWasSetByUser = true;
2166
  Trace("options") << "user assigned option arithErrorSelectionRule = " << value << std::endl;
2167
}
2168
2169
void assign_arith_havePenalties(Options& opts, const std::string& option, bool value) {
2170
2171
  opts.arith.havePenalties = value;
2172
  opts.arith.havePenaltiesWasSetByUser = true;
2173
  Trace("options") << "user assigned option havePenalties = " << value << std::endl;
2174
}
2175
2176
void assign_arith_arithHeuristicPivots(Options& opts, const std::string& option, const std::string& optionarg) {
2177
  auto value = handleOption<int64_t>("heuristic-pivots", option, optionarg);
2178
2179
  opts.arith.arithHeuristicPivots = value;
2180
  opts.arith.arithHeuristicPivotsWasSetByUser = true;
2181
  Trace("options") << "user assigned option arithHeuristicPivots = " << value << std::endl;
2182
}
2183
2184
void assign_arith_replayFailureLemma(Options& opts, const std::string& option, bool value) {
2185
2186
  opts.arith.replayFailureLemma = value;
2187
  opts.arith.replayFailureLemmaWasSetByUser = true;
2188
  Trace("options") << "user assigned option replayFailureLemma = " << value << std::endl;
2189
}
2190
2191
void assign_arith_maxCutsInContext(Options& opts, const std::string& option, const std::string& optionarg) {
2192
  auto value = handleOption<uint64_t>("maxCutsInContext", option, optionarg);
2193
2194
  opts.arith.maxCutsInContext = value;
2195
  opts.arith.maxCutsInContextWasSetByUser = true;
2196
  Trace("options") << "user assigned option maxCutsInContext = " << value << std::endl;
2197
}
2198
2199
8
void assign_arith_arithMLTrick(Options& opts, const std::string& option, bool value) {
2200
2201
8
  opts.arith.arithMLTrick = value;
2202
8
  opts.arith.arithMLTrickWasSetByUser = true;
2203
8
  Trace("options") << "user assigned option arithMLTrick = " << value << std::endl;
2204
8
}
2205
2206
void assign_arith_arithMLTrickSubstitutions(Options& opts, const std::string& option, const std::string& optionarg) {
2207
  auto value = handleOption<uint64_t>("miplib-trick-subs", option, optionarg);
2208
2209
  opts.arith.arithMLTrickSubstitutions = value;
2210
  opts.arith.arithMLTrickSubstitutionsWasSetByUser = true;
2211
  Trace("options") << "user assigned option arithMLTrickSubstitutions = " << value << std::endl;
2212
}
2213
2214
8
void assign_arith_newProp(Options& opts, const std::string& option, bool value) {
2215
2216
8
  opts.arith.newProp = value;
2217
8
  opts.arith.newPropWasSetByUser = true;
2218
8
  Trace("options") << "user assigned option newProp = " << value << std::endl;
2219
8
}
2220
2221
5
void assign_arith_nlCad(Options& opts, const std::string& option, bool value) {
2222
2223
5
  opts.arith.nlCad = value;
2224
5
  opts.arith.nlCadWasSetByUser = true;
2225
5
  Trace("options") << "user assigned option nlCad = " << value << std::endl;
2226
5
}
2227
2228
void assign_arith_nlCadUseInitial(Options& opts, const std::string& option, bool value) {
2229
2230
  opts.arith.nlCadUseInitial = value;
2231
  opts.arith.nlCadUseInitialWasSetByUser = true;
2232
  Trace("options") << "user assigned option nlCadUseInitial = " << value << std::endl;
2233
}
2234
2235
void assign_arith_nlCadLifting(Options& opts, const std::string& option, const std::string& optionarg) {
2236
  auto value = stringToNlCadLiftingMode(optionarg);
2237
2238
  opts.arith.nlCadLifting = value;
2239
  opts.arith.nlCadLiftingWasSetByUser = true;
2240
  Trace("options") << "user assigned option nlCadLifting = " << value << std::endl;
2241
}
2242
2243
void assign_arith_nlCadProjection(Options& opts, const std::string& option, const std::string& optionarg) {
2244
  auto value = stringToNlCadProjectionMode(optionarg);
2245
2246
  opts.arith.nlCadProjection = value;
2247
  opts.arith.nlCadProjectionWasSetByUser = true;
2248
  Trace("options") << "user assigned option nlCadProjection = " << value << std::endl;
2249
}
2250
2251
void assign_arith_nlExtEntailConflicts(Options& opts, const std::string& option, bool value) {
2252
2253
  opts.arith.nlExtEntailConflicts = value;
2254
  opts.arith.nlExtEntailConflictsWasSetByUser = true;
2255
  Trace("options") << "user assigned option nlExtEntailConflicts = " << value << std::endl;
2256
}
2257
2258
void assign_arith_nlExtFactor(Options& opts, const std::string& option, bool value) {
2259
2260
  opts.arith.nlExtFactor = value;
2261
  opts.arith.nlExtFactorWasSetByUser = true;
2262
  Trace("options") << "user assigned option nlExtFactor = " << value << std::endl;
2263
}
2264
2265
2
void assign_arith_nlExtIncPrecision(Options& opts, const std::string& option, bool value) {
2266
2267
2
  opts.arith.nlExtIncPrecision = value;
2268
2
  opts.arith.nlExtIncPrecisionWasSetByUser = true;
2269
2
  Trace("options") << "user assigned option nlExtIncPrecision = " << value << std::endl;
2270
2
}
2271
2272
4
void assign_arith_nlExtPurify(Options& opts, const std::string& option, bool value) {
2273
2274
4
  opts.arith.nlExtPurify = value;
2275
4
  opts.arith.nlExtPurifyWasSetByUser = true;
2276
4
  Trace("options") << "user assigned option nlExtPurify = " << value << std::endl;
2277
4
}
2278
2279
void assign_arith_nlExtResBound(Options& opts, const std::string& option, bool value) {
2280
2281
  opts.arith.nlExtResBound = value;
2282
  opts.arith.nlExtResBoundWasSetByUser = true;
2283
  Trace("options") << "user assigned option nlExtResBound = " << value << std::endl;
2284
}
2285
2286
void assign_arith_nlExtRewrites(Options& opts, const std::string& option, bool value) {
2287
2288
  opts.arith.nlExtRewrites = value;
2289
  opts.arith.nlExtRewritesWasSetByUser = true;
2290
  Trace("options") << "user assigned option nlExtRewrites = " << value << std::endl;
2291
}
2292
2293
void assign_arith_nlExtSplitZero(Options& opts, const std::string& option, bool value) {
2294
2295
  opts.arith.nlExtSplitZero = value;
2296
  opts.arith.nlExtSplitZeroWasSetByUser = true;
2297
  Trace("options") << "user assigned option nlExtSplitZero = " << value << std::endl;
2298
}
2299
2300
void assign_arith_nlExtTfTaylorDegree(Options& opts, const std::string& option, const std::string& optionarg) {
2301
  auto value = handleOption<int64_t>("nl-ext-tf-taylor-deg", option, optionarg);
2302
2303
  opts.arith.nlExtTfTaylorDegree = value;
2304
  opts.arith.nlExtTfTaylorDegreeWasSetByUser = true;
2305
  Trace("options") << "user assigned option nlExtTfTaylorDegree = " << value << std::endl;
2306
}
2307
2308
41
void assign_arith_nlExtTfTangentPlanes(Options& opts, const std::string& option, bool value) {
2309
2310
41
  opts.arith.nlExtTfTangentPlanes = value;
2311
41
  opts.arith.nlExtTfTangentPlanesWasSetByUser = true;
2312
41
  Trace("options") << "user assigned option nlExtTfTangentPlanes = " << value << std::endl;
2313
41
}
2314
2315
42
void assign_arith_nlExtTangentPlanes(Options& opts, const std::string& option, bool value) {
2316
2317
42
  opts.arith.nlExtTangentPlanes = value;
2318
42
  opts.arith.nlExtTangentPlanesWasSetByUser = true;
2319
42
  Trace("options") << "user assigned option nlExtTangentPlanes = " << value << std::endl;
2320
42
}
2321
2322
void assign_arith_nlExtTangentPlanesInterleave(Options& opts, const std::string& option, bool value) {
2323
2324
  opts.arith.nlExtTangentPlanesInterleave = value;
2325
  opts.arith.nlExtTangentPlanesInterleaveWasSetByUser = true;
2326
  Trace("options") << "user assigned option nlExtTangentPlanesInterleave = " << value << std::endl;
2327
}
2328
2329
125
void assign_arith_nlExt(Options& opts, const std::string& option, const std::string& optionarg) {
2330
125
  auto value = stringToNlExtMode(optionarg);
2331
2332
125
  opts.arith.nlExt = value;
2333
125
  opts.arith.nlExtWasSetByUser = true;
2334
125
  Trace("options") << "user assigned option nlExt = " << value << std::endl;
2335
125
}
2336
2337
2
void assign_arith_nlICP(Options& opts, const std::string& option, bool value) {
2338
2339
2
  opts.arith.nlICP = value;
2340
2
  opts.arith.nlICPWasSetByUser = true;
2341
2
  Trace("options") << "user assigned option nlICP = " << value << std::endl;
2342
2
}
2343
2344
10
void assign_arith_nlRlvMode(Options& opts, const std::string& option, const std::string& optionarg) {
2345
10
  auto value = stringToNlRlvMode(optionarg);
2346
2347
10
  opts.arith.nlRlvMode = value;
2348
10
  opts.arith.nlRlvModeWasSetByUser = true;
2349
10
  Trace("options") << "user assigned option nlRlvMode = " << value << std::endl;
2350
10
}
2351
2352
2
void assign_arith_pbRewrites(Options& opts, const std::string& option, bool value) {
2353
2354
2
  opts.arith.pbRewrites = value;
2355
2
  opts.arith.pbRewritesWasSetByUser = true;
2356
2
  Trace("options") << "user assigned option pbRewrites = " << value << std::endl;
2357
2
}
2358
2359
void assign_arith_arithPivotThreshold(Options& opts, const std::string& option, const std::string& optionarg) {
2360
  auto value = handleOption<uint64_t>("pivot-threshold", option, optionarg);
2361
2362
  opts.arith.arithPivotThreshold = value;
2363
  opts.arith.arithPivotThresholdWasSetByUser = true;
2364
  Trace("options") << "user assigned option arithPivotThreshold = " << value << std::endl;
2365
}
2366
2367
void assign_arith_ppAssertMaxSubSize(Options& opts, const std::string& option, const std::string& optionarg) {
2368
  auto value = handleOption<uint64_t>("pp-assert-max-sub-size", option, optionarg);
2369
2370
  opts.arith.ppAssertMaxSubSize = value;
2371
  opts.arith.ppAssertMaxSubSizeWasSetByUser = true;
2372
  Trace("options") << "user assigned option ppAssertMaxSubSize = " << value << std::endl;
2373
}
2374
2375
void assign_arith_arithPropagateMaxLength(Options& opts, const std::string& option, const std::string& optionarg) {
2376
  auto value = handleOption<uint64_t>("prop-row-length", option, optionarg);
2377
2378
  opts.arith.arithPropagateMaxLength = value;
2379
  opts.arith.arithPropagateMaxLengthWasSetByUser = true;
2380
  Trace("options") << "user assigned option arithPropagateMaxLength = " << value << std::endl;
2381
}
2382
2383
void assign_arith_replayEarlyCloseDepths(Options& opts, const std::string& option, const std::string& optionarg) {
2384
  auto value = handleOption<int64_t>("replay-early-close-depth", option, optionarg);
2385
2386
  opts.arith.replayEarlyCloseDepths = value;
2387
  opts.arith.replayEarlyCloseDepthsWasSetByUser = true;
2388
  Trace("options") << "user assigned option replayEarlyCloseDepths = " << value << std::endl;
2389
}
2390
2391
void assign_arith_replayFailurePenalty(Options& opts, const std::string& option, const std::string& optionarg) {
2392
  auto value = handleOption<int64_t>("replay-failure-penalty", option, optionarg);
2393
2394
  opts.arith.replayFailurePenalty = value;
2395
  opts.arith.replayFailurePenaltyWasSetByUser = true;
2396
  Trace("options") << "user assigned option replayFailurePenalty = " << value << std::endl;
2397
}
2398
2399
void assign_arith_lemmaRejectCutSize(Options& opts, const std::string& option, const std::string& optionarg) {
2400
  auto value = handleOption<uint64_t>("replay-lemma-reject-cut", option, optionarg);
2401
2402
  opts.arith.lemmaRejectCutSize = value;
2403
  opts.arith.lemmaRejectCutSizeWasSetByUser = true;
2404
  Trace("options") << "user assigned option lemmaRejectCutSize = " << value << std::endl;
2405
}
2406
2407
void assign_arith_replayNumericFailurePenalty(Options& opts, const std::string& option, const std::string& optionarg) {
2408
  auto value = handleOption<int64_t>("replay-num-err-penalty", option, optionarg);
2409
2410
  opts.arith.replayNumericFailurePenalty = value;
2411
  opts.arith.replayNumericFailurePenaltyWasSetByUser = true;
2412
  Trace("options") << "user assigned option replayNumericFailurePenalty = " << value << std::endl;
2413
}
2414
2415
void assign_arith_replayRejectCutSize(Options& opts, const std::string& option, const std::string& optionarg) {
2416
  auto value = handleOption<uint64_t>("replay-reject-cut", option, optionarg);
2417
2418
  opts.arith.replayRejectCutSize = value;
2419
  opts.arith.replayRejectCutSizeWasSetByUser = true;
2420
  Trace("options") << "user assigned option replayRejectCutSize = " << value << std::endl;
2421
}
2422
2423
void assign_arith_soiApproxMajorFailurePen(Options& opts, const std::string& option, const std::string& optionarg) {
2424
  auto value = handleOption<int64_t>("replay-soi-major-threshold-pen", option, optionarg);
2425
2426
  opts.arith.soiApproxMajorFailurePen = value;
2427
  opts.arith.soiApproxMajorFailurePenWasSetByUser = true;
2428
  Trace("options") << "user assigned option soiApproxMajorFailurePen = " << value << std::endl;
2429
}
2430
2431
void assign_arith_soiApproxMajorFailure(Options& opts, const std::string& option, const std::string& optionarg) {
2432
  auto value = handleOption<double>("replay-soi-major-threshold", option, optionarg);
2433
2434
  opts.arith.soiApproxMajorFailure = value;
2435
  opts.arith.soiApproxMajorFailureWasSetByUser = true;
2436
  Trace("options") << "user assigned option soiApproxMajorFailure = " << value << std::endl;
2437
}
2438
2439
void assign_arith_soiApproxMinorFailurePen(Options& opts, const std::string& option, const std::string& optionarg) {
2440
  auto value = handleOption<int64_t>("replay-soi-minor-threshold-pen", option, optionarg);
2441
2442
  opts.arith.soiApproxMinorFailurePen = value;
2443
  opts.arith.soiApproxMinorFailurePenWasSetByUser = true;
2444
  Trace("options") << "user assigned option soiApproxMinorFailurePen = " << value << std::endl;
2445
}
2446
2447
void assign_arith_soiApproxMinorFailure(Options& opts, const std::string& option, const std::string& optionarg) {
2448
  auto value = handleOption<double>("replay-soi-minor-threshold", option, optionarg);
2449
2450
  opts.arith.soiApproxMinorFailure = value;
2451
  opts.arith.soiApproxMinorFailureWasSetByUser = true;
2452
  Trace("options") << "user assigned option soiApproxMinorFailure = " << value << std::endl;
2453
}
2454
2455
void assign_arith_restrictedPivots(Options& opts, const std::string& option, bool value) {
2456
2457
  opts.arith.restrictedPivots = value;
2458
  opts.arith.restrictedPivotsWasSetByUser = true;
2459
  Trace("options") << "user assigned option restrictedPivots = " << value << std::endl;
2460
}
2461
2462
void assign_arith_revertArithModels(Options& opts, const std::string& option, bool value) {
2463
2464
  opts.arith.revertArithModels = value;
2465
  opts.arith.revertArithModelsWasSetByUser = true;
2466
  Trace("options") << "user assigned option revertArithModels = " << value << std::endl;
2467
}
2468
2469
void assign_arith_rrTurns(Options& opts, const std::string& option, const std::string& optionarg) {
2470
  auto value = handleOption<int64_t>("rr-turns", option, optionarg);
2471
2472
  opts.arith.rrTurns = value;
2473
  opts.arith.rrTurnsWasSetByUser = true;
2474
  Trace("options") << "user assigned option rrTurns = " << value << std::endl;
2475
}
2476
2477
void assign_arith_trySolveIntStandardEffort(Options& opts, const std::string& option, bool value) {
2478
2479
  opts.arith.trySolveIntStandardEffort = value;
2480
  opts.arith.trySolveIntStandardEffortWasSetByUser = true;
2481
  Trace("options") << "user assigned option trySolveIntStandardEffort = " << value << std::endl;
2482
}
2483
2484
void assign_arith_arithSimplexCheckPeriod(Options& opts, const std::string& option, const std::string& optionarg) {
2485
  auto value = handleOption<uint64_t>("simplex-check-period", option, optionarg);
2486
2487
  opts.arith.arithSimplexCheckPeriod = value;
2488
  opts.arith.arithSimplexCheckPeriodWasSetByUser = true;
2489
  Trace("options") << "user assigned option arithSimplexCheckPeriod = " << value << std::endl;
2490
}
2491
2492
void assign_arith_soiQuickExplain(Options& opts, const std::string& option, bool value) {
2493
2494
  opts.arith.soiQuickExplain = value;
2495
  opts.arith.soiQuickExplainWasSetByUser = true;
2496
  Trace("options") << "user assigned option soiQuickExplain = " << value << std::endl;
2497
}
2498
2499
void assign_arith_arithStandardCheckVarOrderPivots(Options& opts, const std::string& option, const std::string& optionarg) {
2500
  auto value = handleOption<int64_t>("standard-effort-variable-order-pivots", option, optionarg);
2501
2502
  opts.arith.arithStandardCheckVarOrderPivots = value;
2503
  opts.arith.arithStandardCheckVarOrderPivotsWasSetByUser = true;
2504
  Trace("options") << "user assigned option arithStandardCheckVarOrderPivots = " << value << std::endl;
2505
}
2506
2507
void assign_arith_arithUnateLemmaMode(Options& opts, const std::string& option, const std::string& optionarg) {
2508
  auto value = stringToArithUnateLemmaMode(optionarg);
2509
2510
  opts.arith.arithUnateLemmaMode = value;
2511
  opts.arith.arithUnateLemmaModeWasSetByUser = true;
2512
  Trace("options") << "user assigned option arithUnateLemmaMode = " << value << std::endl;
2513
}
2514
2515
void assign_arith_useApprox(Options& opts, const std::string& option, bool value) {
2516
2517
  opts.arith.useApprox = value;
2518
  opts.arith.useApproxWasSetByUser = true;
2519
  Trace("options") << "user assigned option useApprox = " << value << std::endl;
2520
}
2521
2522
void assign_arith_useFC(Options& opts, const std::string& option, bool value) {
2523
2524
  opts.arith.useFC = value;
2525
  opts.arith.useFCWasSetByUser = true;
2526
  Trace("options") << "user assigned option useFC = " << value << std::endl;
2527
}
2528
2529
void assign_arith_useSOI(Options& opts, const std::string& option, bool value) {
2530
2531
  opts.arith.useSOI = value;
2532
  opts.arith.useSOIWasSetByUser = true;
2533
  Trace("options") << "user assigned option useSOI = " << value << std::endl;
2534
}
2535
2536
void assign_arrays_arraysConfig(Options& opts, const std::string& option, const std::string& optionarg) {
2537
  auto value = handleOption<int64_t>("arrays-config", option, optionarg);
2538
2539
  opts.arrays.arraysConfig = value;
2540
  opts.arrays.arraysConfigWasSetByUser = true;
2541
  Trace("options") << "user assigned option arraysConfig = " << value << std::endl;
2542
}
2543
2544
void assign_arrays_arraysEagerIndexSplitting(Options& opts, const std::string& option, bool value) {
2545
2546
  opts.arrays.arraysEagerIndexSplitting = value;
2547
  opts.arrays.arraysEagerIndexSplittingWasSetByUser = true;
2548
  Trace("options") << "user assigned option arraysEagerIndexSplitting = " << value << std::endl;
2549
}
2550
2551
void assign_arrays_arraysEagerLemmas(Options& opts, const std::string& option, bool value) {
2552
2553
  opts.arrays.arraysEagerLemmas = value;
2554
  opts.arrays.arraysEagerLemmasWasSetByUser = true;
2555
  Trace("options") << "user assigned option arraysEagerLemmas = " << value << std::endl;
2556
}
2557
2558
10
void assign_arrays_arraysExp(Options& opts, const std::string& option, bool value) {
2559
2560
10
  opts.arrays.arraysExp = value;
2561
10
  opts.arrays.arraysExpWasSetByUser = true;
2562
10
  Trace("options") << "user assigned option arraysExp = " << value << std::endl;
2563
10
}
2564
2565
void assign_arrays_arraysModelBased(Options& opts, const std::string& option, bool value) {
2566
2567
  opts.arrays.arraysModelBased = value;
2568
  opts.arrays.arraysModelBasedWasSetByUser = true;
2569
  Trace("options") << "user assigned option arraysModelBased = " << value << std::endl;
2570
}
2571
2572
void assign_arrays_arraysOptimizeLinear(Options& opts, const std::string& option, bool value) {
2573
2574
  opts.arrays.arraysOptimizeLinear = value;
2575
  opts.arrays.arraysOptimizeLinearWasSetByUser = true;
2576
  Trace("options") << "user assigned option arraysOptimizeLinear = " << value << std::endl;
2577
}
2578
2579
void assign_arrays_arraysPropagate(Options& opts, const std::string& option, const std::string& optionarg) {
2580
  auto value = handleOption<int64_t>("arrays-prop", option, optionarg);
2581
2582
  opts.arrays.arraysPropagate = value;
2583
  opts.arrays.arraysPropagateWasSetByUser = true;
2584
  Trace("options") << "user assigned option arraysPropagate = " << value << std::endl;
2585
}
2586
2587
void assign_arrays_arraysReduceSharing(Options& opts, const std::string& option, bool value) {
2588
2589
  opts.arrays.arraysReduceSharing = value;
2590
  opts.arrays.arraysReduceSharingWasSetByUser = true;
2591
  Trace("options") << "user assigned option arraysReduceSharing = " << value << std::endl;
2592
}
2593
2594
void assign_arrays_arraysWeakEquivalence(Options& opts, const std::string& option, bool value) {
2595
2596
  opts.arrays.arraysWeakEquivalence = value;
2597
  opts.arrays.arraysWeakEquivalenceWasSetByUser = true;
2598
  Trace("options") << "user assigned option arraysWeakEquivalence = " << value << std::endl;
2599
}
2600
2601
void assign_base_err(Options& opts, const std::string& option, const std::string& optionarg) {
2602
  auto value = handleOption<ManagedErr>("err", option, optionarg);
2603
  opts.handler().setErrStream("err", option, value);
2604
  opts.base.err = value;
2605
  opts.base.errWasSetByUser = true;
2606
  Trace("options") << "user assigned option err = " << value << std::endl;
2607
}
2608
2609
void assign_base_in(Options& opts, const std::string& option, const std::string& optionarg) {
2610
  auto value = handleOption<ManagedIn>("in", option, optionarg);
2611
  opts.handler().setInStream("in", option, value);
2612
  opts.base.in = value;
2613
  opts.base.inWasSetByUser = true;
2614
  Trace("options") << "user assigned option in = " << value << std::endl;
2615
}
2616
2617
7289
void assign_base_incrementalSolving(Options& opts, const std::string& option, bool value) {
2618
2619
7289
  opts.base.incrementalSolving = value;
2620
7289
  opts.base.incrementalSolvingWasSetByUser = true;
2621
7289
  Trace("options") << "user assigned option incrementalSolving = " << value << std::endl;
2622
7289
}
2623
2624
524
void assign_base_inputLanguage(Options& opts, const std::string& option, const std::string& optionarg) {
2625
524
  auto value = opts.handler().stringToInputLanguage("lang", option, optionarg);
2626
2627
524
  opts.base.inputLanguage = value;
2628
524
  opts.base.inputLanguageWasSetByUser = true;
2629
524
  Trace("options") << "user assigned option inputLanguage = " << value << std::endl;
2630
524
}
2631
2632
void assign_base_languageHelp(Options& opts, const std::string& option, bool value) {
2633
2634
  opts.base.languageHelp = value;
2635
  opts.base.languageHelpWasSetByUser = true;
2636
  Trace("options") << "user assigned option languageHelp = " << value << std::endl;
2637
}
2638
2639
void assign_base_out(Options& opts, const std::string& option, const std::string& optionarg) {
2640
  auto value = handleOption<ManagedOut>("out", option, optionarg);
2641
  opts.handler().setOutStream("out", option, value);
2642
  opts.base.out = value;
2643
  opts.base.outWasSetByUser = true;
2644
  Trace("options") << "user assigned option out = " << value << std::endl;
2645
}
2646
2647
90
void assign_base_outputLanguage(Options& opts, const std::string& option, const std::string& optionarg) {
2648
90
  auto value = opts.handler().stringToOutputLanguage("output-lang", option, optionarg);
2649
2650
90
  opts.base.outputLanguage = value;
2651
90
  opts.base.outputLanguageWasSetByUser = true;
2652
90
  Trace("options") << "user assigned option outputLanguage = " << value << std::endl;
2653
90
}
2654
2655
16
void assign_base_parseOnly(Options& opts, const std::string& option, bool value) {
2656
2657
16
  opts.base.parseOnly = value;
2658
16
  opts.base.parseOnlyWasSetByUser = true;
2659
16
  Trace("options") << "user assigned option parseOnly = " << value << std::endl;
2660
16
}
2661
2662
3
void assign_base_preprocessOnly(Options& opts, const std::string& option, bool value) {
2663
2664
3
  opts.base.preprocessOnly = value;
2665
3
  opts.base.preprocessOnlyWasSetByUser = true;
2666
3
  Trace("options") << "user assigned option preprocessOnly = " << value << std::endl;
2667
3
}
2668
2669
30
void assign_base_printSuccess(Options& opts, const std::string& option, bool value) {
2670
30
  opts.handler().setPrintSuccess("print-success", option, value);
2671
30
  opts.base.printSuccess = value;
2672
30
  opts.base.printSuccessWasSetByUser = true;
2673
30
  Trace("options") << "user assigned option printSuccess = " << value << std::endl;
2674
30
}
2675
2676
void assign_base_perCallResourceLimit(Options& opts, const std::string& option, const std::string& optionarg) {
2677
  auto value = handleOption<uint64_t>("rlimit-per", option, optionarg);
2678
2679
  opts.base.perCallResourceLimit = value;
2680
  opts.base.perCallResourceLimitWasSetByUser = true;
2681
  Trace("options") << "user assigned option perCallResourceLimit = " << value << std::endl;
2682
}
2683
2684
void assign_base_cumulativeResourceLimit(Options& opts, const std::string& option, const std::string& optionarg) {
2685
  auto value = handleOption<uint64_t>("rlimit", option, optionarg);
2686
2687
  opts.base.cumulativeResourceLimit = value;
2688
  opts.base.cumulativeResourceLimitWasSetByUser = true;
2689
  Trace("options") << "user assigned option cumulativeResourceLimit = " << value << std::endl;
2690
}
2691
2692
2
void assign_base_statistics(Options& opts, const std::string& option, bool value) {
2693
2
  opts.handler().setStats("stats", option, value);
2694
2
  opts.base.statistics = value;
2695
2
  opts.base.statisticsWasSetByUser = true;
2696
2
  Trace("options") << "user assigned option statistics = " << value << std::endl;
2697
2
}
2698
2699
1
void assign_base_statisticsAll(Options& opts, const std::string& option, bool value) {
2700
1
  opts.handler().setStats("stats-all", option, value);
2701
1
  opts.base.statisticsAll = value;
2702
1
  opts.base.statisticsAllWasSetByUser = true;
2703
1
  Trace("options") << "user assigned option statisticsAll = " << value << std::endl;
2704
1
}
2705
2706
void assign_base_statisticsEveryQuery(Options& opts, const std::string& option, bool value) {
2707
  opts.handler().setStats("stats-every-query", option, value);
2708
  opts.base.statisticsEveryQuery = value;
2709
  opts.base.statisticsEveryQueryWasSetByUser = true;
2710
  Trace("options") << "user assigned option statisticsEveryQuery = " << value << std::endl;
2711
}
2712
2713
1
void assign_base_statisticsExpert(Options& opts, const std::string& option, bool value) {
2714
1
  opts.handler().setStats("stats-expert", option, value);
2715
1
  opts.base.statisticsExpert = value;
2716
1
  opts.base.statisticsExpertWasSetByUser = true;
2717
1
  Trace("options") << "user assigned option statisticsExpert = " << value << std::endl;
2718
1
}
2719
2720
6
void assign_base_perCallMillisecondLimit(Options& opts, const std::string& option, const std::string& optionarg) {
2721
6
  auto value = handleOption<uint64_t>("tlimit-per", option, optionarg);
2722
2723
6
  opts.base.perCallMillisecondLimit = value;
2724
6
  opts.base.perCallMillisecondLimitWasSetByUser = true;
2725
6
  Trace("options") << "user assigned option perCallMillisecondLimit = " << value << std::endl;
2726
6
}
2727
2728
void assign_base_cumulativeMillisecondLimit(Options& opts, const std::string& option, const std::string& optionarg) {
2729
  auto value = handleOption<uint64_t>("tlimit", option, optionarg);
2730
2731
  opts.base.cumulativeMillisecondLimit = value;
2732
  opts.base.cumulativeMillisecondLimitWasSetByUser = true;
2733
  Trace("options") << "user assigned option cumulativeMillisecondLimit = " << value << std::endl;
2734
}
2735
2736
6
void assign_base_verbosity(Options& opts, const std::string& option, const std::string& optionarg) {
2737
6
  auto value = handleOption<int64_t>("verbosity", option, optionarg);
2738
6
  opts.handler().setVerbosity("verbosity", option, value);
2739
6
  opts.base.verbosity = value;
2740
6
  opts.base.verbosityWasSetByUser = true;
2741
6
  Trace("options") << "user assigned option verbosity = " << value << std::endl;
2742
6
}
2743
2744
void assign_bv_bitvectorAig(Options& opts, const std::string& option, bool value) {
2745
  opts.handler().abcEnabledBuild("bitblast-aig", option, value);
2746
opts.handler().setBitblastAig("bitblast-aig", option, value);
2747
  opts.bv.bitvectorAig = value;
2748
  opts.bv.bitvectorAigWasSetByUser = true;
2749
  Trace("options") << "user assigned option bitvectorAig = " << value << std::endl;
2750
}
2751
2752
40
void assign_bv_bitblastMode(Options& opts, const std::string& option, const std::string& optionarg) {
2753
40
  auto value = stringToBitblastMode(optionarg);
2754
2755
40
  opts.bv.bitblastMode = value;
2756
40
  opts.bv.bitblastModeWasSetByUser = true;
2757
40
  Trace("options") << "user assigned option bitblastMode = " << value << std::endl;
2758
40
}
2759
2760
void assign_bv_bitwiseEq(Options& opts, const std::string& option, bool value) {
2761
2762
  opts.bv.bitwiseEq = value;
2763
  opts.bv.bitwiseEqWasSetByUser = true;
2764
  Trace("options") << "user assigned option bitwiseEq = " << value << std::endl;
2765
}
2766
2767
12
void assign_bv_boolToBitvector(Options& opts, const std::string& option, const std::string& optionarg) {
2768
12
  auto value = stringToBoolToBVMode(optionarg);
2769
2770
12
  opts.bv.boolToBitvector = value;
2771
12
  opts.bv.boolToBitvectorWasSetByUser = true;
2772
12
  Trace("options") << "user assigned option boolToBitvector = " << value << std::endl;
2773
12
}
2774
2775
4
void assign_bv_bvAbstraction(Options& opts, const std::string& option, bool value) {
2776
2777
4
  opts.bv.bvAbstraction = value;
2778
4
  opts.bv.bvAbstractionWasSetByUser = true;
2779
4
  Trace("options") << "user assigned option bvAbstraction = " << value << std::endl;
2780
4
}
2781
2782
void assign_bv_bitvectorAigSimplifications(Options& opts, const std::string& option, const std::string& optionarg) {
2783
  auto value = handleOption<std::string>("bv-aig-simp", option, optionarg);
2784
  opts.handler().abcEnabledBuild("bv-aig-simp", option, value);
2785
  opts.bv.bitvectorAigSimplifications = value;
2786
  opts.bv.bitvectorAigSimplificationsWasSetByUser = true;
2787
  Trace("options") << "user assigned option bitvectorAigSimplifications = " << value << std::endl;
2788
}
2789
2790
void assign_bv_bvAlgExtf(Options& opts, const std::string& option, bool value) {
2791
2792
  opts.bv.bvAlgExtf = value;
2793
  opts.bv.bvAlgExtfWasSetByUser = true;
2794
  Trace("options") << "user assigned option bvAlgExtf = " << value << std::endl;
2795
}
2796
2797
void assign_bv_bitvectorAlgebraicBudget(Options& opts, const std::string& option, const std::string& optionarg) {
2798
  auto value = handleOption<uint64_t>("bv-algebraic-budget", option, optionarg);
2799
2800
  opts.bv.bitvectorAlgebraicBudget = value;
2801
  opts.bv.bitvectorAlgebraicBudgetWasSetByUser = true;
2802
  Trace("options") << "user assigned option bitvectorAlgebraicBudget = " << value << std::endl;
2803
}
2804
2805
void assign_bv_bitvectorAlgebraicSolver(Options& opts, const std::string& option, bool value) {
2806
2807
  opts.bv.bitvectorAlgebraicSolver = value;
2808
  opts.bv.bitvectorAlgebraicSolverWasSetByUser = true;
2809
  Trace("options") << "user assigned option bitvectorAlgebraicSolver = " << value << std::endl;
2810
}
2811
2812
6
void assign_bv_bvAssertInput(Options& opts, const std::string& option, bool value) {
2813
2814
6
  opts.bv.bvAssertInput = value;
2815
6
  opts.bv.bvAssertInputWasSetByUser = true;
2816
6
  Trace("options") << "user assigned option bvAssertInput = " << value << std::endl;
2817
6
}
2818
2819
void assign_bv_bvEagerExplanations(Options& opts, const std::string& option, bool value) {
2820
2821
  opts.bv.bvEagerExplanations = value;
2822
  opts.bv.bvEagerExplanationsWasSetByUser = true;
2823
  Trace("options") << "user assigned option bvEagerExplanations = " << value << std::endl;
2824
}
2825
2826
2
void assign_bv_bitvectorEqualitySolver(Options& opts, const std::string& option, bool value) {
2827
2828
2
  opts.bv.bitvectorEqualitySolver = value;
2829
2
  opts.bv.bitvectorEqualitySolverWasSetByUser = true;
2830
2
  Trace("options") << "user assigned option bitvectorEqualitySolver = " << value << std::endl;
2831
2
}
2832
2833
void assign_bv_bvExtractArithRewrite(Options& opts, const std::string& option, bool value) {
2834
2835
  opts.bv.bvExtractArithRewrite = value;
2836
  opts.bv.bvExtractArithRewriteWasSetByUser = true;
2837
  Trace("options") << "user assigned option bvExtractArithRewrite = " << value << std::endl;
2838
}
2839
2840
void assign_bv_bvGaussElim(Options& opts, const std::string& option, bool value) {
2841
2842
  opts.bv.bvGaussElim = value;
2843
  opts.bv.bvGaussElimWasSetByUser = true;
2844
  Trace("options") << "user assigned option bvGaussElim = " << value << std::endl;
2845
}
2846
2847
void assign_bv_bitvectorInequalitySolver(Options& opts, const std::string& option, bool value) {
2848
2849
  opts.bv.bitvectorInequalitySolver = value;
2850
  opts.bv.bitvectorInequalitySolverWasSetByUser = true;
2851
  Trace("options") << "user assigned option bitvectorInequalitySolver = " << value << std::endl;
2852
}
2853
2854
2
void assign_bv_bvIntroducePow2(Options& opts, const std::string& option, bool value) {
2855
2856
2
  opts.bv.bvIntroducePow2 = value;
2857
2
  opts.bv.bvIntroducePow2WasSetByUser = true;
2858
2
  Trace("options") << "user assigned option bvIntroducePow2 = " << value << std::endl;
2859
2
}
2860
2861
void assign_bv_bvNumFunc(Options& opts, const std::string& option, const std::string& optionarg) {
2862
  auto value = handleOption<uint64_t>("bv-num-func", option, optionarg);
2863
2864
  opts.bv.bvNumFunc = value;
2865
  opts.bv.bvNumFuncWasSetByUser = true;
2866
  Trace("options") << "user assigned option bvNumFunc = " << value << std::endl;
2867
}
2868
2869
2
void assign_bv_bvPrintConstsAsIndexedSymbols(Options& opts, const std::string& option, bool value) {
2870
2871
2
  opts.bv.bvPrintConstsAsIndexedSymbols = value;
2872
2
  opts.bv.bvPrintConstsAsIndexedSymbolsWasSetByUser = true;
2873
2
  Trace("options") << "user assigned option bvPrintConstsAsIndexedSymbols = " << value << std::endl;
2874
2
}
2875
2876
void assign_bv_bitvectorPropagate(Options& opts, const std::string& option, bool value) {
2877
2878
  opts.bv.bitvectorPropagate = value;
2879
  opts.bv.bitvectorPropagateWasSetByUser = true;
2880
  Trace("options") << "user assigned option bitvectorPropagate = " << value << std::endl;
2881
}
2882
2883
void assign_bv_bitvectorQuickXplain(Options& opts, const std::string& option, bool value) {
2884
2885
  opts.bv.bitvectorQuickXplain = value;
2886
  opts.bv.bitvectorQuickXplainWasSetByUser = true;
2887
  Trace("options") << "user assigned option bitvectorQuickXplain = " << value << std::endl;
2888
}
2889
2890
18
void assign_bv_bvSatSolver(Options& opts, const std::string& option, const std::string& optionarg) {
2891
18
  auto value = stringToSatSolverMode(optionarg);
2892
16
  opts.handler().checkBvSatSolver("bv-sat-solver", option, value);
2893
16
  opts.bv.bvSatSolver = value;
2894
16
  opts.bv.bvSatSolverWasSetByUser = true;
2895
16
  Trace("options") << "user assigned option bvSatSolver = " << value << std::endl;
2896
16
}
2897
2898
void assign_bv_skolemizeArguments(Options& opts, const std::string& option, bool value) {
2899
2900
  opts.bv.skolemizeArguments = value;
2901
  opts.bv.skolemizeArgumentsWasSetByUser = true;
2902
  Trace("options") << "user assigned option skolemizeArguments = " << value << std::endl;
2903
}
2904
2905
46
void assign_bv_bvSolver(Options& opts, const std::string& option, const std::string& optionarg) {
2906
46
  auto value = stringToBVSolver(optionarg);
2907
2908
46
  opts.bv.bvSolver = value;
2909
46
  opts.bv.bvSolverWasSetByUser = true;
2910
46
  Trace("options") << "user assigned option bvSolver = " << value << std::endl;
2911
46
}
2912
2913
10
void assign_bv_bitvectorToBool(Options& opts, const std::string& option, bool value) {
2914
2915
10
  opts.bv.bitvectorToBool = value;
2916
10
  opts.bv.bitvectorToBoolWasSetByUser = true;
2917
10
  Trace("options") << "user assigned option bitvectorToBool = " << value << std::endl;
2918
10
}
2919
2920
void assign_datatypes_cdtBisimilar(Options& opts, const std::string& option, bool value) {
2921
2922
  opts.datatypes.cdtBisimilar = value;
2923
  opts.datatypes.cdtBisimilarWasSetByUser = true;
2924
  Trace("options") << "user assigned option cdtBisimilar = " << value << std::endl;
2925
}
2926
2927
void assign_datatypes_dtBinarySplit(Options& opts, const std::string& option, bool value) {
2928
2929
  opts.datatypes.dtBinarySplit = value;
2930
  opts.datatypes.dtBinarySplitWasSetByUser = true;
2931
  Trace("options") << "user assigned option dtBinarySplit = " << value << std::endl;
2932
}
2933
2934
void assign_datatypes_dtBlastSplits(Options& opts, const std::string& option, bool value) {
2935
2936
  opts.datatypes.dtBlastSplits = value;
2937
  opts.datatypes.dtBlastSplitsWasSetByUser = true;
2938
  Trace("options") << "user assigned option dtBlastSplits = " << value << std::endl;
2939
}
2940
2941
void assign_datatypes_dtCyclic(Options& opts, const std::string& option, bool value) {
2942
2943
  opts.datatypes.dtCyclic = value;
2944
  opts.datatypes.dtCyclicWasSetByUser = true;
2945
  Trace("options") << "user assigned option dtCyclic = " << value << std::endl;
2946
}
2947
2948
void assign_datatypes_dtForceAssignment(Options& opts, const std::string& option, bool value) {
2949
2950
  opts.datatypes.dtForceAssignment = value;
2951
  opts.datatypes.dtForceAssignmentWasSetByUser = true;
2952
  Trace("options") << "user assigned option dtForceAssignment = " << value << std::endl;
2953
}
2954
2955
void assign_datatypes_dtInferAsLemmas(Options& opts, const std::string& option, bool value) {
2956
2957
  opts.datatypes.dtInferAsLemmas = value;
2958
  opts.datatypes.dtInferAsLemmasWasSetByUser = true;
2959
  Trace("options") << "user assigned option dtInferAsLemmas = " << value << std::endl;
2960
}
2961
2962
10
void assign_datatypes_dtNestedRec(Options& opts, const std::string& option, bool value) {
2963
2964
10
  opts.datatypes.dtNestedRec = value;
2965
10
  opts.datatypes.dtNestedRecWasSetByUser = true;
2966
10
  Trace("options") << "user assigned option dtNestedRec = " << value << std::endl;
2967
10
}
2968
2969
void assign_datatypes_dtPoliteOptimize(Options& opts, const std::string& option, bool value) {
2970
2971
  opts.datatypes.dtPoliteOptimize = value;
2972
  opts.datatypes.dtPoliteOptimizeWasSetByUser = true;
2973
  Trace("options") << "user assigned option dtPoliteOptimize = " << value << std::endl;
2974
}
2975
2976
5
void assign_datatypes_dtRewriteErrorSel(Options& opts, const std::string& option, bool value) {
2977
2978
5
  opts.datatypes.dtRewriteErrorSel = value;
2979
5
  opts.datatypes.dtRewriteErrorSelWasSetByUser = true;
2980
5
  Trace("options") << "user assigned option dtRewriteErrorSel = " << value << std::endl;
2981
5
}
2982
2983
void assign_datatypes_dtSharedSelectors(Options& opts, const std::string& option, bool value) {
2984
2985
  opts.datatypes.dtSharedSelectors = value;
2986
  opts.datatypes.dtSharedSelectorsWasSetByUser = true;
2987
  Trace("options") << "user assigned option dtSharedSelectors = " << value << std::endl;
2988
}
2989
2990
11
void assign_datatypes_sygusAbortSize(Options& opts, const std::string& option, const std::string& optionarg) {
2991
11
  auto value = handleOption<int64_t>("sygus-abort-size", option, optionarg);
2992
2993
11
  opts.datatypes.sygusAbortSize = value;
2994
11
  opts.datatypes.sygusAbortSizeWasSetByUser = true;
2995
11
  Trace("options") << "user assigned option sygusAbortSize = " << value << std::endl;
2996
11
}
2997
2998
void assign_datatypes_sygusFairMax(Options& opts, const std::string& option, bool value) {
2999
3000
  opts.datatypes.sygusFairMax = value;
3001
  opts.datatypes.sygusFairMaxWasSetByUser = true;
3002
  Trace("options") << "user assigned option sygusFairMax = " << value << std::endl;
3003
}
3004
3005
2
void assign_datatypes_sygusFair(Options& opts, const std::string& option, const std::string& optionarg) {
3006
2
  auto value = stringToSygusFairMode(optionarg);
3007
3008
2
  opts.datatypes.sygusFair = value;
3009
2
  opts.datatypes.sygusFairWasSetByUser = true;
3010
2
  Trace("options") << "user assigned option sygusFair = " << value << std::endl;
3011
2
}
3012
3013
8
void assign_datatypes_sygusSymBreak(Options& opts, const std::string& option, bool value) {
3014
3015
8
  opts.datatypes.sygusSymBreak = value;
3016
8
  opts.datatypes.sygusSymBreakWasSetByUser = true;
3017
8
  Trace("options") << "user assigned option sygusSymBreak = " << value << std::endl;
3018
8
}
3019
3020
void assign_datatypes_sygusSymBreakAgg(Options& opts, const std::string& option, bool value) {
3021
3022
  opts.datatypes.sygusSymBreakAgg = value;
3023
  opts.datatypes.sygusSymBreakAggWasSetByUser = true;
3024
  Trace("options") << "user assigned option sygusSymBreakAgg = " << value << std::endl;
3025
}
3026
3027
void assign_datatypes_sygusSymBreakDynamic(Options& opts, const std::string& option, bool value) {
3028
3029
  opts.datatypes.sygusSymBreakDynamic = value;
3030
  opts.datatypes.sygusSymBreakDynamicWasSetByUser = true;
3031
  Trace("options") << "user assigned option sygusSymBreakDynamic = " << value << std::endl;
3032
}
3033
3034
2
void assign_datatypes_sygusSymBreakLazy(Options& opts, const std::string& option, bool value) {
3035
3036
2
  opts.datatypes.sygusSymBreakLazy = value;
3037
2
  opts.datatypes.sygusSymBreakLazyWasSetByUser = true;
3038
2
  Trace("options") << "user assigned option sygusSymBreakLazy = " << value << std::endl;
3039
2
}
3040
3041
void assign_datatypes_sygusSymBreakPbe(Options& opts, const std::string& option, bool value) {
3042
3043
  opts.datatypes.sygusSymBreakPbe = value;
3044
  opts.datatypes.sygusSymBreakPbeWasSetByUser = true;
3045
  Trace("options") << "user assigned option sygusSymBreakPbe = " << value << std::endl;
3046
}
3047
3048
2
void assign_datatypes_sygusSymBreakRlv(Options& opts, const std::string& option, bool value) {
3049
3050
2
  opts.datatypes.sygusSymBreakRlv = value;
3051
2
  opts.datatypes.sygusSymBreakRlvWasSetByUser = true;
3052
2
  Trace("options") << "user assigned option sygusSymBreakRlv = " << value << std::endl;
3053
2
}
3054
3055
void assign_decision_decisionRandomWeight(Options& opts, const std::string& option, const std::string& optionarg) {
3056
  auto value = handleOption<int64_t>("decision-random-weight", option, optionarg);
3057
3058
  opts.decision.decisionRandomWeight = value;
3059
  opts.decision.decisionRandomWeightWasSetByUser = true;
3060
  Trace("options") << "user assigned option decisionRandomWeight = " << value << std::endl;
3061
}
3062
3063
void assign_decision_decisionThreshold(Options& opts, const std::string& option, const std::string& optionarg) {
3064
  auto value = handleOption<cvc5::decision::DecisionWeight>("decision-threshold", option, optionarg);
3065
3066
  opts.decision.decisionThreshold = value;
3067
  opts.decision.decisionThresholdWasSetByUser = true;
3068
  Trace("options") << "user assigned option decisionThreshold = " << value << std::endl;
3069
}
3070
3071
void assign_decision_decisionUseWeight(Options& opts, const std::string& option, bool value) {
3072
3073
  opts.decision.decisionUseWeight = value;
3074
  opts.decision.decisionUseWeightWasSetByUser = true;
3075
  Trace("options") << "user assigned option decisionUseWeight = " << value << std::endl;
3076
}
3077
3078
void assign_decision_decisionWeightInternal(Options& opts, const std::string& option, const std::string& optionarg) {
3079
  auto value = stringToDecisionWeightInternal(optionarg);
3080
3081
  opts.decision.decisionWeightInternal = value;
3082
  opts.decision.decisionWeightInternalWasSetByUser = true;
3083
  Trace("options") << "user assigned option decisionWeightInternal = " << value << std::endl;
3084
}
3085
3086
94
void assign_decision_decisionMode(Options& opts, const std::string& option, const std::string& optionarg) {
3087
94
  auto value = stringToDecisionMode(optionarg);
3088
3089
94
  opts.decision.decisionMode = value;
3090
94
  opts.decision.decisionModeWasSetByUser = true;
3091
94
  Trace("options") << "user assigned option decisionMode = " << value << std::endl;
3092
94
}
3093
3094
10
void assign_decision_jhRlvOrder(Options& opts, const std::string& option, bool value) {
3095
3096
10
  opts.decision.jhRlvOrder = value;
3097
10
  opts.decision.jhRlvOrderWasSetByUser = true;
3098
10
  Trace("options") << "user assigned option jhRlvOrder = " << value << std::endl;
3099
10
}
3100
3101
void assign_decision_jhSkolemRlvMode(Options& opts, const std::string& option, const std::string& optionarg) {
3102
  auto value = stringToJutificationSkolemRlvMode(optionarg);
3103
3104
  opts.decision.jhSkolemRlvMode = value;
3105
  opts.decision.jhSkolemRlvModeWasSetByUser = true;
3106
  Trace("options") << "user assigned option jhSkolemRlvMode = " << value << std::endl;
3107
}
3108
3109
void assign_decision_jhSkolemMode(Options& opts, const std::string& option, const std::string& optionarg) {
3110
  auto value = stringToJutificationSkolemMode(optionarg);
3111
3112
  opts.decision.jhSkolemMode = value;
3113
  opts.decision.jhSkolemModeWasSetByUser = true;
3114
  Trace("options") << "user assigned option jhSkolemMode = " << value << std::endl;
3115
}
3116
3117
2
void assign_expr_defaultDagThresh(Options& opts, const std::string& option, const std::string& optionarg) {
3118
2
  auto value = handleOption<int64_t>("dag-thresh", option, optionarg);
3119
2
  opts.handler().checkMinimum("dag-thresh", option, value, static_cast<int64_t>(0));
3120
2
opts.handler().setDefaultDagThresh("dag-thresh", option, value);
3121
2
  opts.expr.defaultDagThresh = value;
3122
2
  opts.expr.defaultDagThreshWasSetByUser = true;
3123
2
  Trace("options") << "user assigned option defaultDagThresh = " << value << std::endl;
3124
2
}
3125
3126
void assign_expr_defaultExprDepth(Options& opts, const std::string& option, const std::string& optionarg) {
3127
  auto value = handleOption<int64_t>("expr-depth", option, optionarg);
3128
  opts.handler().checkMinimum("expr-depth", option, value, static_cast<int64_t>(-1));
3129
opts.handler().setDefaultExprDepth("expr-depth", option, value);
3130
  opts.expr.defaultExprDepth = value;
3131
  opts.expr.defaultExprDepthWasSetByUser = true;
3132
  Trace("options") << "user assigned option defaultExprDepth = " << value << std::endl;
3133
}
3134
3135
void assign_expr_typeChecking(Options& opts, const std::string& option, bool value) {
3136
3137
  opts.expr.typeChecking = value;
3138
  opts.expr.typeCheckingWasSetByUser = true;
3139
  Trace("options") << "user assigned option typeChecking = " << value << std::endl;
3140
}
3141
3142
22
void assign_fp_fpExp(Options& opts, const std::string& option, bool value) {
3143
3144
22
  opts.fp.fpExp = value;
3145
22
  opts.fp.fpExpWasSetByUser = true;
3146
22
  Trace("options") << "user assigned option fpExp = " << value << std::endl;
3147
22
}
3148
3149
3
void assign_fp_fpLazyWb(Options& opts, const std::string& option, bool value) {
3150
3151
3
  opts.fp.fpLazyWb = value;
3152
3
  opts.fp.fpLazyWbWasSetByUser = true;
3153
3
  Trace("options") << "user assigned option fpLazyWb = " << value << std::endl;
3154
3
}
3155
3156
12
void assign_driver_dumpInstantiations(Options& opts, const std::string& option, bool value) {
3157
3158
12
  opts.driver.dumpInstantiations = value;
3159
12
  opts.driver.dumpInstantiationsWasSetByUser = true;
3160
12
  Trace("options") << "user assigned option dumpInstantiations = " << value << std::endl;
3161
12
}
3162
3163
void assign_driver_dumpInstantiationsDebug(Options& opts, const std::string& option, bool value) {
3164
3165
  opts.driver.dumpInstantiationsDebug = value;
3166
  opts.driver.dumpInstantiationsDebugWasSetByUser = true;
3167
  Trace("options") << "user assigned option dumpInstantiationsDebug = " << value << std::endl;
3168
}
3169
3170
6
void assign_driver_dumpModels(Options& opts, const std::string& option, bool value) {
3171
3172
6
  opts.driver.dumpModels = value;
3173
6
  opts.driver.dumpModelsWasSetByUser = true;
3174
6
  Trace("options") << "user assigned option dumpModels = " << value << std::endl;
3175
6
}
3176
3177
void assign_driver_dumpProofs(Options& opts, const std::string& option, bool value) {
3178
3179
  opts.driver.dumpProofs = value;
3180
  opts.driver.dumpProofsWasSetByUser = true;
3181
  Trace("options") << "user assigned option dumpProofs = " << value << std::endl;
3182
}
3183
3184
void assign_driver_dumpUnsatCores(Options& opts, const std::string& option, bool value) {
3185
3186
  opts.driver.dumpUnsatCores = value;
3187
  opts.driver.dumpUnsatCoresWasSetByUser = true;
3188
  Trace("options") << "user assigned option dumpUnsatCores = " << value << std::endl;
3189
}
3190
3191
3
void assign_driver_dumpUnsatCoresFull(Options& opts, const std::string& option, bool value) {
3192
3193
3
  opts.driver.dumpUnsatCoresFull = value;
3194
3
  opts.driver.dumpUnsatCoresFullWasSetByUser = true;
3195
3
  Trace("options") << "user assigned option dumpUnsatCoresFull = " << value << std::endl;
3196
3
}
3197
3198
void assign_driver_earlyExit(Options& opts, const std::string& option, bool value) {
3199
3200
  opts.driver.earlyExit = value;
3201
  opts.driver.earlyExitWasSetByUser = true;
3202
  Trace("options") << "user assigned option earlyExit = " << value << std::endl;
3203
}
3204
3205
void assign_driver_forceNoLimitCpuWhileDump(Options& opts, const std::string& option, bool value) {
3206
3207
  opts.driver.forceNoLimitCpuWhileDump = value;
3208
  opts.driver.forceNoLimitCpuWhileDumpWasSetByUser = true;
3209
  Trace("options") << "user assigned option forceNoLimitCpuWhileDump = " << value << std::endl;
3210
}
3211
3212
void assign_driver_help(Options& opts, const std::string& option, bool value) {
3213
3214
  opts.driver.help = value;
3215
  opts.driver.helpWasSetByUser = true;
3216
  Trace("options") << "user assigned option help = " << value << std::endl;
3217
}
3218
3219
void assign_driver_interactive(Options& opts, const std::string& option, bool value) {
3220
3221
  opts.driver.interactive = value;
3222
  opts.driver.interactiveWasSetByUser = true;
3223
  Trace("options") << "user assigned option interactive = " << value << std::endl;
3224
}
3225
3226
void assign_driver_seed(Options& opts, const std::string& option, const std::string& optionarg) {
3227
  auto value = handleOption<uint64_t>("seed", option, optionarg);
3228
3229
  opts.driver.seed = value;
3230
  opts.driver.seedWasSetByUser = true;
3231
  Trace("options") << "user assigned option seed = " << value << std::endl;
3232
}
3233
3234
void assign_driver_segvSpin(Options& opts, const std::string& option, bool value) {
3235
3236
  opts.driver.segvSpin = value;
3237
  opts.driver.segvSpinWasSetByUser = true;
3238
  Trace("options") << "user assigned option segvSpin = " << value << std::endl;
3239
}
3240
3241
void assign_driver_version(Options& opts, const std::string& option, bool value) {
3242
3243
  opts.driver.version = value;
3244
  opts.driver.versionWasSetByUser = true;
3245
  Trace("options") << "user assigned option version = " << value << std::endl;
3246
}
3247
3248
void assign_parser_filesystemAccess(Options& opts, const std::string& option, bool value) {
3249
3250
  opts.parser.filesystemAccess = value;
3251
  opts.parser.filesystemAccessWasSetByUser = true;
3252
  Trace("options") << "user assigned option filesystemAccess = " << value << std::endl;
3253
}
3254
3255
9
void assign_parser_forceLogicString(Options& opts, const std::string& option, const std::string& optionarg) {
3256
18
  auto value = handleOption<std::string>("force-logic", option, optionarg);
3257
3258
9
  opts.parser.forceLogicString = value;
3259
9
  opts.parser.forceLogicStringWasSetByUser = true;
3260
9
  Trace("options") << "user assigned option forceLogicString = " << value << std::endl;
3261
9
}
3262
3263
19
void assign_parser_globalDeclarations(Options& opts, const std::string& option, bool value) {
3264
3265
19
  opts.parser.globalDeclarations = value;
3266
19
  opts.parser.globalDeclarationsWasSetByUser = true;
3267
19
  Trace("options") << "user assigned option globalDeclarations = " << value << std::endl;
3268
19
}
3269
3270
void assign_parser_memoryMap(Options& opts, const std::string& option, bool value) {
3271
3272
  opts.parser.memoryMap = value;
3273
  opts.parser.memoryMapWasSetByUser = true;
3274
  Trace("options") << "user assigned option memoryMap = " << value << std::endl;
3275
}
3276
3277
void assign_parser_semanticChecks(Options& opts, const std::string& option, bool value) {
3278
3279
  opts.parser.semanticChecks = value;
3280
  opts.parser.semanticChecksWasSetByUser = true;
3281
  Trace("options") << "user assigned option semanticChecks = " << value << std::endl;
3282
}
3283
3284
9
void assign_parser_strictParsing(Options& opts, const std::string& option, bool value) {
3285
3286
9
  opts.parser.strictParsing = value;
3287
9
  opts.parser.strictParsingWasSetByUser = true;
3288
9
  Trace("options") << "user assigned option strictParsing = " << value << std::endl;
3289
9
}
3290
3291
void assign_printer_flattenHOChains(Options& opts, const std::string& option, bool value) {
3292
3293
  opts.printer.flattenHOChains = value;
3294
  opts.printer.flattenHOChainsWasSetByUser = true;
3295
  Trace("options") << "user assigned option flattenHOChains = " << value << std::endl;
3296
}
3297
3298
void assign_printer_modelFormatMode(Options& opts, const std::string& option, const std::string& optionarg) {
3299
  auto value = stringToModelFormatMode(optionarg);
3300
3301
  opts.printer.modelFormatMode = value;
3302
  opts.printer.modelFormatModeWasSetByUser = true;
3303
  Trace("options") << "user assigned option modelFormatMode = " << value << std::endl;
3304
}
3305
3306
12
void assign_printer_printInstFull(Options& opts, const std::string& option, bool value) {
3307
3308
12
  opts.printer.printInstFull = value;
3309
12
  opts.printer.printInstFullWasSetByUser = true;
3310
12
  Trace("options") << "user assigned option printInstFull = " << value << std::endl;
3311
12
}
3312
3313
3
void assign_printer_printInstMode(Options& opts, const std::string& option, const std::string& optionarg) {
3314
3
  auto value = stringToPrintInstMode(optionarg);
3315
3316
3
  opts.printer.printInstMode = value;
3317
3
  opts.printer.printInstModeWasSetByUser = true;
3318
3
  Trace("options") << "user assigned option printInstMode = " << value << std::endl;
3319
3
}
3320
3321
2
void assign_proof_proofEagerChecking(Options& opts, const std::string& option, bool value) {
3322
3323
2
  opts.proof.proofEagerChecking = value;
3324
2
  opts.proof.proofEagerCheckingWasSetByUser = true;
3325
2
  Trace("options") << "user assigned option proofEagerChecking = " << value << std::endl;
3326
2
}
3327
3328
void assign_proof_proofFormatMode(Options& opts, const std::string& option, const std::string& optionarg) {
3329
  auto value = stringToProofFormatMode(optionarg);
3330
3331
  opts.proof.proofFormatMode = value;
3332
  opts.proof.proofFormatModeWasSetByUser = true;
3333
  Trace("options") << "user assigned option proofFormatMode = " << value << std::endl;
3334
}
3335
3336
void assign_proof_proofGranularityMode(Options& opts, const std::string& option, const std::string& optionarg) {
3337
  auto value = stringToProofGranularityMode(optionarg);
3338
3339
  opts.proof.proofGranularityMode = value;
3340
  opts.proof.proofGranularityModeWasSetByUser = true;
3341
  Trace("options") << "user assigned option proofGranularityMode = " << value << std::endl;
3342
}
3343
3344
void assign_proof_proofPedantic(Options& opts, const std::string& option, const std::string& optionarg) {
3345
  auto value = handleOption<uint64_t>("proof-pedantic", option, optionarg);
3346
3347
  opts.proof.proofPedantic = value;
3348
  opts.proof.proofPedanticWasSetByUser = true;
3349
  Trace("options") << "user assigned option proofPedantic = " << value << std::endl;
3350
}
3351
3352
void assign_proof_proofPrintConclusion(Options& opts, const std::string& option, bool value) {
3353
3354
  opts.proof.proofPrintConclusion = value;
3355
  opts.proof.proofPrintConclusionWasSetByUser = true;
3356
  Trace("options") << "user assigned option proofPrintConclusion = " << value << std::endl;
3357
}
3358
3359
void assign_prop_minisatDumpDimacs(Options& opts, const std::string& option, bool value) {
3360
3361
  opts.prop.minisatDumpDimacs = value;
3362
  opts.prop.minisatDumpDimacsWasSetByUser = true;
3363
  Trace("options") << "user assigned option minisatDumpDimacs = " << value << std::endl;
3364
}
3365
3366
void assign_prop_minisatUseElim(Options& opts, const std::string& option, bool value) {
3367
3368
  opts.prop.minisatUseElim = value;
3369
  opts.prop.minisatUseElimWasSetByUser = true;
3370
  Trace("options") << "user assigned option minisatUseElim = " << value << std::endl;
3371
}
3372
3373
void assign_prop_satRandomFreq(Options& opts, const std::string& option, const std::string& optionarg) {
3374
  auto value = handleOption<double>("random-freq", option, optionarg);
3375
  opts.handler().checkMinimum("random-freq", option, value, static_cast<double>(0.0));
3376
opts.handler().checkMaximum("random-freq", option, value, static_cast<double>(1.0));
3377
  opts.prop.satRandomFreq = value;
3378
  opts.prop.satRandomFreqWasSetByUser = true;
3379
  Trace("options") << "user assigned option satRandomFreq = " << value << std::endl;
3380
}
3381
3382
2
void assign_prop_satRandomSeed(Options& opts, const std::string& option, const std::string& optionarg) {
3383
2
  auto value = handleOption<uint64_t>("random-seed", option, optionarg);
3384
3385
2
  opts.prop.satRandomSeed = value;
3386
2
  opts.prop.satRandomSeedWasSetByUser = true;
3387
2
  Trace("options") << "user assigned option satRandomSeed = " << value << std::endl;
3388
2
}
3389
3390
void assign_prop_sat_refine_conflicts(Options& opts, const std::string& option, bool value) {
3391
3392
  opts.prop.sat_refine_conflicts = value;
3393
  opts.prop.sat_refine_conflictsWasSetByUser = true;
3394
  Trace("options") << "user assigned option sat_refine_conflicts = " << value << std::endl;
3395
}
3396
3397
void assign_prop_satRestartFirst(Options& opts, const std::string& option, const std::string& optionarg) {
3398
  auto value = handleOption<uint64_t>("restart-int-base", option, optionarg);
3399
3400
  opts.prop.satRestartFirst = value;
3401
  opts.prop.satRestartFirstWasSetByUser = true;
3402
  Trace("options") << "user assigned option satRestartFirst = " << value << std::endl;
3403
}
3404
3405
void assign_prop_satRestartInc(Options& opts, const std::string& option, const std::string& optionarg) {
3406
  auto value = handleOption<double>("restart-int-inc", option, optionarg);
3407
  opts.handler().checkMinimum("restart-int-inc", option, value, static_cast<double>(0.0));
3408
  opts.prop.satRestartInc = value;
3409
  opts.prop.satRestartIncWasSetByUser = true;
3410
  Trace("options") << "user assigned option satRestartInc = " << value << std::endl;
3411
}
3412
3413
4
void assign_quantifiers_aggressiveMiniscopeQuant(Options& opts, const std::string& option, bool value) {
3414
3415
4
  opts.quantifiers.aggressiveMiniscopeQuant = value;
3416
4
  opts.quantifiers.aggressiveMiniscopeQuantWasSetByUser = true;
3417
4
  Trace("options") << "user assigned option aggressiveMiniscopeQuant = " << value << std::endl;
3418
4
}
3419
3420
3
void assign_quantifiers_cegisSample(Options& opts, const std::string& option, const std::string& optionarg) {
3421
3
  auto value = stringToCegisSampleMode(optionarg);
3422
3423
3
  opts.quantifiers.cegisSample = value;
3424
3
  opts.quantifiers.cegisSampleWasSetByUser = true;
3425
3
  Trace("options") << "user assigned option cegisSample = " << value << std::endl;
3426
3
}
3427
3428
19
void assign_quantifiers_cegqi(Options& opts, const std::string& option, bool value) {
3429
3430
19
  opts.quantifiers.cegqi = value;
3431
19
  opts.quantifiers.cegqiWasSetByUser = true;
3432
19
  Trace("options") << "user assigned option cegqi = " << value << std::endl;
3433
19
}
3434
3435
18
void assign_quantifiers_cegqiAll(Options& opts, const std::string& option, bool value) {
3436
3437
18
  opts.quantifiers.cegqiAll = value;
3438
18
  opts.quantifiers.cegqiAllWasSetByUser = true;
3439
18
  Trace("options") << "user assigned option cegqiAll = " << value << std::endl;
3440
18
}
3441
3442
106
void assign_quantifiers_cegqiBv(Options& opts, const std::string& option, bool value) {
3443
3444
106
  opts.quantifiers.cegqiBv = value;
3445
106
  opts.quantifiers.cegqiBvWasSetByUser = true;
3446
106
  Trace("options") << "user assigned option cegqiBv = " << value << std::endl;
3447
106
}
3448
3449
void assign_quantifiers_cegqiBvConcInv(Options& opts, const std::string& option, bool value) {
3450
3451
  opts.quantifiers.cegqiBvConcInv = value;
3452
  opts.quantifiers.cegqiBvConcInvWasSetByUser = true;
3453
  Trace("options") << "user assigned option cegqiBvConcInv = " << value << std::endl;
3454
}
3455
3456
82
void assign_quantifiers_cegqiBvIneqMode(Options& opts, const std::string& option, const std::string& optionarg) {
3457
82
  auto value = stringToCegqiBvIneqMode(optionarg);
3458
3459
82
  opts.quantifiers.cegqiBvIneqMode = value;
3460
82
  opts.quantifiers.cegqiBvIneqModeWasSetByUser = true;
3461
82
  Trace("options") << "user assigned option cegqiBvIneqMode = " << value << std::endl;
3462
82
}
3463
3464
void assign_quantifiers_cegqiBvInterleaveValue(Options& opts, const std::string& option, bool value) {
3465
3466
  opts.quantifiers.cegqiBvInterleaveValue = value;
3467
  opts.quantifiers.cegqiBvInterleaveValueWasSetByUser = true;
3468
  Trace("options") << "user assigned option cegqiBvInterleaveValue = " << value << std::endl;
3469
}
3470
3471
void assign_quantifiers_cegqiBvLinearize(Options& opts, const std::string& option, bool value) {
3472
3473
  opts.quantifiers.cegqiBvLinearize = value;
3474
  opts.quantifiers.cegqiBvLinearizeWasSetByUser = true;
3475
  Trace("options") << "user assigned option cegqiBvLinearize = " << value << std::endl;
3476
}
3477
3478
2
void assign_quantifiers_cegqiBvRmExtract(Options& opts, const std::string& option, bool value) {
3479
3480
2
  opts.quantifiers.cegqiBvRmExtract = value;
3481
2
  opts.quantifiers.cegqiBvRmExtractWasSetByUser = true;
3482
2
  Trace("options") << "user assigned option cegqiBvRmExtract = " << value << std::endl;
3483
2
}
3484
3485
void assign_quantifiers_cegqiBvSolveNl(Options& opts, const std::string& option, bool value) {
3486
3487
  opts.quantifiers.cegqiBvSolveNl = value;
3488
  opts.quantifiers.cegqiBvSolveNlWasSetByUser = true;
3489
  Trace("options") << "user assigned option cegqiBvSolveNl = " << value << std::endl;
3490
}
3491
3492
599
void assign_quantifiers_cegqiFullEffort(Options& opts, const std::string& option, bool value) {
3493
3494
599
  opts.quantifiers.cegqiFullEffort = value;
3495
599
  opts.quantifiers.cegqiFullEffortWasSetByUser = true;
3496
599
  Trace("options") << "user assigned option cegqiFullEffort = " << value << std::endl;
3497
599
}
3498
3499
void assign_quantifiers_cegqiInnermost(Options& opts, const std::string& option, bool value) {
3500
3501
  opts.quantifiers.cegqiInnermost = value;
3502
  opts.quantifiers.cegqiInnermostWasSetByUser = true;
3503
  Trace("options") << "user assigned option cegqiInnermost = " << value << std::endl;
3504
}
3505
3506
void assign_quantifiers_cegqiMidpoint(Options& opts, const std::string& option, bool value) {
3507
3508
  opts.quantifiers.cegqiMidpoint = value;
3509
  opts.quantifiers.cegqiMidpointWasSetByUser = true;
3510
  Trace("options") << "user assigned option cegqiMidpoint = " << value << std::endl;
3511
}
3512
3513
void assign_quantifiers_cegqiMinBounds(Options& opts, const std::string& option, bool value) {
3514
3515
  opts.quantifiers.cegqiMinBounds = value;
3516
  opts.quantifiers.cegqiMinBoundsWasSetByUser = true;
3517
  Trace("options") << "user assigned option cegqiMinBounds = " << value << std::endl;
3518
}
3519
3520
void assign_quantifiers_cegqiModel(Options& opts, const std::string& option, bool value) {
3521
3522
  opts.quantifiers.cegqiModel = value;
3523
  opts.quantifiers.cegqiModelWasSetByUser = true;
3524
  Trace("options") << "user assigned option cegqiModel = " << value << std::endl;
3525
}
3526
3527
3
void assign_quantifiers_cegqiMultiInst(Options& opts, const std::string& option, bool value) {
3528
3529
3
  opts.quantifiers.cegqiMultiInst = value;
3530
3
  opts.quantifiers.cegqiMultiInstWasSetByUser = true;
3531
3
  Trace("options") << "user assigned option cegqiMultiInst = " << value << std::endl;
3532
3
}
3533
3534
19
void assign_quantifiers_cegqiNestedQE(Options& opts, const std::string& option, bool value) {
3535
3536
19
  opts.quantifiers.cegqiNestedQE = value;
3537
19
  opts.quantifiers.cegqiNestedQEWasSetByUser = true;
3538
19
  Trace("options") << "user assigned option cegqiNestedQE = " << value << std::endl;
3539
19
}
3540
3541
void assign_quantifiers_cegqiNopt(Options& opts, const std::string& option, bool value) {
3542
3543
  opts.quantifiers.cegqiNopt = value;
3544
  opts.quantifiers.cegqiNoptWasSetByUser = true;
3545
  Trace("options") << "user assigned option cegqiNopt = " << value << std::endl;
3546
}
3547
3548
void assign_quantifiers_cegqiRepeatLit(Options& opts, const std::string& option, bool value) {
3549
3550
  opts.quantifiers.cegqiRepeatLit = value;
3551
  opts.quantifiers.cegqiRepeatLitWasSetByUser = true;
3552
  Trace("options") << "user assigned option cegqiRepeatLit = " << value << std::endl;
3553
}
3554
3555
void assign_quantifiers_cegqiRoundUpLowerLia(Options& opts, const std::string& option, bool value) {
3556
3557
  opts.quantifiers.cegqiRoundUpLowerLia = value;
3558
  opts.quantifiers.cegqiRoundUpLowerLiaWasSetByUser = true;
3559
  Trace("options") << "user assigned option cegqiRoundUpLowerLia = " << value << std::endl;
3560
}
3561
3562
void assign_quantifiers_cegqiSat(Options& opts, const std::string& option, bool value) {
3563
3564
  opts.quantifiers.cegqiSat = value;
3565
  opts.quantifiers.cegqiSatWasSetByUser = true;
3566
  Trace("options") << "user assigned option cegqiSat = " << value << std::endl;
3567
}
3568
3569
6
void assign_quantifiers_cegqiUseInfInt(Options& opts, const std::string& option, bool value) {
3570
3571
6
  opts.quantifiers.cegqiUseInfInt = value;
3572
6
  opts.quantifiers.cegqiUseInfIntWasSetByUser = true;
3573
6
  Trace("options") << "user assigned option cegqiUseInfInt = " << value << std::endl;
3574
6
}
3575
3576
6
void assign_quantifiers_cegqiUseInfReal(Options& opts, const std::string& option, bool value) {
3577
3578
6
  opts.quantifiers.cegqiUseInfReal = value;
3579
6
  opts.quantifiers.cegqiUseInfRealWasSetByUser = true;
3580
6
  Trace("options") << "user assigned option cegqiUseInfReal = " << value << std::endl;
3581
6
}
3582
3583
void assign_quantifiers_condVarSplitQuantAgg(Options& opts, const std::string& option, bool value) {
3584
3585
  opts.quantifiers.condVarSplitQuantAgg = value;
3586
  opts.quantifiers.condVarSplitQuantAggWasSetByUser = true;
3587
  Trace("options") << "user assigned option condVarSplitQuantAgg = " << value << std::endl;
3588
}
3589
3590
void assign_quantifiers_condVarSplitQuant(Options& opts, const std::string& option, bool value) {
3591
3592
  opts.quantifiers.condVarSplitQuant = value;
3593
  opts.quantifiers.condVarSplitQuantWasSetByUser = true;
3594
  Trace("options") << "user assigned option condVarSplitQuant = " << value << std::endl;
3595
}
3596
3597
void assign_quantifiers_conjectureFilterActiveTerms(Options& opts, const std::string& option, bool value) {
3598
3599
  opts.quantifiers.conjectureFilterActiveTerms = value;
3600
  opts.quantifiers.conjectureFilterActiveTermsWasSetByUser = true;
3601
  Trace("options") << "user assigned option conjectureFilterActiveTerms = " << value << std::endl;
3602
}
3603
3604
void assign_quantifiers_conjectureFilterCanonical(Options& opts, const std::string& option, bool value) {
3605
3606
  opts.quantifiers.conjectureFilterCanonical = value;
3607
  opts.quantifiers.conjectureFilterCanonicalWasSetByUser = true;
3608
  Trace("options") << "user assigned option conjectureFilterCanonical = " << value << std::endl;
3609
}
3610
3611
2
void assign_quantifiers_conjectureFilterModel(Options& opts, const std::string& option, bool value) {
3612
3613
2
  opts.quantifiers.conjectureFilterModel = value;
3614
2
  opts.quantifiers.conjectureFilterModelWasSetByUser = true;
3615
2
  Trace("options") << "user assigned option conjectureFilterModel = " << value << std::endl;
3616
2
}
3617
3618
7
void assign_quantifiers_conjectureGen(Options& opts, const std::string& option, bool value) {
3619
3620
7
  opts.quantifiers.conjectureGen = value;
3621
7
  opts.quantifiers.conjectureGenWasSetByUser = true;
3622
7
  Trace("options") << "user assigned option conjectureGen = " << value << std::endl;
3623
7
}
3624
3625
void assign_quantifiers_conjectureGenGtEnum(Options& opts, const std::string& option, const std::string& optionarg) {
3626
  auto value = handleOption<int64_t>("conjecture-gen-gt-enum", option, optionarg);
3627
3628
  opts.quantifiers.conjectureGenGtEnum = value;
3629
  opts.quantifiers.conjectureGenGtEnumWasSetByUser = true;
3630
  Trace("options") << "user assigned option conjectureGenGtEnum = " << value << std::endl;
3631
}
3632
3633
void assign_quantifiers_conjectureGenMaxDepth(Options& opts, const std::string& option, const std::string& optionarg) {
3634
  auto value = handleOption<int64_t>("conjecture-gen-max-depth", option, optionarg);
3635
3636
  opts.quantifiers.conjectureGenMaxDepth = value;
3637
  opts.quantifiers.conjectureGenMaxDepthWasSetByUser = true;
3638
  Trace("options") << "user assigned option conjectureGenMaxDepth = " << value << std::endl;
3639
}
3640
3641
void assign_quantifiers_conjectureGenPerRound(Options& opts, const std::string& option, const std::string& optionarg) {
3642
  auto value = handleOption<int64_t>("conjecture-gen-per-round", option, optionarg);
3643
3644
  opts.quantifiers.conjectureGenPerRound = value;
3645
  opts.quantifiers.conjectureGenPerRoundWasSetByUser = true;
3646
  Trace("options") << "user assigned option conjectureGenPerRound = " << value << std::endl;
3647
}
3648
3649
void assign_quantifiers_conjectureUeeIntro(Options& opts, const std::string& option, bool value) {
3650
3651
  opts.quantifiers.conjectureUeeIntro = value;
3652
  opts.quantifiers.conjectureUeeIntroWasSetByUser = true;
3653
  Trace("options") << "user assigned option conjectureUeeIntro = " << value << std::endl;
3654
}
3655
3656
2
void assign_quantifiers_conjectureNoFilter(Options& opts, const std::string& option, bool value) {
3657
3658
2
  opts.quantifiers.conjectureNoFilter = value;
3659
2
  opts.quantifiers.conjectureNoFilterWasSetByUser = true;
3660
2
  Trace("options") << "user assigned option conjectureNoFilter = " << value << std::endl;
3661
2
}
3662
3663
void assign_quantifiers_dtStcInduction(Options& opts, const std::string& option, bool value) {
3664
3665
  opts.quantifiers.dtStcInduction = value;
3666
  opts.quantifiers.dtStcInductionWasSetByUser = true;
3667
  Trace("options") << "user assigned option dtStcInduction = " << value << std::endl;
3668
}
3669
3670
void assign_quantifiers_dtVarExpandQuant(Options& opts, const std::string& option, bool value) {
3671
3672
  opts.quantifiers.dtVarExpandQuant = value;
3673
  opts.quantifiers.dtVarExpandQuantWasSetByUser = true;
3674
  Trace("options") << "user assigned option dtVarExpandQuant = " << value << std::endl;
3675
}
3676
3677
1
void assign_quantifiers_eMatching(Options& opts, const std::string& option, bool value) {
3678
3679
1
  opts.quantifiers.eMatching = value;
3680
1
  opts.quantifiers.eMatchingWasSetByUser = true;
3681
1
  Trace("options") << "user assigned option eMatching = " << value << std::endl;
3682
1
}
3683
3684
void assign_quantifiers_elimTautQuant(Options& opts, const std::string& option, bool value) {
3685
3686
  opts.quantifiers.elimTautQuant = value;
3687
  opts.quantifiers.elimTautQuantWasSetByUser = true;
3688
  Trace("options") << "user assigned option elimTautQuant = " << value << std::endl;
3689
}
3690
3691
11
void assign_quantifiers_extRewriteQuant(Options& opts, const std::string& option, bool value) {
3692
3693
11
  opts.quantifiers.extRewriteQuant = value;
3694
11
  opts.quantifiers.extRewriteQuantWasSetByUser = true;
3695
11
  Trace("options") << "user assigned option extRewriteQuant = " << value << std::endl;
3696
11
}
3697
3698
176
void assign_quantifiers_finiteModelFind(Options& opts, const std::string& option, bool value) {
3699
3700
176
  opts.quantifiers.finiteModelFind = value;
3701
176
  opts.quantifiers.finiteModelFindWasSetByUser = true;
3702
176
  Trace("options") << "user assigned option finiteModelFind = " << value << std::endl;
3703
176
}
3704
3705
44
void assign_quantifiers_fmfBound(Options& opts, const std::string& option, bool value) {
3706
3707
44
  opts.quantifiers.fmfBound = value;
3708
44
  opts.quantifiers.fmfBoundWasSetByUser = true;
3709
44
  Trace("options") << "user assigned option fmfBound = " << value << std::endl;
3710
44
}
3711
3712
12
void assign_quantifiers_fmfBoundInt(Options& opts, const std::string& option, bool value) {
3713
3714
12
  opts.quantifiers.fmfBoundInt = value;
3715
12
  opts.quantifiers.fmfBoundIntWasSetByUser = true;
3716
12
  Trace("options") << "user assigned option fmfBoundInt = " << value << std::endl;
3717
12
}
3718
3719
3
void assign_quantifiers_fmfBoundLazy(Options& opts, const std::string& option, bool value) {
3720
3721
3
  opts.quantifiers.fmfBoundLazy = value;
3722
3
  opts.quantifiers.fmfBoundLazyWasSetByUser = true;
3723
3
  Trace("options") << "user assigned option fmfBoundLazy = " << value << std::endl;
3724
3
}
3725
3726
void assign_quantifiers_fmfFmcSimple(Options& opts, const std::string& option, bool value) {
3727
3728
  opts.quantifiers.fmfFmcSimple = value;
3729
  opts.quantifiers.fmfFmcSimpleWasSetByUser = true;
3730
  Trace("options") << "user assigned option fmfFmcSimple = " << value << std::endl;
3731
}
3732
3733
void assign_quantifiers_fmfFreshDistConst(Options& opts, const std::string& option, bool value) {
3734
3735
  opts.quantifiers.fmfFreshDistConst = value;
3736
  opts.quantifiers.fmfFreshDistConstWasSetByUser = true;
3737
  Trace("options") << "user assigned option fmfFreshDistConst = " << value << std::endl;
3738
}
3739
3740
51
void assign_quantifiers_fmfFunWellDefined(Options& opts, const std::string& option, bool value) {
3741
3742
51
  opts.quantifiers.fmfFunWellDefined = value;
3743
51
  opts.quantifiers.fmfFunWellDefinedWasSetByUser = true;
3744
51
  Trace("options") << "user assigned option fmfFunWellDefined = " << value << std::endl;
3745
51
}
3746
3747
10
void assign_quantifiers_fmfFunWellDefinedRelevant(Options& opts, const std::string& option, bool value) {
3748
3749
10
  opts.quantifiers.fmfFunWellDefinedRelevant = value;
3750
10
  opts.quantifiers.fmfFunWellDefinedRelevantWasSetByUser = true;
3751
10
  Trace("options") << "user assigned option fmfFunWellDefinedRelevant = " << value << std::endl;
3752
10
}
3753
3754
7
void assign_quantifiers_fmfInstEngine(Options& opts, const std::string& option, bool value) {
3755
3756
7
  opts.quantifiers.fmfInstEngine = value;
3757
7
  opts.quantifiers.fmfInstEngineWasSetByUser = true;
3758
7
  Trace("options") << "user assigned option fmfInstEngine = " << value << std::endl;
3759
7
}
3760
3761
void assign_quantifiers_fmfTypeCompletionThresh(Options& opts, const std::string& option, const std::string& optionarg) {
3762
  auto value = handleOption<int64_t>("fmf-type-completion-thresh", option, optionarg);
3763
3764
  opts.quantifiers.fmfTypeCompletionThresh = value;
3765
  opts.quantifiers.fmfTypeCompletionThreshWasSetByUser = true;
3766
  Trace("options") << "user assigned option fmfTypeCompletionThresh = " << value << std::endl;
3767
}
3768
3769
void assign_quantifiers_fullSaturateInterleave(Options& opts, const std::string& option, bool value) {
3770
3771
  opts.quantifiers.fullSaturateInterleave = value;
3772
  opts.quantifiers.fullSaturateInterleaveWasSetByUser = true;
3773
  Trace("options") << "user assigned option fullSaturateInterleave = " << value << std::endl;
3774
}
3775
3776
3
void assign_quantifiers_fullSaturateStratify(Options& opts, const std::string& option, bool value) {
3777
3778
3
  opts.quantifiers.fullSaturateStratify = value;
3779
3
  opts.quantifiers.fullSaturateStratifyWasSetByUser = true;
3780
3
  Trace("options") << "user assigned option fullSaturateStratify = " << value << std::endl;
3781
3
}
3782
3783
void assign_quantifiers_fullSaturateSum(Options& opts, const std::string& option, bool value) {
3784
3785
  opts.quantifiers.fullSaturateSum = value;
3786
  opts.quantifiers.fullSaturateSumWasSetByUser = true;
3787
  Trace("options") << "user assigned option fullSaturateSum = " << value << std::endl;
3788
}
3789
3790
76
void assign_quantifiers_fullSaturateQuant(Options& opts, const std::string& option, bool value) {
3791
3792
76
  opts.quantifiers.fullSaturateQuant = value;
3793
76
  opts.quantifiers.fullSaturateQuantWasSetByUser = true;
3794
76
  Trace("options") << "user assigned option fullSaturateQuant = " << value << std::endl;
3795
76
}
3796
3797
3
void assign_quantifiers_fullSaturateLimit(Options& opts, const std::string& option, const std::string& optionarg) {
3798
3
  auto value = handleOption<int64_t>("full-saturate-quant-limit", option, optionarg);
3799
3800
3
  opts.quantifiers.fullSaturateLimit = value;
3801
3
  opts.quantifiers.fullSaturateLimitWasSetByUser = true;
3802
3
  Trace("options") << "user assigned option fullSaturateLimit = " << value << std::endl;
3803
3
}
3804
3805
void assign_quantifiers_fullSaturateQuantRd(Options& opts, const std::string& option, bool value) {
3806
3807
  opts.quantifiers.fullSaturateQuantRd = value;
3808
  opts.quantifiers.fullSaturateQuantRdWasSetByUser = true;
3809
  Trace("options") << "user assigned option fullSaturateQuantRd = " << value << std::endl;
3810
}
3811
3812
8
void assign_quantifiers_globalNegate(Options& opts, const std::string& option, bool value) {
3813
3814
8
  opts.quantifiers.globalNegate = value;
3815
8
  opts.quantifiers.globalNegateWasSetByUser = true;
3816
8
  Trace("options") << "user assigned option globalNegate = " << value << std::endl;
3817
8
}
3818
3819
8
void assign_quantifiers_hoElim(Options& opts, const std::string& option, bool value) {
3820
3821
8
  opts.quantifiers.hoElim = value;
3822
8
  opts.quantifiers.hoElimWasSetByUser = true;
3823
8
  Trace("options") << "user assigned option hoElim = " << value << std::endl;
3824
8
}
3825
3826
1
void assign_quantifiers_hoElimStoreAx(Options& opts, const std::string& option, bool value) {
3827
3828
1
  opts.quantifiers.hoElimStoreAx = value;
3829
1
  opts.quantifiers.hoElimStoreAxWasSetByUser = true;
3830
1
  Trace("options") << "user assigned option hoElimStoreAx = " << value << std::endl;
3831
1
}
3832
3833
void assign_quantifiers_hoMatching(Options& opts, const std::string& option, bool value) {
3834
3835
  opts.quantifiers.hoMatching = value;
3836
  opts.quantifiers.hoMatchingWasSetByUser = true;
3837
  Trace("options") << "user assigned option hoMatching = " << value << std::endl;
3838
}
3839
3840
void assign_quantifiers_hoMatchingVarArgPriority(Options& opts, const std::string& option, bool value) {
3841
3842
  opts.quantifiers.hoMatchingVarArgPriority = value;
3843
  opts.quantifiers.hoMatchingVarArgPriorityWasSetByUser = true;
3844
  Trace("options") << "user assigned option hoMatchingVarArgPriority = " << value << std::endl;
3845
}
3846
3847
void assign_quantifiers_hoMergeTermDb(Options& opts, const std::string& option, bool value) {
3848
3849
  opts.quantifiers.hoMergeTermDb = value;
3850
  opts.quantifiers.hoMergeTermDbWasSetByUser = true;
3851
  Trace("options") << "user assigned option hoMergeTermDb = " << value << std::endl;
3852
}
3853
3854
void assign_quantifiers_incrementTriggers(Options& opts, const std::string& option, bool value) {
3855
3856
  opts.quantifiers.incrementTriggers = value;
3857
  opts.quantifiers.incrementTriggersWasSetByUser = true;
3858
  Trace("options") << "user assigned option incrementTriggers = " << value << std::endl;
3859
}
3860
3861
void assign_quantifiers_instLevelInputOnly(Options& opts, const std::string& option, bool value) {
3862
3863
  opts.quantifiers.instLevelInputOnly = value;
3864
  opts.quantifiers.instLevelInputOnlyWasSetByUser = true;
3865
  Trace("options") << "user assigned option instLevelInputOnly = " << value << std::endl;
3866
}
3867
3868
3
void assign_quantifiers_instMaxLevel(Options& opts, const std::string& option, const std::string& optionarg) {
3869
3
  auto value = handleOption<int64_t>("inst-max-level", option, optionarg);
3870
3871
3
  opts.quantifiers.instMaxLevel = value;
3872
3
  opts.quantifiers.instMaxLevelWasSetByUser = true;
3873
3
  Trace("options") << "user assigned option instMaxLevel = " << value << std::endl;
3874
3
}
3875
3876
void assign_quantifiers_instMaxRounds(Options& opts, const std::string& option, const std::string& optionarg) {
3877
  auto value = handleOption<int64_t>("inst-max-rounds", option, optionarg);
3878
3879
  opts.quantifiers.instMaxRounds = value;
3880
  opts.quantifiers.instMaxRoundsWasSetByUser = true;
3881
  Trace("options") << "user assigned option instMaxRounds = " << value << std::endl;
3882
}
3883
3884
void assign_quantifiers_instNoEntail(Options& opts, const std::string& option, bool value) {
3885
3886
  opts.quantifiers.instNoEntail = value;
3887
  opts.quantifiers.instNoEntailWasSetByUser = true;
3888
  Trace("options") << "user assigned option instNoEntail = " << value << std::endl;
3889
}
3890
3891
void assign_quantifiers_instWhenPhase(Options& opts, const std::string& option, const std::string& optionarg) {
3892
  auto value = handleOption<int64_t>("inst-when-phase", option, optionarg);
3893
3894
  opts.quantifiers.instWhenPhase = value;
3895
  opts.quantifiers.instWhenPhaseWasSetByUser = true;
3896
  Trace("options") << "user assigned option instWhenPhase = " << value << std::endl;
3897
}
3898
3899
void assign_quantifiers_instWhenStrictInterleave(Options& opts, const std::string& option, bool value) {
3900
3901
  opts.quantifiers.instWhenStrictInterleave = value;
3902
  opts.quantifiers.instWhenStrictInterleaveWasSetByUser = true;
3903
  Trace("options") << "user assigned option instWhenStrictInterleave = " << value << std::endl;
3904
}
3905
3906
void assign_quantifiers_instWhenTcFirst(Options& opts, const std::string& option, bool value) {
3907
3908
  opts.quantifiers.instWhenTcFirst = value;
3909
  opts.quantifiers.instWhenTcFirstWasSetByUser = true;
3910
  Trace("options") << "user assigned option instWhenTcFirst = " << value << std::endl;
3911
}
3912
3913
3
void assign_quantifiers_instWhenMode(Options& opts, const std::string& option, const std::string& optionarg) {
3914
3
  auto value = stringToInstWhenMode(optionarg);
3915
3
  opts.handler().checkInstWhenMode("inst-when", option, value);
3916
3
  opts.quantifiers.instWhenMode = value;
3917
3
  opts.quantifiers.instWhenModeWasSetByUser = true;
3918
3
  Trace("options") << "user assigned option instWhenMode = " << value << std::endl;
3919
3
}
3920
3921
5
void assign_quantifiers_intWfInduction(Options& opts, const std::string& option, bool value) {
3922
3923
5
  opts.quantifiers.intWfInduction = value;
3924
5
  opts.quantifiers.intWfInductionWasSetByUser = true;
3925
5
  Trace("options") << "user assigned option intWfInduction = " << value << std::endl;
3926
5
}
3927
3928
void assign_quantifiers_iteDtTesterSplitQuant(Options& opts, const std::string& option, bool value) {
3929
3930
  opts.quantifiers.iteDtTesterSplitQuant = value;
3931
  opts.quantifiers.iteDtTesterSplitQuantWasSetByUser = true;
3932
  Trace("options") << "user assigned option iteDtTesterSplitQuant = " << value << std::endl;
3933
}
3934
3935
void assign_quantifiers_iteLiftQuant(Options& opts, const std::string& option, const std::string& optionarg) {
3936
  auto value = stringToIteLiftQuantMode(optionarg);
3937
3938
  opts.quantifiers.iteLiftQuant = value;
3939
  opts.quantifiers.iteLiftQuantWasSetByUser = true;
3940
  Trace("options") << "user assigned option iteLiftQuant = " << value << std::endl;
3941
}
3942
3943
void assign_quantifiers_literalMatchMode(Options& opts, const std::string& option, const std::string& optionarg) {
3944
  auto value = stringToLiteralMatchMode(optionarg);
3945
3946
  opts.quantifiers.literalMatchMode = value;
3947
  opts.quantifiers.literalMatchModeWasSetByUser = true;
3948
  Trace("options") << "user assigned option literalMatchMode = " << value << std::endl;
3949
}
3950
3951
17
void assign_quantifiers_macrosQuant(Options& opts, const std::string& option, bool value) {
3952
3953
17
  opts.quantifiers.macrosQuant = value;
3954
17
  opts.quantifiers.macrosQuantWasSetByUser = true;
3955
17
  Trace("options") << "user assigned option macrosQuant = " << value << std::endl;
3956
17
}
3957
3958
2
void assign_quantifiers_macrosQuantMode(Options& opts, const std::string& option, const std::string& optionarg) {
3959
2
  auto value = stringToMacrosQuantMode(optionarg);
3960
3961
2
  opts.quantifiers.macrosQuantMode = value;
3962
2
  opts.quantifiers.macrosQuantModeWasSetByUser = true;
3963
2
  Trace("options") << "user assigned option macrosQuantMode = " << value << std::endl;
3964
2
}
3965
3966
void assign_quantifiers_mbqiInterleave(Options& opts, const std::string& option, bool value) {
3967
3968
  opts.quantifiers.mbqiInterleave = value;
3969
  opts.quantifiers.mbqiInterleaveWasSetByUser = true;
3970
  Trace("options") << "user assigned option mbqiInterleave = " << value << std::endl;
3971
}
3972
3973
void assign_quantifiers_fmfOneInstPerRound(Options& opts, const std::string& option, bool value) {
3974
3975
  opts.quantifiers.fmfOneInstPerRound = value;
3976
  opts.quantifiers.fmfOneInstPerRoundWasSetByUser = true;
3977
  Trace("options") << "user assigned option fmfOneInstPerRound = " << value << std::endl;
3978
}
3979
3980
void assign_quantifiers_mbqiMode(Options& opts, const std::string& option, const std::string& optionarg) {
3981
  auto value = stringToMbqiMode(optionarg);
3982
3983
  opts.quantifiers.mbqiMode = value;
3984
  opts.quantifiers.mbqiModeWasSetByUser = true;
3985
  Trace("options") << "user assigned option mbqiMode = " << value << std::endl;
3986
}
3987
3988
116
void assign_quantifiers_miniscopeQuant(Options& opts, const std::string& option, bool value) {
3989
3990
116
  opts.quantifiers.miniscopeQuant = value;
3991
116
  opts.quantifiers.miniscopeQuantWasSetByUser = true;
3992
116
  Trace("options") << "user assigned option miniscopeQuant = " << value << std::endl;
3993
116
}
3994
3995
114
void assign_quantifiers_miniscopeQuantFreeVar(Options& opts, const std::string& option, bool value) {
3996
3997
114
  opts.quantifiers.miniscopeQuantFreeVar = value;
3998
114
  opts.quantifiers.miniscopeQuantFreeVarWasSetByUser = true;
3999
114
  Trace("options") << "user assigned option miniscopeQuantFreeVar = " << value << std::endl;
4000
114
}
4001
4002
3
void assign_quantifiers_multiTriggerCache(Options& opts, const std::string& option, bool value) {
4003
4004
3
  opts.quantifiers.multiTriggerCache = value;
4005
3
  opts.quantifiers.multiTriggerCacheWasSetByUser = true;
4006
3
  Trace("options") << "user assigned option multiTriggerCache = " << value << std::endl;
4007
3
}
4008
4009
void assign_quantifiers_multiTriggerLinear(Options& opts, const std::string& option, bool value) {
4010
4011
  opts.quantifiers.multiTriggerLinear = value;
4012
  opts.quantifiers.multiTriggerLinearWasSetByUser = true;
4013
  Trace("options") << "user assigned option multiTriggerLinear = " << value << std::endl;
4014
}
4015
4016
void assign_quantifiers_multiTriggerPriority(Options& opts, const std::string& option, bool value) {
4017
4018
  opts.quantifiers.multiTriggerPriority = value;
4019
  opts.quantifiers.multiTriggerPriorityWasSetByUser = true;
4020
  Trace("options") << "user assigned option multiTriggerPriority = " << value << std::endl;
4021
}
4022
4023
void assign_quantifiers_multiTriggerWhenSingle(Options& opts, const std::string& option, bool value) {
4024
4025
  opts.quantifiers.multiTriggerWhenSingle = value;
4026
  opts.quantifiers.multiTriggerWhenSingleWasSetByUser = true;
4027
  Trace("options") << "user assigned option multiTriggerWhenSingle = " << value << std::endl;
4028
}
4029
4030
3
void assign_quantifiers_partialTriggers(Options& opts, const std::string& option, bool value) {
4031
4032
3
  opts.quantifiers.partialTriggers = value;
4033
3
  opts.quantifiers.partialTriggersWasSetByUser = true;
4034
3
  Trace("options") << "user assigned option partialTriggers = " << value << std::endl;
4035
3
}
4036
4037
3
void assign_quantifiers_poolInst(Options& opts, const std::string& option, bool value) {
4038
4039
3
  opts.quantifiers.poolInst = value;
4040
3
  opts.quantifiers.poolInstWasSetByUser = true;
4041
3
  Trace("options") << "user assigned option poolInst = " << value << std::endl;
4042
3
}
4043
4044
2
void assign_quantifiers_preSkolemQuant(Options& opts, const std::string& option, bool value) {
4045
4046
2
  opts.quantifiers.preSkolemQuant = value;
4047
2
  opts.quantifiers.preSkolemQuantWasSetByUser = true;
4048
2
  Trace("options") << "user assigned option preSkolemQuant = " << value << std::endl;
4049
2
}
4050
4051
void assign_quantifiers_preSkolemQuantAgg(Options& opts, const std::string& option, bool value) {
4052
4053
  opts.quantifiers.preSkolemQuantAgg = value;
4054
  opts.quantifiers.preSkolemQuantAggWasSetByUser = true;
4055
  Trace("options") << "user assigned option preSkolemQuantAgg = " << value << std::endl;
4056
}
4057
4058
2
void assign_quantifiers_preSkolemQuantNested(Options& opts, const std::string& option, bool value) {
4059
4060
2
  opts.quantifiers.preSkolemQuantNested = value;
4061
2
  opts.quantifiers.preSkolemQuantNestedWasSetByUser = true;
4062
2
  Trace("options") << "user assigned option preSkolemQuantNested = " << value << std::endl;
4063
2
}
4064
4065
void assign_quantifiers_prenexQuantUser(Options& opts, const std::string& option, bool value) {
4066
4067
  opts.quantifiers.prenexQuantUser = value;
4068
  opts.quantifiers.prenexQuantUserWasSetByUser = true;
4069
  Trace("options") << "user assigned option prenexQuantUser = " << value << std::endl;
4070
}
4071
4072
void assign_quantifiers_prenexQuant(Options& opts, const std::string& option, const std::string& optionarg) {
4073
  auto value = stringToPrenexQuantMode(optionarg);
4074
4075
  opts.quantifiers.prenexQuant = value;
4076
  opts.quantifiers.prenexQuantWasSetByUser = true;
4077
  Trace("options") << "user assigned option prenexQuant = " << value << std::endl;
4078
}
4079
4080
3
void assign_quantifiers_purifyTriggers(Options& opts, const std::string& option, bool value) {
4081
4082
3
  opts.quantifiers.purifyTriggers = value;
4083
3
  opts.quantifiers.purifyTriggersWasSetByUser = true;
4084
3
  Trace("options") << "user assigned option purifyTriggers = " << value << std::endl;
4085
3
}
4086
4087
void assign_quantifiers_qcfAllConflict(Options& opts, const std::string& option, bool value) {
4088
4089
  opts.quantifiers.qcfAllConflict = value;
4090
  opts.quantifiers.qcfAllConflictWasSetByUser = true;
4091
  Trace("options") << "user assigned option qcfAllConflict = " << value << std::endl;
4092
}
4093
4094
void assign_quantifiers_qcfEagerCheckRd(Options& opts, const std::string& option, bool value) {
4095
4096
  opts.quantifiers.qcfEagerCheckRd = value;
4097
  opts.quantifiers.qcfEagerCheckRdWasSetByUser = true;
4098
  Trace("options") << "user assigned option qcfEagerCheckRd = " << value << std::endl;
4099
}
4100
4101
void assign_quantifiers_qcfEagerTest(Options& opts, const std::string& option, bool value) {
4102
4103
  opts.quantifiers.qcfEagerTest = value;
4104
  opts.quantifiers.qcfEagerTestWasSetByUser = true;
4105
  Trace("options") << "user assigned option qcfEagerTest = " << value << std::endl;
4106
}
4107
4108
void assign_quantifiers_qcfNestedConflict(Options& opts, const std::string& option, bool value) {
4109
4110
  opts.quantifiers.qcfNestedConflict = value;
4111
  opts.quantifiers.qcfNestedConflictWasSetByUser = true;
4112
  Trace("options") << "user assigned option qcfNestedConflict = " << value << std::endl;
4113
}
4114
4115
void assign_quantifiers_qcfSkipRd(Options& opts, const std::string& option, bool value) {
4116
4117
  opts.quantifiers.qcfSkipRd = value;
4118
  opts.quantifiers.qcfSkipRdWasSetByUser = true;
4119
  Trace("options") << "user assigned option qcfSkipRd = " << value << std::endl;
4120
}
4121
4122
6
void assign_quantifiers_qcfTConstraint(Options& opts, const std::string& option, bool value) {
4123
4124
6
  opts.quantifiers.qcfTConstraint = value;
4125
6
  opts.quantifiers.qcfTConstraintWasSetByUser = true;
4126
6
  Trace("options") << "user assigned option qcfTConstraint = " << value << std::endl;
4127
6
}
4128
4129
void assign_quantifiers_qcfVoExp(Options& opts, const std::string& option, bool value) {
4130
4131
  opts.quantifiers.qcfVoExp = value;
4132
  opts.quantifiers.qcfVoExpWasSetByUser = true;
4133
  Trace("options") << "user assigned option qcfVoExp = " << value << std::endl;
4134
}
4135
4136
void assign_quantifiers_quantAlphaEquiv(Options& opts, const std::string& option, bool value) {
4137
4138
  opts.quantifiers.quantAlphaEquiv = value;
4139
  opts.quantifiers.quantAlphaEquivWasSetByUser = true;
4140
  Trace("options") << "user assigned option quantAlphaEquiv = " << value << std::endl;
4141
}
4142
4143
void assign_quantifiers_quantConflictFind(Options& opts, const std::string& option, bool value) {
4144
4145
  opts.quantifiers.quantConflictFind = value;
4146
  opts.quantifiers.quantConflictFindWasSetByUser = true;
4147
  Trace("options") << "user assigned option quantConflictFind = " << value << std::endl;
4148
}
4149
4150
void assign_quantifiers_qcfMode(Options& opts, const std::string& option, const std::string& optionarg) {
4151
  auto value = stringToQcfMode(optionarg);
4152
4153
  opts.quantifiers.qcfMode = value;
4154
  opts.quantifiers.qcfModeWasSetByUser = true;
4155
  Trace("options") << "user assigned option qcfMode = " << value << std::endl;
4156
}
4157
4158
void assign_quantifiers_qcfWhenMode(Options& opts, const std::string& option, const std::string& optionarg) {
4159
  auto value = stringToQcfWhenMode(optionarg);
4160
4161
  opts.quantifiers.qcfWhenMode = value;
4162
  opts.quantifiers.qcfWhenModeWasSetByUser = true;
4163
  Trace("options") << "user assigned option qcfWhenMode = " << value << std::endl;
4164
}
4165
4166
void assign_quantifiers_quantDynamicSplit(Options& opts, const std::string& option, const std::string& optionarg) {
4167
  auto value = stringToQuantDSplitMode(optionarg);
4168
4169
  opts.quantifiers.quantDynamicSplit = value;
4170
  opts.quantifiers.quantDynamicSplitWasSetByUser = true;
4171
  Trace("options") << "user assigned option quantDynamicSplit = " << value << std::endl;
4172
}
4173
4174
void assign_quantifiers_quantFunWellDefined(Options& opts, const std::string& option, bool value) {
4175
4176
  opts.quantifiers.quantFunWellDefined = value;
4177
  opts.quantifiers.quantFunWellDefinedWasSetByUser = true;
4178
  Trace("options") << "user assigned option quantFunWellDefined = " << value << std::endl;
4179
}
4180
4181
8
void assign_quantifiers_quantInduction(Options& opts, const std::string& option, bool value) {
4182
4183
8
  opts.quantifiers.quantInduction = value;
4184
8
  opts.quantifiers.quantInductionWasSetByUser = true;
4185
8
  Trace("options") << "user assigned option quantInduction = " << value << std::endl;
4186
8
}
4187
4188
void assign_quantifiers_quantRepMode(Options& opts, const std::string& option, const std::string& optionarg) {
4189
  auto value = stringToQuantRepMode(optionarg);
4190
4191
  opts.quantifiers.quantRepMode = value;
4192
  opts.quantifiers.quantRepModeWasSetByUser = true;
4193
  Trace("options") << "user assigned option quantRepMode = " << value << std::endl;
4194
}
4195
4196
114
void assign_quantifiers_quantSplit(Options& opts, const std::string& option, bool value) {
4197
4198
114
  opts.quantifiers.quantSplit = value;
4199
114
  opts.quantifiers.quantSplitWasSetByUser = true;
4200
114
  Trace("options") << "user assigned option quantSplit = " << value << std::endl;
4201
114
}
4202
4203
void assign_quantifiers_registerQuantBodyTerms(Options& opts, const std::string& option, bool value) {
4204
4205
  opts.quantifiers.registerQuantBodyTerms = value;
4206
  opts.quantifiers.registerQuantBodyTermsWasSetByUser = true;
4207
  Trace("options") << "user assigned option registerQuantBodyTerms = " << value << std::endl;
4208
}
4209
4210
15
void assign_quantifiers_relationalTriggers(Options& opts, const std::string& option, bool value) {
4211
4212
15
  opts.quantifiers.relationalTriggers = value;
4213
15
  opts.quantifiers.relationalTriggersWasSetByUser = true;
4214
15
  Trace("options") << "user assigned option relationalTriggers = " << value << std::endl;
4215
15
}
4216
4217
3
void assign_quantifiers_relevantTriggers(Options& opts, const std::string& option, bool value) {
4218
4219
3
  opts.quantifiers.relevantTriggers = value;
4220
3
  opts.quantifiers.relevantTriggersWasSetByUser = true;
4221
3
  Trace("options") << "user assigned option relevantTriggers = " << value << std::endl;
4222
3
}
4223
4224
void assign_quantifiers_sygus(Options& opts, const std::string& option, bool value) {
4225
4226
  opts.quantifiers.sygus = value;
4227
  opts.quantifiers.sygusWasSetByUser = true;
4228
  Trace("options") << "user assigned option sygus = " << value << std::endl;
4229
}
4230
4231
void assign_quantifiers_sygusActiveGenEnumConsts(Options& opts, const std::string& option, const std::string& optionarg) {
4232
  auto value = handleOption<uint64_t>("sygus-active-gen-cfactor", option, optionarg);
4233
4234
  opts.quantifiers.sygusActiveGenEnumConsts = value;
4235
  opts.quantifiers.sygusActiveGenEnumConstsWasSetByUser = true;
4236
  Trace("options") << "user assigned option sygusActiveGenEnumConsts = " << value << std::endl;
4237
}
4238
4239
14
void assign_quantifiers_sygusActiveGenMode(Options& opts, const std::string& option, const std::string& optionarg) {
4240
14
  auto value = stringToSygusActiveGenMode(optionarg);
4241
4242
14
  opts.quantifiers.sygusActiveGenMode = value;
4243
14
  opts.quantifiers.sygusActiveGenModeWasSetByUser = true;
4244
14
  Trace("options") << "user assigned option sygusActiveGenMode = " << value << std::endl;
4245
14
}
4246
4247
2
void assign_quantifiers_sygusAddConstGrammar(Options& opts, const std::string& option, bool value) {
4248
4249
2
  opts.quantifiers.sygusAddConstGrammar = value;
4250
2
  opts.quantifiers.sygusAddConstGrammarWasSetByUser = true;
4251
2
  Trace("options") << "user assigned option sygusAddConstGrammar = " << value << std::endl;
4252
2
}
4253
4254
3
void assign_quantifiers_sygusArgRelevant(Options& opts, const std::string& option, bool value) {
4255
4256
3
  opts.quantifiers.sygusArgRelevant = value;
4257
3
  opts.quantifiers.sygusArgRelevantWasSetByUser = true;
4258
3
  Trace("options") << "user assigned option sygusArgRelevant = " << value << std::endl;
4259
3
}
4260
4261
void assign_quantifiers_sygusInvAutoUnfold(Options& opts, const std::string& option, bool value) {
4262
4263
  opts.quantifiers.sygusInvAutoUnfold = value;
4264
  opts.quantifiers.sygusInvAutoUnfoldWasSetByUser = true;
4265
  Trace("options") << "user assigned option sygusInvAutoUnfold = " << value << std::endl;
4266
}
4267
4268
1
void assign_quantifiers_sygusBoolIteReturnConst(Options& opts, const std::string& option, bool value) {
4269
4270
1
  opts.quantifiers.sygusBoolIteReturnConst = value;
4271
1
  opts.quantifiers.sygusBoolIteReturnConstWasSetByUser = true;
4272
1
  Trace("options") << "user assigned option sygusBoolIteReturnConst = " << value << std::endl;
4273
1
}
4274
4275
5
void assign_quantifiers_sygusCoreConnective(Options& opts, const std::string& option, bool value) {
4276
4277
5
  opts.quantifiers.sygusCoreConnective = value;
4278
5
  opts.quantifiers.sygusCoreConnectiveWasSetByUser = true;
4279
5
  Trace("options") << "user assigned option sygusCoreConnective = " << value << std::endl;
4280
5
}
4281
4282
void assign_quantifiers_sygusConstRepairAbort(Options& opts, const std::string& option, bool value) {
4283
4284
  opts.quantifiers.sygusConstRepairAbort = value;
4285
  opts.quantifiers.sygusConstRepairAbortWasSetByUser = true;
4286
  Trace("options") << "user assigned option sygusConstRepairAbort = " << value << std::endl;
4287
}
4288
4289
void assign_quantifiers_sygusEvalOpt(Options& opts, const std::string& option, bool value) {
4290
4291
  opts.quantifiers.sygusEvalOpt = value;
4292
  opts.quantifiers.sygusEvalOptWasSetByUser = true;
4293
  Trace("options") << "user assigned option sygusEvalOpt = " << value << std::endl;
4294
}
4295
4296
void assign_quantifiers_sygusEvalUnfold(Options& opts, const std::string& option, bool value) {
4297
4298
  opts.quantifiers.sygusEvalUnfold = value;
4299
  opts.quantifiers.sygusEvalUnfoldWasSetByUser = true;
4300
  Trace("options") << "user assigned option sygusEvalUnfold = " << value << std::endl;
4301
}
4302
4303
void assign_quantifiers_sygusEvalUnfoldBool(Options& opts, const std::string& option, bool value) {
4304
4305
  opts.quantifiers.sygusEvalUnfoldBool = value;
4306
  opts.quantifiers.sygusEvalUnfoldBoolWasSetByUser = true;
4307
  Trace("options") << "user assigned option sygusEvalUnfoldBool = " << value << std::endl;
4308
}
4309
4310
void assign_quantifiers_sygusExprMinerCheckTimeout(Options& opts, const std::string& option, const std::string& optionarg) {
4311
  auto value = handleOption<uint64_t>("sygus-expr-miner-check-timeout", option, optionarg);
4312
4313
  opts.quantifiers.sygusExprMinerCheckTimeout = value;
4314
  opts.quantifiers.sygusExprMinerCheckTimeoutWasSetByUser = true;
4315
  Trace("options") << "user assigned option sygusExprMinerCheckTimeout = " << value << std::endl;
4316
}
4317
4318
2
void assign_quantifiers_sygusExtRew(Options& opts, const std::string& option, bool value) {
4319
4320
2
  opts.quantifiers.sygusExtRew = value;
4321
2
  opts.quantifiers.sygusExtRewWasSetByUser = true;
4322
2
  Trace("options") << "user assigned option sygusExtRew = " << value << std::endl;
4323
2
}
4324
4325
void assign_quantifiers_sygusFilterSolRevSubsume(Options& opts, const std::string& option, bool value) {
4326
4327
  opts.quantifiers.sygusFilterSolRevSubsume = value;
4328
  opts.quantifiers.sygusFilterSolRevSubsumeWasSetByUser = true;
4329
  Trace("options") << "user assigned option sygusFilterSolRevSubsume = " << value << std::endl;
4330
}
4331
4332
void assign_quantifiers_sygusFilterSolMode(Options& opts, const std::string& option, const std::string& optionarg) {
4333
  auto value = stringToSygusFilterSolMode(optionarg);
4334
4335
  opts.quantifiers.sygusFilterSolMode = value;
4336
  opts.quantifiers.sygusFilterSolModeWasSetByUser = true;
4337
  Trace("options") << "user assigned option sygusFilterSolMode = " << value << std::endl;
4338
}
4339
4340
6
void assign_quantifiers_sygusGrammarConsMode(Options& opts, const std::string& option, const std::string& optionarg) {
4341
6
  auto value = stringToSygusGrammarConsMode(optionarg);
4342
4343
6
  opts.quantifiers.sygusGrammarConsMode = value;
4344
6
  opts.quantifiers.sygusGrammarConsModeWasSetByUser = true;
4345
6
  Trace("options") << "user assigned option sygusGrammarConsMode = " << value << std::endl;
4346
6
}
4347
4348
void assign_quantifiers_sygusGrammarNorm(Options& opts, const std::string& option, bool value) {
4349
4350
  opts.quantifiers.sygusGrammarNorm = value;
4351
  opts.quantifiers.sygusGrammarNormWasSetByUser = true;
4352
  Trace("options") << "user assigned option sygusGrammarNorm = " << value << std::endl;
4353
}
4354
4355
60
void assign_quantifiers_sygusInference(Options& opts, const std::string& option, bool value) {
4356
4357
60
  opts.quantifiers.sygusInference = value;
4358
60
  opts.quantifiers.sygusInferenceWasSetByUser = true;
4359
60
  Trace("options") << "user assigned option sygusInference = " << value << std::endl;
4360
60
}
4361
4362
18
void assign_quantifiers_sygusInst(Options& opts, const std::string& option, bool value) {
4363
4364
18
  opts.quantifiers.sygusInst = value;
4365
18
  opts.quantifiers.sygusInstWasSetByUser = true;
4366
18
  Trace("options") << "user assigned option sygusInst = " << value << std::endl;
4367
18
}
4368
4369
void assign_quantifiers_sygusInstMode(Options& opts, const std::string& option, const std::string& optionarg) {
4370
  auto value = stringToSygusInstMode(optionarg);
4371
4372
  opts.quantifiers.sygusInstMode = value;
4373
  opts.quantifiers.sygusInstModeWasSetByUser = true;
4374
  Trace("options") << "user assigned option sygusInstMode = " << value << std::endl;
4375
}
4376
4377
void assign_quantifiers_sygusInstScope(Options& opts, const std::string& option, const std::string& optionarg) {
4378
  auto value = stringToSygusInstScope(optionarg);
4379
4380
  opts.quantifiers.sygusInstScope = value;
4381
  opts.quantifiers.sygusInstScopeWasSetByUser = true;
4382
  Trace("options") << "user assigned option sygusInstScope = " << value << std::endl;
4383
}
4384
4385
void assign_quantifiers_sygusInstTermSel(Options& opts, const std::string& option, const std::string& optionarg) {
4386
  auto value = stringToSygusInstTermSelMode(optionarg);
4387
4388
  opts.quantifiers.sygusInstTermSel = value;
4389
  opts.quantifiers.sygusInstTermSelWasSetByUser = true;
4390
  Trace("options") << "user assigned option sygusInstTermSel = " << value << std::endl;
4391
}
4392
4393
void assign_quantifiers_sygusInvTemplWhenSyntax(Options& opts, const std::string& option, bool value) {
4394
4395
  opts.quantifiers.sygusInvTemplWhenSyntax = value;
4396
  opts.quantifiers.sygusInvTemplWhenSyntaxWasSetByUser = true;
4397
  Trace("options") << "user assigned option sygusInvTemplWhenSyntax = " << value << std::endl;
4398
}
4399
4400
3
void assign_quantifiers_sygusInvTemplMode(Options& opts, const std::string& option, const std::string& optionarg) {
4401
3
  auto value = stringToSygusInvTemplMode(optionarg);
4402
4403
3
  opts.quantifiers.sygusInvTemplMode = value;
4404
3
  opts.quantifiers.sygusInvTemplModeWasSetByUser = true;
4405
3
  Trace("options") << "user assigned option sygusInvTemplMode = " << value << std::endl;
4406
3
}
4407
4408
void assign_quantifiers_sygusMinGrammar(Options& opts, const std::string& option, bool value) {
4409
4410
  opts.quantifiers.sygusMinGrammar = value;
4411
  opts.quantifiers.sygusMinGrammarWasSetByUser = true;
4412
  Trace("options") << "user assigned option sygusMinGrammar = " << value << std::endl;
4413
}
4414
4415
6
void assign_quantifiers_sygusUnifPbe(Options& opts, const std::string& option, bool value) {
4416
4417
6
  opts.quantifiers.sygusUnifPbe = value;
4418
6
  opts.quantifiers.sygusUnifPbeWasSetByUser = true;
4419
6
  Trace("options") << "user assigned option sygusUnifPbe = " << value << std::endl;
4420
6
}
4421
4422
void assign_quantifiers_sygusPbeMultiFair(Options& opts, const std::string& option, bool value) {
4423
4424
  opts.quantifiers.sygusPbeMultiFair = value;
4425
  opts.quantifiers.sygusPbeMultiFairWasSetByUser = true;
4426
  Trace("options") << "user assigned option sygusPbeMultiFair = " << value << std::endl;
4427
}
4428
4429
void assign_quantifiers_sygusPbeMultiFairDiff(Options& opts, const std::string& option, const std::string& optionarg) {
4430
  auto value = handleOption<int64_t>("sygus-pbe-multi-fair-diff", option, optionarg);
4431
4432
  opts.quantifiers.sygusPbeMultiFairDiff = value;
4433
  opts.quantifiers.sygusPbeMultiFairDiffWasSetByUser = true;
4434
  Trace("options") << "user assigned option sygusPbeMultiFairDiff = " << value << std::endl;
4435
}
4436
4437
4
void assign_quantifiers_sygusQePreproc(Options& opts, const std::string& option, bool value) {
4438
4439
4
  opts.quantifiers.sygusQePreproc = value;
4440
4
  opts.quantifiers.sygusQePreprocWasSetByUser = true;
4441
4
  Trace("options") << "user assigned option sygusQePreproc = " << value << std::endl;
4442
4
}
4443
4444
void assign_quantifiers_sygusQueryGen(Options& opts, const std::string& option, bool value) {
4445
4446
  opts.quantifiers.sygusQueryGen = value;
4447
  opts.quantifiers.sygusQueryGenWasSetByUser = true;
4448
  Trace("options") << "user assigned option sygusQueryGen = " << value << std::endl;
4449
}
4450
4451
void assign_quantifiers_sygusQueryGenCheck(Options& opts, const std::string& option, bool value) {
4452
4453
  opts.quantifiers.sygusQueryGenCheck = value;
4454
  opts.quantifiers.sygusQueryGenCheckWasSetByUser = true;
4455
  Trace("options") << "user assigned option sygusQueryGenCheck = " << value << std::endl;
4456
}
4457
4458
void assign_quantifiers_sygusQueryGenDumpFiles(Options& opts, const std::string& option, const std::string& optionarg) {
4459
  auto value = stringToSygusQueryDumpFilesMode(optionarg);
4460
4461
  opts.quantifiers.sygusQueryGenDumpFiles = value;
4462
  opts.quantifiers.sygusQueryGenDumpFilesWasSetByUser = true;
4463
  Trace("options") << "user assigned option sygusQueryGenDumpFiles = " << value << std::endl;
4464
}
4465
4466
void assign_quantifiers_sygusQueryGenThresh(Options& opts, const std::string& option, const std::string& optionarg) {
4467
  auto value = handleOption<uint64_t>("sygus-query-gen-thresh", option, optionarg);
4468
4469
  opts.quantifiers.sygusQueryGenThresh = value;
4470
  opts.quantifiers.sygusQueryGenThreshWasSetByUser = true;
4471
  Trace("options") << "user assigned option sygusQueryGenThresh = " << value << std::endl;
4472
}
4473
4474
3
void assign_quantifiers_sygusRecFun(Options& opts, const std::string& option, bool value) {
4475
4476
3
  opts.quantifiers.sygusRecFun = value;
4477
3
  opts.quantifiers.sygusRecFunWasSetByUser = true;
4478
3
  Trace("options") << "user assigned option sygusRecFun = " << value << std::endl;
4479
3
}
4480
4481
void assign_quantifiers_sygusRecFunEvalLimit(Options& opts, const std::string& option, const std::string& optionarg) {
4482
  auto value = handleOption<uint64_t>("sygus-rec-fun-eval-limit", option, optionarg);
4483
4484
  opts.quantifiers.sygusRecFunEvalLimit = value;
4485
  opts.quantifiers.sygusRecFunEvalLimitWasSetByUser = true;
4486
  Trace("options") << "user assigned option sygusRecFunEvalLimit = " << value << std::endl;
4487
}
4488
4489
8
void assign_quantifiers_sygusRepairConst(Options& opts, const std::string& option, bool value) {
4490
4491
8
  opts.quantifiers.sygusRepairConst = value;
4492
8
  opts.quantifiers.sygusRepairConstWasSetByUser = true;
4493
8
  Trace("options") << "user assigned option sygusRepairConst = " << value << std::endl;
4494
8
}
4495
4496
void assign_quantifiers_sygusRepairConstTimeout(Options& opts, const std::string& option, const std::string& optionarg) {
4497
  auto value = handleOption<uint64_t>("sygus-repair-const-timeout", option, optionarg);
4498
4499
  opts.quantifiers.sygusRepairConstTimeout = value;
4500
  opts.quantifiers.sygusRepairConstTimeoutWasSetByUser = true;
4501
  Trace("options") << "user assigned option sygusRepairConstTimeout = " << value << std::endl;
4502
}
4503
4504
6
void assign_quantifiers_sygusRew(Options& opts, const std::string& option, bool value) {
4505
4506
6
  opts.quantifiers.sygusRew = value;
4507
6
  opts.quantifiers.sygusRewWasSetByUser = true;
4508
6
  Trace("options") << "user assigned option sygusRew = " << value << std::endl;
4509
6
}
4510
4511
1
void assign_quantifiers_sygusRewSynth(Options& opts, const std::string& option, bool value) {
4512
4513
1
  opts.quantifiers.sygusRewSynth = value;
4514
1
  opts.quantifiers.sygusRewSynthWasSetByUser = true;
4515
1
  Trace("options") << "user assigned option sygusRewSynth = " << value << std::endl;
4516
1
}
4517
4518
void assign_quantifiers_sygusRewSynthAccel(Options& opts, const std::string& option, bool value) {
4519
4520
  opts.quantifiers.sygusRewSynthAccel = value;
4521
  opts.quantifiers.sygusRewSynthAccelWasSetByUser = true;
4522
  Trace("options") << "user assigned option sygusRewSynthAccel = " << value << std::endl;
4523
}
4524
4525
5
void assign_quantifiers_sygusRewSynthCheck(Options& opts, const std::string& option, bool value) {
4526
4527
5
  opts.quantifiers.sygusRewSynthCheck = value;
4528
5
  opts.quantifiers.sygusRewSynthCheckWasSetByUser = true;
4529
5
  Trace("options") << "user assigned option sygusRewSynthCheck = " << value << std::endl;
4530
5
}
4531
4532
void assign_quantifiers_sygusRewSynthFilterCong(Options& opts, const std::string& option, bool value) {
4533
4534
  opts.quantifiers.sygusRewSynthFilterCong = value;
4535
  opts.quantifiers.sygusRewSynthFilterCongWasSetByUser = true;
4536
  Trace("options") << "user assigned option sygusRewSynthFilterCong = " << value << std::endl;
4537
}
4538
4539
void assign_quantifiers_sygusRewSynthFilterMatch(Options& opts, const std::string& option, bool value) {
4540
4541
  opts.quantifiers.sygusRewSynthFilterMatch = value;
4542
  opts.quantifiers.sygusRewSynthFilterMatchWasSetByUser = true;
4543
  Trace("options") << "user assigned option sygusRewSynthFilterMatch = " << value << std::endl;
4544
}
4545
4546
void assign_quantifiers_sygusRewSynthFilterNonLinear(Options& opts, const std::string& option, bool value) {
4547
4548
  opts.quantifiers.sygusRewSynthFilterNonLinear = value;
4549
  opts.quantifiers.sygusRewSynthFilterNonLinearWasSetByUser = true;
4550
  Trace("options") << "user assigned option sygusRewSynthFilterNonLinear = " << value << std::endl;
4551
}
4552
4553
void assign_quantifiers_sygusRewSynthFilterOrder(Options& opts, const std::string& option, bool value) {
4554
4555
  opts.quantifiers.sygusRewSynthFilterOrder = value;
4556
  opts.quantifiers.sygusRewSynthFilterOrderWasSetByUser = true;
4557
  Trace("options") << "user assigned option sygusRewSynthFilterOrder = " << value << std::endl;
4558
}
4559
4560
255
void assign_quantifiers_sygusRewSynthInput(Options& opts, const std::string& option, bool value) {
4561
4562
255
  opts.quantifiers.sygusRewSynthInput = value;
4563
255
  opts.quantifiers.sygusRewSynthInputWasSetByUser = true;
4564
255
  Trace("options") << "user assigned option sygusRewSynthInput = " << value << std::endl;
4565
255
}
4566
4567
void assign_quantifiers_sygusRewSynthInputNVars(Options& opts, const std::string& option, const std::string& optionarg) {
4568
  auto value = handleOption<int64_t>("sygus-rr-synth-input-nvars", option, optionarg);
4569
4570
  opts.quantifiers.sygusRewSynthInputNVars = value;
4571
  opts.quantifiers.sygusRewSynthInputNVarsWasSetByUser = true;
4572
  Trace("options") << "user assigned option sygusRewSynthInputNVars = " << value << std::endl;
4573
}
4574
4575
void assign_quantifiers_sygusRewSynthInputUseBool(Options& opts, const std::string& option, bool value) {
4576
4577
  opts.quantifiers.sygusRewSynthInputUseBool = value;
4578
  opts.quantifiers.sygusRewSynthInputUseBoolWasSetByUser = true;
4579
  Trace("options") << "user assigned option sygusRewSynthInputUseBool = " << value << std::endl;
4580
}
4581
4582
void assign_quantifiers_sygusRewSynthRec(Options& opts, const std::string& option, bool value) {
4583
4584
  opts.quantifiers.sygusRewSynthRec = value;
4585
  opts.quantifiers.sygusRewSynthRecWasSetByUser = true;
4586
  Trace("options") << "user assigned option sygusRewSynthRec = " << value << std::endl;
4587
}
4588
4589
void assign_quantifiers_sygusRewVerify(Options& opts, const std::string& option, bool value) {
4590
4591
  opts.quantifiers.sygusRewVerify = value;
4592
  opts.quantifiers.sygusRewVerifyWasSetByUser = true;
4593
  Trace("options") << "user assigned option sygusRewVerify = " << value << std::endl;
4594
}
4595
4596
7
void assign_quantifiers_sygusRewVerifyAbort(Options& opts, const std::string& option, bool value) {
4597
4598
7
  opts.quantifiers.sygusRewVerifyAbort = value;
4599
7
  opts.quantifiers.sygusRewVerifyAbortWasSetByUser = true;
4600
7
  Trace("options") << "user assigned option sygusRewVerifyAbort = " << value << std::endl;
4601
7
}
4602
4603
void assign_quantifiers_sygusSampleFpUniform(Options& opts, const std::string& option, bool value) {
4604
4605
  opts.quantifiers.sygusSampleFpUniform = value;
4606
  opts.quantifiers.sygusSampleFpUniformWasSetByUser = true;
4607
  Trace("options") << "user assigned option sygusSampleFpUniform = " << value << std::endl;
4608
}
4609
4610
void assign_quantifiers_sygusSampleGrammar(Options& opts, const std::string& option, bool value) {
4611
4612
  opts.quantifiers.sygusSampleGrammar = value;
4613
  opts.quantifiers.sygusSampleGrammarWasSetByUser = true;
4614
  Trace("options") << "user assigned option sygusSampleGrammar = " << value << std::endl;
4615
}
4616
4617
7
void assign_quantifiers_sygusSamples(Options& opts, const std::string& option, const std::string& optionarg) {
4618
7
  auto value = handleOption<int64_t>("sygus-samples", option, optionarg);
4619
4620
7
  opts.quantifiers.sygusSamples = value;
4621
7
  opts.quantifiers.sygusSamplesWasSetByUser = true;
4622
7
  Trace("options") << "user assigned option sygusSamples = " << value << std::endl;
4623
7
}
4624
4625
void assign_quantifiers_cegqiSingleInvAbort(Options& opts, const std::string& option, bool value) {
4626
4627
  opts.quantifiers.cegqiSingleInvAbort = value;
4628
  opts.quantifiers.cegqiSingleInvAbortWasSetByUser = true;
4629
  Trace("options") << "user assigned option cegqiSingleInvAbort = " << value << std::endl;
4630
}
4631
4632
void assign_quantifiers_cegqiSingleInvPartial(Options& opts, const std::string& option, bool value) {
4633
4634
  opts.quantifiers.cegqiSingleInvPartial = value;
4635
  opts.quantifiers.cegqiSingleInvPartialWasSetByUser = true;
4636
  Trace("options") << "user assigned option cegqiSingleInvPartial = " << value << std::endl;
4637
}
4638
4639
1
void assign_quantifiers_cegqiSingleInvReconstructLimit(Options& opts, const std::string& option, const std::string& optionarg) {
4640
1
  auto value = handleOption<int64_t>("sygus-si-rcons-limit", option, optionarg);
4641
4642
1
  opts.quantifiers.cegqiSingleInvReconstructLimit = value;
4643
1
  opts.quantifiers.cegqiSingleInvReconstructLimitWasSetByUser = true;
4644
1
  Trace("options") << "user assigned option cegqiSingleInvReconstructLimit = " << value << std::endl;
4645
1
}
4646
4647
void assign_quantifiers_cegqiSingleInvReconstruct(Options& opts, const std::string& option, const std::string& optionarg) {
4648
  auto value = stringToCegqiSingleInvRconsMode(optionarg);
4649
4650
  opts.quantifiers.cegqiSingleInvReconstruct = value;
4651
  opts.quantifiers.cegqiSingleInvReconstructWasSetByUser = true;
4652
  Trace("options") << "user assigned option cegqiSingleInvReconstruct = " << value << std::endl;
4653
}
4654
4655
void assign_quantifiers_cegqiSingleInvReconstructConst(Options& opts, const std::string& option, bool value) {
4656
4657
  opts.quantifiers.cegqiSingleInvReconstructConst = value;
4658
  opts.quantifiers.cegqiSingleInvReconstructConstWasSetByUser = true;
4659
  Trace("options") << "user assigned option cegqiSingleInvReconstructConst = " << value << std::endl;
4660
}
4661
4662
47
void assign_quantifiers_cegqiSingleInvMode(Options& opts, const std::string& option, const std::string& optionarg) {
4663
47
  auto value = stringToCegqiSingleInvMode(optionarg);
4664
4665
47
  opts.quantifiers.cegqiSingleInvMode = value;
4666
47
  opts.quantifiers.cegqiSingleInvModeWasSetByUser = true;
4667
47
  Trace("options") << "user assigned option cegqiSingleInvMode = " << value << std::endl;
4668
47
}
4669
4670
4
void assign_quantifiers_sygusStream(Options& opts, const std::string& option, bool value) {
4671
4672
4
  opts.quantifiers.sygusStream = value;
4673
4
  opts.quantifiers.sygusStreamWasSetByUser = true;
4674
4
  Trace("options") << "user assigned option sygusStream = " << value << std::endl;
4675
4
}
4676
4677
void assign_quantifiers_sygusTemplEmbedGrammar(Options& opts, const std::string& option, bool value) {
4678
4679
  opts.quantifiers.sygusTemplEmbedGrammar = value;
4680
  opts.quantifiers.sygusTemplEmbedGrammarWasSetByUser = true;
4681
  Trace("options") << "user assigned option sygusTemplEmbedGrammar = " << value << std::endl;
4682
}
4683
4684
void assign_quantifiers_sygusUnifCondIndNoRepeatSol(Options& opts, const std::string& option, bool value) {
4685
4686
  opts.quantifiers.sygusUnifCondIndNoRepeatSol = value;
4687
  opts.quantifiers.sygusUnifCondIndNoRepeatSolWasSetByUser = true;
4688
  Trace("options") << "user assigned option sygusUnifCondIndNoRepeatSol = " << value << std::endl;
4689
}
4690
4691
9
void assign_quantifiers_sygusUnifPi(Options& opts, const std::string& option, const std::string& optionarg) {
4692
9
  auto value = stringToSygusUnifPiMode(optionarg);
4693
4694
9
  opts.quantifiers.sygusUnifPi = value;
4695
9
  opts.quantifiers.sygusUnifPiWasSetByUser = true;
4696
9
  Trace("options") << "user assigned option sygusUnifPi = " << value << std::endl;
4697
9
}
4698
4699
void assign_quantifiers_sygusUnifShuffleCond(Options& opts, const std::string& option, bool value) {
4700
4701
  opts.quantifiers.sygusUnifShuffleCond = value;
4702
  opts.quantifiers.sygusUnifShuffleCondWasSetByUser = true;
4703
  Trace("options") << "user assigned option sygusUnifShuffleCond = " << value << std::endl;
4704
}
4705
4706
void assign_quantifiers_sygusVerifyInstMaxRounds(Options& opts, const std::string& option, const std::string& optionarg) {
4707
  auto value = handleOption<int64_t>("sygus-verify-inst-max-rounds", option, optionarg);
4708
4709
  opts.quantifiers.sygusVerifyInstMaxRounds = value;
4710
  opts.quantifiers.sygusVerifyInstMaxRoundsWasSetByUser = true;
4711
  Trace("options") << "user assigned option sygusVerifyInstMaxRounds = " << value << std::endl;
4712
}
4713
4714
void assign_quantifiers_termDbCd(Options& opts, const std::string& option, bool value) {
4715
4716
  opts.quantifiers.termDbCd = value;
4717
  opts.quantifiers.termDbCdWasSetByUser = true;
4718
  Trace("options") << "user assigned option termDbCd = " << value << std::endl;
4719
}
4720
4721
void assign_quantifiers_termDbMode(Options& opts, const std::string& option, const std::string& optionarg) {
4722
  auto value = stringToTermDbMode(optionarg);
4723
4724
  opts.quantifiers.termDbMode = value;
4725
  opts.quantifiers.termDbModeWasSetByUser = true;
4726
  Trace("options") << "user assigned option termDbMode = " << value << std::endl;
4727
}
4728
4729
void assign_quantifiers_triggerActiveSelMode(Options& opts, const std::string& option, const std::string& optionarg) {
4730
  auto value = stringToTriggerActiveSelMode(optionarg);
4731
4732
  opts.quantifiers.triggerActiveSelMode = value;
4733
  opts.quantifiers.triggerActiveSelModeWasSetByUser = true;
4734
  Trace("options") << "user assigned option triggerActiveSelMode = " << value << std::endl;
4735
}
4736
4737
void assign_quantifiers_triggerSelMode(Options& opts, const std::string& option, const std::string& optionarg) {
4738
  auto value = stringToTriggerSelMode(optionarg);
4739
4740
  opts.quantifiers.triggerSelMode = value;
4741
  opts.quantifiers.triggerSelModeWasSetByUser = true;
4742
  Trace("options") << "user assigned option triggerSelMode = " << value << std::endl;
4743
}
4744
4745
void assign_quantifiers_userPatternsQuant(Options& opts, const std::string& option, const std::string& optionarg) {
4746
  auto value = stringToUserPatMode(optionarg);
4747
4748
  opts.quantifiers.userPatternsQuant = value;
4749
  opts.quantifiers.userPatternsQuantWasSetByUser = true;
4750
  Trace("options") << "user assigned option userPatternsQuant = " << value << std::endl;
4751
}
4752
4753
void assign_quantifiers_varElimQuant(Options& opts, const std::string& option, bool value) {
4754
4755
  opts.quantifiers.varElimQuant = value;
4756
  opts.quantifiers.varElimQuantWasSetByUser = true;
4757
  Trace("options") << "user assigned option varElimQuant = " << value << std::endl;
4758
}
4759
4760
7
void assign_quantifiers_varIneqElimQuant(Options& opts, const std::string& option, bool value) {
4761
4762
7
  opts.quantifiers.varIneqElimQuant = value;
4763
7
  opts.quantifiers.varIneqElimQuantWasSetByUser = true;
4764
7
  Trace("options") << "user assigned option varIneqElimQuant = " << value << std::endl;
4765
7
}
4766
4767
void assign_sep_sepCheckNeg(Options& opts, const std::string& option, bool value) {
4768
4769
  opts.sep.sepCheckNeg = value;
4770
  opts.sep.sepCheckNegWasSetByUser = true;
4771
  Trace("options") << "user assigned option sepCheckNeg = " << value << std::endl;
4772
}
4773
4774
void assign_sep_sepChildRefine(Options& opts, const std::string& option, bool value) {
4775
4776
  opts.sep.sepChildRefine = value;
4777
  opts.sep.sepChildRefineWasSetByUser = true;
4778
  Trace("options") << "user assigned option sepChildRefine = " << value << std::endl;
4779
}
4780
4781
void assign_sep_sepDisequalC(Options& opts, const std::string& option, bool value) {
4782
4783
  opts.sep.sepDisequalC = value;
4784
  opts.sep.sepDisequalCWasSetByUser = true;
4785
  Trace("options") << "user assigned option sepDisequalC = " << value << std::endl;
4786
}
4787
4788
void assign_sep_sepExp(Options& opts, const std::string& option, bool value) {
4789
4790
  opts.sep.sepExp = value;
4791
  opts.sep.sepExpWasSetByUser = true;
4792
  Trace("options") << "user assigned option sepExp = " << value << std::endl;
4793
}
4794
4795
void assign_sep_sepMinimalRefine(Options& opts, const std::string& option, bool value) {
4796
4797
  opts.sep.sepMinimalRefine = value;
4798
  opts.sep.sepMinimalRefineWasSetByUser = true;
4799
  Trace("options") << "user assigned option sepMinimalRefine = " << value << std::endl;
4800
}
4801
4802
1
void assign_sep_sepPreSkolemEmp(Options& opts, const std::string& option, bool value) {
4803
4804
1
  opts.sep.sepPreSkolemEmp = value;
4805
1
  opts.sep.sepPreSkolemEmpWasSetByUser = true;
4806
1
  Trace("options") << "user assigned option sepPreSkolemEmp = " << value << std::endl;
4807
1
}
4808
4809
116
void assign_sets_setsExt(Options& opts, const std::string& option, bool value) {
4810
4811
116
  opts.sets.setsExt = value;
4812
116
  opts.sets.setsExtWasSetByUser = true;
4813
116
  Trace("options") << "user assigned option setsExt = " << value << std::endl;
4814
116
}
4815
4816
2
void assign_sets_setsInferAsLemmas(Options& opts, const std::string& option, bool value) {
4817
4818
2
  opts.sets.setsInferAsLemmas = value;
4819
2
  opts.sets.setsInferAsLemmasWasSetByUser = true;
4820
2
  Trace("options") << "user assigned option setsInferAsLemmas = " << value << std::endl;
4821
2
}
4822
4823
void assign_sets_setsProxyLemmas(Options& opts, const std::string& option, bool value) {
4824
4825
  opts.sets.setsProxyLemmas = value;
4826
  opts.sets.setsProxyLemmasWasSetByUser = true;
4827
  Trace("options") << "user assigned option setsProxyLemmas = " << value << std::endl;
4828
}
4829
4830
4
void assign_smt_abstractValues(Options& opts, const std::string& option, bool value) {
4831
4832
4
  opts.smt.abstractValues = value;
4833
4
  opts.smt.abstractValuesWasSetByUser = true;
4834
4
  Trace("options") << "user assigned option abstractValues = " << value << std::endl;
4835
4
}
4836
4837
31
void assign_smt_ackermann(Options& opts, const std::string& option, bool value) {
4838
4839
31
  opts.smt.ackermann = value;
4840
31
  opts.smt.ackermannWasSetByUser = true;
4841
31
  Trace("options") << "user assigned option ackermann = " << value << std::endl;
4842
31
}
4843
4844
21
void assign_smt_blockModelsMode(Options& opts, const std::string& option, const std::string& optionarg) {
4845
21
  auto value = stringToBlockModelsMode(optionarg);
4846
4847
21
  opts.smt.blockModelsMode = value;
4848
21
  opts.smt.blockModelsModeWasSetByUser = true;
4849
21
  Trace("options") << "user assigned option blockModelsMode = " << value << std::endl;
4850
21
}
4851
4852
78
void assign_smt_BVAndIntegerGranularity(Options& opts, const std::string& option, const std::string& optionarg) {
4853
78
  auto value = handleOption<uint64_t>("bvand-integer-granularity", option, optionarg);
4854
4855
78
  opts.smt.BVAndIntegerGranularity = value;
4856
78
  opts.smt.BVAndIntegerGranularityWasSetByUser = true;
4857
78
  Trace("options") << "user assigned option BVAndIntegerGranularity = " << value << std::endl;
4858
78
}
4859
4860
13
void assign_smt_checkAbducts(Options& opts, const std::string& option, bool value) {
4861
4862
13
  opts.smt.checkAbducts = value;
4863
13
  opts.smt.checkAbductsWasSetByUser = true;
4864
13
  Trace("options") << "user assigned option checkAbducts = " << value << std::endl;
4865
13
}
4866
4867
8
void assign_smt_checkInterpols(Options& opts, const std::string& option, bool value) {
4868
4869
8
  opts.smt.checkInterpols = value;
4870
8
  opts.smt.checkInterpolsWasSetByUser = true;
4871
8
  Trace("options") << "user assigned option checkInterpols = " << value << std::endl;
4872
8
}
4873
4874
116
void assign_smt_checkModels(Options& opts, const std::string& option, bool value) {
4875
4876
116
  opts.smt.checkModels = value;
4877
116
  opts.smt.checkModelsWasSetByUser = true;
4878
116
  Trace("options") << "user assigned option checkModels = " << value << std::endl;
4879
116
}
4880
4881
1161
void assign_smt_checkProofs(Options& opts, const std::string& option, bool value) {
4882
4883
1161
  opts.smt.checkProofs = value;
4884
1161
  opts.smt.checkProofsWasSetByUser = true;
4885
1161
  Trace("options") << "user assigned option checkProofs = " << value << std::endl;
4886
1161
}
4887
4888
189
void assign_smt_checkSynthSol(Options& opts, const std::string& option, bool value) {
4889
4890
189
  opts.smt.checkSynthSol = value;
4891
189
  opts.smt.checkSynthSolWasSetByUser = true;
4892
189
  Trace("options") << "user assigned option checkSynthSol = " << value << std::endl;
4893
189
}
4894
4895
1186
void assign_smt_checkUnsatCores(Options& opts, const std::string& option, bool value) {
4896
4897
1186
  opts.smt.checkUnsatCores = value;
4898
1186
  opts.smt.checkUnsatCoresWasSetByUser = true;
4899
1186
  Trace("options") << "user assigned option checkUnsatCores = " << value << std::endl;
4900
1186
}
4901
4902
1224
void assign_smt_debugCheckModels(Options& opts, const std::string& option, bool value) {
4903
4904
1224
  opts.smt.debugCheckModels = value;
4905
1224
  opts.smt.debugCheckModelsWasSetByUser = true;
4906
1224
  Trace("options") << "user assigned option debugCheckModels = " << value << std::endl;
4907
1224
}
4908
4909
void assign_smt_dumpToFileName(Options& opts, const std::string& option, const std::string& optionarg) {
4910
  auto value = handleOption<ManagedOut>("dump-to", option, optionarg);
4911
  opts.handler().setDumpStream("dump-to", option, value);
4912
  opts.smt.dumpToFileName = value;
4913
  opts.smt.dumpToFileNameWasSetByUser = true;
4914
  Trace("options") << "user assigned option dumpToFileName = " << value << std::endl;
4915
}
4916
4917
3
void assign_smt_dumpModeString(Options& opts, const std::string& option, const std::string& optionarg) {
4918
6
  auto value = handleOption<std::string>("dump", option, optionarg);
4919
4
  opts.handler().setDumpMode("dump", option, value);
4920
2
  opts.smt.dumpModeString = value;
4921
2
  opts.smt.dumpModeStringWasSetByUser = true;
4922
2
  Trace("options") << "user assigned option dumpModeString = " << value << std::endl;
4923
2
}
4924
4925
void assign_smt_earlyIteRemoval(Options& opts, const std::string& option, bool value) {
4926
4927
  opts.smt.earlyIteRemoval = value;
4928
  opts.smt.earlyIteRemovalWasSetByUser = true;
4929
  Trace("options") << "user assigned option earlyIteRemoval = " << value << std::endl;
4930
}
4931
4932
void assign_smt_expandDefinitions(Options& opts, const std::string& option, bool value) {
4933
4934
  opts.smt.expandDefinitions = value;
4935
  opts.smt.expandDefinitionsWasSetByUser = true;
4936
  Trace("options") << "user assigned option expandDefinitions = " << value << std::endl;
4937
}
4938
4939
19
void assign_smt_extRewPrep(Options& opts, const std::string& option, bool value) {
4940
4941
19
  opts.smt.extRewPrep = value;
4942
19
  opts.smt.extRewPrepWasSetByUser = true;
4943
19
  Trace("options") << "user assigned option extRewPrep = " << value << std::endl;
4944
19
}
4945
4946
7
void assign_smt_extRewPrepAgg(Options& opts, const std::string& option, bool value) {
4947
4948
7
  opts.smt.extRewPrepAgg = value;
4949
7
  opts.smt.extRewPrepAggWasSetByUser = true;
4950
7
  Trace("options") << "user assigned option extRewPrepAgg = " << value << std::endl;
4951
7
}
4952
4953
2
void assign_smt_foreignTheoryRewrite(Options& opts, const std::string& option, bool value) {
4954
4955
2
  opts.smt.foreignTheoryRewrite = value;
4956
2
  opts.smt.foreignTheoryRewriteWasSetByUser = true;
4957
2
  Trace("options") << "user assigned option foreignTheoryRewrite = " << value << std::endl;
4958
2
}
4959
4960
68
void assign_smt_iandMode(Options& opts, const std::string& option, const std::string& optionarg) {
4961
68
  auto value = stringToIandMode(optionarg);
4962
4963
68
  opts.smt.iandMode = value;
4964
68
  opts.smt.iandModeWasSetByUser = true;
4965
68
  Trace("options") << "user assigned option iandMode = " << value << std::endl;
4966
68
}
4967
4968
2
void assign_smt_interactiveMode(Options& opts, const std::string& option, bool value) {
4969
2
  opts.handler().setProduceAssertions("interactive-mode", option, value);
4970
2
  opts.smt.interactiveMode = value;
4971
2
  opts.smt.interactiveModeWasSetByUser = true;
4972
2
  Trace("options") << "user assigned option interactiveMode = " << value << std::endl;
4973
2
}
4974
4975
3
void assign_smt_doITESimp(Options& opts, const std::string& option, bool value) {
4976
4977
3
  opts.smt.doITESimp = value;
4978
3
  opts.smt.doITESimpWasSetByUser = true;
4979
3
  Trace("options") << "user assigned option doITESimp = " << value << std::endl;
4980
3
}
4981
4982
2
void assign_smt_learnedRewrite(Options& opts, const std::string& option, bool value) {
4983
4984
2
  opts.smt.learnedRewrite = value;
4985
2
  opts.smt.learnedRewriteWasSetByUser = true;
4986
2
  Trace("options") << "user assigned option learnedRewrite = " << value << std::endl;
4987
2
}
4988
4989
3
void assign_smt_minimalUnsatCores(Options& opts, const std::string& option, bool value) {
4990
4991
3
  opts.smt.minimalUnsatCores = value;
4992
3
  opts.smt.minimalUnsatCoresWasSetByUser = true;
4993
3
  Trace("options") << "user assigned option minimalUnsatCores = " << value << std::endl;
4994
3
}
4995
4996
6
void assign_smt_modelCoresMode(Options& opts, const std::string& option, const std::string& optionarg) {
4997
6
  auto value = stringToModelCoresMode(optionarg);
4998
4999
6
  opts.smt.modelCoresMode = value;
5000
6
  opts.smt.modelCoresModeWasSetByUser = true;
5001
6
  Trace("options") << "user assigned option modelCoresMode = " << value << std::endl;
5002
6
}
5003
5004
1
void assign_smt_modelUninterpPrint(Options& opts, const std::string& option, const std::string& optionarg) {
5005
1
  auto value = stringToModelUninterpPrintMode(optionarg);
5006
5007
1
  opts.smt.modelUninterpPrint = value;
5008
1
  opts.smt.modelUninterpPrintWasSetByUser = true;
5009
1
  Trace("options") << "user assigned option modelUninterpPrint = " << value << std::endl;
5010
1
}
5011
5012
1
void assign_smt_modelWitnessValue(Options& opts, const std::string& option, bool value) {
5013
5014
1
  opts.smt.modelWitnessValue = value;
5015
1
  opts.smt.modelWitnessValueWasSetByUser = true;
5016
1
  Trace("options") << "user assigned option modelWitnessValue = " << value << std::endl;
5017
1
}
5018
5019
void assign_smt_doITESimpOnRepeat(Options& opts, const std::string& option, bool value) {
5020
5021
  opts.smt.doITESimpOnRepeat = value;
5022
  opts.smt.doITESimpOnRepeatWasSetByUser = true;
5023
  Trace("options") << "user assigned option doITESimpOnRepeat = " << value << std::endl;
5024
}
5025
5026
21
void assign_smt_produceAbducts(Options& opts, const std::string& option, bool value) {
5027
5028
21
  opts.smt.produceAbducts = value;
5029
21
  opts.smt.produceAbductsWasSetByUser = true;
5030
21
  Trace("options") << "user assigned option produceAbducts = " << value << std::endl;
5031
21
}
5032
5033
26
void assign_smt_produceAssertions(Options& opts, const std::string& option, bool value) {
5034
26
  opts.handler().setProduceAssertions("produce-assertions", option, value);
5035
26
  opts.smt.produceAssertions = value;
5036
26
  opts.smt.produceAssertionsWasSetByUser = true;
5037
26
  Trace("options") << "user assigned option produceAssertions = " << value << std::endl;
5038
26
}
5039
5040
4
void assign_smt_produceAssignments(Options& opts, const std::string& option, bool value) {
5041
5042
4
  opts.smt.produceAssignments = value;
5043
4
  opts.smt.produceAssignmentsWasSetByUser = true;
5044
4
  Trace("options") << "user assigned option produceAssignments = " << value << std::endl;
5045
4
}
5046
5047
11
void assign_smt_produceInterpols(Options& opts, const std::string& option, const std::string& optionarg) {
5048
11
  auto value = stringToProduceInterpols(optionarg);
5049
5050
11
  opts.smt.produceInterpols = value;
5051
11
  opts.smt.produceInterpolsWasSetByUser = true;
5052
11
  Trace("options") << "user assigned option produceInterpols = " << value << std::endl;
5053
11
}
5054
5055
796
void assign_smt_produceModels(Options& opts, const std::string& option, bool value) {
5056
5057
796
  opts.smt.produceModels = value;
5058
796
  opts.smt.produceModelsWasSetByUser = true;
5059
796
  Trace("options") << "user assigned option produceModels = " << value << std::endl;
5060
796
}
5061
5062
31
void assign_smt_produceProofs(Options& opts, const std::string& option, bool value) {
5063
5064
31
  opts.smt.produceProofs = value;
5065
31
  opts.smt.produceProofsWasSetByUser = true;
5066
31
  Trace("options") << "user assigned option produceProofs = " << value << std::endl;
5067
31
}
5068
5069
15
void assign_smt_unsatAssumptions(Options& opts, const std::string& option, bool value) {
5070
5071
15
  opts.smt.unsatAssumptions = value;
5072
15
  opts.smt.unsatAssumptionsWasSetByUser = true;
5073
15
  Trace("options") << "user assigned option unsatAssumptions = " << value << std::endl;
5074
15
}
5075
5076
21
void assign_smt_unsatCores(Options& opts, const std::string& option, bool value) {
5077
5078
21
  opts.smt.unsatCores = value;
5079
21
  opts.smt.unsatCoresWasSetByUser = true;
5080
21
  Trace("options") << "user assigned option unsatCores = " << value << std::endl;
5081
21
}
5082
5083
4
void assign_smt_repeatSimp(Options& opts, const std::string& option, bool value) {
5084
5085
4
  opts.smt.repeatSimp = value;
5086
4
  opts.smt.repeatSimpWasSetByUser = true;
5087
4
  Trace("options") << "user assigned option repeatSimp = " << value << std::endl;
5088
4
}
5089
5090
3
void assign_smt_compressItes(Options& opts, const std::string& option, bool value) {
5091
5092
3
  opts.smt.compressItes = value;
5093
3
  opts.smt.compressItesWasSetByUser = true;
5094
3
  Trace("options") << "user assigned option compressItes = " << value << std::endl;
5095
3
}
5096
5097
void assign_smt_zombieHuntThreshold(Options& opts, const std::string& option, const std::string& optionarg) {
5098
  auto value = handleOption<uint64_t>("simp-ite-hunt-zombies", option, optionarg);
5099
5100
  opts.smt.zombieHuntThreshold = value;
5101
  opts.smt.zombieHuntThresholdWasSetByUser = true;
5102
  Trace("options") << "user assigned option zombieHuntThreshold = " << value << std::endl;
5103
}
5104
5105
void assign_smt_simplifyWithCareEnabled(Options& opts, const std::string& option, bool value) {
5106
5107
  opts.smt.simplifyWithCareEnabled = value;
5108
  opts.smt.simplifyWithCareEnabledWasSetByUser = true;
5109
  Trace("options") << "user assigned option simplifyWithCareEnabled = " << value << std::endl;
5110
}
5111
5112
32
void assign_smt_simplificationMode(Options& opts, const std::string& option, const std::string& optionarg) {
5113
32
  auto value = stringToSimplificationMode(optionarg);
5114
5115
32
  opts.smt.simplificationMode = value;
5116
32
  opts.smt.simplificationModeWasSetByUser = true;
5117
32
  Trace("options") << "user assigned option simplificationMode = " << value << std::endl;
5118
32
}
5119
5120
149
void assign_smt_solveBVAsInt(Options& opts, const std::string& option, const std::string& optionarg) {
5121
149
  auto value = stringToSolveBVAsIntMode(optionarg);
5122
5123
149
  opts.smt.solveBVAsInt = value;
5124
149
  opts.smt.solveBVAsIntWasSetByUser = true;
5125
149
  Trace("options") << "user assigned option solveBVAsInt = " << value << std::endl;
5126
149
}
5127
5128
15
void assign_smt_solveIntAsBV(Options& opts, const std::string& option, const std::string& optionarg) {
5129
15
  auto value = handleOption<uint64_t>("solve-int-as-bv", option, optionarg);
5130
5131
15
  opts.smt.solveIntAsBV = value;
5132
15
  opts.smt.solveIntAsBVWasSetByUser = true;
5133
15
  Trace("options") << "user assigned option solveIntAsBV = " << value << std::endl;
5134
15
}
5135
5136
9
void assign_smt_solveRealAsInt(Options& opts, const std::string& option, bool value) {
5137
5138
9
  opts.smt.solveRealAsInt = value;
5139
9
  opts.smt.solveRealAsIntWasSetByUser = true;
5140
9
  Trace("options") << "user assigned option solveRealAsInt = " << value << std::endl;
5141
9
}
5142
5143
26
void assign_smt_sortInference(Options& opts, const std::string& option, bool value) {
5144
5145
26
  opts.smt.sortInference = value;
5146
26
  opts.smt.sortInferenceWasSetByUser = true;
5147
26
  Trace("options") << "user assigned option sortInference = " << value << std::endl;
5148
26
}
5149
5150
void assign_smt_doStaticLearning(Options& opts, const std::string& option, bool value) {
5151
5152
  opts.smt.doStaticLearning = value;
5153
  opts.smt.doStaticLearningWasSetByUser = true;
5154
  Trace("options") << "user assigned option doStaticLearning = " << value << std::endl;
5155
}
5156
5157
182
void assign_smt_sygusOut(Options& opts, const std::string& option, const std::string& optionarg) {
5158
182
  auto value = stringToSygusSolutionOutMode(optionarg);
5159
5160
182
  opts.smt.sygusOut = value;
5161
182
  opts.smt.sygusOutWasSetByUser = true;
5162
182
  Trace("options") << "user assigned option sygusOut = " << value << std::endl;
5163
182
}
5164
5165
void assign_smt_sygusPrintCallbacks(Options& opts, const std::string& option, bool value) {
5166
5167
  opts.smt.sygusPrintCallbacks = value;
5168
  opts.smt.sygusPrintCallbacksWasSetByUser = true;
5169
  Trace("options") << "user assigned option sygusPrintCallbacks = " << value << std::endl;
5170
}
5171
5172
107
void assign_smt_unconstrainedSimp(Options& opts, const std::string& option, bool value) {
5173
5174
107
  opts.smt.unconstrainedSimp = value;
5175
107
  opts.smt.unconstrainedSimpWasSetByUser = true;
5176
107
  Trace("options") << "user assigned option unconstrainedSimp = " << value << std::endl;
5177
107
}
5178
5179
2
void assign_smt_unsatCoresMode(Options& opts, const std::string& option, const std::string& optionarg) {
5180
2
  auto value = stringToUnsatCoresMode(optionarg);
5181
5182
2
  opts.smt.unsatCoresMode = value;
5183
2
  opts.smt.unsatCoresModeWasSetByUser = true;
5184
2
  Trace("options") << "user assigned option unsatCoresMode = " << value << std::endl;
5185
2
}
5186
5187
51
void assign_strings_regExpElim(Options& opts, const std::string& option, bool value) {
5188
5189
51
  opts.strings.regExpElim = value;
5190
51
  opts.strings.regExpElimWasSetByUser = true;
5191
51
  Trace("options") << "user assigned option regExpElim = " << value << std::endl;
5192
51
}
5193
5194
20
void assign_strings_regExpElimAgg(Options& opts, const std::string& option, bool value) {
5195
5196
20
  opts.strings.regExpElimAgg = value;
5197
20
  opts.strings.regExpElimAggWasSetByUser = true;
5198
20
  Trace("options") << "user assigned option regExpElimAgg = " << value << std::endl;
5199
20
}
5200
5201
void assign_strings_stringRegExpInterMode(Options& opts, const std::string& option, const std::string& optionarg) {
5202
  auto value = stringToRegExpInterMode(optionarg);
5203
5204
  opts.strings.stringRegExpInterMode = value;
5205
  opts.strings.stringRegExpInterModeWasSetByUser = true;
5206
  Trace("options") << "user assigned option stringRegExpInterMode = " << value << std::endl;
5207
}
5208
5209
void assign_strings_stringCheckEntailLen(Options& opts, const std::string& option, bool value) {
5210
5211
  opts.strings.stringCheckEntailLen = value;
5212
  opts.strings.stringCheckEntailLenWasSetByUser = true;
5213
  Trace("options") << "user assigned option stringCheckEntailLen = " << value << std::endl;
5214
}
5215
5216
2
void assign_strings_stringEager(Options& opts, const std::string& option, bool value) {
5217
5218
2
  opts.strings.stringEager = value;
5219
2
  opts.strings.stringEagerWasSetByUser = true;
5220
2
  Trace("options") << "user assigned option stringEager = " << value << std::endl;
5221
2
}
5222
5223
void assign_strings_stringEagerEval(Options& opts, const std::string& option, bool value) {
5224
5225
  opts.strings.stringEagerEval = value;
5226
  opts.strings.stringEagerEvalWasSetByUser = true;
5227
  Trace("options") << "user assigned option stringEagerEval = " << value << std::endl;
5228
}
5229
5230
void assign_strings_stringEagerLen(Options& opts, const std::string& option, bool value) {
5231
5232
  opts.strings.stringEagerLen = value;
5233
  opts.strings.stringEagerLenWasSetByUser = true;
5234
  Trace("options") << "user assigned option stringEagerLen = " << value << std::endl;
5235
}
5236
5237
552
void assign_strings_stringExp(Options& opts, const std::string& option, bool value) {
5238
5239
552
  opts.strings.stringExp = value;
5240
552
  opts.strings.stringExpWasSetByUser = true;
5241
552
  Trace("options") << "user assigned option stringExp = " << value << std::endl;
5242
552
}
5243
5244
void assign_strings_stringFlatForms(Options& opts, const std::string& option, bool value) {
5245
5246
  opts.strings.stringFlatForms = value;
5247
  opts.strings.stringFlatFormsWasSetByUser = true;
5248
  Trace("options") << "user assigned option stringFlatForms = " << value << std::endl;
5249
}
5250
5251
51
void assign_strings_stringFMF(Options& opts, const std::string& option, bool value) {
5252
5253
51
  opts.strings.stringFMF = value;
5254
51
  opts.strings.stringFMFWasSetByUser = true;
5255
51
  Trace("options") << "user assigned option stringFMF = " << value << std::endl;
5256
51
}
5257
5258
void assign_strings_stringGuessModel(Options& opts, const std::string& option, bool value) {
5259
5260
  opts.strings.stringGuessModel = value;
5261
  opts.strings.stringGuessModelWasSetByUser = true;
5262
  Trace("options") << "user assigned option stringGuessModel = " << value << std::endl;
5263
}
5264
5265
void assign_strings_stringInferAsLemmas(Options& opts, const std::string& option, bool value) {
5266
5267
  opts.strings.stringInferAsLemmas = value;
5268
  opts.strings.stringInferAsLemmasWasSetByUser = true;
5269
  Trace("options") << "user assigned option stringInferAsLemmas = " << value << std::endl;
5270
}
5271
5272
void assign_strings_stringInferSym(Options& opts, const std::string& option, bool value) {
5273
5274
  opts.strings.stringInferSym = value;
5275
  opts.strings.stringInferSymWasSetByUser = true;
5276
  Trace("options") << "user assigned option stringInferSym = " << value << std::endl;
5277
}
5278
5279
32
void assign_strings_stringLazyPreproc(Options& opts, const std::string& option, bool value) {
5280
5281
32
  opts.strings.stringLazyPreproc = value;
5282
32
  opts.strings.stringLazyPreprocWasSetByUser = true;
5283
32
  Trace("options") << "user assigned option stringLazyPreproc = " << value << std::endl;
5284
32
}
5285
5286
void assign_strings_stringLenNorm(Options& opts, const std::string& option, bool value) {
5287
5288
  opts.strings.stringLenNorm = value;
5289
  opts.strings.stringLenNormWasSetByUser = true;
5290
  Trace("options") << "user assigned option stringLenNorm = " << value << std::endl;
5291
}
5292
5293
void assign_strings_stringLenPropCsp(Options& opts, const std::string& option, bool value) {
5294
5295
  opts.strings.stringLenPropCsp = value;
5296
  opts.strings.stringLenPropCspWasSetByUser = true;
5297
  Trace("options") << "user assigned option stringLenPropCsp = " << value << std::endl;
5298
}
5299
5300
void assign_strings_stringMinPrefixExplain(Options& opts, const std::string& option, bool value) {
5301
5302
  opts.strings.stringMinPrefixExplain = value;
5303
  opts.strings.stringMinPrefixExplainWasSetByUser = true;
5304
  Trace("options") << "user assigned option stringMinPrefixExplain = " << value << std::endl;
5305
}
5306
5307
void assign_strings_stringProcessLoopMode(Options& opts, const std::string& option, const std::string& optionarg) {
5308
  auto value = stringToProcessLoopMode(optionarg);
5309
5310
  opts.strings.stringProcessLoopMode = value;
5311
  opts.strings.stringProcessLoopModeWasSetByUser = true;
5312
  Trace("options") << "user assigned option stringProcessLoopMode = " << value << std::endl;
5313
}
5314
5315
void assign_strings_stringRExplainLemmas(Options& opts, const std::string& option, bool value) {
5316
5317
  opts.strings.stringRExplainLemmas = value;
5318
  opts.strings.stringRExplainLemmasWasSetByUser = true;
5319
  Trace("options") << "user assigned option stringRExplainLemmas = " << value << std::endl;
5320
}
5321
5322
void assign_strings_stringUnifiedVSpt(Options& opts, const std::string& option, bool value) {
5323
5324
  opts.strings.stringUnifiedVSpt = value;
5325
  opts.strings.stringUnifiedVSptWasSetByUser = true;
5326
  Trace("options") << "user assigned option stringUnifiedVSpt = " << value << std::endl;
5327
}
5328
5329
2
void assign_theory_assignFunctionValues(Options& opts, const std::string& option, bool value) {
5330
5331
2
  opts.theory.assignFunctionValues = value;
5332
2
  opts.theory.assignFunctionValuesWasSetByUser = true;
5333
2
  Trace("options") << "user assigned option assignFunctionValues = " << value << std::endl;
5334
2
}
5335
5336
void assign_theory_condenseFunctionValues(Options& opts, const std::string& option, bool value) {
5337
5338
  opts.theory.condenseFunctionValues = value;
5339
  opts.theory.condenseFunctionValuesWasSetByUser = true;
5340
  Trace("options") << "user assigned option condenseFunctionValues = " << value << std::endl;
5341
}
5342
5343
56
void assign_theory_eeMode(Options& opts, const std::string& option, const std::string& optionarg) {
5344
56
  auto value = stringToEqEngineMode(optionarg);
5345
5346
56
  opts.theory.eeMode = value;
5347
56
  opts.theory.eeModeWasSetByUser = true;
5348
56
  Trace("options") << "user assigned option eeMode = " << value << std::endl;
5349
56
}
5350
5351
void assign_theory_relevanceFilter(Options& opts, const std::string& option, bool value) {
5352
5353
  opts.theory.relevanceFilter = value;
5354
  opts.theory.relevanceFilterWasSetByUser = true;
5355
  Trace("options") << "user assigned option relevanceFilter = " << value << std::endl;
5356
}
5357
5358
void assign_theory_tcMode(Options& opts, const std::string& option, const std::string& optionarg) {
5359
  auto value = stringToTcMode(optionarg);
5360
5361
  opts.theory.tcMode = value;
5362
  opts.theory.tcModeWasSetByUser = true;
5363
  Trace("options") << "user assigned option tcMode = " << value << std::endl;
5364
}
5365
5366
5
void assign_theory_theoryOfMode(Options& opts, const std::string& option, const std::string& optionarg) {
5367
5
  auto value = stringToTheoryOfMode(optionarg);
5368
5369
5
  opts.theory.theoryOfMode = value;
5370
5
  opts.theory.theoryOfModeWasSetByUser = true;
5371
5
  Trace("options") << "user assigned option theoryOfMode = " << value << std::endl;
5372
5
}
5373
5374
void assign_uf_ufSymmetryBreaker(Options& opts, const std::string& option, bool value) {
5375
5376
  opts.uf.ufSymmetryBreaker = value;
5377
  opts.uf.ufSymmetryBreakerWasSetByUser = true;
5378
  Trace("options") << "user assigned option ufSymmetryBreaker = " << value << std::endl;
5379
}
5380
5381
void assign_uf_ufHo(Options& opts, const std::string& option, bool value) {
5382
5383
  opts.uf.ufHo = value;
5384
  opts.uf.ufHoWasSetByUser = true;
5385
  Trace("options") << "user assigned option ufHo = " << value << std::endl;
5386
}
5387
5388
void assign_uf_ufHoExt(Options& opts, const std::string& option, bool value) {
5389
5390
  opts.uf.ufHoExt = value;
5391
  opts.uf.ufHoExtWasSetByUser = true;
5392
  Trace("options") << "user assigned option ufHoExt = " << value << std::endl;
5393
}
5394
5395
void assign_uf_ufssAbortCardinality(Options& opts, const std::string& option, const std::string& optionarg) {
5396
  auto value = handleOption<int64_t>("uf-ss-abort-card", option, optionarg);
5397
5398
  opts.uf.ufssAbortCardinality = value;
5399
  opts.uf.ufssAbortCardinalityWasSetByUser = true;
5400
  Trace("options") << "user assigned option ufssAbortCardinality = " << value << std::endl;
5401
}
5402
5403
void assign_uf_ufssFairness(Options& opts, const std::string& option, bool value) {
5404
5405
  opts.uf.ufssFairness = value;
5406
  opts.uf.ufssFairnessWasSetByUser = true;
5407
  Trace("options") << "user assigned option ufssFairness = " << value << std::endl;
5408
}
5409
5410
4
void assign_uf_ufssFairnessMonotone(Options& opts, const std::string& option, bool value) {
5411
5412
4
  opts.uf.ufssFairnessMonotone = value;
5413
4
  opts.uf.ufssFairnessMonotoneWasSetByUser = true;
5414
4
  Trace("options") << "user assigned option ufssFairnessMonotone = " << value << std::endl;
5415
4
}
5416
5417
void assign_uf_ufssTotalityLimited(Options& opts, const std::string& option, const std::string& optionarg) {
5418
  auto value = handleOption<int64_t>("uf-ss-totality-limited", option, optionarg);
5419
5420
  opts.uf.ufssTotalityLimited = value;
5421
  opts.uf.ufssTotalityLimitedWasSetByUser = true;
5422
  Trace("options") << "user assigned option ufssTotalityLimited = " << value << std::endl;
5423
}
5424
5425
void assign_uf_ufssTotalitySymBreak(Options& opts, const std::string& option, bool value) {
5426
5427
  opts.uf.ufssTotalitySymBreak = value;
5428
  opts.uf.ufssTotalitySymBreakWasSetByUser = true;
5429
  Trace("options") << "user assigned option ufssTotalitySymBreak = " << value << std::endl;
5430
}
5431
5432
7
void assign_uf_ufssMode(Options& opts, const std::string& option, const std::string& optionarg) {
5433
7
  auto value = stringToUfssMode(optionarg);
5434
5435
7
  opts.uf.ufssMode = value;
5436
7
  opts.uf.ufssModeWasSetByUser = true;
5437
7
  Trace("options") << "user assigned option ufssMode = " << value << std::endl;
5438
7
}
5439
// clang-format off
5440
5441
8808
void parseInternal(Options& opts, int argc,
5442
                                    char* argv[],
5443
                                    std::vector<std::string>& nonoptions)
5444
{
5445
8808
  Assert(argv != nullptr);
5446
8808
  if(Debug.isOn("options")) {
5447
    Debug("options") << "starting a new parseInternal with "
5448
                     << argc << " arguments" << std::endl;
5449
    for( int i = 0; i < argc ; i++ ){
5450
      Assert(argv[i] != NULL);
5451
      Debug("options") << "  argv[" << i << "] = " << argv[i] << std::endl;
5452
    }
5453
  }
5454
5455
  // Reset getopt(), in the case of multiple calls to parse().
5456
  // This can be = 1 in newer GNU getopt, but older (< 2007) require = 0.
5457
8808
  optind = 0;
5458
#if HAVE_DECL_OPTRESET
5459
  optreset = 1; // on BSD getopt() (e.g. Mac OS), might need this
5460
#endif /* HAVE_DECL_OPTRESET */
5461
5462
  // We must parse the binary name, which is manually ignored below. Setting
5463
  // this to 1 leads to incorrect behavior on some platforms.
5464
8808
  int main_optind = 0;
5465
  int old_optind;
5466
5467
5468
  while(true) { // Repeat Forever
5469
5470
24280
    optopt = 0;
5471
32248
    std::string option, optionarg;
5472
5473
24280
    optind = main_optind;
5474
24280
    old_optind = main_optind;
5475
5476
    // If we encounter an element that is not at zero and does not start
5477
    // with a "-", this is a non-option. We consume this element as a
5478
    // non-option.
5479
39688
    if (main_optind > 0 && main_optind < argc &&
5480
9275
        argv[main_optind][0] != '-') {
5481
12266
      Debug("options") << "enqueueing " << argv[main_optind]
5482
6133
                       << " as a non-option." << std::endl;
5483
6133
      nonoptions.push_back(argv[main_optind]);
5484
6133
      ++main_optind;
5485
6133
      continue;
5486
    }
5487
5488
5489
36294
    Debug("options") << "[ before, main_optind == " << main_optind << " ]"
5490
18147
                     << std::endl;
5491
18147
    Debug("options") << "[ before, optind == " << optind << " ]" << std::endl;
5492
36294
    Debug("options") << "[ argc == " << argc << ", argv == " << argv << " ]"
5493
18147
                     << std::endl;
5494
    // clang-format off
5495
18147
    int c = getopt_long(argc, argv,
5496
                        "+:d:iL:o:qt:vhs:Vm",
5497
18147
                        cmdlineOptions, NULL);
5498
    // clang-format on
5499
5500
18147
    main_optind = optind;
5501
5502
36294
    Debug("options") << "[ got " << int(c) << " (" << char(c) << ") ]"
5503
18147
                     << "[ next option will be at pos: " << optind << " ]"
5504
18147
                     << std::endl;
5505
5506
    // The initial getopt_long call should always determine that argv[0]
5507
    // is not an option and returns -1. We always manually advance beyond
5508
    // this element.
5509
19519
    if ( old_optind == 0  && c == -1 ) {
5510
1372
      Assert(main_optind > 0);
5511
1372
      continue;
5512
    }
5513
5514
16775
    if ( c == -1 ) {
5515
6197
      if(Debug.isOn("options")) {
5516
        Debug("options") << "done with option parsing" << std::endl;
5517
        for(int index = optind; index < argc; ++index) {
5518
          Debug("options") << "remaining " << argv[index] << std::endl;
5519
        }
5520
      }
5521
6197
      break;
5522
    }
5523
5524
10578
    option = argv[old_optind == 0 ? 1 : old_optind];
5525
10578
    optionarg = (optarg == NULL) ? "" : optarg;
5526
5527
21156
    Debug("preemptGetopt") << "processing option " << c
5528
10578
                           << " (`" << char(c) << "'), " << option << std::endl;
5529
5530
    // clang-format off
5531
10578
    switch(c)
5532
    {
5533
case 256: // --approx-branch-depth=N
5534
        assign_arith_maxApproxDepth(opts, option, optionarg);
5535
      break;
5536
2
    case 257: // --arith-brab
5537
2
        assign_arith_brabTest(opts, option, true);
5538
2
      break;
5539
2
    case 258:// --no-arith-brab
5540
2
        assign_arith_brabTest(opts, option, false);
5541
2
      break;
5542
    case 259: // --arith-cong-man
5543
        assign_arith_arithCongMan(opts, option, true);
5544
      break;
5545
    case 260:// --no-arith-cong-man
5546
        assign_arith_arithCongMan(opts, option, false);
5547
      break;
5548
6
    case 261: // --arith-eq-solver
5549
6
        assign_arith_arithEqSolver(opts, option, true);
5550
6
      break;
5551
    case 262:// --no-arith-eq-solver
5552
        assign_arith_arithEqSolver(opts, option, false);
5553
      break;
5554
    case 263: // --arith-no-partial-fun
5555
        assign_arith_arithNoPartialFun(opts, option, true);
5556
      break;
5557
    case 264:// --no-arith-no-partial-fun
5558
        assign_arith_arithNoPartialFun(opts, option, false);
5559
      break;
5560
    case 265: // --arith-prop-clauses=N
5561
        assign_arith_arithPropAsLemmaLength(opts, option, optionarg);
5562
      break;
5563
    case 266: // --arith-prop=MODE
5564
        assign_arith_arithPropagationMode(opts, option, optionarg);
5565
      break;
5566
4
    case 267: // --arith-rewrite-equalities
5567
4
        assign_arith_arithRewriteEq(opts, option, true);
5568
4
      break;
5569
    case 268:// --no-arith-rewrite-equalities
5570
        assign_arith_arithRewriteEq(opts, option, false);
5571
      break;
5572
    case 269: // --collect-pivot-stats
5573
        assign_arith_collectPivots(opts, option, true);
5574
      break;
5575
    case 270:// --no-collect-pivot-stats
5576
        assign_arith_collectPivots(opts, option, false);
5577
      break;
5578
    case 271: // --cut-all-bounded
5579
        assign_arith_doCutAllBounded(opts, option, true);
5580
      break;
5581
    case 272:// --no-cut-all-bounded
5582
        assign_arith_doCutAllBounded(opts, option, false);
5583
      break;
5584
    case 273: // --dio-decomps
5585
        assign_arith_exportDioDecompositions(opts, option, true);
5586
      break;
5587
    case 274:// --no-dio-decomps
5588
        assign_arith_exportDioDecompositions(opts, option, false);
5589
      break;
5590
    case 275: // --dio-repeat
5591
        assign_arith_dioRepeat(opts, option, true);
5592
      break;
5593
    case 276:// --no-dio-repeat
5594
        assign_arith_dioRepeat(opts, option, false);
5595
      break;
5596
    case 277: // --dio-solver
5597
        assign_arith_arithDioSolver(opts, option, true);
5598
      break;
5599
    case 278:// --no-dio-solver
5600
        assign_arith_arithDioSolver(opts, option, false);
5601
      break;
5602
    case 279: // --dio-turns=N
5603
        assign_arith_dioSolverTurns(opts, option, optionarg);
5604
      break;
5605
    case 280: // --error-selection-rule=RULE
5606
        assign_arith_arithErrorSelectionRule(opts, option, optionarg);
5607
      break;
5608
    case 281: // --fc-penalties
5609
        assign_arith_havePenalties(opts, option, true);
5610
      break;
5611
    case 282:// --no-fc-penalties
5612
        assign_arith_havePenalties(opts, option, false);
5613
      break;
5614
    case 283: // --heuristic-pivots=N
5615
        assign_arith_arithHeuristicPivots(opts, option, optionarg);
5616
      break;
5617
    case 284: // --lemmas-on-replay-failure
5618
        assign_arith_replayFailureLemma(opts, option, true);
5619
      break;
5620
    case 285:// --no-lemmas-on-replay-failure
5621
        assign_arith_replayFailureLemma(opts, option, false);
5622
      break;
5623
    case 286: // --maxCutsInContext=N
5624
        assign_arith_maxCutsInContext(opts, option, optionarg);
5625
      break;
5626
8
    case 287: // --miplib-trick
5627
8
        assign_arith_arithMLTrick(opts, option, true);
5628
8
      break;
5629
    case 288:// --no-miplib-trick
5630
        assign_arith_arithMLTrick(opts, option, false);
5631
      break;
5632
    case 289: // --miplib-trick-subs=N
5633
        assign_arith_arithMLTrickSubstitutions(opts, option, optionarg);
5634
      break;
5635
    case 290: // --new-prop
5636
        assign_arith_newProp(opts, option, true);
5637
      break;
5638
8
    case 291:// --no-new-prop
5639
8
        assign_arith_newProp(opts, option, false);
5640
8
      break;
5641
5
    case 292: // --nl-cad
5642
5
        assign_arith_nlCad(opts, option, true);
5643
5
      break;
5644
    case 293:// --no-nl-cad
5645
        assign_arith_nlCad(opts, option, false);
5646
      break;
5647
    case 294: // --nl-cad-initial
5648
        assign_arith_nlCadUseInitial(opts, option, true);
5649
      break;
5650
    case 295:// --no-nl-cad-initial
5651
        assign_arith_nlCadUseInitial(opts, option, false);
5652
      break;
5653
    case 296: // --nl-cad-lift=MODE
5654
        assign_arith_nlCadLifting(opts, option, optionarg);
5655
      break;
5656
    case 297: // --nl-cad-proj=MODE
5657
        assign_arith_nlCadProjection(opts, option, optionarg);
5658
      break;
5659
    case 298: // --nl-ext-ent-conf
5660
        assign_arith_nlExtEntailConflicts(opts, option, true);
5661
      break;
5662
    case 299:// --no-nl-ext-ent-conf
5663
        assign_arith_nlExtEntailConflicts(opts, option, false);
5664
      break;
5665
    case 300: // --nl-ext-factor
5666
        assign_arith_nlExtFactor(opts, option, true);
5667
      break;
5668
    case 301:// --no-nl-ext-factor
5669
        assign_arith_nlExtFactor(opts, option, false);
5670
      break;
5671
    case 302: // --nl-ext-inc-prec
5672
        assign_arith_nlExtIncPrecision(opts, option, true);
5673
      break;
5674
2
    case 303:// --no-nl-ext-inc-prec
5675
2
        assign_arith_nlExtIncPrecision(opts, option, false);
5676
2
      break;
5677
2
    case 304: // --nl-ext-purify
5678
2
        assign_arith_nlExtPurify(opts, option, true);
5679
2
      break;
5680
    case 305:// --no-nl-ext-purify
5681
        assign_arith_nlExtPurify(opts, option, false);
5682
      break;
5683
    case 306: // --nl-ext-rbound
5684
        assign_arith_nlExtResBound(opts, option, true);
5685
      break;
5686
    case 307:// --no-nl-ext-rbound
5687
        assign_arith_nlExtResBound(opts, option, false);
5688
      break;
5689
    case 308: // --nl-ext-rewrite
5690
        assign_arith_nlExtRewrites(opts, option, true);
5691
      break;
5692
    case 309:// --no-nl-ext-rewrite
5693
        assign_arith_nlExtRewrites(opts, option, false);
5694
      break;
5695
    case 310: // --nl-ext-split-zero
5696
        assign_arith_nlExtSplitZero(opts, option, true);
5697
      break;
5698
    case 311:// --no-nl-ext-split-zero
5699
        assign_arith_nlExtSplitZero(opts, option, false);
5700
      break;
5701
    case 312: // --nl-ext-tf-taylor-deg=N
5702
        assign_arith_nlExtTfTaylorDegree(opts, option, optionarg);
5703
      break;
5704
39
    case 313: // --nl-ext-tf-tplanes
5705
39
        assign_arith_nlExtTfTangentPlanes(opts, option, true);
5706
39
      break;
5707
2
    case 314:// --no-nl-ext-tf-tplanes
5708
2
        assign_arith_nlExtTfTangentPlanes(opts, option, false);
5709
2
      break;
5710
42
    case 315: // --nl-ext-tplanes
5711
42
        assign_arith_nlExtTangentPlanes(opts, option, true);
5712
42
      break;
5713
    case 316:// --no-nl-ext-tplanes
5714
        assign_arith_nlExtTangentPlanes(opts, option, false);
5715
      break;
5716
    case 317: // --nl-ext-tplanes-interleave
5717
        assign_arith_nlExtTangentPlanesInterleave(opts, option, true);
5718
      break;
5719
    case 318:// --no-nl-ext-tplanes-interleave
5720
        assign_arith_nlExtTangentPlanesInterleave(opts, option, false);
5721
      break;
5722
125
    case 319: // --nl-ext=MODE
5723
125
        assign_arith_nlExt(opts, option, optionarg);
5724
125
      break;
5725
2
    case 320: // --nl-icp
5726
2
        assign_arith_nlICP(opts, option, true);
5727
2
      break;
5728
    case 321:// --no-nl-icp
5729
        assign_arith_nlICP(opts, option, false);
5730
      break;
5731
10
    case 322: // --nl-rlv=MODE
5732
10
        assign_arith_nlRlvMode(opts, option, optionarg);
5733
10
      break;
5734
2
    case 323: // --pb-rewrites
5735
2
        assign_arith_pbRewrites(opts, option, true);
5736
2
      break;
5737
    case 324:// --no-pb-rewrites
5738
        assign_arith_pbRewrites(opts, option, false);
5739
      break;
5740
    case 325: // --pivot-threshold=N
5741
        assign_arith_arithPivotThreshold(opts, option, optionarg);
5742
      break;
5743
    case 326: // --pp-assert-max-sub-size=N
5744
        assign_arith_ppAssertMaxSubSize(opts, option, optionarg);
5745
      break;
5746
    case 327: // --prop-row-length=N
5747
        assign_arith_arithPropagateMaxLength(opts, option, optionarg);
5748
      break;
5749
    case 328: // --replay-early-close-depth=N
5750
        assign_arith_replayEarlyCloseDepths(opts, option, optionarg);
5751
      break;
5752
    case 329: // --replay-failure-penalty=N
5753
        assign_arith_replayFailurePenalty(opts, option, optionarg);
5754
      break;
5755
    case 330: // --replay-lemma-reject-cut=N
5756
        assign_arith_lemmaRejectCutSize(opts, option, optionarg);
5757
      break;
5758
    case 331: // --replay-num-err-penalty=N
5759
        assign_arith_replayNumericFailurePenalty(opts, option, optionarg);
5760
      break;
5761
    case 332: // --replay-reject-cut=N
5762
        assign_arith_replayRejectCutSize(opts, option, optionarg);
5763
      break;
5764
    case 333: // --replay-soi-major-threshold-pen=N
5765
        assign_arith_soiApproxMajorFailurePen(opts, option, optionarg);
5766
      break;
5767
    case 334: // --replay-soi-major-threshold=T
5768
        assign_arith_soiApproxMajorFailure(opts, option, optionarg);
5769
      break;
5770
    case 335: // --replay-soi-minor-threshold-pen=N
5771
        assign_arith_soiApproxMinorFailurePen(opts, option, optionarg);
5772
      break;
5773
    case 336: // --replay-soi-minor-threshold=T
5774
        assign_arith_soiApproxMinorFailure(opts, option, optionarg);
5775
      break;
5776
    case 337: // --restrict-pivots
5777
        assign_arith_restrictedPivots(opts, option, true);
5778
      break;
5779
    case 338:// --no-restrict-pivots
5780
        assign_arith_restrictedPivots(opts, option, false);
5781
      break;
5782
    case 339: // --revert-arith-models-on-unsat
5783
        assign_arith_revertArithModels(opts, option, true);
5784
      break;
5785
    case 340:// --no-revert-arith-models-on-unsat
5786
        assign_arith_revertArithModels(opts, option, false);
5787
      break;
5788
    case 341: // --rr-turns=N
5789
        assign_arith_rrTurns(opts, option, optionarg);
5790
      break;
5791
    case 342: // --se-solve-int
5792
        assign_arith_trySolveIntStandardEffort(opts, option, true);
5793
      break;
5794
    case 343:// --no-se-solve-int
5795
        assign_arith_trySolveIntStandardEffort(opts, option, false);
5796
      break;
5797
    case 344: // --simplex-check-period=N
5798
        assign_arith_arithSimplexCheckPeriod(opts, option, optionarg);
5799
      break;
5800
    case 345: // --soi-qe
5801
        assign_arith_soiQuickExplain(opts, option, true);
5802
      break;
5803
    case 346:// --no-soi-qe
5804
        assign_arith_soiQuickExplain(opts, option, false);
5805
      break;
5806
    case 347: // --standard-effort-variable-order-pivots=N
5807
        assign_arith_arithStandardCheckVarOrderPivots(opts, option, optionarg);
5808
      break;
5809
    case 348: // --unate-lemmas=MODE
5810
        assign_arith_arithUnateLemmaMode(opts, option, optionarg);
5811
      break;
5812
    case 349: // --use-approx
5813
        assign_arith_useApprox(opts, option, true);
5814
      break;
5815
    case 350:// --no-use-approx
5816
        assign_arith_useApprox(opts, option, false);
5817
      break;
5818
    case 351: // --use-fcsimplex
5819
        assign_arith_useFC(opts, option, true);
5820
      break;
5821
    case 352:// --no-use-fcsimplex
5822
        assign_arith_useFC(opts, option, false);
5823
      break;
5824
    case 353: // --use-soi
5825
        assign_arith_useSOI(opts, option, true);
5826
      break;
5827
    case 354:// --no-use-soi
5828
        assign_arith_useSOI(opts, option, false);
5829
      break;
5830
    case 355: // --arrays-config=N
5831
        assign_arrays_arraysConfig(opts, option, optionarg);
5832
      break;
5833
    case 356: // --arrays-eager-index
5834
        assign_arrays_arraysEagerIndexSplitting(opts, option, true);
5835
      break;
5836
    case 357:// --no-arrays-eager-index
5837
        assign_arrays_arraysEagerIndexSplitting(opts, option, false);
5838
      break;
5839
    case 358: // --arrays-eager-lemmas
5840
        assign_arrays_arraysEagerLemmas(opts, option, true);
5841
      break;
5842
    case 359:// --no-arrays-eager-lemmas
5843
        assign_arrays_arraysEagerLemmas(opts, option, false);
5844
      break;
5845
3
    case 360: // --arrays-exp
5846
3
        assign_arrays_arraysExp(opts, option, true);
5847
3
      break;
5848
    case 361:// --no-arrays-exp
5849
        assign_arrays_arraysExp(opts, option, false);
5850
      break;
5851
    case 362: // --arrays-model-based
5852
        assign_arrays_arraysModelBased(opts, option, true);
5853
      break;
5854
    case 363:// --no-arrays-model-based
5855
        assign_arrays_arraysModelBased(opts, option, false);
5856
      break;
5857
    case 364: // --arrays-optimize-linear
5858
        assign_arrays_arraysOptimizeLinear(opts, option, true);
5859
      break;
5860
    case 365:// --no-arrays-optimize-linear
5861
        assign_arrays_arraysOptimizeLinear(opts, option, false);
5862
      break;
5863
    case 366: // --arrays-prop=N
5864
        assign_arrays_arraysPropagate(opts, option, optionarg);
5865
      break;
5866
    case 367: // --arrays-reduce-sharing
5867
        assign_arrays_arraysReduceSharing(opts, option, true);
5868
      break;
5869
    case 368:// --no-arrays-reduce-sharing
5870
        assign_arrays_arraysReduceSharing(opts, option, false);
5871
      break;
5872
    case 369: // --arrays-weak-equiv
5873
        assign_arrays_arraysWeakEquivalence(opts, option, true);
5874
      break;
5875
    case 370:// --no-arrays-weak-equiv
5876
        assign_arrays_arraysWeakEquivalence(opts, option, false);
5877
      break;
5878
    case 'd':
5879
    case 371: // --debug=TAG
5880
    opts.handler().enableDebugTag("debug", option, optionarg);
5881
      break;
5882
    case 372: // --err=erroutput
5883
    case 373: // --diagnostic-output-channel
5884
        assign_base_err(opts, option, optionarg);
5885
      break;
5886
    case 374: // --in=input
5887
        assign_base_in(opts, option, optionarg);
5888
      break;
5889
664
    case 'i':
5890
    case 375: // --incremental
5891
664
        assign_base_incrementalSolving(opts, option, true);
5892
664
      break;
5893
    case 376:// --no-incremental
5894
        assign_base_incrementalSolving(opts, option, false);
5895
      break;
5896
227
    case 'L':
5897
    case 377: // --lang=LANG
5898
    case 378: // --input-language
5899
227
        assign_base_inputLanguage(opts, option, optionarg);
5900
227
      break;
5901
    case 379: // --out=output
5902
    case 380: // --regular-output-channel
5903
        assign_base_out(opts, option, optionarg);
5904
      break;
5905
64
    case 381: // --output-lang=LANG
5906
    case 382: // --output-language
5907
64
        assign_base_outputLanguage(opts, option, optionarg);
5908
64
      break;
5909
3
    case 'o':
5910
    case 383: // --output=TAG
5911
3
    opts.handler().enableOutputTag("output", option, optionarg);
5912
3
      break;
5913
    case 384: // --parse-only
5914
        assign_base_parseOnly(opts, option, true);
5915
      break;
5916
    case 385:// --no-parse-only
5917
        assign_base_parseOnly(opts, option, false);
5918
      break;
5919
3
    case 386: // --preprocess-only
5920
3
        assign_base_preprocessOnly(opts, option, true);
5921
3
      break;
5922
    case 387:// --no-preprocess-only
5923
        assign_base_preprocessOnly(opts, option, false);
5924
      break;
5925
2
    case 388: // --print-success
5926
2
        assign_base_printSuccess(opts, option, true);
5927
2
      break;
5928
    case 389:// --no-print-success
5929
        assign_base_printSuccess(opts, option, false);
5930
      break;
5931
190
    case 'q':
5932
    case 390: // --quiet
5933
190
    opts.handler().decreaseVerbosity("quiet", option);
5934
190
      break;
5935
    case 391: // --rlimit-per=N
5936
    case 392: // --reproducible-resource-limit
5937
        assign_base_perCallResourceLimit(opts, option, optionarg);
5938
      break;
5939
    case 393: // --rlimit=N
5940
        assign_base_cumulativeResourceLimit(opts, option, optionarg);
5941
      break;
5942
    case 394: // --rweight=VAL=N
5943
    opts.handler().setResourceWeight("rweight", option, optionarg);
5944
      break;
5945
    case 395: // --stats
5946
        assign_base_statistics(opts, option, true);
5947
      break;
5948
    case 396:// --no-stats
5949
        assign_base_statistics(opts, option, false);
5950
      break;
5951
    case 397: // --stats-all
5952
        assign_base_statisticsAll(opts, option, true);
5953
      break;
5954
    case 398:// --no-stats-all
5955
        assign_base_statisticsAll(opts, option, false);
5956
      break;
5957
    case 399: // --stats-every-query
5958
        assign_base_statisticsEveryQuery(opts, option, true);
5959
      break;
5960
    case 400:// --no-stats-every-query
5961
        assign_base_statisticsEveryQuery(opts, option, false);
5962
      break;
5963
    case 401: // --stats-expert
5964
        assign_base_statisticsExpert(opts, option, true);
5965
      break;
5966
    case 402:// --no-stats-expert
5967
        assign_base_statisticsExpert(opts, option, false);
5968
      break;
5969
6
    case 403: // --tlimit-per=MS
5970
6
        assign_base_perCallMillisecondLimit(opts, option, optionarg);
5971
6
      break;
5972
    case 404: // --tlimit=MS
5973
        assign_base_cumulativeMillisecondLimit(opts, option, optionarg);
5974
      break;
5975
    case 't':
5976
    case 405: // --trace=TAG
5977
    opts.handler().enableTraceTag("trace", option, optionarg);
5978
      break;
5979
3
    case 'v':
5980
    case 406: // --verbose
5981
3
    opts.handler().increaseVerbosity("verbose", option);
5982
3
      break;
5983
    case 407: // --verbosity=N
5984
        assign_base_verbosity(opts, option, optionarg);
5985
      break;
5986
    case 408: // --bitblast-aig
5987
        assign_bv_bitvectorAig(opts, option, true);
5988
      break;
5989
    case 409:// --no-bitblast-aig
5990
        assign_bv_bitvectorAig(opts, option, false);
5991
      break;
5992
38
    case 410: // --bitblast=MODE
5993
38
        assign_bv_bitblastMode(opts, option, optionarg);
5994
38
      break;
5995
    case 411: // --bitwise-eq
5996
        assign_bv_bitwiseEq(opts, option, true);
5997
      break;
5998
    case 412:// --no-bitwise-eq
5999
        assign_bv_bitwiseEq(opts, option, false);
6000
      break;
6001
12
    case 413: // --bool-to-bv=MODE
6002
12
        assign_bv_boolToBitvector(opts, option, optionarg);
6003
12
      break;
6004
4
    case 414: // --bv-abstraction
6005
4
        assign_bv_bvAbstraction(opts, option, true);
6006
4
      break;
6007
    case 415:// --no-bv-abstraction
6008
        assign_bv_bvAbstraction(opts, option, false);
6009
      break;
6010
    case 416: // --bv-aig-simp=COMMAND
6011
        assign_bv_bitvectorAigSimplifications(opts, option, optionarg);
6012
      break;
6013
    case 417: // --bv-alg-extf
6014
        assign_bv_bvAlgExtf(opts, option, true);
6015
      break;
6016
    case 418:// --no-bv-alg-extf
6017
        assign_bv_bvAlgExtf(opts, option, false);
6018
      break;
6019
    case 419: // --bv-algebraic-budget=N
6020
        assign_bv_bitvectorAlgebraicBudget(opts, option, optionarg);
6021
      break;
6022
    case 420: // --bv-algebraic-solver
6023
        assign_bv_bitvectorAlgebraicSolver(opts, option, true);
6024
      break;
6025
    case 421:// --no-bv-algebraic-solver
6026
        assign_bv_bitvectorAlgebraicSolver(opts, option, false);
6027
      break;
6028
6
    case 422: // --bv-assert-input
6029
6
        assign_bv_bvAssertInput(opts, option, true);
6030
6
      break;
6031
    case 423:// --no-bv-assert-input
6032
        assign_bv_bvAssertInput(opts, option, false);
6033
      break;
6034
    case 424: // --bv-eager-explanations
6035
        assign_bv_bvEagerExplanations(opts, option, true);
6036
      break;
6037
    case 425:// --no-bv-eager-explanations
6038
        assign_bv_bvEagerExplanations(opts, option, false);
6039
      break;
6040
    case 426: // --bv-eq-solver
6041
        assign_bv_bitvectorEqualitySolver(opts, option, true);
6042
      break;
6043
2
    case 427:// --no-bv-eq-solver
6044
2
        assign_bv_bitvectorEqualitySolver(opts, option, false);
6045
2
      break;
6046
    case 428: // --bv-extract-arith
6047
        assign_bv_bvExtractArithRewrite(opts, option, true);
6048
      break;
6049
    case 429:// --no-bv-extract-arith
6050
        assign_bv_bvExtractArithRewrite(opts, option, false);
6051
      break;
6052
    case 430: // --bv-gauss-elim
6053
        assign_bv_bvGaussElim(opts, option, true);
6054
      break;
6055
    case 431:// --no-bv-gauss-elim
6056
        assign_bv_bvGaussElim(opts, option, false);
6057
      break;
6058
    case 432: // --bv-inequality-solver
6059
        assign_bv_bitvectorInequalitySolver(opts, option, true);
6060
      break;
6061
    case 433:// --no-bv-inequality-solver
6062
        assign_bv_bitvectorInequalitySolver(opts, option, false);
6063
      break;
6064
2
    case 434: // --bv-intro-pow2
6065
2
        assign_bv_bvIntroducePow2(opts, option, true);
6066
2
      break;
6067
    case 435:// --no-bv-intro-pow2
6068
        assign_bv_bvIntroducePow2(opts, option, false);
6069
      break;
6070
    case 436: // --bv-num-func=N
6071
        assign_bv_bvNumFunc(opts, option, optionarg);
6072
      break;
6073
2
    case 437: // --bv-print-consts-as-indexed-symbols
6074
2
        assign_bv_bvPrintConstsAsIndexedSymbols(opts, option, true);
6075
2
      break;
6076
    case 438:// --no-bv-print-consts-as-indexed-symbols
6077
        assign_bv_bvPrintConstsAsIndexedSymbols(opts, option, false);
6078
      break;
6079
    case 439: // --bv-propagate
6080
        assign_bv_bitvectorPropagate(opts, option, true);
6081
      break;
6082
    case 440:// --no-bv-propagate
6083
        assign_bv_bitvectorPropagate(opts, option, false);
6084
      break;
6085
    case 441: // --bv-quick-xplain
6086
        assign_bv_bitvectorQuickXplain(opts, option, true);
6087
      break;
6088
    case 442:// --no-bv-quick-xplain
6089
        assign_bv_bitvectorQuickXplain(opts, option, false);
6090
      break;
6091
14
    case 443: // --bv-sat-solver=MODE
6092
14
        assign_bv_bvSatSolver(opts, option, optionarg);
6093
14
      break;
6094
    case 444: // --bv-skolemize
6095
        assign_bv_skolemizeArguments(opts, option, true);
6096
      break;
6097
    case 445:// --no-bv-skolemize
6098
        assign_bv_skolemizeArguments(opts, option, false);
6099
      break;
6100
44
    case 446: // --bv-solver=MODE
6101
44
        assign_bv_bvSolver(opts, option, optionarg);
6102
44
      break;
6103
10
    case 447: // --bv-to-bool
6104
10
        assign_bv_bitvectorToBool(opts, option, true);
6105
10
      break;
6106
    case 448:// --no-bv-to-bool
6107
        assign_bv_bitvectorToBool(opts, option, false);
6108
      break;
6109
    case 449: // --cdt-bisimilar
6110
        assign_datatypes_cdtBisimilar(opts, option, true);
6111
      break;
6112
    case 450:// --no-cdt-bisimilar
6113
        assign_datatypes_cdtBisimilar(opts, option, false);
6114
      break;
6115
    case 451: // --dt-binary-split
6116
        assign_datatypes_dtBinarySplit(opts, option, true);
6117
      break;
6118
    case 452:// --no-dt-binary-split
6119
        assign_datatypes_dtBinarySplit(opts, option, false);
6120
      break;
6121
    case 453: // --dt-blast-splits
6122
        assign_datatypes_dtBlastSplits(opts, option, true);
6123
      break;
6124
    case 454:// --no-dt-blast-splits
6125
        assign_datatypes_dtBlastSplits(opts, option, false);
6126
      break;
6127
    case 455: // --dt-cyclic
6128
        assign_datatypes_dtCyclic(opts, option, true);
6129
      break;
6130
    case 456:// --no-dt-cyclic
6131
        assign_datatypes_dtCyclic(opts, option, false);
6132
      break;
6133
    case 457: // --dt-force-assignment
6134
        assign_datatypes_dtForceAssignment(opts, option, true);
6135
      break;
6136
    case 458:// --no-dt-force-assignment
6137
        assign_datatypes_dtForceAssignment(opts, option, false);
6138
      break;
6139
    case 459: // --dt-infer-as-lemmas
6140
        assign_datatypes_dtInferAsLemmas(opts, option, true);
6141
      break;
6142
    case 460:// --no-dt-infer-as-lemmas
6143
        assign_datatypes_dtInferAsLemmas(opts, option, false);
6144
      break;
6145
10
    case 461: // --dt-nested-rec
6146
10
        assign_datatypes_dtNestedRec(opts, option, true);
6147
10
      break;
6148
    case 462:// --no-dt-nested-rec
6149
        assign_datatypes_dtNestedRec(opts, option, false);
6150
      break;
6151
    case 463: // --dt-polite-optimize
6152
        assign_datatypes_dtPoliteOptimize(opts, option, true);
6153
      break;
6154
    case 464:// --no-dt-polite-optimize
6155
        assign_datatypes_dtPoliteOptimize(opts, option, false);
6156
      break;
6157
5
    case 465: // --dt-rewrite-error-sel
6158
5
        assign_datatypes_dtRewriteErrorSel(opts, option, true);
6159
5
      break;
6160
    case 466:// --no-dt-rewrite-error-sel
6161
        assign_datatypes_dtRewriteErrorSel(opts, option, false);
6162
      break;
6163
    case 467: // --dt-share-sel
6164
        assign_datatypes_dtSharedSelectors(opts, option, true);
6165
      break;
6166
    case 468:// --no-dt-share-sel
6167
        assign_datatypes_dtSharedSelectors(opts, option, false);
6168
      break;
6169
11
    case 469: // --sygus-abort-size=N
6170
11
        assign_datatypes_sygusAbortSize(opts, option, optionarg);
6171
11
      break;
6172
    case 470: // --sygus-fair-max
6173
        assign_datatypes_sygusFairMax(opts, option, true);
6174
      break;
6175
    case 471:// --no-sygus-fair-max
6176
        assign_datatypes_sygusFairMax(opts, option, false);
6177
      break;
6178
2
    case 472: // --sygus-fair=MODE
6179
2
        assign_datatypes_sygusFair(opts, option, optionarg);
6180
2
      break;
6181
    case 473: // --sygus-sym-break
6182
        assign_datatypes_sygusSymBreak(opts, option, true);
6183
      break;
6184
6
    case 474:// --no-sygus-sym-break
6185
6
        assign_datatypes_sygusSymBreak(opts, option, false);
6186
6
      break;
6187
    case 475: // --sygus-sym-break-agg
6188
        assign_datatypes_sygusSymBreakAgg(opts, option, true);
6189
      break;
6190
    case 476:// --no-sygus-sym-break-agg
6191
        assign_datatypes_sygusSymBreakAgg(opts, option, false);
6192
      break;
6193
    case 477: // --sygus-sym-break-dynamic
6194
        assign_datatypes_sygusSymBreakDynamic(opts, option, true);
6195
      break;
6196
    case 478:// --no-sygus-sym-break-dynamic
6197
        assign_datatypes_sygusSymBreakDynamic(opts, option, false);
6198
      break;
6199
    case 479: // --sygus-sym-break-lazy
6200
        assign_datatypes_sygusSymBreakLazy(opts, option, true);
6201
      break;
6202
    case 480:// --no-sygus-sym-break-lazy
6203
        assign_datatypes_sygusSymBreakLazy(opts, option, false);
6204
      break;
6205
    case 481: // --sygus-sym-break-pbe
6206
        assign_datatypes_sygusSymBreakPbe(opts, option, true);
6207
      break;
6208
    case 482:// --no-sygus-sym-break-pbe
6209
        assign_datatypes_sygusSymBreakPbe(opts, option, false);
6210
      break;
6211
    case 483: // --sygus-sym-break-rlv
6212
        assign_datatypes_sygusSymBreakRlv(opts, option, true);
6213
      break;
6214
    case 484:// --no-sygus-sym-break-rlv
6215
        assign_datatypes_sygusSymBreakRlv(opts, option, false);
6216
      break;
6217
    case 485: // --decision-random-weight=N
6218
        assign_decision_decisionRandomWeight(opts, option, optionarg);
6219
      break;
6220
    case 486: // --decision-threshold=N
6221
        assign_decision_decisionThreshold(opts, option, optionarg);
6222
      break;
6223
    case 487: // --decision-use-weight
6224
        assign_decision_decisionUseWeight(opts, option, true);
6225
      break;
6226
    case 488:// --no-decision-use-weight
6227
        assign_decision_decisionUseWeight(opts, option, false);
6228
      break;
6229
    case 489: // --decision-weight-internal=HOW
6230
        assign_decision_decisionWeightInternal(opts, option, optionarg);
6231
      break;
6232
94
    case 490: // --decision=MODE
6233
    case 491: // --decision-mode
6234
94
        assign_decision_decisionMode(opts, option, optionarg);
6235
94
      break;
6236
3
    case 492: // --jh-rlv-order
6237
3
        assign_decision_jhRlvOrder(opts, option, true);
6238
3
      break;
6239
7
    case 493:// --no-jh-rlv-order
6240
7
        assign_decision_jhRlvOrder(opts, option, false);
6241
7
      break;
6242
    case 494: // --jh-skolem-rlv=MODE
6243
        assign_decision_jhSkolemRlvMode(opts, option, optionarg);
6244
      break;
6245
    case 495: // --jh-skolem=MODE
6246
        assign_decision_jhSkolemMode(opts, option, optionarg);
6247
      break;
6248
1
    case 496: // --dag-thresh=N
6249
1
        assign_expr_defaultDagThresh(opts, option, optionarg);
6250
1
      break;
6251
    case 497: // --expr-depth=N
6252
        assign_expr_defaultExprDepth(opts, option, optionarg);
6253
      break;
6254
    case 498: // --type-checking
6255
        assign_expr_typeChecking(opts, option, true);
6256
      break;
6257
    case 499:// --no-type-checking
6258
        assign_expr_typeChecking(opts, option, false);
6259
      break;
6260
22
    case 500: // --fp-exp
6261
22
        assign_fp_fpExp(opts, option, true);
6262
22
      break;
6263
    case 501:// --no-fp-exp
6264
        assign_fp_fpExp(opts, option, false);
6265
      break;
6266
3
    case 502: // --fp-lazy-wb
6267
3
        assign_fp_fpLazyWb(opts, option, true);
6268
3
      break;
6269
    case 503:// --no-fp-lazy-wb
6270
        assign_fp_fpLazyWb(opts, option, false);
6271
      break;
6272
    case 504: // --copyright
6273
    opts.handler().copyright("copyright", option);
6274
      break;
6275
12
    case 505: // --dump-instantiations
6276
12
        assign_driver_dumpInstantiations(opts, option, true);
6277
12
      break;
6278
    case 506:// --no-dump-instantiations
6279
        assign_driver_dumpInstantiations(opts, option, false);
6280
      break;
6281
    case 507: // --dump-instantiations-debug
6282
        assign_driver_dumpInstantiationsDebug(opts, option, true);
6283
      break;
6284
    case 508:// --no-dump-instantiations-debug
6285
        assign_driver_dumpInstantiationsDebug(opts, option, false);
6286
      break;
6287
6
    case 509: // --dump-models
6288
6
        assign_driver_dumpModels(opts, option, true);
6289
6
      break;
6290
    case 510:// --no-dump-models
6291
        assign_driver_dumpModels(opts, option, false);
6292
      break;
6293
    case 511: // --dump-proofs
6294
        assign_driver_dumpProofs(opts, option, true);
6295
      break;
6296
    case 512:// --no-dump-proofs
6297
        assign_driver_dumpProofs(opts, option, false);
6298
      break;
6299
    case 513: // --dump-unsat-cores
6300
        assign_driver_dumpUnsatCores(opts, option, true);
6301
      break;
6302
    case 514:// --no-dump-unsat-cores
6303
        assign_driver_dumpUnsatCores(opts, option, false);
6304
      break;
6305
3
    case 515: // --dump-unsat-cores-full
6306
3
        assign_driver_dumpUnsatCoresFull(opts, option, true);
6307
3
      break;
6308
    case 516:// --no-dump-unsat-cores-full
6309
        assign_driver_dumpUnsatCoresFull(opts, option, false);
6310
      break;
6311
    case 517: // --early-exit
6312
        assign_driver_earlyExit(opts, option, true);
6313
      break;
6314
    case 518:// --no-early-exit
6315
        assign_driver_earlyExit(opts, option, false);
6316
      break;
6317
    case 519: // --force-no-limit-cpu-while-dump
6318
        assign_driver_forceNoLimitCpuWhileDump(opts, option, true);
6319
      break;
6320
    case 520:// --no-force-no-limit-cpu-while-dump
6321
        assign_driver_forceNoLimitCpuWhileDump(opts, option, false);
6322
      break;
6323
    case 'h':
6324
    case 521: // --help
6325
        assign_driver_help(opts, option, true);
6326
      break;
6327
    case 522: // --interactive
6328
        assign_driver_interactive(opts, option, true);
6329
      break;
6330
    case 523:// --no-interactive
6331
        assign_driver_interactive(opts, option, false);
6332
      break;
6333
    case 's':
6334
    case 524: // --seed=N
6335
        assign_driver_seed(opts, option, optionarg);
6336
      break;
6337
    case 525: // --segv-spin
6338
        assign_driver_segvSpin(opts, option, true);
6339
      break;
6340
    case 526:// --no-segv-spin
6341
        assign_driver_segvSpin(opts, option, false);
6342
      break;
6343
2610
    case 527: // --show-config
6344
2610
    opts.handler().showConfiguration("show-config", option);
6345
      break;
6346
    case 528: // --show-debug-tags
6347
    opts.handler().showDebugTags("show-debug-tags", option);
6348
      break;
6349
    case 529: // --show-trace-tags
6350
    opts.handler().showTraceTags("show-trace-tags", option);
6351
      break;
6352
    case 'V':
6353
    case 530: // --version
6354
        assign_driver_version(opts, option, true);
6355
      break;
6356
    case 531: // --filesystem-access
6357
        assign_parser_filesystemAccess(opts, option, true);
6358
      break;
6359
    case 532:// --no-filesystem-access
6360
        assign_parser_filesystemAccess(opts, option, false);
6361
      break;
6362
9
    case 533: // --force-logic=LOGIC
6363
9
        assign_parser_forceLogicString(opts, option, optionarg);
6364
9
      break;
6365
    case 534: // --global-declarations
6366
        assign_parser_globalDeclarations(opts, option, true);
6367
      break;
6368
    case 535:// --no-global-declarations
6369
        assign_parser_globalDeclarations(opts, option, false);
6370
      break;
6371
    case 536: // --mmap
6372
        assign_parser_memoryMap(opts, option, true);
6373
      break;
6374
    case 537:// --no-mmap
6375
        assign_parser_memoryMap(opts, option, false);
6376
      break;
6377
    case 538: // --semantic-checks
6378
        assign_parser_semanticChecks(opts, option, true);
6379
      break;
6380
    case 539:// --no-semantic-checks
6381
        assign_parser_semanticChecks(opts, option, false);
6382
      break;
6383
9
    case 540: // --strict-parsing
6384
9
        assign_parser_strictParsing(opts, option, true);
6385
9
      break;
6386
    case 541:// --no-strict-parsing
6387
        assign_parser_strictParsing(opts, option, false);
6388
      break;
6389
    case 542: // --flatten-ho-chains
6390
        assign_printer_flattenHOChains(opts, option, true);
6391
      break;
6392
    case 543:// --no-flatten-ho-chains
6393
        assign_printer_flattenHOChains(opts, option, false);
6394
      break;
6395
    case 544: // --model-format=MODE
6396
        assign_printer_modelFormatMode(opts, option, optionarg);
6397
      break;
6398
9
    case 545: // --print-inst-full
6399
9
        assign_printer_printInstFull(opts, option, true);
6400
9
      break;
6401
3
    case 546:// --no-print-inst-full
6402
3
        assign_printer_printInstFull(opts, option, false);
6403
3
      break;
6404
3
    case 547: // --print-inst=MODE
6405
3
        assign_printer_printInstMode(opts, option, optionarg);
6406
3
      break;
6407
2
    case 548: // --proof-eager-checking
6408
2
        assign_proof_proofEagerChecking(opts, option, true);
6409
2
      break;
6410
    case 549:// --no-proof-eager-checking
6411
        assign_proof_proofEagerChecking(opts, option, false);
6412
      break;
6413
    case 550: // --proof-format-mode=MODE
6414
        assign_proof_proofFormatMode(opts, option, optionarg);
6415
      break;
6416
    case 551: // --proof-granularity=MODE
6417
        assign_proof_proofGranularityMode(opts, option, optionarg);
6418
      break;
6419
    case 552: // --proof-pedantic=N
6420
        assign_proof_proofPedantic(opts, option, optionarg);
6421
      break;
6422
    case 553: // --proof-print-conclusion
6423
        assign_proof_proofPrintConclusion(opts, option, true);
6424
      break;
6425
    case 554:// --no-proof-print-conclusion
6426
        assign_proof_proofPrintConclusion(opts, option, false);
6427
      break;
6428
    case 555: // --minisat-dump-dimacs
6429
        assign_prop_minisatDumpDimacs(opts, option, true);
6430
      break;
6431
    case 556:// --no-minisat-dump-dimacs
6432
        assign_prop_minisatDumpDimacs(opts, option, false);
6433
      break;
6434
    case 557: // --minisat-elimination
6435
        assign_prop_minisatUseElim(opts, option, true);
6436
      break;
6437
    case 558:// --no-minisat-elimination
6438
        assign_prop_minisatUseElim(opts, option, false);
6439
      break;
6440
    case 559: // --random-freq=P
6441
    case 560: // --random-frequency
6442
        assign_prop_satRandomFreq(opts, option, optionarg);
6443
      break;
6444
    case 561: // --random-seed=S
6445
        assign_prop_satRandomSeed(opts, option, optionarg);
6446
      break;
6447
    case 562: // --refine-conflicts
6448
        assign_prop_sat_refine_conflicts(opts, option, true);
6449
      break;
6450
    case 563:// --no-refine-conflicts
6451
        assign_prop_sat_refine_conflicts(opts, option, false);
6452
      break;
6453
    case 564: // --restart-int-base=N
6454
        assign_prop_satRestartFirst(opts, option, optionarg);
6455
      break;
6456
    case 565: // --restart-int-inc=F
6457
        assign_prop_satRestartInc(opts, option, optionarg);
6458
      break;
6459
    case 566: // --ag-miniscope-quant
6460
        assign_quantifiers_aggressiveMiniscopeQuant(opts, option, true);
6461
      break;
6462
    case 567:// --no-ag-miniscope-quant
6463
        assign_quantifiers_aggressiveMiniscopeQuant(opts, option, false);
6464
      break;
6465
3
    case 568: // --cegis-sample=MODE
6466
3
        assign_quantifiers_cegisSample(opts, option, optionarg);
6467
3
      break;
6468
17
    case 569: // --cegqi
6469
17
        assign_quantifiers_cegqi(opts, option, true);
6470
17
      break;
6471
2
    case 570:// --no-cegqi
6472
2
        assign_quantifiers_cegqi(opts, option, false);
6473
2
      break;
6474
15
    case 571: // --cegqi-all
6475
15
        assign_quantifiers_cegqiAll(opts, option, true);
6476
15
      break;
6477
    case 572:// --no-cegqi-all
6478
        assign_quantifiers_cegqiAll(opts, option, false);
6479
      break;
6480
106
    case 573: // --cegqi-bv
6481
106
        assign_quantifiers_cegqiBv(opts, option, true);
6482
106
      break;
6483
    case 574:// --no-cegqi-bv
6484
        assign_quantifiers_cegqiBv(opts, option, false);
6485
      break;
6486
    case 575: // --cegqi-bv-concat-inv
6487
        assign_quantifiers_cegqiBvConcInv(opts, option, true);
6488
      break;
6489
    case 576:// --no-cegqi-bv-concat-inv
6490
        assign_quantifiers_cegqiBvConcInv(opts, option, false);
6491
      break;
6492
82
    case 577: // --cegqi-bv-ineq=MODE
6493
82
        assign_quantifiers_cegqiBvIneqMode(opts, option, optionarg);
6494
82
      break;
6495
    case 578: // --cegqi-bv-interleave-value
6496
        assign_quantifiers_cegqiBvInterleaveValue(opts, option, true);
6497
      break;
6498
    case 579:// --no-cegqi-bv-interleave-value
6499
        assign_quantifiers_cegqiBvInterleaveValue(opts, option, false);
6500
      break;
6501
    case 580: // --cegqi-bv-linear
6502
        assign_quantifiers_cegqiBvLinearize(opts, option, true);
6503
      break;
6504
    case 581:// --no-cegqi-bv-linear
6505
        assign_quantifiers_cegqiBvLinearize(opts, option, false);
6506
      break;
6507
2
    case 582: // --cegqi-bv-rm-extract
6508
2
        assign_quantifiers_cegqiBvRmExtract(opts, option, true);
6509
2
      break;
6510
    case 583:// --no-cegqi-bv-rm-extract
6511
        assign_quantifiers_cegqiBvRmExtract(opts, option, false);
6512
      break;
6513
    case 584: // --cegqi-bv-solve-nl
6514
        assign_quantifiers_cegqiBvSolveNl(opts, option, true);
6515
      break;
6516
    case 585:// --no-cegqi-bv-solve-nl
6517
        assign_quantifiers_cegqiBvSolveNl(opts, option, false);
6518
      break;
6519
5
    case 586: // --cegqi-full
6520
5
        assign_quantifiers_cegqiFullEffort(opts, option, true);
6521
5
      break;
6522
82
    case 587:// --no-cegqi-full
6523
82
        assign_quantifiers_cegqiFullEffort(opts, option, false);
6524
82
      break;
6525
    case 588: // --cegqi-innermost
6526
        assign_quantifiers_cegqiInnermost(opts, option, true);
6527
      break;
6528
    case 589:// --no-cegqi-innermost
6529
        assign_quantifiers_cegqiInnermost(opts, option, false);
6530
      break;
6531
    case 590: // --cegqi-midpoint
6532
        assign_quantifiers_cegqiMidpoint(opts, option, true);
6533
      break;
6534
    case 591:// --no-cegqi-midpoint
6535
        assign_quantifiers_cegqiMidpoint(opts, option, false);
6536
      break;
6537
    case 592: // --cegqi-min-bounds
6538
        assign_quantifiers_cegqiMinBounds(opts, option, true);
6539
      break;
6540
    case 593:// --no-cegqi-min-bounds
6541
        assign_quantifiers_cegqiMinBounds(opts, option, false);
6542
      break;
6543
    case 594: // --cegqi-model
6544
        assign_quantifiers_cegqiModel(opts, option, true);
6545
      break;
6546
    case 595:// --no-cegqi-model
6547
        assign_quantifiers_cegqiModel(opts, option, false);
6548
      break;
6549
3
    case 596: // --cegqi-multi-inst
6550
3
        assign_quantifiers_cegqiMultiInst(opts, option, true);
6551
3
      break;
6552
    case 597:// --no-cegqi-multi-inst
6553
        assign_quantifiers_cegqiMultiInst(opts, option, false);
6554
      break;
6555
7
    case 598: // --cegqi-nested-qe
6556
7
        assign_quantifiers_cegqiNestedQE(opts, option, true);
6557
7
      break;
6558
    case 599:// --no-cegqi-nested-qe
6559
        assign_quantifiers_cegqiNestedQE(opts, option, false);
6560
      break;
6561
    case 600: // --cegqi-nopt
6562
        assign_quantifiers_cegqiNopt(opts, option, true);
6563
      break;
6564
    case 601:// --no-cegqi-nopt
6565
        assign_quantifiers_cegqiNopt(opts, option, false);
6566
      break;
6567
    case 602: // --cegqi-repeat-lit
6568
        assign_quantifiers_cegqiRepeatLit(opts, option, true);
6569
      break;
6570
    case 603:// --no-cegqi-repeat-lit
6571
        assign_quantifiers_cegqiRepeatLit(opts, option, false);
6572
      break;
6573
    case 604: // --cegqi-round-up-lia
6574
        assign_quantifiers_cegqiRoundUpLowerLia(opts, option, true);
6575
      break;
6576
    case 605:// --no-cegqi-round-up-lia
6577
        assign_quantifiers_cegqiRoundUpLowerLia(opts, option, false);
6578
      break;
6579
    case 606: // --cegqi-sat
6580
        assign_quantifiers_cegqiSat(opts, option, true);
6581
      break;
6582
    case 607:// --no-cegqi-sat
6583
        assign_quantifiers_cegqiSat(opts, option, false);
6584
      break;
6585
3
    case 608: // --cegqi-use-inf-int
6586
3
        assign_quantifiers_cegqiUseInfInt(opts, option, true);
6587
3
      break;
6588
    case 609:// --no-cegqi-use-inf-int
6589
        assign_quantifiers_cegqiUseInfInt(opts, option, false);
6590
      break;
6591
3
    case 610: // --cegqi-use-inf-real
6592
3
        assign_quantifiers_cegqiUseInfReal(opts, option, true);
6593
3
      break;
6594
    case 611:// --no-cegqi-use-inf-real
6595
        assign_quantifiers_cegqiUseInfReal(opts, option, false);
6596
      break;
6597
    case 612: // --cond-var-split-agg-quant
6598
        assign_quantifiers_condVarSplitQuantAgg(opts, option, true);
6599
      break;
6600
    case 613:// --no-cond-var-split-agg-quant
6601
        assign_quantifiers_condVarSplitQuantAgg(opts, option, false);
6602
      break;
6603
    case 614: // --cond-var-split-quant
6604
        assign_quantifiers_condVarSplitQuant(opts, option, true);
6605
      break;
6606
    case 615:// --no-cond-var-split-quant
6607
        assign_quantifiers_condVarSplitQuant(opts, option, false);
6608
      break;
6609
    case 616: // --conjecture-filter-active-terms
6610
        assign_quantifiers_conjectureFilterActiveTerms(opts, option, true);
6611
      break;
6612
    case 617:// --no-conjecture-filter-active-terms
6613
        assign_quantifiers_conjectureFilterActiveTerms(opts, option, false);
6614
      break;
6615
    case 618: // --conjecture-filter-canonical
6616
        assign_quantifiers_conjectureFilterCanonical(opts, option, true);
6617
      break;
6618
    case 619:// --no-conjecture-filter-canonical
6619
        assign_quantifiers_conjectureFilterCanonical(opts, option, false);
6620
      break;
6621
    case 620: // --conjecture-filter-model
6622
        assign_quantifiers_conjectureFilterModel(opts, option, true);
6623
      break;
6624
    case 621:// --no-conjecture-filter-model
6625
        assign_quantifiers_conjectureFilterModel(opts, option, false);
6626
      break;
6627
3
    case 622: // --conjecture-gen
6628
3
        assign_quantifiers_conjectureGen(opts, option, true);
6629
3
      break;
6630
    case 623:// --no-conjecture-gen
6631
        assign_quantifiers_conjectureGen(opts, option, false);
6632
      break;
6633
    case 624: // --conjecture-gen-gt-enum=N
6634
        assign_quantifiers_conjectureGenGtEnum(opts, option, optionarg);
6635
      break;
6636
    case 625: // --conjecture-gen-max-depth=N
6637
        assign_quantifiers_conjectureGenMaxDepth(opts, option, optionarg);
6638
      break;
6639
    case 626: // --conjecture-gen-per-round=N
6640
        assign_quantifiers_conjectureGenPerRound(opts, option, optionarg);
6641
      break;
6642
    case 627: // --conjecture-gen-uee-intro
6643
        assign_quantifiers_conjectureUeeIntro(opts, option, true);
6644
      break;
6645
    case 628:// --no-conjecture-gen-uee-intro
6646
        assign_quantifiers_conjectureUeeIntro(opts, option, false);
6647
      break;
6648
    case 629: // --conjecture-no-filter
6649
        assign_quantifiers_conjectureNoFilter(opts, option, true);
6650
      break;
6651
    case 630:// --no-conjecture-no-filter
6652
        assign_quantifiers_conjectureNoFilter(opts, option, false);
6653
      break;
6654
    case 631: // --dt-stc-ind
6655
        assign_quantifiers_dtStcInduction(opts, option, true);
6656
      break;
6657
    case 632:// --no-dt-stc-ind
6658
        assign_quantifiers_dtStcInduction(opts, option, false);
6659
      break;
6660
    case 633: // --dt-var-exp-quant
6661
        assign_quantifiers_dtVarExpandQuant(opts, option, true);
6662
      break;
6663
    case 634:// --no-dt-var-exp-quant
6664
        assign_quantifiers_dtVarExpandQuant(opts, option, false);
6665
      break;
6666
    case 635: // --e-matching
6667
        assign_quantifiers_eMatching(opts, option, true);
6668
      break;
6669
    case 636:// --no-e-matching
6670
        assign_quantifiers_eMatching(opts, option, false);
6671
      break;
6672
    case 637: // --elim-taut-quant
6673
        assign_quantifiers_elimTautQuant(opts, option, true);
6674
      break;
6675
    case 638:// --no-elim-taut-quant
6676
        assign_quantifiers_elimTautQuant(opts, option, false);
6677
      break;
6678
9
    case 639: // --ext-rewrite-quant
6679
9
        assign_quantifiers_extRewriteQuant(opts, option, true);
6680
9
      break;
6681
    case 640:// --no-ext-rewrite-quant
6682
        assign_quantifiers_extRewriteQuant(opts, option, false);
6683
      break;
6684
159
    case 641: // --finite-model-find
6685
159
        assign_quantifiers_finiteModelFind(opts, option, true);
6686
159
      break;
6687
1
    case 642:// --no-finite-model-find
6688
1
        assign_quantifiers_finiteModelFind(opts, option, false);
6689
1
      break;
6690
30
    case 643: // --fmf-bound
6691
30
        assign_quantifiers_fmfBound(opts, option, true);
6692
30
      break;
6693
    case 644:// --no-fmf-bound
6694
        assign_quantifiers_fmfBound(opts, option, false);
6695
      break;
6696
6
    case 645: // --fmf-bound-int
6697
6
        assign_quantifiers_fmfBoundInt(opts, option, true);
6698
6
      break;
6699
    case 646:// --no-fmf-bound-int
6700
        assign_quantifiers_fmfBoundInt(opts, option, false);
6701
      break;
6702
3
    case 647: // --fmf-bound-lazy
6703
3
        assign_quantifiers_fmfBoundLazy(opts, option, true);
6704
3
      break;
6705
    case 648:// --no-fmf-bound-lazy
6706
        assign_quantifiers_fmfBoundLazy(opts, option, false);
6707
      break;
6708
    case 649: // --fmf-fmc-simple
6709
        assign_quantifiers_fmfFmcSimple(opts, option, true);
6710
      break;
6711
    case 650:// --no-fmf-fmc-simple
6712
        assign_quantifiers_fmfFmcSimple(opts, option, false);
6713
      break;
6714
    case 651: // --fmf-fresh-dc
6715
        assign_quantifiers_fmfFreshDistConst(opts, option, true);
6716
      break;
6717
    case 652:// --no-fmf-fresh-dc
6718
        assign_quantifiers_fmfFreshDistConst(opts, option, false);
6719
      break;
6720
37
    case 653: // --fmf-fun
6721
37
        assign_quantifiers_fmfFunWellDefined(opts, option, true);
6722
37
      break;
6723
    case 654:// --no-fmf-fun
6724
        assign_quantifiers_fmfFunWellDefined(opts, option, false);
6725
      break;
6726
10
    case 655: // --fmf-fun-rlv
6727
10
        assign_quantifiers_fmfFunWellDefinedRelevant(opts, option, true);
6728
10
      break;
6729
    case 656:// --no-fmf-fun-rlv
6730
        assign_quantifiers_fmfFunWellDefinedRelevant(opts, option, false);
6731
      break;
6732
7
    case 657: // --fmf-inst-engine
6733
7
        assign_quantifiers_fmfInstEngine(opts, option, true);
6734
7
      break;
6735
    case 658:// --no-fmf-inst-engine
6736
        assign_quantifiers_fmfInstEngine(opts, option, false);
6737
      break;
6738
    case 659: // --fmf-type-completion-thresh=N
6739
        assign_quantifiers_fmfTypeCompletionThresh(opts, option, optionarg);
6740
      break;
6741
    case 660: // --fs-interleave
6742
        assign_quantifiers_fullSaturateInterleave(opts, option, true);
6743
      break;
6744
    case 661:// --no-fs-interleave
6745
        assign_quantifiers_fullSaturateInterleave(opts, option, false);
6746
      break;
6747
3
    case 662: // --fs-stratify
6748
3
        assign_quantifiers_fullSaturateStratify(opts, option, true);
6749
3
      break;
6750
    case 663:// --no-fs-stratify
6751
        assign_quantifiers_fullSaturateStratify(opts, option, false);
6752
      break;
6753
    case 664: // --fs-sum
6754
        assign_quantifiers_fullSaturateSum(opts, option, true);
6755
      break;
6756
    case 665:// --no-fs-sum
6757
        assign_quantifiers_fullSaturateSum(opts, option, false);
6758
      break;
6759
76
    case 666: // --full-saturate-quant
6760
76
        assign_quantifiers_fullSaturateQuant(opts, option, true);
6761
76
      break;
6762
    case 667:// --no-full-saturate-quant
6763
        assign_quantifiers_fullSaturateQuant(opts, option, false);
6764
      break;
6765
3
    case 668: // --full-saturate-quant-limit=N
6766
3
        assign_quantifiers_fullSaturateLimit(opts, option, optionarg);
6767
3
      break;
6768
    case 669: // --full-saturate-quant-rd
6769
        assign_quantifiers_fullSaturateQuantRd(opts, option, true);
6770
      break;
6771
    case 670:// --no-full-saturate-quant-rd
6772
        assign_quantifiers_fullSaturateQuantRd(opts, option, false);
6773
      break;
6774
6
    case 671: // --global-negate
6775
6
        assign_quantifiers_globalNegate(opts, option, true);
6776
6
      break;
6777
    case 672:// --no-global-negate
6778
        assign_quantifiers_globalNegate(opts, option, false);
6779
      break;
6780
8
    case 673: // --ho-elim
6781
8
        assign_quantifiers_hoElim(opts, option, true);
6782
8
      break;
6783
    case 674:// --no-ho-elim
6784
        assign_quantifiers_hoElim(opts, option, false);
6785
      break;
6786
1
    case 675: // --ho-elim-store-ax
6787
1
        assign_quantifiers_hoElimStoreAx(opts, option, true);
6788
1
      break;
6789
    case 676:// --no-ho-elim-store-ax
6790
        assign_quantifiers_hoElimStoreAx(opts, option, false);
6791
      break;
6792
    case 677: // --ho-matching
6793
        assign_quantifiers_hoMatching(opts, option, true);
6794
      break;
6795
    case 678:// --no-ho-matching
6796
        assign_quantifiers_hoMatching(opts, option, false);
6797
      break;
6798
    case 679: // --ho-matching-var-priority
6799
        assign_quantifiers_hoMatchingVarArgPriority(opts, option, true);
6800
      break;
6801
    case 680:// --no-ho-matching-var-priority
6802
        assign_quantifiers_hoMatchingVarArgPriority(opts, option, false);
6803
      break;
6804
    case 681: // --ho-merge-term-db
6805
        assign_quantifiers_hoMergeTermDb(opts, option, true);
6806
      break;
6807
    case 682:// --no-ho-merge-term-db
6808
        assign_quantifiers_hoMergeTermDb(opts, option, false);
6809
      break;
6810
    case 683: // --increment-triggers
6811
        assign_quantifiers_incrementTriggers(opts, option, true);
6812
      break;
6813
    case 684:// --no-increment-triggers
6814
        assign_quantifiers_incrementTriggers(opts, option, false);
6815
      break;
6816
    case 685: // --inst-level-input-only
6817
        assign_quantifiers_instLevelInputOnly(opts, option, true);
6818
      break;
6819
    case 686:// --no-inst-level-input-only
6820
        assign_quantifiers_instLevelInputOnly(opts, option, false);
6821
      break;
6822
3
    case 687: // --inst-max-level=N
6823
3
        assign_quantifiers_instMaxLevel(opts, option, optionarg);
6824
3
      break;
6825
    case 688: // --inst-max-rounds=N
6826
        assign_quantifiers_instMaxRounds(opts, option, optionarg);
6827
      break;
6828
    case 689: // --inst-no-entail
6829
        assign_quantifiers_instNoEntail(opts, option, true);
6830
      break;
6831
    case 690:// --no-inst-no-entail
6832
        assign_quantifiers_instNoEntail(opts, option, false);
6833
      break;
6834
    case 691: // --inst-when-phase=N
6835
        assign_quantifiers_instWhenPhase(opts, option, optionarg);
6836
      break;
6837
    case 692: // --inst-when-strict-interleave
6838
        assign_quantifiers_instWhenStrictInterleave(opts, option, true);
6839
      break;
6840
    case 693:// --no-inst-when-strict-interleave
6841
        assign_quantifiers_instWhenStrictInterleave(opts, option, false);
6842
      break;
6843
    case 694: // --inst-when-tc-first
6844
        assign_quantifiers_instWhenTcFirst(opts, option, true);
6845
      break;
6846
    case 695:// --no-inst-when-tc-first
6847
        assign_quantifiers_instWhenTcFirst(opts, option, false);
6848
      break;
6849
3
    case 696: // --inst-when=MODE
6850
3
        assign_quantifiers_instWhenMode(opts, option, optionarg);
6851
3
      break;
6852
3
    case 697: // --int-wf-ind
6853
3
        assign_quantifiers_intWfInduction(opts, option, true);
6854
3
      break;
6855
    case 698:// --no-int-wf-ind
6856
        assign_quantifiers_intWfInduction(opts, option, false);
6857
      break;
6858
    case 699: // --ite-dtt-split-quant
6859
        assign_quantifiers_iteDtTesterSplitQuant(opts, option, true);
6860
      break;
6861
    case 700:// --no-ite-dtt-split-quant
6862
        assign_quantifiers_iteDtTesterSplitQuant(opts, option, false);
6863
      break;
6864
    case 701: // --ite-lift-quant=MODE
6865
        assign_quantifiers_iteLiftQuant(opts, option, optionarg);
6866
      break;
6867
    case 702: // --literal-matching=MODE
6868
        assign_quantifiers_literalMatchMode(opts, option, optionarg);
6869
      break;
6870
17
    case 703: // --macros-quant
6871
17
        assign_quantifiers_macrosQuant(opts, option, true);
6872
17
      break;
6873
    case 704:// --no-macros-quant
6874
        assign_quantifiers_macrosQuant(opts, option, false);
6875
      break;
6876
2
    case 705: // --macros-quant-mode=MODE
6877
2
        assign_quantifiers_macrosQuantMode(opts, option, optionarg);
6878
2
      break;
6879
    case 706: // --mbqi-interleave
6880
        assign_quantifiers_mbqiInterleave(opts, option, true);
6881
      break;
6882
    case 707:// --no-mbqi-interleave
6883
        assign_quantifiers_mbqiInterleave(opts, option, false);
6884
      break;
6885
    case 708: // --mbqi-one-inst-per-round
6886
        assign_quantifiers_fmfOneInstPerRound(opts, option, true);
6887
      break;
6888
    case 709:// --no-mbqi-one-inst-per-round
6889
        assign_quantifiers_fmfOneInstPerRound(opts, option, false);
6890
      break;
6891
    case 710: // --mbqi=MODE
6892
        assign_quantifiers_mbqiMode(opts, option, optionarg);
6893
      break;
6894
    case 711: // --miniscope-quant
6895
        assign_quantifiers_miniscopeQuant(opts, option, true);
6896
      break;
6897
    case 712:// --no-miniscope-quant
6898
        assign_quantifiers_miniscopeQuant(opts, option, false);
6899
      break;
6900
    case 713: // --miniscope-quant-fv
6901
        assign_quantifiers_miniscopeQuantFreeVar(opts, option, true);
6902
      break;
6903
    case 714:// --no-miniscope-quant-fv
6904
        assign_quantifiers_miniscopeQuantFreeVar(opts, option, false);
6905
      break;
6906
3
    case 715: // --multi-trigger-cache
6907
3
        assign_quantifiers_multiTriggerCache(opts, option, true);
6908
3
      break;
6909
    case 716:// --no-multi-trigger-cache
6910
        assign_quantifiers_multiTriggerCache(opts, option, false);
6911
      break;
6912
    case 717: // --multi-trigger-linear
6913
        assign_quantifiers_multiTriggerLinear(opts, option, true);
6914
      break;
6915
    case 718:// --no-multi-trigger-linear
6916
        assign_quantifiers_multiTriggerLinear(opts, option, false);
6917
      break;
6918
    case 719: // --multi-trigger-priority
6919
        assign_quantifiers_multiTriggerPriority(opts, option, true);
6920
      break;
6921
    case 720:// --no-multi-trigger-priority
6922
        assign_quantifiers_multiTriggerPriority(opts, option, false);
6923
      break;
6924
    case 721: // --multi-trigger-when-single
6925
        assign_quantifiers_multiTriggerWhenSingle(opts, option, true);
6926
      break;
6927
    case 722:// --no-multi-trigger-when-single
6928
        assign_quantifiers_multiTriggerWhenSingle(opts, option, false);
6929
      break;
6930
3
    case 723: // --partial-triggers
6931
3
        assign_quantifiers_partialTriggers(opts, option, true);
6932
3
      break;
6933
    case 724:// --no-partial-triggers
6934
        assign_quantifiers_partialTriggers(opts, option, false);
6935
      break;
6936
3
    case 725: // --pool-inst
6937
3
        assign_quantifiers_poolInst(opts, option, true);
6938
3
      break;
6939
    case 726:// --no-pool-inst
6940
        assign_quantifiers_poolInst(opts, option, false);
6941
      break;
6942
    case 727: // --pre-skolem-quant
6943
        assign_quantifiers_preSkolemQuant(opts, option, true);
6944
      break;
6945
    case 728:// --no-pre-skolem-quant
6946
        assign_quantifiers_preSkolemQuant(opts, option, false);
6947
      break;
6948
    case 729: // --pre-skolem-quant-agg
6949
        assign_quantifiers_preSkolemQuantAgg(opts, option, true);
6950
      break;
6951
    case 730:// --no-pre-skolem-quant-agg
6952
        assign_quantifiers_preSkolemQuantAgg(opts, option, false);
6953
      break;
6954
    case 731: // --pre-skolem-quant-nested
6955
        assign_quantifiers_preSkolemQuantNested(opts, option, true);
6956
      break;
6957
    case 732:// --no-pre-skolem-quant-nested
6958
        assign_quantifiers_preSkolemQuantNested(opts, option, false);
6959
      break;
6960
    case 733: // --prenex-quant-user
6961
        assign_quantifiers_prenexQuantUser(opts, option, true);
6962
      break;
6963
    case 734:// --no-prenex-quant-user
6964
        assign_quantifiers_prenexQuantUser(opts, option, false);
6965
      break;
6966
    case 735: // --prenex-quant=MODE
6967
        assign_quantifiers_prenexQuant(opts, option, optionarg);
6968
      break;
6969
3
    case 736: // --purify-triggers
6970
3
        assign_quantifiers_purifyTriggers(opts, option, true);
6971
3
      break;
6972
    case 737:// --no-purify-triggers
6973
        assign_quantifiers_purifyTriggers(opts, option, false);
6974
      break;
6975
    case 738: // --qcf-all-conflict
6976
        assign_quantifiers_qcfAllConflict(opts, option, true);
6977
      break;
6978
    case 739:// --no-qcf-all-conflict
6979
        assign_quantifiers_qcfAllConflict(opts, option, false);
6980
      break;
6981
    case 740: // --qcf-eager-check-rd
6982
        assign_quantifiers_qcfEagerCheckRd(opts, option, true);
6983
      break;
6984
    case 741:// --no-qcf-eager-check-rd
6985
        assign_quantifiers_qcfEagerCheckRd(opts, option, false);
6986
      break;
6987
    case 742: // --qcf-eager-test
6988
        assign_quantifiers_qcfEagerTest(opts, option, true);
6989
      break;
6990
    case 743:// --no-qcf-eager-test
6991
        assign_quantifiers_qcfEagerTest(opts, option, false);
6992
      break;
6993
    case 744: // --qcf-nested-conflict
6994
        assign_quantifiers_qcfNestedConflict(opts, option, true);
6995
      break;
6996
    case 745:// --no-qcf-nested-conflict
6997
        assign_quantifiers_qcfNestedConflict(opts, option, false);
6998
      break;
6999
    case 746: // --qcf-skip-rd
7000
        assign_quantifiers_qcfSkipRd(opts, option, true);
7001
      break;
7002
    case 747:// --no-qcf-skip-rd
7003
        assign_quantifiers_qcfSkipRd(opts, option, false);
7004
      break;
7005
6
    case 748: // --qcf-tconstraint
7006
6
        assign_quantifiers_qcfTConstraint(opts, option, true);
7007
6
      break;
7008
    case 749:// --no-qcf-tconstraint
7009
        assign_quantifiers_qcfTConstraint(opts, option, false);
7010
      break;
7011
    case 750: // --qcf-vo-exp
7012
        assign_quantifiers_qcfVoExp(opts, option, true);
7013
      break;
7014
    case 751:// --no-qcf-vo-exp
7015
        assign_quantifiers_qcfVoExp(opts, option, false);
7016
      break;
7017
    case 752: // --quant-alpha-equiv
7018
        assign_quantifiers_quantAlphaEquiv(opts, option, true);
7019
      break;
7020
    case 753:// --no-quant-alpha-equiv
7021
        assign_quantifiers_quantAlphaEquiv(opts, option, false);
7022
      break;
7023
    case 754: // --quant-cf
7024
        assign_quantifiers_quantConflictFind(opts, option, true);
7025
      break;
7026
    case 755:// --no-quant-cf
7027
        assign_quantifiers_quantConflictFind(opts, option, false);
7028
      break;
7029
    case 756: // --quant-cf-mode=MODE
7030
        assign_quantifiers_qcfMode(opts, option, optionarg);
7031
      break;
7032
    case 757: // --quant-cf-when=MODE
7033
        assign_quantifiers_qcfWhenMode(opts, option, optionarg);
7034
      break;
7035
    case 758: // --quant-dsplit-mode=MODE
7036
        assign_quantifiers_quantDynamicSplit(opts, option, optionarg);
7037
      break;
7038
    case 759: // --quant-fun-wd
7039
        assign_quantifiers_quantFunWellDefined(opts, option, true);
7040
      break;
7041
    case 760:// --no-quant-fun-wd
7042
        assign_quantifiers_quantFunWellDefined(opts, option, false);
7043
      break;
7044
6
    case 761: // --quant-ind
7045
6
        assign_quantifiers_quantInduction(opts, option, true);
7046
6
      break;
7047
    case 762:// --no-quant-ind
7048
        assign_quantifiers_quantInduction(opts, option, false);
7049
      break;
7050
    case 763: // --quant-rep-mode=MODE
7051
        assign_quantifiers_quantRepMode(opts, option, optionarg);
7052
      break;
7053
    case 764: // --quant-split
7054
        assign_quantifiers_quantSplit(opts, option, true);
7055
      break;
7056
    case 765:// --no-quant-split
7057
        assign_quantifiers_quantSplit(opts, option, false);
7058
      break;
7059
    case 766: // --register-quant-body-terms
7060
        assign_quantifiers_registerQuantBodyTerms(opts, option, true);
7061
      break;
7062
    case 767:// --no-register-quant-body-terms
7063
        assign_quantifiers_registerQuantBodyTerms(opts, option, false);
7064
      break;
7065
12
    case 768: // --relational-triggers
7066
12
        assign_quantifiers_relationalTriggers(opts, option, true);
7067
12
      break;
7068
3
    case 769:// --no-relational-triggers
7069
3
        assign_quantifiers_relationalTriggers(opts, option, false);
7070
3
      break;
7071
3
    case 770: // --relevant-triggers
7072
3
        assign_quantifiers_relevantTriggers(opts, option, true);
7073
3
      break;
7074
    case 771:// --no-relevant-triggers
7075
        assign_quantifiers_relevantTriggers(opts, option, false);
7076
      break;
7077
    case 772: // --sygus
7078
        assign_quantifiers_sygus(opts, option, true);
7079
      break;
7080
    case 773:// --no-sygus
7081
        assign_quantifiers_sygus(opts, option, false);
7082
      break;
7083
    case 774: // --sygus-active-gen-cfactor=N
7084
        assign_quantifiers_sygusActiveGenEnumConsts(opts, option, optionarg);
7085
      break;
7086
13
    case 775: // --sygus-active-gen=MODE
7087
13
        assign_quantifiers_sygusActiveGenMode(opts, option, optionarg);
7088
13
      break;
7089
1
    case 776: // --sygus-add-const-grammar
7090
1
        assign_quantifiers_sygusAddConstGrammar(opts, option, true);
7091
1
      break;
7092
1
    case 777:// --no-sygus-add-const-grammar
7093
1
        assign_quantifiers_sygusAddConstGrammar(opts, option, false);
7094
1
      break;
7095
3
    case 778: // --sygus-arg-relevant
7096
3
        assign_quantifiers_sygusArgRelevant(opts, option, true);
7097
3
      break;
7098
    case 779:// --no-sygus-arg-relevant
7099
        assign_quantifiers_sygusArgRelevant(opts, option, false);
7100
      break;
7101
    case 780: // --sygus-auto-unfold
7102
        assign_quantifiers_sygusInvAutoUnfold(opts, option, true);
7103
      break;
7104
    case 781:// --no-sygus-auto-unfold
7105
        assign_quantifiers_sygusInvAutoUnfold(opts, option, false);
7106
      break;
7107
1
    case 782: // --sygus-bool-ite-return-const
7108
1
        assign_quantifiers_sygusBoolIteReturnConst(opts, option, true);
7109
1
      break;
7110
    case 783:// --no-sygus-bool-ite-return-const
7111
        assign_quantifiers_sygusBoolIteReturnConst(opts, option, false);
7112
      break;
7113
5
    case 784: // --sygus-core-connective
7114
5
        assign_quantifiers_sygusCoreConnective(opts, option, true);
7115
5
      break;
7116
    case 785:// --no-sygus-core-connective
7117
        assign_quantifiers_sygusCoreConnective(opts, option, false);
7118
      break;
7119
    case 786: // --sygus-crepair-abort
7120
        assign_quantifiers_sygusConstRepairAbort(opts, option, true);
7121
      break;
7122
    case 787:// --no-sygus-crepair-abort
7123
        assign_quantifiers_sygusConstRepairAbort(opts, option, false);
7124
      break;
7125
    case 788: // --sygus-eval-opt
7126
        assign_quantifiers_sygusEvalOpt(opts, option, true);
7127
      break;
7128
    case 789:// --no-sygus-eval-opt
7129
        assign_quantifiers_sygusEvalOpt(opts, option, false);
7130
      break;
7131
    case 790: // --sygus-eval-unfold
7132
        assign_quantifiers_sygusEvalUnfold(opts, option, true);
7133
      break;
7134
    case 791:// --no-sygus-eval-unfold
7135
        assign_quantifiers_sygusEvalUnfold(opts, option, false);
7136
      break;
7137
    case 792: // --sygus-eval-unfold-bool
7138
        assign_quantifiers_sygusEvalUnfoldBool(opts, option, true);
7139
      break;
7140
    case 793:// --no-sygus-eval-unfold-bool
7141
        assign_quantifiers_sygusEvalUnfoldBool(opts, option, false);
7142
      break;
7143
    case 794: // --sygus-expr-miner-check-timeout=N
7144
        assign_quantifiers_sygusExprMinerCheckTimeout(opts, option, optionarg);
7145
      break;
7146
    case 795: // --sygus-ext-rew
7147
        assign_quantifiers_sygusExtRew(opts, option, true);
7148
      break;
7149
    case 796:// --no-sygus-ext-rew
7150
        assign_quantifiers_sygusExtRew(opts, option, false);
7151
      break;
7152
    case 797: // --sygus-filter-sol-rev
7153
        assign_quantifiers_sygusFilterSolRevSubsume(opts, option, true);
7154
      break;
7155
    case 798:// --no-sygus-filter-sol-rev
7156
        assign_quantifiers_sygusFilterSolRevSubsume(opts, option, false);
7157
      break;
7158
    case 799: // --sygus-filter-sol=MODE
7159
        assign_quantifiers_sygusFilterSolMode(opts, option, optionarg);
7160
      break;
7161
6
    case 800: // --sygus-grammar-cons=MODE
7162
6
        assign_quantifiers_sygusGrammarConsMode(opts, option, optionarg);
7163
6
      break;
7164
    case 801: // --sygus-grammar-norm
7165
        assign_quantifiers_sygusGrammarNorm(opts, option, true);
7166
      break;
7167
    case 802:// --no-sygus-grammar-norm
7168
        assign_quantifiers_sygusGrammarNorm(opts, option, false);
7169
      break;
7170
46
    case 803: // --sygus-inference
7171
46
        assign_quantifiers_sygusInference(opts, option, true);
7172
46
      break;
7173
    case 804:// --no-sygus-inference
7174
        assign_quantifiers_sygusInference(opts, option, false);
7175
      break;
7176
14
    case 805: // --sygus-inst
7177
14
        assign_quantifiers_sygusInst(opts, option, true);
7178
14
      break;
7179
    case 806:// --no-sygus-inst
7180
        assign_quantifiers_sygusInst(opts, option, false);
7181
      break;
7182
    case 807: // --sygus-inst-mode=MODE
7183
        assign_quantifiers_sygusInstMode(opts, option, optionarg);
7184
      break;
7185
    case 808: // --sygus-inst-scope=MODE
7186
        assign_quantifiers_sygusInstScope(opts, option, optionarg);
7187
      break;
7188
    case 809: // --sygus-inst-term-sel=MODE
7189
        assign_quantifiers_sygusInstTermSel(opts, option, optionarg);
7190
      break;
7191
    case 810: // --sygus-inv-templ-when-sg
7192
        assign_quantifiers_sygusInvTemplWhenSyntax(opts, option, true);
7193
      break;
7194
    case 811:// --no-sygus-inv-templ-when-sg
7195
        assign_quantifiers_sygusInvTemplWhenSyntax(opts, option, false);
7196
      break;
7197
3
    case 812: // --sygus-inv-templ=MODE
7198
3
        assign_quantifiers_sygusInvTemplMode(opts, option, optionarg);
7199
3
      break;
7200
    case 813: // --sygus-min-grammar
7201
        assign_quantifiers_sygusMinGrammar(opts, option, true);
7202
      break;
7203
    case 814:// --no-sygus-min-grammar
7204
        assign_quantifiers_sygusMinGrammar(opts, option, false);
7205
      break;
7206
    case 815: // --sygus-pbe
7207
        assign_quantifiers_sygusUnifPbe(opts, option, true);
7208
      break;
7209
6
    case 816:// --no-sygus-pbe
7210
6
        assign_quantifiers_sygusUnifPbe(opts, option, false);
7211
6
      break;
7212
    case 817: // --sygus-pbe-multi-fair
7213
        assign_quantifiers_sygusPbeMultiFair(opts, option, true);
7214
      break;
7215
    case 818:// --no-sygus-pbe-multi-fair
7216
        assign_quantifiers_sygusPbeMultiFair(opts, option, false);
7217
      break;
7218
    case 819: // --sygus-pbe-multi-fair-diff=N
7219
        assign_quantifiers_sygusPbeMultiFairDiff(opts, option, optionarg);
7220
      break;
7221
4
    case 820: // --sygus-qe-preproc
7222
4
        assign_quantifiers_sygusQePreproc(opts, option, true);
7223
4
      break;
7224
    case 821:// --no-sygus-qe-preproc
7225
        assign_quantifiers_sygusQePreproc(opts, option, false);
7226
      break;
7227
    case 822: // --sygus-query-gen
7228
        assign_quantifiers_sygusQueryGen(opts, option, true);
7229
      break;
7230
    case 823:// --no-sygus-query-gen
7231
        assign_quantifiers_sygusQueryGen(opts, option, false);
7232
      break;
7233
    case 824: // --sygus-query-gen-check
7234
        assign_quantifiers_sygusQueryGenCheck(opts, option, true);
7235
      break;
7236
    case 825:// --no-sygus-query-gen-check
7237
        assign_quantifiers_sygusQueryGenCheck(opts, option, false);
7238
      break;
7239
    case 826: // --sygus-query-gen-dump-files=MODE
7240
        assign_quantifiers_sygusQueryGenDumpFiles(opts, option, optionarg);
7241
      break;
7242
    case 827: // --sygus-query-gen-thresh=N
7243
        assign_quantifiers_sygusQueryGenThresh(opts, option, optionarg);
7244
      break;
7245
1
    case 828: // --sygus-rec-fun
7246
1
        assign_quantifiers_sygusRecFun(opts, option, true);
7247
1
      break;
7248
    case 829:// --no-sygus-rec-fun
7249
        assign_quantifiers_sygusRecFun(opts, option, false);
7250
      break;
7251
    case 830: // --sygus-rec-fun-eval-limit=N
7252
        assign_quantifiers_sygusRecFunEvalLimit(opts, option, optionarg);
7253
      break;
7254
5
    case 831: // --sygus-repair-const
7255
5
        assign_quantifiers_sygusRepairConst(opts, option, true);
7256
5
      break;
7257
3
    case 832:// --no-sygus-repair-const
7258
3
        assign_quantifiers_sygusRepairConst(opts, option, false);
7259
3
      break;
7260
    case 833: // --sygus-repair-const-timeout=N
7261
        assign_quantifiers_sygusRepairConstTimeout(opts, option, optionarg);
7262
      break;
7263
6
    case 834: // --sygus-rr
7264
6
        assign_quantifiers_sygusRew(opts, option, true);
7265
6
      break;
7266
    case 835:// --no-sygus-rr
7267
        assign_quantifiers_sygusRew(opts, option, false);
7268
      break;
7269
1
    case 836: // --sygus-rr-synth
7270
1
        assign_quantifiers_sygusRewSynth(opts, option, true);
7271
1
      break;
7272
    case 837:// --no-sygus-rr-synth
7273
        assign_quantifiers_sygusRewSynth(opts, option, false);
7274
      break;
7275
    case 838: // --sygus-rr-synth-accel
7276
        assign_quantifiers_sygusRewSynthAccel(opts, option, true);
7277
      break;
7278
    case 839:// --no-sygus-rr-synth-accel
7279
        assign_quantifiers_sygusRewSynthAccel(opts, option, false);
7280
      break;
7281
3
    case 840: // --sygus-rr-synth-check
7282
3
        assign_quantifiers_sygusRewSynthCheck(opts, option, true);
7283
3
      break;
7284
    case 841:// --no-sygus-rr-synth-check
7285
        assign_quantifiers_sygusRewSynthCheck(opts, option, false);
7286
      break;
7287
    case 842: // --sygus-rr-synth-filter-cong
7288
        assign_quantifiers_sygusRewSynthFilterCong(opts, option, true);
7289
      break;
7290
    case 843:// --no-sygus-rr-synth-filter-cong
7291
        assign_quantifiers_sygusRewSynthFilterCong(opts, option, false);
7292
      break;
7293
    case 844: // --sygus-rr-synth-filter-match
7294
        assign_quantifiers_sygusRewSynthFilterMatch(opts, option, true);
7295
      break;
7296
    case 845:// --no-sygus-rr-synth-filter-match
7297
        assign_quantifiers_sygusRewSynthFilterMatch(opts, option, false);
7298
      break;
7299
    case 846: // --sygus-rr-synth-filter-nl
7300
        assign_quantifiers_sygusRewSynthFilterNonLinear(opts, option, true);
7301
      break;
7302
    case 847:// --no-sygus-rr-synth-filter-nl
7303
        assign_quantifiers_sygusRewSynthFilterNonLinear(opts, option, false);
7304
      break;
7305
    case 848: // --sygus-rr-synth-filter-order
7306
        assign_quantifiers_sygusRewSynthFilterOrder(opts, option, true);
7307
      break;
7308
    case 849:// --no-sygus-rr-synth-filter-order
7309
        assign_quantifiers_sygusRewSynthFilterOrder(opts, option, false);
7310
      break;
7311
    case 850: // --sygus-rr-synth-input
7312
        assign_quantifiers_sygusRewSynthInput(opts, option, true);
7313
      break;
7314
    case 851:// --no-sygus-rr-synth-input
7315
        assign_quantifiers_sygusRewSynthInput(opts, option, false);
7316
      break;
7317
    case 852: // --sygus-rr-synth-input-nvars=N
7318
        assign_quantifiers_sygusRewSynthInputNVars(opts, option, optionarg);
7319
      break;
7320
    case 853: // --sygus-rr-synth-input-use-bool
7321
        assign_quantifiers_sygusRewSynthInputUseBool(opts, option, true);
7322
      break;
7323
    case 854:// --no-sygus-rr-synth-input-use-bool
7324
        assign_quantifiers_sygusRewSynthInputUseBool(opts, option, false);
7325
      break;
7326
    case 855: // --sygus-rr-synth-rec
7327
        assign_quantifiers_sygusRewSynthRec(opts, option, true);
7328
      break;
7329
    case 856:// --no-sygus-rr-synth-rec
7330
        assign_quantifiers_sygusRewSynthRec(opts, option, false);
7331
      break;
7332
    case 857: // --sygus-rr-verify
7333
        assign_quantifiers_sygusRewVerify(opts, option, true);
7334
      break;
7335
    case 858:// --no-sygus-rr-verify
7336
        assign_quantifiers_sygusRewVerify(opts, option, false);
7337
      break;
7338
7
    case 859: // --sygus-rr-verify-abort
7339
7
        assign_quantifiers_sygusRewVerifyAbort(opts, option, true);
7340
7
      break;
7341
    case 860:// --no-sygus-rr-verify-abort
7342
        assign_quantifiers_sygusRewVerifyAbort(opts, option, false);
7343
      break;
7344
    case 861: // --sygus-sample-fp-uniform
7345
        assign_quantifiers_sygusSampleFpUniform(opts, option, true);
7346
      break;
7347
    case 862:// --no-sygus-sample-fp-uniform
7348
        assign_quantifiers_sygusSampleFpUniform(opts, option, false);
7349
      break;
7350
    case 863: // --sygus-sample-grammar
7351
        assign_quantifiers_sygusSampleGrammar(opts, option, true);
7352
      break;
7353
    case 864:// --no-sygus-sample-grammar
7354
        assign_quantifiers_sygusSampleGrammar(opts, option, false);
7355
      break;
7356
7
    case 865: // --sygus-samples=N
7357
7
        assign_quantifiers_sygusSamples(opts, option, optionarg);
7358
7
      break;
7359
    case 866: // --sygus-si-abort
7360
        assign_quantifiers_cegqiSingleInvAbort(opts, option, true);
7361
      break;
7362
    case 867:// --no-sygus-si-abort
7363
        assign_quantifiers_cegqiSingleInvAbort(opts, option, false);
7364
      break;
7365
    case 868: // --sygus-si-partial
7366
        assign_quantifiers_cegqiSingleInvPartial(opts, option, true);
7367
      break;
7368
    case 869:// --no-sygus-si-partial
7369
        assign_quantifiers_cegqiSingleInvPartial(opts, option, false);
7370
      break;
7371
1
    case 870: // --sygus-si-rcons-limit=N
7372
1
        assign_quantifiers_cegqiSingleInvReconstructLimit(opts, option, optionarg);
7373
1
      break;
7374
    case 871: // --sygus-si-rcons=MODE
7375
        assign_quantifiers_cegqiSingleInvReconstruct(opts, option, optionarg);
7376
      break;
7377
    case 872: // --sygus-si-reconstruct-const
7378
        assign_quantifiers_cegqiSingleInvReconstructConst(opts, option, true);
7379
      break;
7380
    case 873:// --no-sygus-si-reconstruct-const
7381
        assign_quantifiers_cegqiSingleInvReconstructConst(opts, option, false);
7382
      break;
7383
47
    case 874: // --sygus-si=MODE
7384
47
        assign_quantifiers_cegqiSingleInvMode(opts, option, optionarg);
7385
47
      break;
7386
4
    case 875: // --sygus-stream
7387
4
        assign_quantifiers_sygusStream(opts, option, true);
7388
4
      break;
7389
    case 876:// --no-sygus-stream
7390
        assign_quantifiers_sygusStream(opts, option, false);
7391
      break;
7392
    case 877: // --sygus-templ-embed-grammar
7393
        assign_quantifiers_sygusTemplEmbedGrammar(opts, option, true);
7394
      break;
7395
    case 878:// --no-sygus-templ-embed-grammar
7396
        assign_quantifiers_sygusTemplEmbedGrammar(opts, option, false);
7397
      break;
7398
    case 879: // --sygus-unif-cond-independent-no-repeat-sol
7399
        assign_quantifiers_sygusUnifCondIndNoRepeatSol(opts, option, true);
7400
      break;
7401
    case 880:// --no-sygus-unif-cond-independent-no-repeat-sol
7402
        assign_quantifiers_sygusUnifCondIndNoRepeatSol(opts, option, false);
7403
      break;
7404
9
    case 881: // --sygus-unif-pi=MODE
7405
9
        assign_quantifiers_sygusUnifPi(opts, option, optionarg);
7406
9
      break;
7407
    case 882: // --sygus-unif-shuffle-cond
7408
        assign_quantifiers_sygusUnifShuffleCond(opts, option, true);
7409
      break;
7410
    case 883:// --no-sygus-unif-shuffle-cond
7411
        assign_quantifiers_sygusUnifShuffleCond(opts, option, false);
7412
      break;
7413
    case 884: // --sygus-verify-inst-max-rounds=N
7414
        assign_quantifiers_sygusVerifyInstMaxRounds(opts, option, optionarg);
7415
      break;
7416
    case 885: // --term-db-cd
7417
        assign_quantifiers_termDbCd(opts, option, true);
7418
      break;
7419
    case 886:// --no-term-db-cd
7420
        assign_quantifiers_termDbCd(opts, option, false);
7421
      break;
7422
    case 887: // --term-db-mode=MODE
7423
        assign_quantifiers_termDbMode(opts, option, optionarg);
7424
      break;
7425
    case 888: // --trigger-active-sel=MODE
7426
        assign_quantifiers_triggerActiveSelMode(opts, option, optionarg);
7427
      break;
7428
    case 889: // --trigger-sel=MODE
7429
        assign_quantifiers_triggerSelMode(opts, option, optionarg);
7430
      break;
7431
    case 890: // --user-pat=MODE
7432
        assign_quantifiers_userPatternsQuant(opts, option, optionarg);
7433
      break;
7434
    case 891: // --var-elim-quant
7435
        assign_quantifiers_varElimQuant(opts, option, true);
7436
      break;
7437
    case 892:// --no-var-elim-quant
7438
        assign_quantifiers_varElimQuant(opts, option, false);
7439
      break;
7440
2
    case 893: // --var-ineq-elim-quant
7441
2
        assign_quantifiers_varIneqElimQuant(opts, option, true);
7442
2
      break;
7443
    case 894:// --no-var-ineq-elim-quant
7444
        assign_quantifiers_varIneqElimQuant(opts, option, false);
7445
      break;
7446
    case 895: // --sep-check-neg
7447
        assign_sep_sepCheckNeg(opts, option, true);
7448
      break;
7449
    case 896:// --no-sep-check-neg
7450
        assign_sep_sepCheckNeg(opts, option, false);
7451
      break;
7452
    case 897: // --sep-child-refine
7453
        assign_sep_sepChildRefine(opts, option, true);
7454
      break;
7455
    case 898:// --no-sep-child-refine
7456
        assign_sep_sepChildRefine(opts, option, false);
7457
      break;
7458
    case 899: // --sep-deq-c
7459
        assign_sep_sepDisequalC(opts, option, true);
7460
      break;
7461
    case 900:// --no-sep-deq-c
7462
        assign_sep_sepDisequalC(opts, option, false);
7463
      break;
7464
    case 901: // --sep-exp
7465
        assign_sep_sepExp(opts, option, true);
7466
      break;
7467
    case 902:// --no-sep-exp
7468
        assign_sep_sepExp(opts, option, false);
7469
      break;
7470
    case 903: // --sep-min-refine
7471
        assign_sep_sepMinimalRefine(opts, option, true);
7472
      break;
7473
    case 904:// --no-sep-min-refine
7474
        assign_sep_sepMinimalRefine(opts, option, false);
7475
      break;
7476
1
    case 905: // --sep-pre-skolem-emp
7477
1
        assign_sep_sepPreSkolemEmp(opts, option, true);
7478
1
      break;
7479
    case 906:// --no-sep-pre-skolem-emp
7480
        assign_sep_sepPreSkolemEmp(opts, option, false);
7481
      break;
7482
32
    case 907: // --sets-ext
7483
32
        assign_sets_setsExt(opts, option, true);
7484
32
      break;
7485
    case 908:// --no-sets-ext
7486
        assign_sets_setsExt(opts, option, false);
7487
      break;
7488
2
    case 909: // --sets-infer-as-lemmas
7489
2
        assign_sets_setsInferAsLemmas(opts, option, true);
7490
2
      break;
7491
    case 910:// --no-sets-infer-as-lemmas
7492
        assign_sets_setsInferAsLemmas(opts, option, false);
7493
      break;
7494
    case 911: // --sets-proxy-lemmas
7495
        assign_sets_setsProxyLemmas(opts, option, true);
7496
      break;
7497
    case 912:// --no-sets-proxy-lemmas
7498
        assign_sets_setsProxyLemmas(opts, option, false);
7499
      break;
7500
4
    case 913: // --abstract-values
7501
4
        assign_smt_abstractValues(opts, option, true);
7502
4
      break;
7503
    case 914:// --no-abstract-values
7504
        assign_smt_abstractValues(opts, option, false);
7505
      break;
7506
31
    case 915: // --ackermann
7507
31
        assign_smt_ackermann(opts, option, true);
7508
31
      break;
7509
    case 916:// --no-ackermann
7510
        assign_smt_ackermann(opts, option, false);
7511
      break;
7512
7
    case 917: // --block-models=MODE
7513
7
        assign_smt_blockModelsMode(opts, option, optionarg);
7514
7
      break;
7515
78
    case 918: // --bvand-integer-granularity=N
7516
78
        assign_smt_BVAndIntegerGranularity(opts, option, optionarg);
7517
78
      break;
7518
13
    case 919: // --check-abducts
7519
13
        assign_smt_checkAbducts(opts, option, true);
7520
13
      break;
7521
    case 920:// --no-check-abducts
7522
        assign_smt_checkAbducts(opts, option, false);
7523
      break;
7524
8
    case 921: // --check-interpols
7525
8
        assign_smt_checkInterpols(opts, option, true);
7526
8
      break;
7527
    case 922:// --no-check-interpols
7528
        assign_smt_checkInterpols(opts, option, false);
7529
      break;
7530
22
    case 923: // --check-models
7531
22
        assign_smt_checkModels(opts, option, true);
7532
22
      break;
7533
85
    case 924:// --no-check-models
7534
85
        assign_smt_checkModels(opts, option, false);
7535
85
      break;
7536
1148
    case 925: // --check-proofs
7537
1148
        assign_smt_checkProofs(opts, option, true);
7538
1148
      break;
7539
13
    case 926:// --no-check-proofs
7540
13
        assign_smt_checkProofs(opts, option, false);
7541
13
      break;
7542
183
    case 927: // --check-synth-sol
7543
183
        assign_smt_checkSynthSol(opts, option, true);
7544
183
      break;
7545
6
    case 928:// --no-check-synth-sol
7546
6
        assign_smt_checkSynthSol(opts, option, false);
7547
6
      break;
7548
1138
    case 929: // --check-unsat-cores
7549
1138
        assign_smt_checkUnsatCores(opts, option, true);
7550
1138
      break;
7551
40
    case 930:// --no-check-unsat-cores
7552
40
        assign_smt_checkUnsatCores(opts, option, false);
7553
40
      break;
7554
1224
    case 931: // --debug-check-models
7555
1224
        assign_smt_debugCheckModels(opts, option, true);
7556
1224
      break;
7557
    case 932:// --no-debug-check-models
7558
        assign_smt_debugCheckModels(opts, option, false);
7559
      break;
7560
    case 933: // --dump-to=FILE
7561
        assign_smt_dumpToFileName(opts, option, optionarg);
7562
      break;
7563
3
    case 934: // --dump=MODE
7564
3
        assign_smt_dumpModeString(opts, option, optionarg);
7565
2
      break;
7566
    case 935: // --early-ite-removal
7567
        assign_smt_earlyIteRemoval(opts, option, true);
7568
      break;
7569
    case 936:// --no-early-ite-removal
7570
        assign_smt_earlyIteRemoval(opts, option, false);
7571
      break;
7572
    case 937: // --expand-definitions
7573
        assign_smt_expandDefinitions(opts, option, true);
7574
      break;
7575
    case 938:// --no-expand-definitions
7576
        assign_smt_expandDefinitions(opts, option, false);
7577
      break;
7578
17
    case 939: // --ext-rew-prep
7579
17
        assign_smt_extRewPrep(opts, option, true);
7580
17
      break;
7581
    case 940:// --no-ext-rew-prep
7582
        assign_smt_extRewPrep(opts, option, false);
7583
      break;
7584
7
    case 941: // --ext-rew-prep-agg
7585
7
        assign_smt_extRewPrepAgg(opts, option, true);
7586
7
      break;
7587
    case 942:// --no-ext-rew-prep-agg
7588
        assign_smt_extRewPrepAgg(opts, option, false);
7589
      break;
7590
2
    case 943: // --foreign-theory-rewrite
7591
2
        assign_smt_foreignTheoryRewrite(opts, option, true);
7592
2
      break;
7593
    case 944:// --no-foreign-theory-rewrite
7594
        assign_smt_foreignTheoryRewrite(opts, option, false);
7595
      break;
7596
68
    case 945: // --iand-mode=mode
7597
68
        assign_smt_iandMode(opts, option, optionarg);
7598
68
      break;
7599
    case 946: // --interactive-mode
7600
        assign_smt_interactiveMode(opts, option, true);
7601
      break;
7602
    case 947:// --no-interactive-mode
7603
        assign_smt_interactiveMode(opts, option, false);
7604
      break;
7605
    case 948: // --ite-simp
7606
        assign_smt_doITESimp(opts, option, true);
7607
      break;
7608
    case 949:// --no-ite-simp
7609
        assign_smt_doITESimp(opts, option, false);
7610
      break;
7611
2
    case 950: // --learned-rewrite
7612
2
        assign_smt_learnedRewrite(opts, option, true);
7613
2
      break;
7614
    case 951:// --no-learned-rewrite
7615
        assign_smt_learnedRewrite(opts, option, false);
7616
      break;
7617
3
    case 952: // --minimal-unsat-cores
7618
3
        assign_smt_minimalUnsatCores(opts, option, true);
7619
3
      break;
7620
    case 953:// --no-minimal-unsat-cores
7621
        assign_smt_minimalUnsatCores(opts, option, false);
7622
      break;
7623
6
    case 954: // --model-cores=MODE
7624
6
        assign_smt_modelCoresMode(opts, option, optionarg);
7625
6
      break;
7626
1
    case 955: // --model-u-print=MODE
7627
    case 956: // --model-uninterp-print
7628
1
        assign_smt_modelUninterpPrint(opts, option, optionarg);
7629
1
      break;
7630
1
    case 957: // --model-witness-value
7631
1
        assign_smt_modelWitnessValue(opts, option, true);
7632
1
      break;
7633
    case 958:// --no-model-witness-value
7634
        assign_smt_modelWitnessValue(opts, option, false);
7635
      break;
7636
    case 959: // --on-repeat-ite-simp
7637
        assign_smt_doITESimpOnRepeat(opts, option, true);
7638
      break;
7639
    case 960:// --no-on-repeat-ite-simp
7640
        assign_smt_doITESimpOnRepeat(opts, option, false);
7641
      break;
7642
12
    case 961: // --produce-abducts
7643
12
        assign_smt_produceAbducts(opts, option, true);
7644
12
      break;
7645
    case 962:// --no-produce-abducts
7646
        assign_smt_produceAbducts(opts, option, false);
7647
      break;
7648
    case 963: // --produce-assertions
7649
        assign_smt_produceAssertions(opts, option, true);
7650
      break;
7651
    case 964:// --no-produce-assertions
7652
        assign_smt_produceAssertions(opts, option, false);
7653
      break;
7654
    case 965: // --produce-assignments
7655
        assign_smt_produceAssignments(opts, option, true);
7656
      break;
7657
    case 966:// --no-produce-assignments
7658
        assign_smt_produceAssignments(opts, option, false);
7659
      break;
7660
8
    case 967: // --produce-interpols=MODE
7661
8
        assign_smt_produceInterpols(opts, option, optionarg);
7662
8
      break;
7663
37
    case 'm':
7664
    case 968: // --produce-models
7665
37
        assign_smt_produceModels(opts, option, true);
7666
37
      break;
7667
    case 969:// --no-produce-models
7668
        assign_smt_produceModels(opts, option, false);
7669
      break;
7670
7
    case 970: // --produce-proofs
7671
7
        assign_smt_produceProofs(opts, option, true);
7672
7
      break;
7673
18
    case 971:// --no-produce-proofs
7674
18
        assign_smt_produceProofs(opts, option, false);
7675
18
      break;
7676
    case 972: // --produce-unsat-assumptions
7677
        assign_smt_unsatAssumptions(opts, option, true);
7678
      break;
7679
    case 973:// --no-produce-unsat-assumptions
7680
        assign_smt_unsatAssumptions(opts, option, false);
7681
      break;
7682
4
    case 974: // --produce-unsat-cores
7683
4
        assign_smt_unsatCores(opts, option, true);
7684
4
      break;
7685
2
    case 975:// --no-produce-unsat-cores
7686
2
        assign_smt_unsatCores(opts, option, false);
7687
2
      break;
7688
2
    case 976: // --repeat-simp
7689
2
        assign_smt_repeatSimp(opts, option, true);
7690
2
      break;
7691
    case 977:// --no-repeat-simp
7692
        assign_smt_repeatSimp(opts, option, false);
7693
      break;
7694
    case 978: // --simp-ite-compress
7695
        assign_smt_compressItes(opts, option, true);
7696
      break;
7697
    case 979:// --no-simp-ite-compress
7698
        assign_smt_compressItes(opts, option, false);
7699
      break;
7700
    case 980: // --simp-ite-hunt-zombies=N
7701
        assign_smt_zombieHuntThreshold(opts, option, optionarg);
7702
      break;
7703
    case 981: // --simp-with-care
7704
        assign_smt_simplifyWithCareEnabled(opts, option, true);
7705
      break;
7706
    case 982:// --no-simp-with-care
7707
        assign_smt_simplifyWithCareEnabled(opts, option, false);
7708
      break;
7709
31
    case 983: // --simplification=MODE
7710
    case 984: // --simplification-mode
7711
31
        assign_smt_simplificationMode(opts, option, optionarg);
7712
31
      break;
7713
135
    case 985: // --solve-bv-as-int=MODE
7714
135
        assign_smt_solveBVAsInt(opts, option, optionarg);
7715
135
      break;
7716
11
    case 986: // --solve-int-as-bv=N
7717
11
        assign_smt_solveIntAsBV(opts, option, optionarg);
7718
11
      break;
7719
9
    case 987: // --solve-real-as-int
7720
9
        assign_smt_solveRealAsInt(opts, option, true);
7721
9
      break;
7722
    case 988:// --no-solve-real-as-int
7723
        assign_smt_solveRealAsInt(opts, option, false);
7724
      break;
7725
20
    case 989: // --sort-inference
7726
20
        assign_smt_sortInference(opts, option, true);
7727
20
      break;
7728
    case 990:// --no-sort-inference
7729
        assign_smt_sortInference(opts, option, false);
7730
      break;
7731
    case 991: // --static-learning
7732
        assign_smt_doStaticLearning(opts, option, true);
7733
      break;
7734
    case 992:// --no-static-learning
7735
        assign_smt_doStaticLearning(opts, option, false);
7736
      break;
7737
182
    case 993: // --sygus-out=MODE
7738
182
        assign_smt_sygusOut(opts, option, optionarg);
7739
182
      break;
7740
    case 994: // --sygus-print-callbacks
7741
        assign_smt_sygusPrintCallbacks(opts, option, true);
7742
      break;
7743
    case 995:// --no-sygus-print-callbacks
7744
        assign_smt_sygusPrintCallbacks(opts, option, false);
7745
      break;
7746
104
    case 996: // --unconstrained-simp
7747
104
        assign_smt_unconstrainedSimp(opts, option, true);
7748
104
      break;
7749
3
    case 997:// --no-unconstrained-simp
7750
3
        assign_smt_unconstrainedSimp(opts, option, false);
7751
3
      break;
7752
2
    case 998: // --unsat-cores-mode=MODE
7753
2
        assign_smt_unsatCoresMode(opts, option, optionarg);
7754
2
      break;
7755
25
    case 999: // --re-elim
7756
25
        assign_strings_regExpElim(opts, option, true);
7757
25
      break;
7758
10
    case 1000:// --no-re-elim
7759
10
        assign_strings_regExpElim(opts, option, false);
7760
10
      break;
7761
12
    case 1001: // --re-elim-agg
7762
12
        assign_strings_regExpElimAgg(opts, option, true);
7763
12
      break;
7764
    case 1002:// --no-re-elim-agg
7765
        assign_strings_regExpElimAgg(opts, option, false);
7766
      break;
7767
    case 1003: // --re-inter-mode=MODE
7768
        assign_strings_stringRegExpInterMode(opts, option, optionarg);
7769
      break;
7770
    case 1004: // --strings-check-entail-len
7771
        assign_strings_stringCheckEntailLen(opts, option, true);
7772
      break;
7773
    case 1005:// --no-strings-check-entail-len
7774
        assign_strings_stringCheckEntailLen(opts, option, false);
7775
      break;
7776
2
    case 1006: // --strings-eager
7777
2
        assign_strings_stringEager(opts, option, true);
7778
2
      break;
7779
    case 1007:// --no-strings-eager
7780
        assign_strings_stringEager(opts, option, false);
7781
      break;
7782
    case 1008: // --strings-eager-eval
7783
        assign_strings_stringEagerEval(opts, option, true);
7784
      break;
7785
    case 1009:// --no-strings-eager-eval
7786
        assign_strings_stringEagerEval(opts, option, false);
7787
      break;
7788
    case 1010: // --strings-eager-len
7789
        assign_strings_stringEagerLen(opts, option, true);
7790
      break;
7791
    case 1011:// --no-strings-eager-len
7792
        assign_strings_stringEagerLen(opts, option, false);
7793
      break;
7794
328
    case 1012: // --strings-exp
7795
328
        assign_strings_stringExp(opts, option, true);
7796
328
      break;
7797
    case 1013:// --no-strings-exp
7798
        assign_strings_stringExp(opts, option, false);
7799
      break;
7800
    case 1014: // --strings-ff
7801
        assign_strings_stringFlatForms(opts, option, true);
7802
      break;
7803
    case 1015:// --no-strings-ff
7804
        assign_strings_stringFlatForms(opts, option, false);
7805
      break;
7806
25
    case 1016: // --strings-fmf
7807
25
        assign_strings_stringFMF(opts, option, true);
7808
25
      break;
7809
    case 1017:// --no-strings-fmf
7810
        assign_strings_stringFMF(opts, option, false);
7811
      break;
7812
    case 1018: // --strings-guess-model
7813
        assign_strings_stringGuessModel(opts, option, true);
7814
      break;
7815
    case 1019:// --no-strings-guess-model
7816
        assign_strings_stringGuessModel(opts, option, false);
7817
      break;
7818
    case 1020: // --strings-infer-as-lemmas
7819
        assign_strings_stringInferAsLemmas(opts, option, true);
7820
      break;
7821
    case 1021:// --no-strings-infer-as-lemmas
7822
        assign_strings_stringInferAsLemmas(opts, option, false);
7823
      break;
7824
    case 1022: // --strings-infer-sym
7825
        assign_strings_stringInferSym(opts, option, true);
7826
      break;
7827
    case 1023:// --no-strings-infer-sym
7828
        assign_strings_stringInferSym(opts, option, false);
7829
      break;
7830
    case 1024: // --strings-lazy-pp
7831
        assign_strings_stringLazyPreproc(opts, option, true);
7832
      break;
7833
21
    case 1025:// --no-strings-lazy-pp
7834
21
        assign_strings_stringLazyPreproc(opts, option, false);
7835
21
      break;
7836
    case 1026: // --strings-len-norm
7837
        assign_strings_stringLenNorm(opts, option, true);
7838
      break;
7839
    case 1027:// --no-strings-len-norm
7840
        assign_strings_stringLenNorm(opts, option, false);
7841
      break;
7842
    case 1028: // --strings-lprop-csp
7843
        assign_strings_stringLenPropCsp(opts, option, true);
7844
      break;
7845
    case 1029:// --no-strings-lprop-csp
7846
        assign_strings_stringLenPropCsp(opts, option, false);
7847
      break;
7848
    case 1030: // --strings-min-prefix-explain
7849
        assign_strings_stringMinPrefixExplain(opts, option, true);
7850
      break;
7851
    case 1031:// --no-strings-min-prefix-explain
7852
        assign_strings_stringMinPrefixExplain(opts, option, false);
7853
      break;
7854
    case 1032: // --strings-process-loop-mode=MODE
7855
        assign_strings_stringProcessLoopMode(opts, option, optionarg);
7856
      break;
7857
    case 1033: // --strings-rexplain-lemmas
7858
        assign_strings_stringRExplainLemmas(opts, option, true);
7859
      break;
7860
    case 1034:// --no-strings-rexplain-lemmas
7861
        assign_strings_stringRExplainLemmas(opts, option, false);
7862
      break;
7863
    case 1035: // --strings-unified-vspt
7864
        assign_strings_stringUnifiedVSpt(opts, option, true);
7865
      break;
7866
    case 1036:// --no-strings-unified-vspt
7867
        assign_strings_stringUnifiedVSpt(opts, option, false);
7868
      break;
7869
    case 1037: // --assign-function-values
7870
        assign_theory_assignFunctionValues(opts, option, true);
7871
      break;
7872
    case 1038:// --no-assign-function-values
7873
        assign_theory_assignFunctionValues(opts, option, false);
7874
      break;
7875
    case 1039: // --condense-function-values
7876
        assign_theory_condenseFunctionValues(opts, option, true);
7877
      break;
7878
    case 1040:// --no-condense-function-values
7879
        assign_theory_condenseFunctionValues(opts, option, false);
7880
      break;
7881
56
    case 1041: // --ee-mode=MODE
7882
56
        assign_theory_eeMode(opts, option, optionarg);
7883
56
      break;
7884
    case 1042: // --relevance-filter
7885
        assign_theory_relevanceFilter(opts, option, true);
7886
      break;
7887
    case 1043:// --no-relevance-filter
7888
        assign_theory_relevanceFilter(opts, option, false);
7889
      break;
7890
    case 1044: // --tc-mode=MODE
7891
        assign_theory_tcMode(opts, option, optionarg);
7892
      break;
7893
5
    case 1045: // --theoryof-mode=MODE
7894
5
        assign_theory_theoryOfMode(opts, option, optionarg);
7895
5
      break;
7896
    case 1046: // --symmetry-breaker
7897
    case 1047: // --uf-symmetry-breaker
7898
        assign_uf_ufSymmetryBreaker(opts, option, true);
7899
      break;
7900
    case 1048:// --no-symmetry-breaker
7901
    case 1049:// --no-uf-symmetry-breaker
7902
        assign_uf_ufSymmetryBreaker(opts, option, false);
7903
      break;
7904
    case 1050: // --uf-ho
7905
        assign_uf_ufHo(opts, option, true);
7906
      break;
7907
    case 1051:// --no-uf-ho
7908
        assign_uf_ufHo(opts, option, false);
7909
      break;
7910
    case 1052: // --uf-ho-ext
7911
        assign_uf_ufHoExt(opts, option, true);
7912
      break;
7913
    case 1053:// --no-uf-ho-ext
7914
        assign_uf_ufHoExt(opts, option, false);
7915
      break;
7916
    case 1054: // --uf-ss-abort-card=N
7917
        assign_uf_ufssAbortCardinality(opts, option, optionarg);
7918
      break;
7919
    case 1055: // --uf-ss-fair
7920
        assign_uf_ufssFairness(opts, option, true);
7921
      break;
7922
    case 1056:// --no-uf-ss-fair
7923
        assign_uf_ufssFairness(opts, option, false);
7924
      break;
7925
4
    case 1057: // --uf-ss-fair-monotone
7926
4
        assign_uf_ufssFairnessMonotone(opts, option, true);
7927
4
      break;
7928
    case 1058:// --no-uf-ss-fair-monotone
7929
        assign_uf_ufssFairnessMonotone(opts, option, false);
7930
      break;
7931
    case 1059: // --uf-ss-totality-limited=N
7932
        assign_uf_ufssTotalityLimited(opts, option, optionarg);
7933
      break;
7934
    case 1060: // --uf-ss-totality-sym-break
7935
        assign_uf_ufssTotalitySymBreak(opts, option, true);
7936
      break;
7937
    case 1061:// --no-uf-ss-totality-sym-break
7938
        assign_uf_ufssTotalitySymBreak(opts, option, false);
7939
      break;
7940
7
    case 1062: // --uf-ss=MODE
7941
7
        assign_uf_ufssMode(opts, option, optionarg);
7942
7
      break;
7943
7944
      case ':' :
7945
      // This can be a long or short option, and the way to get at the
7946
      // name of it is different.
7947
      throw OptionException(std::string("option `") + option
7948
                            + "' missing its required argument");
7949
7950
      case '?':
7951
      default:
7952
        throw OptionException(std::string("can't understand option `") + option
7953
                              + "'" + suggestCommandLineOptions(option));
7954
    }
7955
15472
  }
7956
  // clang-format on
7957
7958
18591
  Debug("options") << "got " << nonoptions.size()
7959
6197
                   << " non-option arguments." << std::endl;
7960
6197
}
7961
7962
/**
7963
 * Parse argc/argv and put the result into a cvc5::Options.
7964
 * The return value is what's left of the command line (that is, the
7965
 * non-option arguments).
7966
 *
7967
 * Throws OptionException on failures.
7968
 */
7969
8808
std::vector<std::string> parse(
7970
    Options & opts, int argc, char* argv[], std::string& binaryName)
7971
{
7972
8808
  Assert(argv != nullptr);
7973
7974
8808
  Options* cur = &Options::current();
7975
15006
  OptionsGuard guard(&cur, &opts);
7976
7977
8808
  const char *progName = argv[0];
7978
7979
  // To debug options parsing, you may prefer to simply uncomment this
7980
  // and recompile. Debug flags have not been parsed yet so these have
7981
  // not been set.
7982
  //DebugChannel.on("options");
7983
7984
8808
  Debug("options") << "options::parse == " << &opts << std::endl;
7985
8808
  Debug("options") << "argv == " << argv << std::endl;
7986
7987
  // Find the base name of the program.
7988
8808
  const char *x = strrchr(progName, '/');
7989
8808
  if(x != nullptr) {
7990
8744
    progName = x + 1;
7991
  }
7992
8808
  binaryName = std::string(progName);
7993
7994
8808
  std::vector<std::string> nonoptions;
7995
8808
  parseInternal(opts, argc, argv, nonoptions);
7996
6197
  if (Debug.isOn("options")){
7997
    for(std::vector<std::string>::const_iterator i = nonoptions.begin(),
7998
          iend = nonoptions.end(); i != iend; ++i){
7999
      Debug("options") << "nonoptions " << *i << std::endl;
8000
    }
8001
  }
8002
8003
12394
  return nonoptions;
8004
}
8005
8006
59
std::string get(const Options& options, const std::string& name)
8007
{
8008
59
  Trace("options") << "Options::getOption(" << name << ")" << std::endl;
8009
  // clang-format off
8010
59
  if (name == "approx-branch-depth") {
8011
return std::to_string(options.arith.maxApproxDepth);
8012
}
8013
59
if (name == "arith-brab") {
8014
return options.arith.brabTest ? "true" : "false";
8015
}
8016
59
if (name == "arith-cong-man") {
8017
return options.arith.arithCongMan ? "true" : "false";
8018
}
8019
59
if (name == "arith-eq-solver") {
8020
return options.arith.arithEqSolver ? "true" : "false";
8021
}
8022
59
if (name == "arith-no-partial-fun") {
8023
return options.arith.arithNoPartialFun ? "true" : "false";
8024
}
8025
59
if (name == "arith-prop-clauses") {
8026
return std::to_string(options.arith.arithPropAsLemmaLength);
8027
}
8028
59
if (name == "arith-prop") {
8029
std::stringstream ss;
8030
ss << options.arith.arithPropagationMode;
8031
return ss.str();
8032
}
8033
59
if (name == "arith-rewrite-equalities") {
8034
return options.arith.arithRewriteEq ? "true" : "false";
8035
}
8036
59
if (name == "collect-pivot-stats") {
8037
return options.arith.collectPivots ? "true" : "false";
8038
}
8039
59
if (name == "cut-all-bounded") {
8040
return options.arith.doCutAllBounded ? "true" : "false";
8041
}
8042
59
if (name == "dio-decomps") {
8043
return options.arith.exportDioDecompositions ? "true" : "false";
8044
}
8045
59
if (name == "dio-repeat") {
8046
return options.arith.dioRepeat ? "true" : "false";
8047
}
8048
59
if (name == "dio-solver") {
8049
return options.arith.arithDioSolver ? "true" : "false";
8050
}
8051
59
if (name == "dio-turns") {
8052
return std::to_string(options.arith.dioSolverTurns);
8053
}
8054
59
if (name == "error-selection-rule") {
8055
std::stringstream ss;
8056
ss << options.arith.arithErrorSelectionRule;
8057
return ss.str();
8058
}
8059
59
if (name == "fc-penalties") {
8060
return options.arith.havePenalties ? "true" : "false";
8061
}
8062
59
if (name == "heuristic-pivots") {
8063
return std::to_string(options.arith.arithHeuristicPivots);
8064
}
8065
59
if (name == "lemmas-on-replay-failure") {
8066
return options.arith.replayFailureLemma ? "true" : "false";
8067
}
8068
59
if (name == "maxCutsInContext") {
8069
return std::to_string(options.arith.maxCutsInContext);
8070
}
8071
59
if (name == "miplib-trick") {
8072
return options.arith.arithMLTrick ? "true" : "false";
8073
}
8074
59
if (name == "miplib-trick-subs") {
8075
return std::to_string(options.arith.arithMLTrickSubstitutions);
8076
}
8077
59
if (name == "new-prop") {
8078
return options.arith.newProp ? "true" : "false";
8079
}
8080
59
if (name == "nl-cad") {
8081
return options.arith.nlCad ? "true" : "false";
8082
}
8083
59
if (name == "nl-cad-initial") {
8084
return options.arith.nlCadUseInitial ? "true" : "false";
8085
}
8086
59
if (name == "nl-cad-lift") {
8087
std::stringstream ss;
8088
ss << options.arith.nlCadLifting;
8089
return ss.str();
8090
}
8091
59
if (name == "nl-cad-proj") {
8092
std::stringstream ss;
8093
ss << options.arith.nlCadProjection;
8094
return ss.str();
8095
}
8096
59
if (name == "nl-ext-ent-conf") {
8097
return options.arith.nlExtEntailConflicts ? "true" : "false";
8098
}
8099
59
if (name == "nl-ext-factor") {
8100
return options.arith.nlExtFactor ? "true" : "false";
8101
}
8102
59
if (name == "nl-ext-inc-prec") {
8103
return options.arith.nlExtIncPrecision ? "true" : "false";
8104
}
8105
59
if (name == "nl-ext-purify") {
8106
return options.arith.nlExtPurify ? "true" : "false";
8107
}
8108
59
if (name == "nl-ext-rbound") {
8109
return options.arith.nlExtResBound ? "true" : "false";
8110
}
8111
59
if (name == "nl-ext-rewrite") {
8112
return options.arith.nlExtRewrites ? "true" : "false";
8113
}
8114
59
if (name == "nl-ext-split-zero") {
8115
return options.arith.nlExtSplitZero ? "true" : "false";
8116
}
8117
59
if (name == "nl-ext-tf-taylor-deg") {
8118
return std::to_string(options.arith.nlExtTfTaylorDegree);
8119
}
8120
59
if (name == "nl-ext-tf-tplanes") {
8121
return options.arith.nlExtTfTangentPlanes ? "true" : "false";
8122
}
8123
59
if (name == "nl-ext-tplanes") {
8124
return options.arith.nlExtTangentPlanes ? "true" : "false";
8125
}
8126
59
if (name == "nl-ext-tplanes-interleave") {
8127
return options.arith.nlExtTangentPlanesInterleave ? "true" : "false";
8128
}
8129
59
if (name == "nl-ext") {
8130
std::stringstream ss;
8131
ss << options.arith.nlExt;
8132
return ss.str();
8133
}
8134
59
if (name == "nl-icp") {
8135
return options.arith.nlICP ? "true" : "false";
8136
}
8137
59
if (name == "nl-rlv") {
8138
std::stringstream ss;
8139
ss << options.arith.nlRlvMode;
8140
return ss.str();
8141
}
8142
59
if (name == "pb-rewrites") {
8143
return options.arith.pbRewrites ? "true" : "false";
8144
}
8145
59
if (name == "pivot-threshold") {
8146
return std::to_string(options.arith.arithPivotThreshold);
8147
}
8148
59
if (name == "pp-assert-max-sub-size") {
8149
return std::to_string(options.arith.ppAssertMaxSubSize);
8150
}
8151
59
if (name == "prop-row-length") {
8152
return std::to_string(options.arith.arithPropagateMaxLength);
8153
}
8154
59
if (name == "replay-early-close-depth") {
8155
return std::to_string(options.arith.replayEarlyCloseDepths);
8156
}
8157
59
if (name == "replay-failure-penalty") {
8158
return std::to_string(options.arith.replayFailurePenalty);
8159
}
8160
59
if (name == "replay-lemma-reject-cut") {
8161
return std::to_string(options.arith.lemmaRejectCutSize);
8162
}
8163
59
if (name == "replay-num-err-penalty") {
8164
return std::to_string(options.arith.replayNumericFailurePenalty);
8165
}
8166
59
if (name == "replay-reject-cut") {
8167
return std::to_string(options.arith.replayRejectCutSize);
8168
}
8169
59
if (name == "replay-soi-major-threshold-pen") {
8170
return std::to_string(options.arith.soiApproxMajorFailurePen);
8171
}
8172
59
if (name == "replay-soi-major-threshold") {
8173
return std::to_string(options.arith.soiApproxMajorFailure);
8174
}
8175
59
if (name == "replay-soi-minor-threshold-pen") {
8176
return std::to_string(options.arith.soiApproxMinorFailurePen);
8177
}
8178
59
if (name == "replay-soi-minor-threshold") {
8179
return std::to_string(options.arith.soiApproxMinorFailure);
8180
}
8181
59
if (name == "restrict-pivots") {
8182
return options.arith.restrictedPivots ? "true" : "false";
8183
}
8184
59
if (name == "revert-arith-models-on-unsat") {
8185
return options.arith.revertArithModels ? "true" : "false";
8186
}
8187
59
if (name == "rr-turns") {
8188
return std::to_string(options.arith.rrTurns);
8189
}
8190
59
if (name == "se-solve-int") {
8191
return options.arith.trySolveIntStandardEffort ? "true" : "false";
8192
}
8193
59
if (name == "simplex-check-period") {
8194
return std::to_string(options.arith.arithSimplexCheckPeriod);
8195
}
8196
59
if (name == "soi-qe") {
8197
return options.arith.soiQuickExplain ? "true" : "false";
8198
}
8199
59
if (name == "standard-effort-variable-order-pivots") {
8200
return std::to_string(options.arith.arithStandardCheckVarOrderPivots);
8201
}
8202
59
if (name == "unate-lemmas") {
8203
std::stringstream ss;
8204
ss << options.arith.arithUnateLemmaMode;
8205
return ss.str();
8206
}
8207
59
if (name == "use-approx") {
8208
return options.arith.useApprox ? "true" : "false";
8209
}
8210
59
if (name == "use-fcsimplex") {
8211
return options.arith.useFC ? "true" : "false";
8212
}
8213
59
if (name == "use-soi") {
8214
return options.arith.useSOI ? "true" : "false";
8215
}
8216
59
if (name == "arrays-config") {
8217
return std::to_string(options.arrays.arraysConfig);
8218
}
8219
59
if (name == "arrays-eager-index") {
8220
return options.arrays.arraysEagerIndexSplitting ? "true" : "false";
8221
}
8222
59
if (name == "arrays-eager-lemmas") {
8223
return options.arrays.arraysEagerLemmas ? "true" : "false";
8224
}
8225
59
if (name == "arrays-exp") {
8226
17
return options.arrays.arraysExp ? "true" : "false";
8227
}
8228
42
if (name == "arrays-model-based") {
8229
return options.arrays.arraysModelBased ? "true" : "false";
8230
}
8231
42
if (name == "arrays-optimize-linear") {
8232
return options.arrays.arraysOptimizeLinear ? "true" : "false";
8233
}
8234
42
if (name == "arrays-prop") {
8235
return std::to_string(options.arrays.arraysPropagate);
8236
}
8237
42
if (name == "arrays-reduce-sharing") {
8238
return options.arrays.arraysReduceSharing ? "true" : "false";
8239
}
8240
42
if (name == "arrays-weak-equiv") {
8241
return options.arrays.arraysWeakEquivalence ? "true" : "false";
8242
}
8243
42
if (name == "diagnostic-output-channel" || name == "err") {
8244
std::stringstream ss;
8245
ss << options.base.err;
8246
return ss.str();
8247
}
8248
42
if (name == "in") {
8249
std::stringstream ss;
8250
ss << options.base.in;
8251
return ss.str();
8252
}
8253
42
if (name == "incremental") {
8254
2
return options.base.incrementalSolving ? "true" : "false";
8255
}
8256
40
if (name == "input-language" || name == "lang") {
8257
2
std::stringstream ss;
8258
1
ss << options.base.inputLanguage;
8259
1
return ss.str();
8260
}
8261
39
if (name == "out" || name == "regular-output-channel") {
8262
std::stringstream ss;
8263
ss << options.base.out;
8264
return ss.str();
8265
}
8266
39
if (name == "output-lang" || name == "output-language") {
8267
std::stringstream ss;
8268
ss << options.base.outputLanguage;
8269
return ss.str();
8270
}
8271
39
if (name == "output") {
8272
std::stringstream ss;
8273
ss << options.base.outputTag;
8274
return ss.str();
8275
}
8276
39
if (name == "parse-only") {
8277
return options.base.parseOnly ? "true" : "false";
8278
}
8279
39
if (name == "preprocess-only") {
8280
return options.base.preprocessOnly ? "true" : "false";
8281
}
8282
39
if (name == "print-success") {
8283
return options.base.printSuccess ? "true" : "false";
8284
}
8285
39
if (name == "reproducible-resource-limit" || name == "rlimit-per") {
8286
return std::to_string(options.base.perCallResourceLimit);
8287
}
8288
39
if (name == "rlimit") {
8289
return std::to_string(options.base.cumulativeResourceLimit);
8290
}
8291
39
if (name == "stats") {
8292
5
return options.base.statistics ? "true" : "false";
8293
}
8294
34
if (name == "stats-all") {
8295
5
return options.base.statisticsAll ? "true" : "false";
8296
}
8297
29
if (name == "stats-every-query") {
8298
5
return options.base.statisticsEveryQuery ? "true" : "false";
8299
}
8300
24
if (name == "stats-expert") {
8301
5
return options.base.statisticsExpert ? "true" : "false";
8302
}
8303
19
if (name == "tlimit-per") {
8304
return std::to_string(options.base.perCallMillisecondLimit);
8305
}
8306
19
if (name == "tlimit") {
8307
return std::to_string(options.base.cumulativeMillisecondLimit);
8308
}
8309
19
if (name == "verbosity") {
8310
6
return std::to_string(options.base.verbosity);
8311
}
8312
13
if (name == "bitblast-aig") {
8313
return options.bv.bitvectorAig ? "true" : "false";
8314
}
8315
13
if (name == "bitblast") {
8316
std::stringstream ss;
8317
ss << options.bv.bitblastMode;
8318
return ss.str();
8319
}
8320
13
if (name == "bitwise-eq") {
8321
return options.bv.bitwiseEq ? "true" : "false";
8322
}
8323
13
if (name == "bool-to-bv") {
8324
std::stringstream ss;
8325
ss << options.bv.boolToBitvector;
8326
return ss.str();
8327
}
8328
13
if (name == "bv-abstraction") {
8329
return options.bv.bvAbstraction ? "true" : "false";
8330
}
8331
13
if (name == "bv-aig-simp") {
8332
return options.bv.bitvectorAigSimplifications;
8333
}
8334
13
if (name == "bv-alg-extf") {
8335
return options.bv.bvAlgExtf ? "true" : "false";
8336
}
8337
13
if (name == "bv-algebraic-budget") {
8338
return std::to_string(options.bv.bitvectorAlgebraicBudget);
8339
}
8340
13
if (name == "bv-algebraic-solver") {
8341
return options.bv.bitvectorAlgebraicSolver ? "true" : "false";
8342
}
8343
13
if (name == "bv-assert-input") {
8344
return options.bv.bvAssertInput ? "true" : "false";
8345
}
8346
13
if (name == "bv-eager-explanations") {
8347
return options.bv.bvEagerExplanations ? "true" : "false";
8348
}
8349
13
if (name == "bv-eq-solver") {
8350
return options.bv.bitvectorEqualitySolver ? "true" : "false";
8351
}
8352
13
if (name == "bv-extract-arith") {
8353
return options.bv.bvExtractArithRewrite ? "true" : "false";
8354
}
8355
13
if (name == "bv-gauss-elim") {
8356
return options.bv.bvGaussElim ? "true" : "false";
8357
}
8358
13
if (name == "bv-inequality-solver") {
8359
return options.bv.bitvectorInequalitySolver ? "true" : "false";
8360
}
8361
13
if (name == "bv-intro-pow2") {
8362
return options.bv.bvIntroducePow2 ? "true" : "false";
8363
}
8364
13
if (name == "bv-num-func") {
8365
return std::to_string(options.bv.bvNumFunc);
8366
}
8367
13
if (name == "bv-print-consts-as-indexed-symbols") {
8368
return options.bv.bvPrintConstsAsIndexedSymbols ? "true" : "false";
8369
}
8370
13
if (name == "bv-propagate") {
8371
return options.bv.bitvectorPropagate ? "true" : "false";
8372
}
8373
13
if (name == "bv-quick-xplain") {
8374
return options.bv.bitvectorQuickXplain ? "true" : "false";
8375
}
8376
13
if (name == "bv-sat-solver") {
8377
std::stringstream ss;
8378
ss << options.bv.bvSatSolver;
8379
return ss.str();
8380
}
8381
13
if (name == "bv-skolemize") {
8382
return options.bv.skolemizeArguments ? "true" : "false";
8383
}
8384
13
if (name == "bv-solver") {
8385
std::stringstream ss;
8386
ss << options.bv.bvSolver;
8387
return ss.str();
8388
}
8389
13
if (name == "bv-to-bool") {
8390
return options.bv.bitvectorToBool ? "true" : "false";
8391
}
8392
13
if (name == "cdt-bisimilar") {
8393
return options.datatypes.cdtBisimilar ? "true" : "false";
8394
}
8395
13
if (name == "dt-binary-split") {
8396
return options.datatypes.dtBinarySplit ? "true" : "false";
8397
}
8398
13
if (name == "dt-blast-splits") {
8399
return options.datatypes.dtBlastSplits ? "true" : "false";
8400
}
8401
13
if (name == "dt-cyclic") {
8402
return options.datatypes.dtCyclic ? "true" : "false";
8403
}
8404
13
if (name == "dt-force-assignment") {
8405
return options.datatypes.dtForceAssignment ? "true" : "false";
8406
}
8407
13
if (name == "dt-infer-as-lemmas") {
8408
return options.datatypes.dtInferAsLemmas ? "true" : "false";
8409
}
8410
13
if (name == "dt-nested-rec") {
8411
return options.datatypes.dtNestedRec ? "true" : "false";
8412
}
8413
13
if (name == "dt-polite-optimize") {
8414
return options.datatypes.dtPoliteOptimize ? "true" : "false";
8415
}
8416
13
if (name == "dt-rewrite-error-sel") {
8417
return options.datatypes.dtRewriteErrorSel ? "true" : "false";
8418
}
8419
13
if (name == "dt-share-sel") {
8420
return options.datatypes.dtSharedSelectors ? "true" : "false";
8421
}
8422
13
if (name == "sygus-abort-size") {
8423
return std::to_string(options.datatypes.sygusAbortSize);
8424
}
8425
13
if (name == "sygus-fair-max") {
8426
return options.datatypes.sygusFairMax ? "true" : "false";
8427
}
8428
13
if (name == "sygus-fair") {
8429
std::stringstream ss;
8430
ss << options.datatypes.sygusFair;
8431
return ss.str();
8432
}
8433
13
if (name == "sygus-sym-break") {
8434
return options.datatypes.sygusSymBreak ? "true" : "false";
8435
}
8436
13
if (name == "sygus-sym-break-agg") {
8437
return options.datatypes.sygusSymBreakAgg ? "true" : "false";
8438
}
8439
13
if (name == "sygus-sym-break-dynamic") {
8440
return options.datatypes.sygusSymBreakDynamic ? "true" : "false";
8441
}
8442
13
if (name == "sygus-sym-break-lazy") {
8443
return options.datatypes.sygusSymBreakLazy ? "true" : "false";
8444
}
8445
13
if (name == "sygus-sym-break-pbe") {
8446
return options.datatypes.sygusSymBreakPbe ? "true" : "false";
8447
}
8448
13
if (name == "sygus-sym-break-rlv") {
8449
return options.datatypes.sygusSymBreakRlv ? "true" : "false";
8450
}
8451
13
if (name == "decision-random-weight") {
8452
return std::to_string(options.decision.decisionRandomWeight);
8453
}
8454
13
if (name == "decision-threshold") {
8455
std::stringstream ss;
8456
ss << options.decision.decisionThreshold;
8457
return ss.str();
8458
}
8459
13
if (name == "decision-use-weight") {
8460
return options.decision.decisionUseWeight ? "true" : "false";
8461
}
8462
13
if (name == "decision-weight-internal") {
8463
std::stringstream ss;
8464
ss << options.decision.decisionWeightInternal;
8465
return ss.str();
8466
}
8467
13
if (name == "decision" || name == "decision-mode") {
8468
std::stringstream ss;
8469
ss << options.decision.decisionMode;
8470
return ss.str();
8471
}
8472
13
if (name == "jh-rlv-order") {
8473
return options.decision.jhRlvOrder ? "true" : "false";
8474
}
8475
13
if (name == "jh-skolem-rlv") {
8476
std::stringstream ss;
8477
ss << options.decision.jhSkolemRlvMode;
8478
return ss.str();
8479
}
8480
13
if (name == "jh-skolem") {
8481
std::stringstream ss;
8482
ss << options.decision.jhSkolemMode;
8483
return ss.str();
8484
}
8485
13
if (name == "dag-thresh") {
8486
1
return std::to_string(options.expr.defaultDagThresh);
8487
}
8488
12
if (name == "expr-depth") {
8489
return std::to_string(options.expr.defaultExprDepth);
8490
}
8491
12
if (name == "type-checking") {
8492
return options.expr.typeChecking ? "true" : "false";
8493
}
8494
12
if (name == "fp-exp") {
8495
return options.fp.fpExp ? "true" : "false";
8496
}
8497
12
if (name == "fp-lazy-wb") {
8498
return options.fp.fpLazyWb ? "true" : "false";
8499
}
8500
12
if (name == "dump-instantiations") {
8501
return options.driver.dumpInstantiations ? "true" : "false";
8502
}
8503
12
if (name == "dump-instantiations-debug") {
8504
return options.driver.dumpInstantiationsDebug ? "true" : "false";
8505
}
8506
12
if (name == "dump-models") {
8507
return options.driver.dumpModels ? "true" : "false";
8508
}
8509
12
if (name == "dump-proofs") {
8510
return options.driver.dumpProofs ? "true" : "false";
8511
}
8512
12
if (name == "dump-unsat-cores") {
8513
return options.driver.dumpUnsatCores ? "true" : "false";
8514
}
8515
12
if (name == "dump-unsat-cores-full") {
8516
return options.driver.dumpUnsatCoresFull ? "true" : "false";
8517
}
8518
12
if (name == "early-exit") {
8519
return options.driver.earlyExit ? "true" : "false";
8520
}
8521
12
if (name == "force-no-limit-cpu-while-dump") {
8522
return options.driver.forceNoLimitCpuWhileDump ? "true" : "false";
8523
}
8524
12
if (name == "help") {
8525
return options.driver.help ? "true" : "false";
8526
}
8527
12
if (name == "interactive") {
8528
return options.driver.interactive ? "true" : "false";
8529
}
8530
12
if (name == "seed") {
8531
return std::to_string(options.driver.seed);
8532
}
8533
12
if (name == "segv-spin") {
8534
return options.driver.segvSpin ? "true" : "false";
8535
}
8536
12
if (name == "version") {
8537
return options.driver.version ? "true" : "false";
8538
}
8539
12
if (name == "filesystem-access") {
8540
return options.parser.filesystemAccess ? "true" : "false";
8541
}
8542
12
if (name == "force-logic") {
8543
return options.parser.forceLogicString;
8544
}
8545
12
if (name == "global-declarations") {
8546
return options.parser.globalDeclarations ? "true" : "false";
8547
}
8548
12
if (name == "mmap") {
8549
return options.parser.memoryMap ? "true" : "false";
8550
}
8551
12
if (name == "semantic-checks") {
8552
return options.parser.semanticChecks ? "true" : "false";
8553
}
8554
12
if (name == "strict-parsing") {
8555
return options.parser.strictParsing ? "true" : "false";
8556
}
8557
12
if (name == "flatten-ho-chains") {
8558
return options.printer.flattenHOChains ? "true" : "false";
8559
}
8560
12
if (name == "model-format") {
8561
std::stringstream ss;
8562
ss << options.printer.modelFormatMode;
8563
return ss.str();
8564
}
8565
12
if (name == "print-inst-full") {
8566
return options.printer.printInstFull ? "true" : "false";
8567
}
8568
12
if (name == "print-inst") {
8569
std::stringstream ss;
8570
ss << options.printer.printInstMode;
8571
return ss.str();
8572
}
8573
12
if (name == "proof-eager-checking") {
8574
return options.proof.proofEagerChecking ? "true" : "false";
8575
}
8576
12
if (name == "proof-format-mode") {
8577
std::stringstream ss;
8578
ss << options.proof.proofFormatMode;
8579
return ss.str();
8580
}
8581
12
if (name == "proof-granularity") {
8582
std::stringstream ss;
8583
ss << options.proof.proofGranularityMode;
8584
return ss.str();
8585
}
8586
12
if (name == "proof-pedantic") {
8587
return std::to_string(options.proof.proofPedantic);
8588
}
8589
12
if (name == "proof-print-conclusion") {
8590
return options.proof.proofPrintConclusion ? "true" : "false";
8591
}
8592
12
if (name == "minisat-dump-dimacs") {
8593
return options.prop.minisatDumpDimacs ? "true" : "false";
8594
}
8595
12
if (name == "minisat-elimination") {
8596
return options.prop.minisatUseElim ? "true" : "false";
8597
}
8598
12
if (name == "random-freq" || name == "random-frequency") {
8599
return std::to_string(options.prop.satRandomFreq);
8600
}
8601
12
if (name == "random-seed") {
8602
4
return std::to_string(options.prop.satRandomSeed);
8603
}
8604
8
if (name == "refine-conflicts") {
8605
return options.prop.sat_refine_conflicts ? "true" : "false";
8606
}
8607
8
if (name == "restart-int-base") {
8608
return std::to_string(options.prop.satRestartFirst);
8609
}
8610
8
if (name == "restart-int-inc") {
8611
return std::to_string(options.prop.satRestartInc);
8612
}
8613
8
if (name == "ag-miniscope-quant") {
8614
return options.quantifiers.aggressiveMiniscopeQuant ? "true" : "false";
8615
}
8616
8
if (name == "cegis-sample") {
8617
std::stringstream ss;
8618
ss << options.quantifiers.cegisSample;
8619
return ss.str();
8620
}
8621
8
if (name == "cegqi") {
8622
return options.quantifiers.cegqi ? "true" : "false";
8623
}
8624
8
if (name == "cegqi-all") {
8625
return options.quantifiers.cegqiAll ? "true" : "false";
8626
}
8627
8
if (name == "cegqi-bv") {
8628
return options.quantifiers.cegqiBv ? "true" : "false";
8629
}
8630
8
if (name == "cegqi-bv-concat-inv") {
8631
return options.quantifiers.cegqiBvConcInv ? "true" : "false";
8632
}
8633
8
if (name == "cegqi-bv-ineq") {
8634
std::stringstream ss;
8635
ss << options.quantifiers.cegqiBvIneqMode;
8636
return ss.str();
8637
}
8638
8
if (name == "cegqi-bv-interleave-value") {
8639
return options.quantifiers.cegqiBvInterleaveValue ? "true" : "false";
8640
}
8641
8
if (name == "cegqi-bv-linear") {
8642
return options.quantifiers.cegqiBvLinearize ? "true" : "false";
8643
}
8644
8
if (name == "cegqi-bv-rm-extract") {
8645
return options.quantifiers.cegqiBvRmExtract ? "true" : "false";
8646
}
8647
8
if (name == "cegqi-bv-solve-nl") {
8648
return options.quantifiers.cegqiBvSolveNl ? "true" : "false";
8649
}
8650
8
if (name == "cegqi-full") {
8651
return options.quantifiers.cegqiFullEffort ? "true" : "false";
8652
}
8653
8
if (name == "cegqi-innermost") {
8654
return options.quantifiers.cegqiInnermost ? "true" : "false";
8655
}
8656
8
if (name == "cegqi-midpoint") {
8657
return options.quantifiers.cegqiMidpoint ? "true" : "false";
8658
}
8659
8
if (name == "cegqi-min-bounds") {
8660
return options.quantifiers.cegqiMinBounds ? "true" : "false";
8661
}
8662
8
if (name == "cegqi-model") {
8663
return options.quantifiers.cegqiModel ? "true" : "false";
8664
}
8665
8
if (name == "cegqi-multi-inst") {
8666
return options.quantifiers.cegqiMultiInst ? "true" : "false";
8667
}
8668
8
if (name == "cegqi-nested-qe") {
8669
return options.quantifiers.cegqiNestedQE ? "true" : "false";
8670
}
8671
8
if (name == "cegqi-nopt") {
8672
return options.quantifiers.cegqiNopt ? "true" : "false";
8673
}
8674
8
if (name == "cegqi-repeat-lit") {
8675
return options.quantifiers.cegqiRepeatLit ? "true" : "false";
8676
}
8677
8
if (name == "cegqi-round-up-lia") {
8678
return options.quantifiers.cegqiRoundUpLowerLia ? "true" : "false";
8679
}
8680
8
if (name == "cegqi-sat") {
8681
return options.quantifiers.cegqiSat ? "true" : "false";
8682
}
8683
8
if (name == "cegqi-use-inf-int") {
8684
return options.quantifiers.cegqiUseInfInt ? "true" : "false";
8685
}
8686
8
if (name == "cegqi-use-inf-real") {
8687
return options.quantifiers.cegqiUseInfReal ? "true" : "false";
8688
}
8689
8
if (name == "cond-var-split-agg-quant") {
8690
return options.quantifiers.condVarSplitQuantAgg ? "true" : "false";
8691
}
8692
8
if (name == "cond-var-split-quant") {
8693
return options.quantifiers.condVarSplitQuant ? "true" : "false";
8694
}
8695
8
if (name == "conjecture-filter-active-terms") {
8696
return options.quantifiers.conjectureFilterActiveTerms ? "true" : "false";
8697
}
8698
8
if (name == "conjecture-filter-canonical") {
8699
return options.quantifiers.conjectureFilterCanonical ? "true" : "false";
8700
}
8701
8
if (name == "conjecture-filter-model") {
8702
return options.quantifiers.conjectureFilterModel ? "true" : "false";
8703
}
8704
8
if (name == "conjecture-gen") {
8705
return options.quantifiers.conjectureGen ? "true" : "false";
8706
}
8707
8
if (name == "conjecture-gen-gt-enum") {
8708
return std::to_string(options.quantifiers.conjectureGenGtEnum);
8709
}
8710
8
if (name == "conjecture-gen-max-depth") {
8711
return std::to_string(options.quantifiers.conjectureGenMaxDepth);
8712
}
8713
8
if (name == "conjecture-gen-per-round") {
8714
return std::to_string(options.quantifiers.conjectureGenPerRound);
8715
}
8716
8
if (name == "conjecture-gen-uee-intro") {
8717
return options.quantifiers.conjectureUeeIntro ? "true" : "false";
8718
}
8719
8
if (name == "conjecture-no-filter") {
8720
return options.quantifiers.conjectureNoFilter ? "true" : "false";
8721
}
8722
8
if (name == "dt-stc-ind") {
8723
return options.quantifiers.dtStcInduction ? "true" : "false";
8724
}
8725
8
if (name == "dt-var-exp-quant") {
8726
return options.quantifiers.dtVarExpandQuant ? "true" : "false";
8727
}
8728
8
if (name == "e-matching") {
8729
return options.quantifiers.eMatching ? "true" : "false";
8730
}
8731
8
if (name == "elim-taut-quant") {
8732
return options.quantifiers.elimTautQuant ? "true" : "false";
8733
}
8734
8
if (name == "ext-rewrite-quant") {
8735
return options.quantifiers.extRewriteQuant ? "true" : "false";
8736
}
8737
8
if (name == "finite-model-find") {
8738
return options.quantifiers.finiteModelFind ? "true" : "false";
8739
}
8740
8
if (name == "fmf-bound") {
8741
return options.quantifiers.fmfBound ? "true" : "false";
8742
}
8743
8
if (name == "fmf-bound-int") {
8744
return options.quantifiers.fmfBoundInt ? "true" : "false";
8745
}
8746
8
if (name == "fmf-bound-lazy") {
8747
return options.quantifiers.fmfBoundLazy ? "true" : "false";
8748
}
8749
8
if (name == "fmf-fmc-simple") {
8750
return options.quantifiers.fmfFmcSimple ? "true" : "false";
8751
}
8752
8
if (name == "fmf-fresh-dc") {
8753
return options.quantifiers.fmfFreshDistConst ? "true" : "false";
8754
}
8755
8
if (name == "fmf-fun") {
8756
return options.quantifiers.fmfFunWellDefined ? "true" : "false";
8757
}
8758
8
if (name == "fmf-fun-rlv") {
8759
return options.quantifiers.fmfFunWellDefinedRelevant ? "true" : "false";
8760
}
8761
8
if (name == "fmf-inst-engine") {
8762
return options.quantifiers.fmfInstEngine ? "true" : "false";
8763
}
8764
8
if (name == "fmf-type-completion-thresh") {
8765
return std::to_string(options.quantifiers.fmfTypeCompletionThresh);
8766
}
8767
8
if (name == "fs-interleave") {
8768
return options.quantifiers.fullSaturateInterleave ? "true" : "false";
8769
}
8770
8
if (name == "fs-stratify") {
8771
return options.quantifiers.fullSaturateStratify ? "true" : "false";
8772
}
8773
8
if (name == "fs-sum") {
8774
return options.quantifiers.fullSaturateSum ? "true" : "false";
8775
}
8776
8
if (name == "full-saturate-quant") {
8777
return options.quantifiers.fullSaturateQuant ? "true" : "false";
8778
}
8779
8
if (name == "full-saturate-quant-limit") {
8780
return std::to_string(options.quantifiers.fullSaturateLimit);
8781
}
8782
8
if (name == "full-saturate-quant-rd") {
8783
return options.quantifiers.fullSaturateQuantRd ? "true" : "false";
8784
}
8785
8
if (name == "global-negate") {
8786
return options.quantifiers.globalNegate ? "true" : "false";
8787
}
8788
8
if (name == "ho-elim") {
8789
return options.quantifiers.hoElim ? "true" : "false";
8790
}
8791
8
if (name == "ho-elim-store-ax") {
8792
return options.quantifiers.hoElimStoreAx ? "true" : "false";
8793
}
8794
8
if (name == "ho-matching") {
8795
return options.quantifiers.hoMatching ? "true" : "false";
8796
}
8797
8
if (name == "ho-matching-var-priority") {
8798
return options.quantifiers.hoMatchingVarArgPriority ? "true" : "false";
8799
}
8800
8
if (name == "ho-merge-term-db") {
8801
return options.quantifiers.hoMergeTermDb ? "true" : "false";
8802
}
8803
8
if (name == "increment-triggers") {
8804
return options.quantifiers.incrementTriggers ? "true" : "false";
8805
}
8806
8
if (name == "inst-level-input-only") {
8807
return options.quantifiers.instLevelInputOnly ? "true" : "false";
8808
}
8809
8
if (name == "inst-max-level") {
8810
return std::to_string(options.quantifiers.instMaxLevel);
8811
}
8812
8
if (name == "inst-max-rounds") {
8813
return std::to_string(options.quantifiers.instMaxRounds);
8814
}
8815
8
if (name == "inst-no-entail") {
8816
return options.quantifiers.instNoEntail ? "true" : "false";
8817
}
8818
8
if (name == "inst-when-phase") {
8819
return std::to_string(options.quantifiers.instWhenPhase);
8820
}
8821
8
if (name == "inst-when-strict-interleave") {
8822
return options.quantifiers.instWhenStrictInterleave ? "true" : "false";
8823
}
8824
8
if (name == "inst-when-tc-first") {
8825
return options.quantifiers.instWhenTcFirst ? "true" : "false";
8826
}
8827
8
if (name == "inst-when") {
8828
std::stringstream ss;
8829
ss << options.quantifiers.instWhenMode;
8830
return ss.str();
8831
}
8832
8
if (name == "int-wf-ind") {
8833
return options.quantifiers.intWfInduction ? "true" : "false";
8834
}
8835
8
if (name == "ite-dtt-split-quant") {
8836
return options.quantifiers.iteDtTesterSplitQuant ? "true" : "false";
8837
}
8838
8
if (name == "ite-lift-quant") {
8839
std::stringstream ss;
8840
ss << options.quantifiers.iteLiftQuant;
8841
return ss.str();
8842
}
8843
8
if (name == "literal-matching") {
8844
std::stringstream ss;
8845
ss << options.quantifiers.literalMatchMode;
8846
return ss.str();
8847
}
8848
8
if (name == "macros-quant") {
8849
return options.quantifiers.macrosQuant ? "true" : "false";
8850
}
8851
8
if (name == "macros-quant-mode") {
8852
std::stringstream ss;
8853
ss << options.quantifiers.macrosQuantMode;
8854
return ss.str();
8855
}
8856
8
if (name == "mbqi-interleave") {
8857
return options.quantifiers.mbqiInterleave ? "true" : "false";
8858
}
8859
8
if (name == "mbqi-one-inst-per-round") {
8860
return options.quantifiers.fmfOneInstPerRound ? "true" : "false";
8861
}
8862
8
if (name == "mbqi") {
8863
std::stringstream ss;
8864
ss << options.quantifiers.mbqiMode;
8865
return ss.str();
8866
}
8867
8
if (name == "miniscope-quant") {
8868
return options.quantifiers.miniscopeQuant ? "true" : "false";
8869
}
8870
8
if (name == "miniscope-quant-fv") {
8871
return options.quantifiers.miniscopeQuantFreeVar ? "true" : "false";
8872
}
8873
8
if (name == "multi-trigger-cache") {
8874
return options.quantifiers.multiTriggerCache ? "true" : "false";
8875
}
8876
8
if (name == "multi-trigger-linear") {
8877
return options.quantifiers.multiTriggerLinear ? "true" : "false";
8878
}
8879
8
if (name == "multi-trigger-priority") {
8880
return options.quantifiers.multiTriggerPriority ? "true" : "false";
8881
}
8882
8
if (name == "multi-trigger-when-single") {
8883
return options.quantifiers.multiTriggerWhenSingle ? "true" : "false";
8884
}
8885
8
if (name == "partial-triggers") {
8886
return options.quantifiers.partialTriggers ? "true" : "false";
8887
}
8888
8
if (name == "pool-inst") {
8889
return options.quantifiers.poolInst ? "true" : "false";
8890
}
8891
8
if (name == "pre-skolem-quant") {
8892
return options.quantifiers.preSkolemQuant ? "true" : "false";
8893
}
8894
8
if (name == "pre-skolem-quant-agg") {
8895
return options.quantifiers.preSkolemQuantAgg ? "true" : "false";
8896
}
8897
8
if (name == "pre-skolem-quant-nested") {
8898
return options.quantifiers.preSkolemQuantNested ? "true" : "false";
8899
}
8900
8
if (name == "prenex-quant-user") {
8901
return options.quantifiers.prenexQuantUser ? "true" : "false";
8902
}
8903
8
if (name == "prenex-quant") {
8904
std::stringstream ss;
8905
ss << options.quantifiers.prenexQuant;
8906
return ss.str();
8907
}
8908
8
if (name == "purify-triggers") {
8909
return options.quantifiers.purifyTriggers ? "true" : "false";
8910
}
8911
8
if (name == "qcf-all-conflict") {
8912
return options.quantifiers.qcfAllConflict ? "true" : "false";
8913
}
8914
8
if (name == "qcf-eager-check-rd") {
8915
return options.quantifiers.qcfEagerCheckRd ? "true" : "false";
8916
}
8917
8
if (name == "qcf-eager-test") {
8918
return options.quantifiers.qcfEagerTest ? "true" : "false";
8919
}
8920
8
if (name == "qcf-nested-conflict") {
8921
return options.quantifiers.qcfNestedConflict ? "true" : "false";
8922
}
8923
8
if (name == "qcf-skip-rd") {
8924
return options.quantifiers.qcfSkipRd ? "true" : "false";
8925
}
8926
8
if (name == "qcf-tconstraint") {
8927
return options.quantifiers.qcfTConstraint ? "true" : "false";
8928
}
8929
8
if (name == "qcf-vo-exp") {
8930
return options.quantifiers.qcfVoExp ? "true" : "false";
8931
}
8932
8
if (name == "quant-alpha-equiv") {
8933
return options.quantifiers.quantAlphaEquiv ? "true" : "false";
8934
}
8935
8
if (name == "quant-cf") {
8936
return options.quantifiers.quantConflictFind ? "true" : "false";
8937
}
8938
8
if (name == "quant-cf-mode") {
8939
std::stringstream ss;
8940
ss << options.quantifiers.qcfMode;
8941
return ss.str();
8942
}
8943
8
if (name == "quant-cf-when") {
8944
std::stringstream ss;
8945
ss << options.quantifiers.qcfWhenMode;
8946
return ss.str();
8947
}
8948
8
if (name == "quant-dsplit-mode") {
8949
std::stringstream ss;
8950
ss << options.quantifiers.quantDynamicSplit;
8951
return ss.str();
8952
}
8953
8
if (name == "quant-fun-wd") {
8954
return options.quantifiers.quantFunWellDefined ? "true" : "false";
8955
}
8956
8
if (name == "quant-ind") {
8957
return options.quantifiers.quantInduction ? "true" : "false";
8958
}
8959
8
if (name == "quant-rep-mode") {
8960
std::stringstream ss;
8961
ss << options.quantifiers.quantRepMode;
8962
return ss.str();
8963
}
8964
8
if (name == "quant-split") {
8965
return options.quantifiers.quantSplit ? "true" : "false";
8966
}
8967
8
if (name == "register-quant-body-terms") {
8968
return options.quantifiers.registerQuantBodyTerms ? "true" : "false";
8969
}
8970
8
if (name == "relational-triggers") {
8971
return options.quantifiers.relationalTriggers ? "true" : "false";
8972
}
8973
8
if (name == "relevant-triggers") {
8974
return options.quantifiers.relevantTriggers ? "true" : "false";
8975
}
8976
8
if (name == "sygus") {
8977
return options.quantifiers.sygus ? "true" : "false";
8978
}
8979
8
if (name == "sygus-active-gen-cfactor") {
8980
return std::to_string(options.quantifiers.sygusActiveGenEnumConsts);
8981
}
8982
8
if (name == "sygus-active-gen") {
8983
std::stringstream ss;
8984
ss << options.quantifiers.sygusActiveGenMode;
8985
return ss.str();
8986
}
8987
8
if (name == "sygus-add-const-grammar") {
8988
return options.quantifiers.sygusAddConstGrammar ? "true" : "false";
8989
}
8990
8
if (name == "sygus-arg-relevant") {
8991
return options.quantifiers.sygusArgRelevant ? "true" : "false";
8992
}
8993
8
if (name == "sygus-auto-unfold") {
8994
return options.quantifiers.sygusInvAutoUnfold ? "true" : "false";
8995
}
8996
8
if (name == "sygus-bool-ite-return-const") {
8997
return options.quantifiers.sygusBoolIteReturnConst ? "true" : "false";
8998
}
8999
8
if (name == "sygus-core-connective") {
9000
return options.quantifiers.sygusCoreConnective ? "true" : "false";
9001
}
9002
8
if (name == "sygus-crepair-abort") {
9003
return options.quantifiers.sygusConstRepairAbort ? "true" : "false";
9004
}
9005
8
if (name == "sygus-eval-opt") {
9006
return options.quantifiers.sygusEvalOpt ? "true" : "false";
9007
}
9008
8
if (name == "sygus-eval-unfold") {
9009
return options.quantifiers.sygusEvalUnfold ? "true" : "false";
9010
}
9011
8
if (name == "sygus-eval-unfold-bool") {
9012
return options.quantifiers.sygusEvalUnfoldBool ? "true" : "false";
9013
}
9014
8
if (name == "sygus-expr-miner-check-timeout") {
9015
return std::to_string(options.quantifiers.sygusExprMinerCheckTimeout);
9016
}
9017
8
if (name == "sygus-ext-rew") {
9018
return options.quantifiers.sygusExtRew ? "true" : "false";
9019
}
9020
8
if (name == "sygus-filter-sol-rev") {
9021
return options.quantifiers.sygusFilterSolRevSubsume ? "true" : "false";
9022
}
9023
8
if (name == "sygus-filter-sol") {
9024
std::stringstream ss;
9025
ss << options.quantifiers.sygusFilterSolMode;
9026
return ss.str();
9027
}
9028
8
if (name == "sygus-grammar-cons") {
9029
std::stringstream ss;
9030
ss << options.quantifiers.sygusGrammarConsMode;
9031
return ss.str();
9032
}
9033
8
if (name == "sygus-grammar-norm") {
9034
return options.quantifiers.sygusGrammarNorm ? "true" : "false";
9035
}
9036
8
if (name == "sygus-inference") {
9037
return options.quantifiers.sygusInference ? "true" : "false";
9038
}
9039
8
if (name == "sygus-inst") {
9040
return options.quantifiers.sygusInst ? "true" : "false";
9041
}
9042
8
if (name == "sygus-inst-mode") {
9043
std::stringstream ss;
9044
ss << options.quantifiers.sygusInstMode;
9045
return ss.str();
9046
}
9047
8
if (name == "sygus-inst-scope") {
9048
std::stringstream ss;
9049
ss << options.quantifiers.sygusInstScope;
9050
return ss.str();
9051
}
9052
8
if (name == "sygus-inst-term-sel") {
9053
std::stringstream ss;
9054
ss << options.quantifiers.sygusInstTermSel;
9055
return ss.str();
9056
}
9057
8
if (name == "sygus-inv-templ-when-sg") {
9058
return options.quantifiers.sygusInvTemplWhenSyntax ? "true" : "false";
9059
}
9060
8
if (name == "sygus-inv-templ") {
9061
std::stringstream ss;
9062
ss << options.quantifiers.sygusInvTemplMode;
9063
return ss.str();
9064
}
9065
8
if (name == "sygus-min-grammar") {
9066
return options.quantifiers.sygusMinGrammar ? "true" : "false";
9067
}
9068
8
if (name == "sygus-pbe") {
9069
return options.quantifiers.sygusUnifPbe ? "true" : "false";
9070
}
9071
8
if (name == "sygus-pbe-multi-fair") {
9072
return options.quantifiers.sygusPbeMultiFair ? "true" : "false";
9073
}
9074
8
if (name == "sygus-pbe-multi-fair-diff") {
9075
return std::to_string(options.quantifiers.sygusPbeMultiFairDiff);
9076
}
9077
8
if (name == "sygus-qe-preproc") {
9078
return options.quantifiers.sygusQePreproc ? "true" : "false";
9079
}
9080
8
if (name == "sygus-query-gen") {
9081
return options.quantifiers.sygusQueryGen ? "true" : "false";
9082
}
9083
8
if (name == "sygus-query-gen-check") {
9084
return options.quantifiers.sygusQueryGenCheck ? "true" : "false";
9085
}
9086
8
if (name == "sygus-query-gen-dump-files") {
9087
std::stringstream ss;
9088
ss << options.quantifiers.sygusQueryGenDumpFiles;
9089
return ss.str();
9090
}
9091
8
if (name == "sygus-query-gen-thresh") {
9092
return std::to_string(options.quantifiers.sygusQueryGenThresh);
9093
}
9094
8
if (name == "sygus-rec-fun") {
9095
return options.quantifiers.sygusRecFun ? "true" : "false";
9096
}
9097
8
if (name == "sygus-rec-fun-eval-limit") {
9098
return std::to_string(options.quantifiers.sygusRecFunEvalLimit);
9099
}
9100
8
if (name == "sygus-repair-const") {
9101
return options.quantifiers.sygusRepairConst ? "true" : "false";
9102
}
9103
8
if (name == "sygus-repair-const-timeout") {
9104
return std::to_string(options.quantifiers.sygusRepairConstTimeout);
9105
}
9106
8
if (name == "sygus-rr") {
9107
return options.quantifiers.sygusRew ? "true" : "false";
9108
}
9109
8
if (name == "sygus-rr-synth") {
9110
return options.quantifiers.sygusRewSynth ? "true" : "false";
9111
}
9112
8
if (name == "sygus-rr-synth-accel") {
9113
return options.quantifiers.sygusRewSynthAccel ? "true" : "false";
9114
}
9115
8
if (name == "sygus-rr-synth-check") {
9116
return options.quantifiers.sygusRewSynthCheck ? "true" : "false";
9117
}
9118
8
if (name == "sygus-rr-synth-filter-cong") {
9119
return options.quantifiers.sygusRewSynthFilterCong ? "true" : "false";
9120
}
9121
8
if (name == "sygus-rr-synth-filter-match") {
9122
return options.quantifiers.sygusRewSynthFilterMatch ? "true" : "false";
9123
}
9124
8
if (name == "sygus-rr-synth-filter-nl") {
9125
return options.quantifiers.sygusRewSynthFilterNonLinear ? "true" : "false";
9126
}
9127
8
if (name == "sygus-rr-synth-filter-order") {
9128
return options.quantifiers.sygusRewSynthFilterOrder ? "true" : "false";
9129
}
9130
8
if (name == "sygus-rr-synth-input") {
9131
return options.quantifiers.sygusRewSynthInput ? "true" : "false";
9132
}
9133
8
if (name == "sygus-rr-synth-input-nvars") {
9134
return std::to_string(options.quantifiers.sygusRewSynthInputNVars);
9135
}
9136
8
if (name == "sygus-rr-synth-input-use-bool") {
9137
return options.quantifiers.sygusRewSynthInputUseBool ? "true" : "false";
9138
}
9139
8
if (name == "sygus-rr-synth-rec") {
9140
return options.quantifiers.sygusRewSynthRec ? "true" : "false";
9141
}
9142
8
if (name == "sygus-rr-verify") {
9143
return options.quantifiers.sygusRewVerify ? "true" : "false";
9144
}
9145
8
if (name == "sygus-rr-verify-abort") {
9146
return options.quantifiers.sygusRewVerifyAbort ? "true" : "false";
9147
}
9148
8
if (name == "sygus-sample-fp-uniform") {
9149
return options.quantifiers.sygusSampleFpUniform ? "true" : "false";
9150
}
9151
8
if (name == "sygus-sample-grammar") {
9152
return options.quantifiers.sygusSampleGrammar ? "true" : "false";
9153
}
9154
8
if (name == "sygus-samples") {
9155
return std::to_string(options.quantifiers.sygusSamples);
9156
}
9157
8
if (name == "sygus-si-abort") {
9158
return options.quantifiers.cegqiSingleInvAbort ? "true" : "false";
9159
}
9160
8
if (name == "sygus-si-partial") {
9161
return options.quantifiers.cegqiSingleInvPartial ? "true" : "false";
9162
}
9163
8
if (name == "sygus-si-rcons-limit") {
9164
return std::to_string(options.quantifiers.cegqiSingleInvReconstructLimit);
9165
}
9166
8
if (name == "sygus-si-rcons") {
9167
std::stringstream ss;
9168
ss << options.quantifiers.cegqiSingleInvReconstruct;
9169
return ss.str();
9170
}
9171
8
if (name == "sygus-si-reconstruct-const") {
9172
return options.quantifiers.cegqiSingleInvReconstructConst ? "true" : "false";
9173
}
9174
8
if (name == "sygus-si") {
9175
std::stringstream ss;
9176
ss << options.quantifiers.cegqiSingleInvMode;
9177
return ss.str();
9178
}
9179
8
if (name == "sygus-stream") {
9180
return options.quantifiers.sygusStream ? "true" : "false";
9181
}
9182
8
if (name == "sygus-templ-embed-grammar") {
9183
return options.quantifiers.sygusTemplEmbedGrammar ? "true" : "false";
9184
}
9185
8
if (name == "sygus-unif-cond-independent-no-repeat-sol") {
9186
return options.quantifiers.sygusUnifCondIndNoRepeatSol ? "true" : "false";
9187
}
9188
8
if (name == "sygus-unif-pi") {
9189
std::stringstream ss;
9190
ss << options.quantifiers.sygusUnifPi;
9191
return ss.str();
9192
}
9193
8
if (name == "sygus-unif-shuffle-cond") {
9194
return options.quantifiers.sygusUnifShuffleCond ? "true" : "false";
9195
}
9196
8
if (name == "sygus-verify-inst-max-rounds") {
9197
return std::to_string(options.quantifiers.sygusVerifyInstMaxRounds);
9198
}
9199
8
if (name == "term-db-cd") {
9200
return options.quantifiers.termDbCd ? "true" : "false";
9201
}
9202
8
if (name == "term-db-mode") {
9203
std::stringstream ss;
9204
ss << options.quantifiers.termDbMode;
9205
return ss.str();
9206
}
9207
8
if (name == "trigger-active-sel") {
9208
std::stringstream ss;
9209
ss << options.quantifiers.triggerActiveSelMode;
9210
return ss.str();
9211
}
9212
8
if (name == "trigger-sel") {
9213
std::stringstream ss;
9214
ss << options.quantifiers.triggerSelMode;
9215
return ss.str();
9216
}
9217
8
if (name == "user-pat") {
9218
std::stringstream ss;
9219
ss << options.quantifiers.userPatternsQuant;
9220
return ss.str();
9221
}
9222
8
if (name == "var-elim-quant") {
9223
return options.quantifiers.varElimQuant ? "true" : "false";
9224
}
9225
8
if (name == "var-ineq-elim-quant") {
9226
return options.quantifiers.varIneqElimQuant ? "true" : "false";
9227
}
9228
8
if (name == "sep-check-neg") {
9229
return options.sep.sepCheckNeg ? "true" : "false";
9230
}
9231
8
if (name == "sep-child-refine") {
9232
return options.sep.sepChildRefine ? "true" : "false";
9233
}
9234
8
if (name == "sep-deq-c") {
9235
return options.sep.sepDisequalC ? "true" : "false";
9236
}
9237
8
if (name == "sep-exp") {
9238
return options.sep.sepExp ? "true" : "false";
9239
}
9240
8
if (name == "sep-min-refine") {
9241
return options.sep.sepMinimalRefine ? "true" : "false";
9242
}
9243
8
if (name == "sep-pre-skolem-emp") {
9244
return options.sep.sepPreSkolemEmp ? "true" : "false";
9245
}
9246
8
if (name == "sets-ext") {
9247
return options.sets.setsExt ? "true" : "false";
9248
}
9249
8
if (name == "sets-infer-as-lemmas") {
9250
return options.sets.setsInferAsLemmas ? "true" : "false";
9251
}
9252
8
if (name == "sets-proxy-lemmas") {
9253
return options.sets.setsProxyLemmas ? "true" : "false";
9254
}
9255
8
if (name == "abstract-values") {
9256
return options.smt.abstractValues ? "true" : "false";
9257
}
9258
8
if (name == "ackermann") {
9259
return options.smt.ackermann ? "true" : "false";
9260
}
9261
8
if (name == "block-models") {
9262
std::stringstream ss;
9263
ss << options.smt.blockModelsMode;
9264
return ss.str();
9265
}
9266
8
if (name == "bvand-integer-granularity") {
9267
return std::to_string(options.smt.BVAndIntegerGranularity);
9268
}
9269
8
if (name == "check-abducts") {
9270
return options.smt.checkAbducts ? "true" : "false";
9271
}
9272
8
if (name == "check-interpols") {
9273
return options.smt.checkInterpols ? "true" : "false";
9274
}
9275
8
if (name == "check-models") {
9276
2
return options.smt.checkModels ? "true" : "false";
9277
}
9278
6
if (name == "check-proofs") {
9279
return options.smt.checkProofs ? "true" : "false";
9280
}
9281
6
if (name == "check-synth-sol") {
9282
return options.smt.checkSynthSol ? "true" : "false";
9283
}
9284
6
if (name == "check-unsat-cores") {
9285
return options.smt.checkUnsatCores ? "true" : "false";
9286
}
9287
6
if (name == "debug-check-models") {
9288
return options.smt.debugCheckModels ? "true" : "false";
9289
}
9290
6
if (name == "dump-to") {
9291
std::stringstream ss;
9292
ss << options.smt.dumpToFileName;
9293
return ss.str();
9294
}
9295
6
if (name == "dump") {
9296
return options.smt.dumpModeString;
9297
}
9298
6
if (name == "early-ite-removal") {
9299
return options.smt.earlyIteRemoval ? "true" : "false";
9300
}
9301
6
if (name == "expand-definitions") {
9302
return options.smt.expandDefinitions ? "true" : "false";
9303
}
9304
6
if (name == "ext-rew-prep") {
9305
return options.smt.extRewPrep ? "true" : "false";
9306
}
9307
6
if (name == "ext-rew-prep-agg") {
9308
return options.smt.extRewPrepAgg ? "true" : "false";
9309
}
9310
6
if (name == "foreign-theory-rewrite") {
9311
return options.smt.foreignTheoryRewrite ? "true" : "false";
9312
}
9313
6
if (name == "iand-mode") {
9314
std::stringstream ss;
9315
ss << options.smt.iandMode;
9316
return ss.str();
9317
}
9318
6
if (name == "interactive-mode") {
9319
return options.smt.interactiveMode ? "true" : "false";
9320
}
9321
6
if (name == "ite-simp") {
9322
return options.smt.doITESimp ? "true" : "false";
9323
}
9324
6
if (name == "learned-rewrite") {
9325
return options.smt.learnedRewrite ? "true" : "false";
9326
}
9327
6
if (name == "minimal-unsat-cores") {
9328
return options.smt.minimalUnsatCores ? "true" : "false";
9329
}
9330
6
if (name == "model-cores") {
9331
std::stringstream ss;
9332
ss << options.smt.modelCoresMode;
9333
return ss.str();
9334
}
9335
6
if (name == "model-u-print" || name == "model-uninterp-print") {
9336
std::stringstream ss;
9337
ss << options.smt.modelUninterpPrint;
9338
return ss.str();
9339
}
9340
6
if (name == "model-witness-value") {
9341
return options.smt.modelWitnessValue ? "true" : "false";
9342
}
9343
6
if (name == "on-repeat-ite-simp") {
9344
return options.smt.doITESimpOnRepeat ? "true" : "false";
9345
}
9346
6
if (name == "produce-abducts") {
9347
return options.smt.produceAbducts ? "true" : "false";
9348
}
9349
6
if (name == "produce-assertions") {
9350
return options.smt.produceAssertions ? "true" : "false";
9351
}
9352
6
if (name == "produce-assignments") {
9353
return options.smt.produceAssignments ? "true" : "false";
9354
}
9355
6
if (name == "produce-interpols") {
9356
std::stringstream ss;
9357
ss << options.smt.produceInterpols;
9358
return ss.str();
9359
}
9360
6
if (name == "produce-models") {
9361
3
return options.smt.produceModels ? "true" : "false";
9362
}
9363
3
if (name == "produce-proofs") {
9364
return options.smt.produceProofs ? "true" : "false";
9365
}
9366
3
if (name == "produce-unsat-assumptions") {
9367
return options.smt.unsatAssumptions ? "true" : "false";
9368
}
9369
3
if (name == "produce-unsat-cores") {
9370
return options.smt.unsatCores ? "true" : "false";
9371
}
9372
3
if (name == "repeat-simp") {
9373
return options.smt.repeatSimp ? "true" : "false";
9374
}
9375
3
if (name == "simp-ite-compress") {
9376
return options.smt.compressItes ? "true" : "false";
9377
}
9378
3
if (name == "simp-ite-hunt-zombies") {
9379
return std::to_string(options.smt.zombieHuntThreshold);
9380
}
9381
3
if (name == "simp-with-care") {
9382
return options.smt.simplifyWithCareEnabled ? "true" : "false";
9383
}
9384
3
if (name == "simplification" || name == "simplification-mode") {
9385
2
std::stringstream ss;
9386
1
ss << options.smt.simplificationMode;
9387
1
return ss.str();
9388
}
9389
2
if (name == "solve-bv-as-int") {
9390
std::stringstream ss;
9391
ss << options.smt.solveBVAsInt;
9392
return ss.str();
9393
}
9394
2
if (name == "solve-int-as-bv") {
9395
return std::to_string(options.smt.solveIntAsBV);
9396
}
9397
2
if (name == "solve-real-as-int") {
9398
return options.smt.solveRealAsInt ? "true" : "false";
9399
}
9400
2
if (name == "sort-inference") {
9401
return options.smt.sortInference ? "true" : "false";
9402
}
9403
2
if (name == "static-learning") {
9404
return options.smt.doStaticLearning ? "true" : "false";
9405
}
9406
2
if (name == "sygus-out") {
9407
std::stringstream ss;
9408
ss << options.smt.sygusOut;
9409
return ss.str();
9410
}
9411
2
if (name == "sygus-print-callbacks") {
9412
return options.smt.sygusPrintCallbacks ? "true" : "false";
9413
}
9414
2
if (name == "unconstrained-simp") {
9415
return options.smt.unconstrainedSimp ? "true" : "false";
9416
}
9417
2
if (name == "unsat-cores-mode") {
9418
std::stringstream ss;
9419
ss << options.smt.unsatCoresMode;
9420
return ss.str();
9421
}
9422
2
if (name == "re-elim") {
9423
return options.strings.regExpElim ? "true" : "false";
9424
}
9425
2
if (name == "re-elim-agg") {
9426
return options.strings.regExpElimAgg ? "true" : "false";
9427
}
9428
2
if (name == "re-inter-mode") {
9429
std::stringstream ss;
9430
ss << options.strings.stringRegExpInterMode;
9431
return ss.str();
9432
}
9433
2
if (name == "strings-check-entail-len") {
9434
return options.strings.stringCheckEntailLen ? "true" : "false";
9435
}
9436
2
if (name == "strings-eager") {
9437
return options.strings.stringEager ? "true" : "false";
9438
}
9439
2
if (name == "strings-eager-eval") {
9440
return options.strings.stringEagerEval ? "true" : "false";
9441
}
9442
2
if (name == "strings-eager-len") {
9443
return options.strings.stringEagerLen ? "true" : "false";
9444
}
9445
2
if (name == "strings-exp") {
9446
return options.strings.stringExp ? "true" : "false";
9447
}
9448
2
if (name == "strings-ff") {
9449
return options.strings.stringFlatForms ? "true" : "false";
9450
}
9451
2
if (name == "strings-fmf") {
9452
return options.strings.stringFMF ? "true" : "false";
9453
}
9454
2
if (name == "strings-guess-model") {
9455
return options.strings.stringGuessModel ? "true" : "false";
9456
}
9457
2
if (name == "strings-infer-as-lemmas") {
9458
return options.strings.stringInferAsLemmas ? "true" : "false";
9459
}
9460
2
if (name == "strings-infer-sym") {
9461
return options.strings.stringInferSym ? "true" : "false";
9462
}
9463
2
if (name == "strings-lazy-pp") {
9464
return options.strings.stringLazyPreproc ? "true" : "false";
9465
}
9466
2
if (name == "strings-len-norm") {
9467
return options.strings.stringLenNorm ? "true" : "false";
9468
}
9469
2
if (name == "strings-lprop-csp") {
9470
return options.strings.stringLenPropCsp ? "true" : "false";
9471
}
9472
2
if (name == "strings-min-prefix-explain") {
9473
return options.strings.stringMinPrefixExplain ? "true" : "false";
9474
}
9475
2
if (name == "strings-process-loop-mode") {
9476
std::stringstream ss;
9477
ss << options.strings.stringProcessLoopMode;
9478
return ss.str();
9479
}
9480
2
if (name == "strings-rexplain-lemmas") {
9481
return options.strings.stringRExplainLemmas ? "true" : "false";
9482
}
9483
2
if (name == "strings-unified-vspt") {
9484
return options.strings.stringUnifiedVSpt ? "true" : "false";
9485
}
9486
2
if (name == "assign-function-values") {
9487
return options.theory.assignFunctionValues ? "true" : "false";
9488
}
9489
2
if (name == "condense-function-values") {
9490
return options.theory.condenseFunctionValues ? "true" : "false";
9491
}
9492
2
if (name == "ee-mode") {
9493
std::stringstream ss;
9494
ss << options.theory.eeMode;
9495
return ss.str();
9496
}
9497
2
if (name == "relevance-filter") {
9498
return options.theory.relevanceFilter ? "true" : "false";
9499
}
9500
2
if (name == "tc-mode") {
9501
std::stringstream ss;
9502
ss << options.theory.tcMode;
9503
return ss.str();
9504
}
9505
2
if (name == "theoryof-mode") {
9506
std::stringstream ss;
9507
ss << options.theory.theoryOfMode;
9508
return ss.str();
9509
}
9510
2
if (name == "symmetry-breaker" || name == "uf-symmetry-breaker") {
9511
return options.uf.ufSymmetryBreaker ? "true" : "false";
9512
}
9513
2
if (name == "uf-ho") {
9514
return options.uf.ufHo ? "true" : "false";
9515
}
9516
2
if (name == "uf-ho-ext") {
9517
return options.uf.ufHoExt ? "true" : "false";
9518
}
9519
2
if (name == "uf-ss-abort-card") {
9520
return std::to_string(options.uf.ufssAbortCardinality);
9521
}
9522
2
if (name == "uf-ss-fair") {
9523
return options.uf.ufssFairness ? "true" : "false";
9524
}
9525
2
if (name == "uf-ss-fair-monotone") {
9526
return options.uf.ufssFairnessMonotone ? "true" : "false";
9527
}
9528
2
if (name == "uf-ss-totality-limited") {
9529
return std::to_string(options.uf.ufssTotalityLimited);
9530
}
9531
2
if (name == "uf-ss-totality-sym-break") {
9532
return options.uf.ufssTotalitySymBreak ? "true" : "false";
9533
}
9534
2
if (name == "uf-ss") {
9535
std::stringstream ss;
9536
ss << options.uf.ufssMode;
9537
return ss.str();
9538
}
9539
  // clang-format on
9540
2
  throw OptionException("Unrecognized option key or setting: " + name);
9541
}
9542
9543
9572
void setInternal(Options& opts, const std::string& name,
9544
                                const std::string& optionarg)
9545
{
9546
  // clang-format off
9547
9572
    if (name == "approx-branch-depth") {
9548
    assign_arith_maxApproxDepth(opts, name, optionarg);
9549
    return;
9550
  }
9551
9572
  if (name == "arith-brab") {
9552
    assign_arith_brabTest(opts, name, optionarg == "true");
9553
    return;
9554
  }
9555
9572
  if (name == "arith-cong-man") {
9556
    assign_arith_arithCongMan(opts, name, optionarg == "true");
9557
    return;
9558
  }
9559
9572
  if (name == "arith-eq-solver") {
9560
    assign_arith_arithEqSolver(opts, name, optionarg == "true");
9561
    return;
9562
  }
9563
9572
  if (name == "arith-no-partial-fun") {
9564
3
    assign_arith_arithNoPartialFun(opts, name, optionarg == "true");
9565
3
    return;
9566
  }
9567
9569
  if (name == "arith-prop-clauses") {
9568
    assign_arith_arithPropAsLemmaLength(opts, name, optionarg);
9569
    return;
9570
  }
9571
9569
  if (name == "arith-prop") {
9572
    assign_arith_arithPropagationMode(opts, name, optionarg);
9573
    return;
9574
  }
9575
9569
  if (name == "arith-rewrite-equalities") {
9576
5
    assign_arith_arithRewriteEq(opts, name, optionarg == "true");
9577
5
    return;
9578
  }
9579
9564
  if (name == "collect-pivot-stats") {
9580
    assign_arith_collectPivots(opts, name, optionarg == "true");
9581
    return;
9582
  }
9583
9564
  if (name == "cut-all-bounded") {
9584
    assign_arith_doCutAllBounded(opts, name, optionarg == "true");
9585
    return;
9586
  }
9587
9564
  if (name == "dio-decomps") {
9588
    assign_arith_exportDioDecompositions(opts, name, optionarg == "true");
9589
    return;
9590
  }
9591
9564
  if (name == "dio-repeat") {
9592
    assign_arith_dioRepeat(opts, name, optionarg == "true");
9593
    return;
9594
  }
9595
9564
  if (name == "dio-solver") {
9596
    assign_arith_arithDioSolver(opts, name, optionarg == "true");
9597
    return;
9598
  }
9599
9564
  if (name == "dio-turns") {
9600
    assign_arith_dioSolverTurns(opts, name, optionarg);
9601
    return;
9602
  }
9603
9564
  if (name == "error-selection-rule") {
9604
    assign_arith_arithErrorSelectionRule(opts, name, optionarg);
9605
    return;
9606
  }
9607
9564
  if (name == "fc-penalties") {
9608
    assign_arith_havePenalties(opts, name, optionarg == "true");
9609
    return;
9610
  }
9611
9564
  if (name == "heuristic-pivots") {
9612
    assign_arith_arithHeuristicPivots(opts, name, optionarg);
9613
    return;
9614
  }
9615
9564
  if (name == "lemmas-on-replay-failure") {
9616
    assign_arith_replayFailureLemma(opts, name, optionarg == "true");
9617
    return;
9618
  }
9619
9564
  if (name == "maxCutsInContext") {
9620
    assign_arith_maxCutsInContext(opts, name, optionarg);
9621
    return;
9622
  }
9623
9564
  if (name == "miplib-trick") {
9624
    assign_arith_arithMLTrick(opts, name, optionarg == "true");
9625
    return;
9626
  }
9627
9564
  if (name == "miplib-trick-subs") {
9628
    assign_arith_arithMLTrickSubstitutions(opts, name, optionarg);
9629
    return;
9630
  }
9631
9564
  if (name == "new-prop") {
9632
    assign_arith_newProp(opts, name, optionarg == "true");
9633
    return;
9634
  }
9635
9564
  if (name == "nl-cad") {
9636
    assign_arith_nlCad(opts, name, optionarg == "true");
9637
    return;
9638
  }
9639
9564
  if (name == "nl-cad-initial") {
9640
    assign_arith_nlCadUseInitial(opts, name, optionarg == "true");
9641
    return;
9642
  }
9643
9564
  if (name == "nl-cad-lift") {
9644
    assign_arith_nlCadLifting(opts, name, optionarg);
9645
    return;
9646
  }
9647
9564
  if (name == "nl-cad-proj") {
9648
    assign_arith_nlCadProjection(opts, name, optionarg);
9649
    return;
9650
  }
9651
9564
  if (name == "nl-ext-ent-conf") {
9652
    assign_arith_nlExtEntailConflicts(opts, name, optionarg == "true");
9653
    return;
9654
  }
9655
9564
  if (name == "nl-ext-factor") {
9656
    assign_arith_nlExtFactor(opts, name, optionarg == "true");
9657
    return;
9658
  }
9659
9564
  if (name == "nl-ext-inc-prec") {
9660
    assign_arith_nlExtIncPrecision(opts, name, optionarg == "true");
9661
    return;
9662
  }
9663
9564
  if (name == "nl-ext-purify") {
9664
2
    assign_arith_nlExtPurify(opts, name, optionarg == "true");
9665
2
    return;
9666
  }
9667
9562
  if (name == "nl-ext-rbound") {
9668
    assign_arith_nlExtResBound(opts, name, optionarg == "true");
9669
    return;
9670
  }
9671
9562
  if (name == "nl-ext-rewrite") {
9672
    assign_arith_nlExtRewrites(opts, name, optionarg == "true");
9673
    return;
9674
  }
9675
9562
  if (name == "nl-ext-split-zero") {
9676
    assign_arith_nlExtSplitZero(opts, name, optionarg == "true");
9677
    return;
9678
  }
9679
9562
  if (name == "nl-ext-tf-taylor-deg") {
9680
    assign_arith_nlExtTfTaylorDegree(opts, name, optionarg);
9681
    return;
9682
  }
9683
9562
  if (name == "nl-ext-tf-tplanes") {
9684
    assign_arith_nlExtTfTangentPlanes(opts, name, optionarg == "true");
9685
    return;
9686
  }
9687
9562
  if (name == "nl-ext-tplanes") {
9688
    assign_arith_nlExtTangentPlanes(opts, name, optionarg == "true");
9689
    return;
9690
  }
9691
9562
  if (name == "nl-ext-tplanes-interleave") {
9692
    assign_arith_nlExtTangentPlanesInterleave(opts, name, optionarg == "true");
9693
    return;
9694
  }
9695
9562
  if (name == "nl-ext") {
9696
    assign_arith_nlExt(opts, name, optionarg);
9697
    return;
9698
  }
9699
9562
  if (name == "nl-icp") {
9700
    assign_arith_nlICP(opts, name, optionarg == "true");
9701
    return;
9702
  }
9703
9562
  if (name == "nl-rlv") {
9704
    assign_arith_nlRlvMode(opts, name, optionarg);
9705
    return;
9706
  }
9707
9562
  if (name == "pb-rewrites") {
9708
    assign_arith_pbRewrites(opts, name, optionarg == "true");
9709
    return;
9710
  }
9711
9562
  if (name == "pivot-threshold") {
9712
    assign_arith_arithPivotThreshold(opts, name, optionarg);
9713
    return;
9714
  }
9715
9562
  if (name == "pp-assert-max-sub-size") {
9716
    assign_arith_ppAssertMaxSubSize(opts, name, optionarg);
9717
    return;
9718
  }
9719
9562
  if (name == "prop-row-length") {
9720
    assign_arith_arithPropagateMaxLength(opts, name, optionarg);
9721
    return;
9722
  }
9723
9562
  if (name == "replay-early-close-depth") {
9724
    assign_arith_replayEarlyCloseDepths(opts, name, optionarg);
9725
    return;
9726
  }
9727
9562
  if (name == "replay-failure-penalty") {
9728
    assign_arith_replayFailurePenalty(opts, name, optionarg);
9729
    return;
9730
  }
9731
9562
  if (name == "replay-lemma-reject-cut") {
9732
    assign_arith_lemmaRejectCutSize(opts, name, optionarg);
9733
    return;
9734
  }
9735
9562
  if (name == "replay-num-err-penalty") {
9736
    assign_arith_replayNumericFailurePenalty(opts, name, optionarg);
9737
    return;
9738
  }
9739
9562
  if (name == "replay-reject-cut") {
9740
    assign_arith_replayRejectCutSize(opts, name, optionarg);
9741
    return;
9742
  }
9743
9562
  if (name == "replay-soi-major-threshold-pen") {
9744
    assign_arith_soiApproxMajorFailurePen(opts, name, optionarg);
9745
    return;
9746
  }
9747
9562
  if (name == "replay-soi-major-threshold") {
9748
    assign_arith_soiApproxMajorFailure(opts, name, optionarg);
9749
    return;
9750
  }
9751
9562
  if (name == "replay-soi-minor-threshold-pen") {
9752
    assign_arith_soiApproxMinorFailurePen(opts, name, optionarg);
9753
    return;
9754
  }
9755
9562
  if (name == "replay-soi-minor-threshold") {
9756
    assign_arith_soiApproxMinorFailure(opts, name, optionarg);
9757
    return;
9758
  }
9759
9562
  if (name == "restrict-pivots") {
9760
    assign_arith_restrictedPivots(opts, name, optionarg == "true");
9761
    return;
9762
  }
9763
9562
  if (name == "revert-arith-models-on-unsat") {
9764
    assign_arith_revertArithModels(opts, name, optionarg == "true");
9765
    return;
9766
  }
9767
9562
  if (name == "rr-turns") {
9768
    assign_arith_rrTurns(opts, name, optionarg);
9769
    return;
9770
  }
9771
9562
  if (name == "se-solve-int") {
9772
    assign_arith_trySolveIntStandardEffort(opts, name, optionarg == "true");
9773
    return;
9774
  }
9775
9562
  if (name == "simplex-check-period") {
9776
    assign_arith_arithSimplexCheckPeriod(opts, name, optionarg);
9777
    return;
9778
  }
9779
9562
  if (name == "soi-qe") {
9780
    assign_arith_soiQuickExplain(opts, name, optionarg == "true");
9781
    return;
9782
  }
9783
9562
  if (name == "standard-effort-variable-order-pivots") {
9784
    assign_arith_arithStandardCheckVarOrderPivots(opts, name, optionarg);
9785
    return;
9786
  }
9787
9562
  if (name == "unate-lemmas") {
9788
    assign_arith_arithUnateLemmaMode(opts, name, optionarg);
9789
    return;
9790
  }
9791
9562
  if (name == "use-approx") {
9792
    assign_arith_useApprox(opts, name, optionarg == "true");
9793
    return;
9794
  }
9795
9562
  if (name == "use-fcsimplex") {
9796
    assign_arith_useFC(opts, name, optionarg == "true");
9797
    return;
9798
  }
9799
9562
  if (name == "use-soi") {
9800
    assign_arith_useSOI(opts, name, optionarg == "true");
9801
    return;
9802
  }
9803
9562
  if (name == "arrays-config") {
9804
    assign_arrays_arraysConfig(opts, name, optionarg);
9805
    return;
9806
  }
9807
9562
  if (name == "arrays-eager-index") {
9808
    assign_arrays_arraysEagerIndexSplitting(opts, name, optionarg == "true");
9809
    return;
9810
  }
9811
9562
  if (name == "arrays-eager-lemmas") {
9812
    assign_arrays_arraysEagerLemmas(opts, name, optionarg == "true");
9813
    return;
9814
  }
9815
9562
  if (name == "arrays-exp") {
9816
7
    assign_arrays_arraysExp(opts, name, optionarg == "true");
9817
7
    return;
9818
  }
9819
9555
  if (name == "arrays-model-based") {
9820
    assign_arrays_arraysModelBased(opts, name, optionarg == "true");
9821
    return;
9822
  }
9823
9555
  if (name == "arrays-optimize-linear") {
9824
    assign_arrays_arraysOptimizeLinear(opts, name, optionarg == "true");
9825
    return;
9826
  }
9827
9555
  if (name == "arrays-prop") {
9828
    assign_arrays_arraysPropagate(opts, name, optionarg);
9829
    return;
9830
  }
9831
9555
  if (name == "arrays-reduce-sharing") {
9832
    assign_arrays_arraysReduceSharing(opts, name, optionarg == "true");
9833
    return;
9834
  }
9835
9555
  if (name == "arrays-weak-equiv") {
9836
    assign_arrays_arraysWeakEquivalence(opts, name, optionarg == "true");
9837
    return;
9838
  }
9839
9555
  if (name == "debug") {
9840
    opts.handler().enableDebugTag("debug", name, optionarg);
9841
    return;
9842
  }
9843
9555
  if (name == "diagnostic-output-channel" || name == "err") {
9844
    assign_base_err(opts, name, optionarg);
9845
    return;
9846
  }
9847
9555
  if (name == "in") {
9848
    assign_base_in(opts, name, optionarg);
9849
    return;
9850
  }
9851
9555
  if (name == "incremental") {
9852
6625
    assign_base_incrementalSolving(opts, name, optionarg == "true");
9853
6625
    return;
9854
  }
9855
2930
  if (name == "input-language" || name == "lang") {
9856
297
    assign_base_inputLanguage(opts, name, optionarg);
9857
297
    return;
9858
  }
9859
2633
  if (name == "out" || name == "regular-output-channel") {
9860
    assign_base_out(opts, name, optionarg);
9861
    return;
9862
  }
9863
2633
  if (name == "output-lang" || name == "output-language") {
9864
26
    assign_base_outputLanguage(opts, name, optionarg);
9865
26
    return;
9866
  }
9867
2607
  if (name == "output") {
9868
    opts.handler().enableOutputTag("output", name, optionarg);
9869
    return;
9870
  }
9871
2607
  if (name == "parse-only") {
9872
16
    assign_base_parseOnly(opts, name, optionarg == "true");
9873
16
    return;
9874
  }
9875
2591
  if (name == "preprocess-only") {
9876
    assign_base_preprocessOnly(opts, name, optionarg == "true");
9877
    return;
9878
  }
9879
2591
  if (name == "print-success") {
9880
28
    assign_base_printSuccess(opts, name, optionarg == "true");
9881
28
    return;
9882
  }
9883
2563
  if (name == "quiet") {
9884
4
    opts.handler().decreaseVerbosity("quiet", name);
9885
4
    return;
9886
  }
9887
2559
  if (name == "reproducible-resource-limit" || name == "rlimit-per") {
9888
    assign_base_perCallResourceLimit(opts, name, optionarg);
9889
    return;
9890
  }
9891
2559
  if (name == "rlimit") {
9892
    assign_base_cumulativeResourceLimit(opts, name, optionarg);
9893
    return;
9894
  }
9895
2559
  if (name == "rweight") {
9896
    opts.handler().setResourceWeight("rweight", name, optionarg);
9897
    return;
9898
  }
9899
2559
  if (name == "stats") {
9900
2
    assign_base_statistics(opts, name, optionarg == "true");
9901
2
    return;
9902
  }
9903
2557
  if (name == "stats-all") {
9904
1
    assign_base_statisticsAll(opts, name, optionarg == "true");
9905
1
    return;
9906
  }
9907
2556
  if (name == "stats-every-query") {
9908
    assign_base_statisticsEveryQuery(opts, name, optionarg == "true");
9909
    return;
9910
  }
9911
2556
  if (name == "stats-expert") {
9912
1
    assign_base_statisticsExpert(opts, name, optionarg == "true");
9913
1
    return;
9914
  }
9915
2555
  if (name == "tlimit-per") {
9916
    assign_base_perCallMillisecondLimit(opts, name, optionarg);
9917
    return;
9918
  }
9919
2555
  if (name == "tlimit") {
9920
    assign_base_cumulativeMillisecondLimit(opts, name, optionarg);
9921
    return;
9922
  }
9923
2555
  if (name == "trace") {
9924
    opts.handler().enableTraceTag("trace", name, optionarg);
9925
    return;
9926
  }
9927
2555
  if (name == "verbose") {
9928
    opts.handler().increaseVerbosity("verbose", name);
9929
    return;
9930
  }
9931
2555
  if (name == "verbosity") {
9932
6
    assign_base_verbosity(opts, name, optionarg);
9933
6
    return;
9934
  }
9935
2549
  if (name == "bitblast-aig") {
9936
    assign_bv_bitvectorAig(opts, name, optionarg == "true");
9937
    return;
9938
  }
9939
2549
  if (name == "bitblast") {
9940
2
    assign_bv_bitblastMode(opts, name, optionarg);
9941
2
    return;
9942
  }
9943
2547
  if (name == "bitwise-eq") {
9944
    assign_bv_bitwiseEq(opts, name, optionarg == "true");
9945
    return;
9946
  }
9947
2547
  if (name == "bool-to-bv") {
9948
    assign_bv_boolToBitvector(opts, name, optionarg);
9949
    return;
9950
  }
9951
2547
  if (name == "bv-abstraction") {
9952
    assign_bv_bvAbstraction(opts, name, optionarg == "true");
9953
    return;
9954
  }
9955
2547
  if (name == "bv-aig-simp") {
9956
    assign_bv_bitvectorAigSimplifications(opts, name, optionarg);
9957
    return;
9958
  }
9959
2547
  if (name == "bv-alg-extf") {
9960
    assign_bv_bvAlgExtf(opts, name, optionarg == "true");
9961
    return;
9962
  }
9963
2547
  if (name == "bv-algebraic-budget") {
9964
    assign_bv_bitvectorAlgebraicBudget(opts, name, optionarg);
9965
    return;
9966
  }
9967
2547
  if (name == "bv-algebraic-solver") {
9968
    assign_bv_bitvectorAlgebraicSolver(opts, name, optionarg == "true");
9969
    return;
9970
  }
9971
2547
  if (name == "bv-assert-input") {
9972
    assign_bv_bvAssertInput(opts, name, optionarg == "true");
9973
    return;
9974
  }
9975
2547
  if (name == "bv-eager-explanations") {
9976
    assign_bv_bvEagerExplanations(opts, name, optionarg == "true");
9977
    return;
9978
  }
9979
2547
  if (name == "bv-eq-solver") {
9980
    assign_bv_bitvectorEqualitySolver(opts, name, optionarg == "true");
9981
    return;
9982
  }
9983
2547
  if (name == "bv-extract-arith") {
9984
    assign_bv_bvExtractArithRewrite(opts, name, optionarg == "true");
9985
    return;
9986
  }
9987
2547
  if (name == "bv-gauss-elim") {
9988
    assign_bv_bvGaussElim(opts, name, optionarg == "true");
9989
    return;
9990
  }
9991
2547
  if (name == "bv-inequality-solver") {
9992
    assign_bv_bitvectorInequalitySolver(opts, name, optionarg == "true");
9993
    return;
9994
  }
9995
2547
  if (name == "bv-intro-pow2") {
9996
    assign_bv_bvIntroducePow2(opts, name, optionarg == "true");
9997
    return;
9998
  }
9999
2547
  if (name == "bv-num-func") {
10000
    assign_bv_bvNumFunc(opts, name, optionarg);
10001
    return;
10002
  }
10003
2547
  if (name == "bv-print-consts-as-indexed-symbols") {
10004
    assign_bv_bvPrintConstsAsIndexedSymbols(opts, name, optionarg == "true");
10005
    return;
10006
  }
10007
2547
  if (name == "bv-propagate") {
10008
    assign_bv_bitvectorPropagate(opts, name, optionarg == "true");
10009
    return;
10010
  }
10011
2547
  if (name == "bv-quick-xplain") {
10012
    assign_bv_bitvectorQuickXplain(opts, name, optionarg == "true");
10013
    return;
10014
  }
10015
2547
  if (name == "bv-sat-solver") {
10016
4
    assign_bv_bvSatSolver(opts, name, optionarg);
10017
2
    return;
10018
  }
10019
2543
  if (name == "bv-skolemize") {
10020
    assign_bv_skolemizeArguments(opts, name, optionarg == "true");
10021
    return;
10022
  }
10023
2543
  if (name == "bv-solver") {
10024
2
    assign_bv_bvSolver(opts, name, optionarg);
10025
2
    return;
10026
  }
10027
2541
  if (name == "bv-to-bool") {
10028
    assign_bv_bitvectorToBool(opts, name, optionarg == "true");
10029
    return;
10030
  }
10031
2541
  if (name == "cdt-bisimilar") {
10032
    assign_datatypes_cdtBisimilar(opts, name, optionarg == "true");
10033
    return;
10034
  }
10035
2541
  if (name == "dt-binary-split") {
10036
    assign_datatypes_dtBinarySplit(opts, name, optionarg == "true");
10037
    return;
10038
  }
10039
2541
  if (name == "dt-blast-splits") {
10040
    assign_datatypes_dtBlastSplits(opts, name, optionarg == "true");
10041
    return;
10042
  }
10043
2541
  if (name == "dt-cyclic") {
10044
    assign_datatypes_dtCyclic(opts, name, optionarg == "true");
10045
    return;
10046
  }
10047
2541
  if (name == "dt-force-assignment") {
10048
    assign_datatypes_dtForceAssignment(opts, name, optionarg == "true");
10049
    return;
10050
  }
10051
2541
  if (name == "dt-infer-as-lemmas") {
10052
    assign_datatypes_dtInferAsLemmas(opts, name, optionarg == "true");
10053
    return;
10054
  }
10055
2541
  if (name == "dt-nested-rec") {
10056
    assign_datatypes_dtNestedRec(opts, name, optionarg == "true");
10057
    return;
10058
  }
10059
2541
  if (name == "dt-polite-optimize") {
10060
    assign_datatypes_dtPoliteOptimize(opts, name, optionarg == "true");
10061
    return;
10062
  }
10063
2541
  if (name == "dt-rewrite-error-sel") {
10064
    assign_datatypes_dtRewriteErrorSel(opts, name, optionarg == "true");
10065
    return;
10066
  }
10067
2541
  if (name == "dt-share-sel") {
10068
    assign_datatypes_dtSharedSelectors(opts, name, optionarg == "true");
10069
    return;
10070
  }
10071
2541
  if (name == "sygus-abort-size") {
10072
    assign_datatypes_sygusAbortSize(opts, name, optionarg);
10073
    return;
10074
  }
10075
2541
  if (name == "sygus-fair-max") {
10076
    assign_datatypes_sygusFairMax(opts, name, optionarg == "true");
10077
    return;
10078
  }
10079
2541
  if (name == "sygus-fair") {
10080
    assign_datatypes_sygusFair(opts, name, optionarg);
10081
    return;
10082
  }
10083
2541
  if (name == "sygus-sym-break") {
10084
2
    assign_datatypes_sygusSymBreak(opts, name, optionarg == "true");
10085
2
    return;
10086
  }
10087
2539
  if (name == "sygus-sym-break-agg") {
10088
    assign_datatypes_sygusSymBreakAgg(opts, name, optionarg == "true");
10089
    return;
10090
  }
10091
2539
  if (name == "sygus-sym-break-dynamic") {
10092
    assign_datatypes_sygusSymBreakDynamic(opts, name, optionarg == "true");
10093
    return;
10094
  }
10095
2539
  if (name == "sygus-sym-break-lazy") {
10096
2
    assign_datatypes_sygusSymBreakLazy(opts, name, optionarg == "true");
10097
2
    return;
10098
  }
10099
2537
  if (name == "sygus-sym-break-pbe") {
10100
    assign_datatypes_sygusSymBreakPbe(opts, name, optionarg == "true");
10101
    return;
10102
  }
10103
2537
  if (name == "sygus-sym-break-rlv") {
10104
2
    assign_datatypes_sygusSymBreakRlv(opts, name, optionarg == "true");
10105
2
    return;
10106
  }
10107
2535
  if (name == "decision-random-weight") {
10108
    assign_decision_decisionRandomWeight(opts, name, optionarg);
10109
    return;
10110
  }
10111
2535
  if (name == "decision-threshold") {
10112
    assign_decision_decisionThreshold(opts, name, optionarg);
10113
    return;
10114
  }
10115
2535
  if (name == "decision-use-weight") {
10116
    assign_decision_decisionUseWeight(opts, name, optionarg == "true");
10117
    return;
10118
  }
10119
2535
  if (name == "decision-weight-internal") {
10120
    assign_decision_decisionWeightInternal(opts, name, optionarg);
10121
    return;
10122
  }
10123
2535
  if (name == "decision" || name == "decision-mode") {
10124
    assign_decision_decisionMode(opts, name, optionarg);
10125
    return;
10126
  }
10127
2535
  if (name == "jh-rlv-order") {
10128
    assign_decision_jhRlvOrder(opts, name, optionarg == "true");
10129
    return;
10130
  }
10131
2535
  if (name == "jh-skolem-rlv") {
10132
    assign_decision_jhSkolemRlvMode(opts, name, optionarg);
10133
    return;
10134
  }
10135
2535
  if (name == "jh-skolem") {
10136
    assign_decision_jhSkolemMode(opts, name, optionarg);
10137
    return;
10138
  }
10139
2535
  if (name == "dag-thresh") {
10140
1
    assign_expr_defaultDagThresh(opts, name, optionarg);
10141
1
    return;
10142
  }
10143
2534
  if (name == "expr-depth") {
10144
    assign_expr_defaultExprDepth(opts, name, optionarg);
10145
    return;
10146
  }
10147
2534
  if (name == "type-checking") {
10148
    assign_expr_typeChecking(opts, name, optionarg == "true");
10149
    return;
10150
  }
10151
2534
  if (name == "fp-exp") {
10152
    assign_fp_fpExp(opts, name, optionarg == "true");
10153
    return;
10154
  }
10155
2534
  if (name == "fp-lazy-wb") {
10156
    assign_fp_fpLazyWb(opts, name, optionarg == "true");
10157
    return;
10158
  }
10159
2534
  if (name == "copyright") {
10160
    opts.handler().copyright("copyright", name);
10161
    return;
10162
  }
10163
2534
  if (name == "dump-instantiations") {
10164
    assign_driver_dumpInstantiations(opts, name, optionarg == "true");
10165
    return;
10166
  }
10167
2534
  if (name == "dump-instantiations-debug") {
10168
    assign_driver_dumpInstantiationsDebug(opts, name, optionarg == "true");
10169
    return;
10170
  }
10171
2534
  if (name == "dump-models") {
10172
    assign_driver_dumpModels(opts, name, optionarg == "true");
10173
    return;
10174
  }
10175
2534
  if (name == "dump-proofs") {
10176
    assign_driver_dumpProofs(opts, name, optionarg == "true");
10177
    return;
10178
  }
10179
2534
  if (name == "dump-unsat-cores") {
10180
    assign_driver_dumpUnsatCores(opts, name, optionarg == "true");
10181
    return;
10182
  }
10183
2534
  if (name == "dump-unsat-cores-full") {
10184
    assign_driver_dumpUnsatCoresFull(opts, name, optionarg == "true");
10185
    return;
10186
  }
10187
2534
  if (name == "early-exit") {
10188
    assign_driver_earlyExit(opts, name, optionarg == "true");
10189
    return;
10190
  }
10191
2534
  if (name == "force-no-limit-cpu-while-dump") {
10192
    assign_driver_forceNoLimitCpuWhileDump(opts, name, optionarg == "true");
10193
    return;
10194
  }
10195
2534
  if (name == "help") {
10196
    assign_driver_help(opts, name, optionarg == "true");
10197
    return;
10198
  }
10199
2534
  if (name == "interactive") {
10200
    assign_driver_interactive(opts, name, optionarg == "true");
10201
    return;
10202
  }
10203
2534
  if (name == "seed") {
10204
    assign_driver_seed(opts, name, optionarg);
10205
    return;
10206
  }
10207
2534
  if (name == "segv-spin") {
10208
    assign_driver_segvSpin(opts, name, optionarg == "true");
10209
    return;
10210
  }
10211
2534
  if (name == "show-config") {
10212
    opts.handler().showConfiguration("show-config", name);
10213
    return;
10214
  }
10215
2534
  if (name == "show-debug-tags") {
10216
    opts.handler().showDebugTags("show-debug-tags", name);
10217
    return;
10218
  }
10219
2534
  if (name == "show-trace-tags") {
10220
    opts.handler().showTraceTags("show-trace-tags", name);
10221
    return;
10222
  }
10223
2534
  if (name == "version") {
10224
    assign_driver_version(opts, name, optionarg == "true");
10225
    return;
10226
  }
10227
2534
  if (name == "filesystem-access") {
10228
    assign_parser_filesystemAccess(opts, name, optionarg == "true");
10229
    return;
10230
  }
10231
2534
  if (name == "force-logic") {
10232
    assign_parser_forceLogicString(opts, name, optionarg);
10233
    return;
10234
  }
10235
2534
  if (name == "global-declarations") {
10236
19
    assign_parser_globalDeclarations(opts, name, optionarg == "true");
10237
19
    return;
10238
  }
10239
2515
  if (name == "mmap") {
10240
    assign_parser_memoryMap(opts, name, optionarg == "true");
10241
    return;
10242
  }
10243
2515
  if (name == "semantic-checks") {
10244
    assign_parser_semanticChecks(opts, name, optionarg == "true");
10245
    return;
10246
  }
10247
2515
  if (name == "strict-parsing") {
10248
    assign_parser_strictParsing(opts, name, optionarg == "true");
10249
    return;
10250
  }
10251
2515
  if (name == "flatten-ho-chains") {
10252
    assign_printer_flattenHOChains(opts, name, optionarg == "true");
10253
    return;
10254
  }
10255
2515
  if (name == "model-format") {
10256
    assign_printer_modelFormatMode(opts, name, optionarg);
10257
    return;
10258
  }
10259
2515
  if (name == "print-inst-full") {
10260
    assign_printer_printInstFull(opts, name, optionarg == "true");
10261
    return;
10262
  }
10263
2515
  if (name == "print-inst") {
10264
    assign_printer_printInstMode(opts, name, optionarg);
10265
    return;
10266
  }
10267
2515
  if (name == "proof-eager-checking") {
10268
    assign_proof_proofEagerChecking(opts, name, optionarg == "true");
10269
    return;
10270
  }
10271
2515
  if (name == "proof-format-mode") {
10272
    assign_proof_proofFormatMode(opts, name, optionarg);
10273
    return;
10274
  }
10275
2515
  if (name == "proof-granularity") {
10276
    assign_proof_proofGranularityMode(opts, name, optionarg);
10277
    return;
10278
  }
10279
2515
  if (name == "proof-pedantic") {
10280
    assign_proof_proofPedantic(opts, name, optionarg);
10281
    return;
10282
  }
10283
2515
  if (name == "proof-print-conclusion") {
10284
    assign_proof_proofPrintConclusion(opts, name, optionarg == "true");
10285
    return;
10286
  }
10287
2515
  if (name == "minisat-dump-dimacs") {
10288
    assign_prop_minisatDumpDimacs(opts, name, optionarg == "true");
10289
    return;
10290
  }
10291
2515
  if (name == "minisat-elimination") {
10292
    assign_prop_minisatUseElim(opts, name, optionarg == "true");
10293
    return;
10294
  }
10295
2515
  if (name == "random-freq" || name == "random-frequency") {
10296
    assign_prop_satRandomFreq(opts, name, optionarg);
10297
    return;
10298
  }
10299
2515
  if (name == "random-seed") {
10300
2
    assign_prop_satRandomSeed(opts, name, optionarg);
10301
2
    return;
10302
  }
10303
2513
  if (name == "refine-conflicts") {
10304
    assign_prop_sat_refine_conflicts(opts, name, optionarg == "true");
10305
    return;
10306
  }
10307
2513
  if (name == "restart-int-base") {
10308
    assign_prop_satRestartFirst(opts, name, optionarg);
10309
    return;
10310
  }
10311
2513
  if (name == "restart-int-inc") {
10312
    assign_prop_satRestartInc(opts, name, optionarg);
10313
    return;
10314
  }
10315
2513
  if (name == "ag-miniscope-quant") {
10316
4
    assign_quantifiers_aggressiveMiniscopeQuant(opts, name, optionarg == "true");
10317
4
    return;
10318
  }
10319
2509
  if (name == "cegis-sample") {
10320
    assign_quantifiers_cegisSample(opts, name, optionarg);
10321
    return;
10322
  }
10323
2509
  if (name == "cegqi") {
10324
    assign_quantifiers_cegqi(opts, name, optionarg == "true");
10325
    return;
10326
  }
10327
2509
  if (name == "cegqi-all") {
10328
3
    assign_quantifiers_cegqiAll(opts, name, optionarg == "true");
10329
3
    return;
10330
  }
10331
2506
  if (name == "cegqi-bv") {
10332
    assign_quantifiers_cegqiBv(opts, name, optionarg == "true");
10333
    return;
10334
  }
10335
2506
  if (name == "cegqi-bv-concat-inv") {
10336
    assign_quantifiers_cegqiBvConcInv(opts, name, optionarg == "true");
10337
    return;
10338
  }
10339
2506
  if (name == "cegqi-bv-ineq") {
10340
    assign_quantifiers_cegqiBvIneqMode(opts, name, optionarg);
10341
    return;
10342
  }
10343
2506
  if (name == "cegqi-bv-interleave-value") {
10344
    assign_quantifiers_cegqiBvInterleaveValue(opts, name, optionarg == "true");
10345
    return;
10346
  }
10347
2506
  if (name == "cegqi-bv-linear") {
10348
    assign_quantifiers_cegqiBvLinearize(opts, name, optionarg == "true");
10349
    return;
10350
  }
10351
2506
  if (name == "cegqi-bv-rm-extract") {
10352
    assign_quantifiers_cegqiBvRmExtract(opts, name, optionarg == "true");
10353
    return;
10354
  }
10355
2506
  if (name == "cegqi-bv-solve-nl") {
10356
    assign_quantifiers_cegqiBvSolveNl(opts, name, optionarg == "true");
10357
    return;
10358
  }
10359
2506
  if (name == "cegqi-full") {
10360
512
    assign_quantifiers_cegqiFullEffort(opts, name, optionarg == "true");
10361
512
    return;
10362
  }
10363
1994
  if (name == "cegqi-innermost") {
10364
    assign_quantifiers_cegqiInnermost(opts, name, optionarg == "true");
10365
    return;
10366
  }
10367
1994
  if (name == "cegqi-midpoint") {
10368
    assign_quantifiers_cegqiMidpoint(opts, name, optionarg == "true");
10369
    return;
10370
  }
10371
1994
  if (name == "cegqi-min-bounds") {
10372
    assign_quantifiers_cegqiMinBounds(opts, name, optionarg == "true");
10373
    return;
10374
  }
10375
1994
  if (name == "cegqi-model") {
10376
    assign_quantifiers_cegqiModel(opts, name, optionarg == "true");
10377
    return;
10378
  }
10379
1994
  if (name == "cegqi-multi-inst") {
10380
    assign_quantifiers_cegqiMultiInst(opts, name, optionarg == "true");
10381
    return;
10382
  }
10383
1994
  if (name == "cegqi-nested-qe") {
10384
12
    assign_quantifiers_cegqiNestedQE(opts, name, optionarg == "true");
10385
12
    return;
10386
  }
10387
1982
  if (name == "cegqi-nopt") {
10388
    assign_quantifiers_cegqiNopt(opts, name, optionarg == "true");
10389
    return;
10390
  }
10391
1982
  if (name == "cegqi-repeat-lit") {
10392
    assign_quantifiers_cegqiRepeatLit(opts, name, optionarg == "true");
10393
    return;
10394
  }
10395
1982
  if (name == "cegqi-round-up-lia") {
10396
    assign_quantifiers_cegqiRoundUpLowerLia(opts, name, optionarg == "true");
10397
    return;
10398
  }
10399
1982
  if (name == "cegqi-sat") {
10400
    assign_quantifiers_cegqiSat(opts, name, optionarg == "true");
10401
    return;
10402
  }
10403
1982
  if (name == "cegqi-use-inf-int") {
10404
3
    assign_quantifiers_cegqiUseInfInt(opts, name, optionarg == "true");
10405
3
    return;
10406
  }
10407
1979
  if (name == "cegqi-use-inf-real") {
10408
3
    assign_quantifiers_cegqiUseInfReal(opts, name, optionarg == "true");
10409
3
    return;
10410
  }
10411
1976
  if (name == "cond-var-split-agg-quant") {
10412
    assign_quantifiers_condVarSplitQuantAgg(opts, name, optionarg == "true");
10413
    return;
10414
  }
10415
1976
  if (name == "cond-var-split-quant") {
10416
    assign_quantifiers_condVarSplitQuant(opts, name, optionarg == "true");
10417
    return;
10418
  }
10419
1976
  if (name == "conjecture-filter-active-terms") {
10420
    assign_quantifiers_conjectureFilterActiveTerms(opts, name, optionarg == "true");
10421
    return;
10422
  }
10423
1976
  if (name == "conjecture-filter-canonical") {
10424
    assign_quantifiers_conjectureFilterCanonical(opts, name, optionarg == "true");
10425
    return;
10426
  }
10427
1976
  if (name == "conjecture-filter-model") {
10428
2
    assign_quantifiers_conjectureFilterModel(opts, name, optionarg == "true");
10429
2
    return;
10430
  }
10431
1974
  if (name == "conjecture-gen") {
10432
4
    assign_quantifiers_conjectureGen(opts, name, optionarg == "true");
10433
4
    return;
10434
  }
10435
1970
  if (name == "conjecture-gen-gt-enum") {
10436
    assign_quantifiers_conjectureGenGtEnum(opts, name, optionarg);
10437
    return;
10438
  }
10439
1970
  if (name == "conjecture-gen-max-depth") {
10440
    assign_quantifiers_conjectureGenMaxDepth(opts, name, optionarg);
10441
    return;
10442
  }
10443
1970
  if (name == "conjecture-gen-per-round") {
10444
    assign_quantifiers_conjectureGenPerRound(opts, name, optionarg);
10445
    return;
10446
  }
10447
1970
  if (name == "conjecture-gen-uee-intro") {
10448
    assign_quantifiers_conjectureUeeIntro(opts, name, optionarg == "true");
10449
    return;
10450
  }
10451
1970
  if (name == "conjecture-no-filter") {
10452
2
    assign_quantifiers_conjectureNoFilter(opts, name, optionarg == "true");
10453
2
    return;
10454
  }
10455
1968
  if (name == "dt-stc-ind") {
10456
    assign_quantifiers_dtStcInduction(opts, name, optionarg == "true");
10457
    return;
10458
  }
10459
1968
  if (name == "dt-var-exp-quant") {
10460
    assign_quantifiers_dtVarExpandQuant(opts, name, optionarg == "true");
10461
    return;
10462
  }
10463
1968
  if (name == "e-matching") {
10464
1
    assign_quantifiers_eMatching(opts, name, optionarg == "true");
10465
1
    return;
10466
  }
10467
1967
  if (name == "elim-taut-quant") {
10468
    assign_quantifiers_elimTautQuant(opts, name, optionarg == "true");
10469
    return;
10470
  }
10471
1967
  if (name == "ext-rewrite-quant") {
10472
2
    assign_quantifiers_extRewriteQuant(opts, name, optionarg == "true");
10473
2
    return;
10474
  }
10475
1965
  if (name == "finite-model-find") {
10476
16
    assign_quantifiers_finiteModelFind(opts, name, optionarg == "true");
10477
16
    return;
10478
  }
10479
1949
  if (name == "fmf-bound") {
10480
14
    assign_quantifiers_fmfBound(opts, name, optionarg == "true");
10481
14
    return;
10482
  }
10483
1935
  if (name == "fmf-bound-int") {
10484
6
    assign_quantifiers_fmfBoundInt(opts, name, optionarg == "true");
10485
6
    return;
10486
  }
10487
1929
  if (name == "fmf-bound-lazy") {
10488
    assign_quantifiers_fmfBoundLazy(opts, name, optionarg == "true");
10489
    return;
10490
  }
10491
1929
  if (name == "fmf-fmc-simple") {
10492
    assign_quantifiers_fmfFmcSimple(opts, name, optionarg == "true");
10493
    return;
10494
  }
10495
1929
  if (name == "fmf-fresh-dc") {
10496
    assign_quantifiers_fmfFreshDistConst(opts, name, optionarg == "true");
10497
    return;
10498
  }
10499
1929
  if (name == "fmf-fun") {
10500
14
    assign_quantifiers_fmfFunWellDefined(opts, name, optionarg == "true");
10501
14
    return;
10502
  }
10503
1915
  if (name == "fmf-fun-rlv") {
10504
    assign_quantifiers_fmfFunWellDefinedRelevant(opts, name, optionarg == "true");
10505
    return;
10506
  }
10507
1915
  if (name == "fmf-inst-engine") {
10508
    assign_quantifiers_fmfInstEngine(opts, name, optionarg == "true");
10509
    return;
10510
  }
10511
1915
  if (name == "fmf-type-completion-thresh") {
10512
    assign_quantifiers_fmfTypeCompletionThresh(opts, name, optionarg);
10513
    return;
10514
  }
10515
1915
  if (name == "fs-interleave") {
10516
    assign_quantifiers_fullSaturateInterleave(opts, name, optionarg == "true");
10517
    return;
10518
  }
10519
1915
  if (name == "fs-stratify") {
10520
    assign_quantifiers_fullSaturateStratify(opts, name, optionarg == "true");
10521
    return;
10522
  }
10523
1915
  if (name == "fs-sum") {
10524
    assign_quantifiers_fullSaturateSum(opts, name, optionarg == "true");
10525
    return;
10526
  }
10527
1915
  if (name == "full-saturate-quant") {
10528
    assign_quantifiers_fullSaturateQuant(opts, name, optionarg == "true");
10529
    return;
10530
  }
10531
1915
  if (name == "full-saturate-quant-limit") {
10532
    assign_quantifiers_fullSaturateLimit(opts, name, optionarg);
10533
    return;
10534
  }
10535
1915
  if (name == "full-saturate-quant-rd") {
10536
    assign_quantifiers_fullSaturateQuantRd(opts, name, optionarg == "true");
10537
    return;
10538
  }
10539
1915
  if (name == "global-negate") {
10540
2
    assign_quantifiers_globalNegate(opts, name, optionarg == "true");
10541
2
    return;
10542
  }
10543
1913
  if (name == "ho-elim") {
10544
    assign_quantifiers_hoElim(opts, name, optionarg == "true");
10545
    return;
10546
  }
10547
1913
  if (name == "ho-elim-store-ax") {
10548
    assign_quantifiers_hoElimStoreAx(opts, name, optionarg == "true");
10549
    return;
10550
  }
10551
1913
  if (name == "ho-matching") {
10552
    assign_quantifiers_hoMatching(opts, name, optionarg == "true");
10553
    return;
10554
  }
10555
1913
  if (name == "ho-matching-var-priority") {
10556
    assign_quantifiers_hoMatchingVarArgPriority(opts, name, optionarg == "true");
10557
    return;
10558
  }
10559
1913
  if (name == "ho-merge-term-db") {
10560
    assign_quantifiers_hoMergeTermDb(opts, name, optionarg == "true");
10561
    return;
10562
  }
10563
1913
  if (name == "increment-triggers") {
10564
    assign_quantifiers_incrementTriggers(opts, name, optionarg == "true");
10565
    return;
10566
  }
10567
1913
  if (name == "inst-level-input-only") {
10568
    assign_quantifiers_instLevelInputOnly(opts, name, optionarg == "true");
10569
    return;
10570
  }
10571
1913
  if (name == "inst-max-level") {
10572
    assign_quantifiers_instMaxLevel(opts, name, optionarg);
10573
    return;
10574
  }
10575
1913
  if (name == "inst-max-rounds") {
10576
    assign_quantifiers_instMaxRounds(opts, name, optionarg);
10577
    return;
10578
  }
10579
1913
  if (name == "inst-no-entail") {
10580
    assign_quantifiers_instNoEntail(opts, name, optionarg == "true");
10581
    return;
10582
  }
10583
1913
  if (name == "inst-when-phase") {
10584
    assign_quantifiers_instWhenPhase(opts, name, optionarg);
10585
    return;
10586
  }
10587
1913
  if (name == "inst-when-strict-interleave") {
10588
    assign_quantifiers_instWhenStrictInterleave(opts, name, optionarg == "true");
10589
    return;
10590
  }
10591
1913
  if (name == "inst-when-tc-first") {
10592
    assign_quantifiers_instWhenTcFirst(opts, name, optionarg == "true");
10593
    return;
10594
  }
10595
1913
  if (name == "inst-when") {
10596
    assign_quantifiers_instWhenMode(opts, name, optionarg);
10597
    return;
10598
  }
10599
1913
  if (name == "int-wf-ind") {
10600
2
    assign_quantifiers_intWfInduction(opts, name, optionarg == "true");
10601
2
    return;
10602
  }
10603
1911
  if (name == "ite-dtt-split-quant") {
10604
    assign_quantifiers_iteDtTesterSplitQuant(opts, name, optionarg == "true");
10605
    return;
10606
  }
10607
1911
  if (name == "ite-lift-quant") {
10608
    assign_quantifiers_iteLiftQuant(opts, name, optionarg);
10609
    return;
10610
  }
10611
1911
  if (name == "literal-matching") {
10612
    assign_quantifiers_literalMatchMode(opts, name, optionarg);
10613
    return;
10614
  }
10615
1911
  if (name == "macros-quant") {
10616
    assign_quantifiers_macrosQuant(opts, name, optionarg == "true");
10617
    return;
10618
  }
10619
1911
  if (name == "macros-quant-mode") {
10620
    assign_quantifiers_macrosQuantMode(opts, name, optionarg);
10621
    return;
10622
  }
10623
1911
  if (name == "mbqi-interleave") {
10624
    assign_quantifiers_mbqiInterleave(opts, name, optionarg == "true");
10625
    return;
10626
  }
10627
1911
  if (name == "mbqi-one-inst-per-round") {
10628
    assign_quantifiers_fmfOneInstPerRound(opts, name, optionarg == "true");
10629
    return;
10630
  }
10631
1911
  if (name == "mbqi") {
10632
    assign_quantifiers_mbqiMode(opts, name, optionarg);
10633
    return;
10634
  }
10635
1911
  if (name == "miniscope-quant") {
10636
116
    assign_quantifiers_miniscopeQuant(opts, name, optionarg == "true");
10637
116
    return;
10638
  }
10639
1795
  if (name == "miniscope-quant-fv") {
10640
114
    assign_quantifiers_miniscopeQuantFreeVar(opts, name, optionarg == "true");
10641
114
    return;
10642
  }
10643
1681
  if (name == "multi-trigger-cache") {
10644
    assign_quantifiers_multiTriggerCache(opts, name, optionarg == "true");
10645
    return;
10646
  }
10647
1681
  if (name == "multi-trigger-linear") {
10648
    assign_quantifiers_multiTriggerLinear(opts, name, optionarg == "true");
10649
    return;
10650
  }
10651
1681
  if (name == "multi-trigger-priority") {
10652
    assign_quantifiers_multiTriggerPriority(opts, name, optionarg == "true");
10653
    return;
10654
  }
10655
1681
  if (name == "multi-trigger-when-single") {
10656
    assign_quantifiers_multiTriggerWhenSingle(opts, name, optionarg == "true");
10657
    return;
10658
  }
10659
1681
  if (name == "partial-triggers") {
10660
    assign_quantifiers_partialTriggers(opts, name, optionarg == "true");
10661
    return;
10662
  }
10663
1681
  if (name == "pool-inst") {
10664
    assign_quantifiers_poolInst(opts, name, optionarg == "true");
10665
    return;
10666
  }
10667
1681
  if (name == "pre-skolem-quant") {
10668
2
    assign_quantifiers_preSkolemQuant(opts, name, optionarg == "true");
10669
2
    return;
10670
  }
10671
1679
  if (name == "pre-skolem-quant-agg") {
10672
    assign_quantifiers_preSkolemQuantAgg(opts, name, optionarg == "true");
10673
    return;
10674
  }
10675
1679
  if (name == "pre-skolem-quant-nested") {
10676
2
    assign_quantifiers_preSkolemQuantNested(opts, name, optionarg == "true");
10677
2
    return;
10678
  }
10679
1677
  if (name == "prenex-quant-user") {
10680
    assign_quantifiers_prenexQuantUser(opts, name, optionarg == "true");
10681
    return;
10682
  }
10683
1677
  if (name == "prenex-quant") {
10684
    assign_quantifiers_prenexQuant(opts, name, optionarg);
10685
    return;
10686
  }
10687
1677
  if (name == "purify-triggers") {
10688
    assign_quantifiers_purifyTriggers(opts, name, optionarg == "true");
10689
    return;
10690
  }
10691
1677
  if (name == "qcf-all-conflict") {
10692
    assign_quantifiers_qcfAllConflict(opts, name, optionarg == "true");
10693
    return;
10694
  }
10695
1677
  if (name == "qcf-eager-check-rd") {
10696
    assign_quantifiers_qcfEagerCheckRd(opts, name, optionarg == "true");
10697
    return;
10698
  }
10699
1677
  if (name == "qcf-eager-test") {
10700
    assign_quantifiers_qcfEagerTest(opts, name, optionarg == "true");
10701
    return;
10702
  }
10703
1677
  if (name == "qcf-nested-conflict") {
10704
    assign_quantifiers_qcfNestedConflict(opts, name, optionarg == "true");
10705
    return;
10706
  }
10707
1677
  if (name == "qcf-skip-rd") {
10708
    assign_quantifiers_qcfSkipRd(opts, name, optionarg == "true");
10709
    return;
10710
  }
10711
1677
  if (name == "qcf-tconstraint") {
10712
    assign_quantifiers_qcfTConstraint(opts, name, optionarg == "true");
10713
    return;
10714
  }
10715
1677
  if (name == "qcf-vo-exp") {
10716
    assign_quantifiers_qcfVoExp(opts, name, optionarg == "true");
10717
    return;
10718
  }
10719
1677
  if (name == "quant-alpha-equiv") {
10720
    assign_quantifiers_quantAlphaEquiv(opts, name, optionarg == "true");
10721
    return;
10722
  }
10723
1677
  if (name == "quant-cf") {
10724
    assign_quantifiers_quantConflictFind(opts, name, optionarg == "true");
10725
    return;
10726
  }
10727
1677
  if (name == "quant-cf-mode") {
10728
    assign_quantifiers_qcfMode(opts, name, optionarg);
10729
    return;
10730
  }
10731
1677
  if (name == "quant-cf-when") {
10732
    assign_quantifiers_qcfWhenMode(opts, name, optionarg);
10733
    return;
10734
  }
10735
1677
  if (name == "quant-dsplit-mode") {
10736
    assign_quantifiers_quantDynamicSplit(opts, name, optionarg);
10737
    return;
10738
  }
10739
1677
  if (name == "quant-fun-wd") {
10740
    assign_quantifiers_quantFunWellDefined(opts, name, optionarg == "true");
10741
    return;
10742
  }
10743
1677
  if (name == "quant-ind") {
10744
2
    assign_quantifiers_quantInduction(opts, name, optionarg == "true");
10745
2
    return;
10746
  }
10747
1675
  if (name == "quant-rep-mode") {
10748
    assign_quantifiers_quantRepMode(opts, name, optionarg);
10749
    return;
10750
  }
10751
1675
  if (name == "quant-split") {
10752
114
    assign_quantifiers_quantSplit(opts, name, optionarg == "true");
10753
114
    return;
10754
  }
10755
1561
  if (name == "register-quant-body-terms") {
10756
    assign_quantifiers_registerQuantBodyTerms(opts, name, optionarg == "true");
10757
    return;
10758
  }
10759
1561
  if (name == "relational-triggers") {
10760
    assign_quantifiers_relationalTriggers(opts, name, optionarg == "true");
10761
    return;
10762
  }
10763
1561
  if (name == "relevant-triggers") {
10764
    assign_quantifiers_relevantTriggers(opts, name, optionarg == "true");
10765
    return;
10766
  }
10767
1561
  if (name == "sygus") {
10768
    assign_quantifiers_sygus(opts, name, optionarg == "true");
10769
    return;
10770
  }
10771
1561
  if (name == "sygus-active-gen-cfactor") {
10772
    assign_quantifiers_sygusActiveGenEnumConsts(opts, name, optionarg);
10773
    return;
10774
  }
10775
1561
  if (name == "sygus-active-gen") {
10776
1
    assign_quantifiers_sygusActiveGenMode(opts, name, optionarg);
10777
1
    return;
10778
  }
10779
1560
  if (name == "sygus-add-const-grammar") {
10780
    assign_quantifiers_sygusAddConstGrammar(opts, name, optionarg == "true");
10781
    return;
10782
  }
10783
1560
  if (name == "sygus-arg-relevant") {
10784
    assign_quantifiers_sygusArgRelevant(opts, name, optionarg == "true");
10785
    return;
10786
  }
10787
1560
  if (name == "sygus-auto-unfold") {
10788
    assign_quantifiers_sygusInvAutoUnfold(opts, name, optionarg == "true");
10789
    return;
10790
  }
10791
1560
  if (name == "sygus-bool-ite-return-const") {
10792
    assign_quantifiers_sygusBoolIteReturnConst(opts, name, optionarg == "true");
10793
    return;
10794
  }
10795
1560
  if (name == "sygus-core-connective") {
10796
    assign_quantifiers_sygusCoreConnective(opts, name, optionarg == "true");
10797
    return;
10798
  }
10799
1560
  if (name == "sygus-crepair-abort") {
10800
    assign_quantifiers_sygusConstRepairAbort(opts, name, optionarg == "true");
10801
    return;
10802
  }
10803
1560
  if (name == "sygus-eval-opt") {
10804
    assign_quantifiers_sygusEvalOpt(opts, name, optionarg == "true");
10805
    return;
10806
  }
10807
1560
  if (name == "sygus-eval-unfold") {
10808
    assign_quantifiers_sygusEvalUnfold(opts, name, optionarg == "true");
10809
    return;
10810
  }
10811
1560
  if (name == "sygus-eval-unfold-bool") {
10812
    assign_quantifiers_sygusEvalUnfoldBool(opts, name, optionarg == "true");
10813
    return;
10814
  }
10815
1560
  if (name == "sygus-expr-miner-check-timeout") {
10816
    assign_quantifiers_sygusExprMinerCheckTimeout(opts, name, optionarg);
10817
    return;
10818
  }
10819
1560
  if (name == "sygus-ext-rew") {
10820
2
    assign_quantifiers_sygusExtRew(opts, name, optionarg == "true");
10821
2
    return;
10822
  }
10823
1558
  if (name == "sygus-filter-sol-rev") {
10824
    assign_quantifiers_sygusFilterSolRevSubsume(opts, name, optionarg == "true");
10825
    return;
10826
  }
10827
1558
  if (name == "sygus-filter-sol") {
10828
    assign_quantifiers_sygusFilterSolMode(opts, name, optionarg);
10829
    return;
10830
  }
10831
1558
  if (name == "sygus-grammar-cons") {
10832
    assign_quantifiers_sygusGrammarConsMode(opts, name, optionarg);
10833
    return;
10834
  }
10835
1558
  if (name == "sygus-grammar-norm") {
10836
    assign_quantifiers_sygusGrammarNorm(opts, name, optionarg == "true");
10837
    return;
10838
  }
10839
1558
  if (name == "sygus-inference") {
10840
14
    assign_quantifiers_sygusInference(opts, name, optionarg == "true");
10841
14
    return;
10842
  }
10843
1544
  if (name == "sygus-inst") {
10844
4
    assign_quantifiers_sygusInst(opts, name, optionarg == "true");
10845
4
    return;
10846
  }
10847
1540
  if (name == "sygus-inst-mode") {
10848
    assign_quantifiers_sygusInstMode(opts, name, optionarg);
10849
    return;
10850
  }
10851
1540
  if (name == "sygus-inst-scope") {
10852
    assign_quantifiers_sygusInstScope(opts, name, optionarg);
10853
    return;
10854
  }
10855
1540
  if (name == "sygus-inst-term-sel") {
10856
    assign_quantifiers_sygusInstTermSel(opts, name, optionarg);
10857
    return;
10858
  }
10859
1540
  if (name == "sygus-inv-templ-when-sg") {
10860
    assign_quantifiers_sygusInvTemplWhenSyntax(opts, name, optionarg == "true");
10861
    return;
10862
  }
10863
1540
  if (name == "sygus-inv-templ") {
10864
    assign_quantifiers_sygusInvTemplMode(opts, name, optionarg);
10865
    return;
10866
  }
10867
1540
  if (name == "sygus-min-grammar") {
10868
    assign_quantifiers_sygusMinGrammar(opts, name, optionarg == "true");
10869
    return;
10870
  }
10871
1540
  if (name == "sygus-pbe") {
10872
    assign_quantifiers_sygusUnifPbe(opts, name, optionarg == "true");
10873
    return;
10874
  }
10875
1540
  if (name == "sygus-pbe-multi-fair") {
10876
    assign_quantifiers_sygusPbeMultiFair(opts, name, optionarg == "true");
10877
    return;
10878
  }
10879
1540
  if (name == "sygus-pbe-multi-fair-diff") {
10880
    assign_quantifiers_sygusPbeMultiFairDiff(opts, name, optionarg);
10881
    return;
10882
  }
10883
1540
  if (name == "sygus-qe-preproc") {
10884
    assign_quantifiers_sygusQePreproc(opts, name, optionarg == "true");
10885
    return;
10886
  }
10887
1540
  if (name == "sygus-query-gen") {
10888
    assign_quantifiers_sygusQueryGen(opts, name, optionarg == "true");
10889
    return;
10890
  }
10891
1540
  if (name == "sygus-query-gen-check") {
10892
    assign_quantifiers_sygusQueryGenCheck(opts, name, optionarg == "true");
10893
    return;
10894
  }
10895
1540
  if (name == "sygus-query-gen-dump-files") {
10896
    assign_quantifiers_sygusQueryGenDumpFiles(opts, name, optionarg);
10897
    return;
10898
  }
10899
1540
  if (name == "sygus-query-gen-thresh") {
10900
    assign_quantifiers_sygusQueryGenThresh(opts, name, optionarg);
10901
    return;
10902
  }
10903
1540
  if (name == "sygus-rec-fun") {
10904
2
    assign_quantifiers_sygusRecFun(opts, name, optionarg == "true");
10905
2
    return;
10906
  }
10907
1538
  if (name == "sygus-rec-fun-eval-limit") {
10908
    assign_quantifiers_sygusRecFunEvalLimit(opts, name, optionarg);
10909
    return;
10910
  }
10911
1538
  if (name == "sygus-repair-const") {
10912
    assign_quantifiers_sygusRepairConst(opts, name, optionarg == "true");
10913
    return;
10914
  }
10915
1538
  if (name == "sygus-repair-const-timeout") {
10916
    assign_quantifiers_sygusRepairConstTimeout(opts, name, optionarg);
10917
    return;
10918
  }
10919
1538
  if (name == "sygus-rr") {
10920
    assign_quantifiers_sygusRew(opts, name, optionarg == "true");
10921
    return;
10922
  }
10923
1538
  if (name == "sygus-rr-synth") {
10924
    assign_quantifiers_sygusRewSynth(opts, name, optionarg == "true");
10925
    return;
10926
  }
10927
1538
  if (name == "sygus-rr-synth-accel") {
10928
    assign_quantifiers_sygusRewSynthAccel(opts, name, optionarg == "true");
10929
    return;
10930
  }
10931
1538
  if (name == "sygus-rr-synth-check") {
10932
2
    assign_quantifiers_sygusRewSynthCheck(opts, name, optionarg == "true");
10933
2
    return;
10934
  }
10935
1536
  if (name == "sygus-rr-synth-filter-cong") {
10936
    assign_quantifiers_sygusRewSynthFilterCong(opts, name, optionarg == "true");
10937
    return;
10938
  }
10939
1536
  if (name == "sygus-rr-synth-filter-match") {
10940
    assign_quantifiers_sygusRewSynthFilterMatch(opts, name, optionarg == "true");
10941
    return;
10942
  }
10943
1536
  if (name == "sygus-rr-synth-filter-nl") {
10944
    assign_quantifiers_sygusRewSynthFilterNonLinear(opts, name, optionarg == "true");
10945
    return;
10946
  }
10947
1536
  if (name == "sygus-rr-synth-filter-order") {
10948
    assign_quantifiers_sygusRewSynthFilterOrder(opts, name, optionarg == "true");
10949
    return;
10950
  }
10951
1536
  if (name == "sygus-rr-synth-input") {
10952
255
    assign_quantifiers_sygusRewSynthInput(opts, name, optionarg == "true");
10953
255
    return;
10954
  }
10955
1281
  if (name == "sygus-rr-synth-input-nvars") {
10956
    assign_quantifiers_sygusRewSynthInputNVars(opts, name, optionarg);
10957
    return;
10958
  }
10959
1281
  if (name == "sygus-rr-synth-input-use-bool") {
10960
    assign_quantifiers_sygusRewSynthInputUseBool(opts, name, optionarg == "true");
10961
    return;
10962
  }
10963
1281
  if (name == "sygus-rr-synth-rec") {
10964
    assign_quantifiers_sygusRewSynthRec(opts, name, optionarg == "true");
10965
    return;
10966
  }
10967
1281
  if (name == "sygus-rr-verify") {
10968
    assign_quantifiers_sygusRewVerify(opts, name, optionarg == "true");
10969
    return;
10970
  }
10971
1281
  if (name == "sygus-rr-verify-abort") {
10972
    assign_quantifiers_sygusRewVerifyAbort(opts, name, optionarg == "true");
10973
    return;
10974
  }
10975
1281
  if (name == "sygus-sample-fp-uniform") {
10976
    assign_quantifiers_sygusSampleFpUniform(opts, name, optionarg == "true");
10977
    return;
10978
  }
10979
1281
  if (name == "sygus-sample-grammar") {
10980
    assign_quantifiers_sygusSampleGrammar(opts, name, optionarg == "true");
10981
    return;
10982
  }
10983
1281
  if (name == "sygus-samples") {
10984
    assign_quantifiers_sygusSamples(opts, name, optionarg);
10985
    return;
10986
  }
10987
1281
  if (name == "sygus-si-abort") {
10988
    assign_quantifiers_cegqiSingleInvAbort(opts, name, optionarg == "true");
10989
    return;
10990
  }
10991
1281
  if (name == "sygus-si-partial") {
10992
    assign_quantifiers_cegqiSingleInvPartial(opts, name, optionarg == "true");
10993
    return;
10994
  }
10995
1281
  if (name == "sygus-si-rcons-limit") {
10996
    assign_quantifiers_cegqiSingleInvReconstructLimit(opts, name, optionarg);
10997
    return;
10998
  }
10999
1281
  if (name == "sygus-si-rcons") {
11000
    assign_quantifiers_cegqiSingleInvReconstruct(opts, name, optionarg);
11001
    return;
11002
  }
11003
1281
  if (name == "sygus-si-reconstruct-const") {
11004
    assign_quantifiers_cegqiSingleInvReconstructConst(opts, name, optionarg == "true");
11005
    return;
11006
  }
11007
1281
  if (name == "sygus-si") {
11008
    assign_quantifiers_cegqiSingleInvMode(opts, name, optionarg);
11009
    return;
11010
  }
11011
1281
  if (name == "sygus-stream") {
11012
    assign_quantifiers_sygusStream(opts, name, optionarg == "true");
11013
    return;
11014
  }
11015
1281
  if (name == "sygus-templ-embed-grammar") {
11016
    assign_quantifiers_sygusTemplEmbedGrammar(opts, name, optionarg == "true");
11017
    return;
11018
  }
11019
1281
  if (name == "sygus-unif-cond-independent-no-repeat-sol") {
11020
    assign_quantifiers_sygusUnifCondIndNoRepeatSol(opts, name, optionarg == "true");
11021
    return;
11022
  }
11023
1281
  if (name == "sygus-unif-pi") {
11024
    assign_quantifiers_sygusUnifPi(opts, name, optionarg);
11025
    return;
11026
  }
11027
1281
  if (name == "sygus-unif-shuffle-cond") {
11028
    assign_quantifiers_sygusUnifShuffleCond(opts, name, optionarg == "true");
11029
    return;
11030
  }
11031
1281
  if (name == "sygus-verify-inst-max-rounds") {
11032
    assign_quantifiers_sygusVerifyInstMaxRounds(opts, name, optionarg);
11033
    return;
11034
  }
11035
1281
  if (name == "term-db-cd") {
11036
    assign_quantifiers_termDbCd(opts, name, optionarg == "true");
11037
    return;
11038
  }
11039
1281
  if (name == "term-db-mode") {
11040
    assign_quantifiers_termDbMode(opts, name, optionarg);
11041
    return;
11042
  }
11043
1281
  if (name == "trigger-active-sel") {
11044
    assign_quantifiers_triggerActiveSelMode(opts, name, optionarg);
11045
    return;
11046
  }
11047
1281
  if (name == "trigger-sel") {
11048
    assign_quantifiers_triggerSelMode(opts, name, optionarg);
11049
    return;
11050
  }
11051
1281
  if (name == "user-pat") {
11052
    assign_quantifiers_userPatternsQuant(opts, name, optionarg);
11053
    return;
11054
  }
11055
1281
  if (name == "var-elim-quant") {
11056
    assign_quantifiers_varElimQuant(opts, name, optionarg == "true");
11057
    return;
11058
  }
11059
1281
  if (name == "var-ineq-elim-quant") {
11060
5
    assign_quantifiers_varIneqElimQuant(opts, name, optionarg == "true");
11061
5
    return;
11062
  }
11063
1276
  if (name == "sep-check-neg") {
11064
    assign_sep_sepCheckNeg(opts, name, optionarg == "true");
11065
    return;
11066
  }
11067
1276
  if (name == "sep-child-refine") {
11068
    assign_sep_sepChildRefine(opts, name, optionarg == "true");
11069
    return;
11070
  }
11071
1276
  if (name == "sep-deq-c") {
11072
    assign_sep_sepDisequalC(opts, name, optionarg == "true");
11073
    return;
11074
  }
11075
1276
  if (name == "sep-exp") {
11076
    assign_sep_sepExp(opts, name, optionarg == "true");
11077
    return;
11078
  }
11079
1276
  if (name == "sep-min-refine") {
11080
    assign_sep_sepMinimalRefine(opts, name, optionarg == "true");
11081
    return;
11082
  }
11083
1276
  if (name == "sep-pre-skolem-emp") {
11084
    assign_sep_sepPreSkolemEmp(opts, name, optionarg == "true");
11085
    return;
11086
  }
11087
1276
  if (name == "sets-ext") {
11088
84
    assign_sets_setsExt(opts, name, optionarg == "true");
11089
84
    return;
11090
  }
11091
1192
  if (name == "sets-infer-as-lemmas") {
11092
    assign_sets_setsInferAsLemmas(opts, name, optionarg == "true");
11093
    return;
11094
  }
11095
1192
  if (name == "sets-proxy-lemmas") {
11096
    assign_sets_setsProxyLemmas(opts, name, optionarg == "true");
11097
    return;
11098
  }
11099
1192
  if (name == "abstract-values") {
11100
    assign_smt_abstractValues(opts, name, optionarg == "true");
11101
    return;
11102
  }
11103
1192
  if (name == "ackermann") {
11104
    assign_smt_ackermann(opts, name, optionarg == "true");
11105
    return;
11106
  }
11107
1192
  if (name == "block-models") {
11108
14
    assign_smt_blockModelsMode(opts, name, optionarg);
11109
14
    return;
11110
  }
11111
1178
  if (name == "bvand-integer-granularity") {
11112
    assign_smt_BVAndIntegerGranularity(opts, name, optionarg);
11113
    return;
11114
  }
11115
1178
  if (name == "check-abducts") {
11116
    assign_smt_checkAbducts(opts, name, optionarg == "true");
11117
    return;
11118
  }
11119
1178
  if (name == "check-interpols") {
11120
    assign_smt_checkInterpols(opts, name, optionarg == "true");
11121
    return;
11122
  }
11123
1178
  if (name == "check-models") {
11124
9
    assign_smt_checkModels(opts, name, optionarg == "true");
11125
9
    return;
11126
  }
11127
1169
  if (name == "check-proofs") {
11128
    assign_smt_checkProofs(opts, name, optionarg == "true");
11129
    return;
11130
  }
11131
1169
  if (name == "check-synth-sol") {
11132
    assign_smt_checkSynthSol(opts, name, optionarg == "true");
11133
    return;
11134
  }
11135
1169
  if (name == "check-unsat-cores") {
11136
8
    assign_smt_checkUnsatCores(opts, name, optionarg == "true");
11137
8
    return;
11138
  }
11139
1161
  if (name == "debug-check-models") {
11140
    assign_smt_debugCheckModels(opts, name, optionarg == "true");
11141
    return;
11142
  }
11143
1161
  if (name == "dump-to") {
11144
    assign_smt_dumpToFileName(opts, name, optionarg);
11145
    return;
11146
  }
11147
1161
  if (name == "dump") {
11148
    assign_smt_dumpModeString(opts, name, optionarg);
11149
    return;
11150
  }
11151
1161
  if (name == "early-ite-removal") {
11152
    assign_smt_earlyIteRemoval(opts, name, optionarg == "true");
11153
    return;
11154
  }
11155
1161
  if (name == "expand-definitions") {
11156
    assign_smt_expandDefinitions(opts, name, optionarg == "true");
11157
    return;
11158
  }
11159
1161
  if (name == "ext-rew-prep") {
11160
2
    assign_smt_extRewPrep(opts, name, optionarg == "true");
11161
2
    return;
11162
  }
11163
1159
  if (name == "ext-rew-prep-agg") {
11164
    assign_smt_extRewPrepAgg(opts, name, optionarg == "true");
11165
    return;
11166
  }
11167
1159
  if (name == "foreign-theory-rewrite") {
11168
    assign_smt_foreignTheoryRewrite(opts, name, optionarg == "true");
11169
    return;
11170
  }
11171
1159
  if (name == "iand-mode") {
11172
    assign_smt_iandMode(opts, name, optionarg);
11173
    return;
11174
  }
11175
1159
  if (name == "interactive-mode") {
11176
2
    assign_smt_interactiveMode(opts, name, optionarg == "true");
11177
2
    return;
11178
  }
11179
1157
  if (name == "ite-simp") {
11180
3
    assign_smt_doITESimp(opts, name, optionarg == "true");
11181
3
    return;
11182
  }
11183
1154
  if (name == "learned-rewrite") {
11184
    assign_smt_learnedRewrite(opts, name, optionarg == "true");
11185
    return;
11186
  }
11187
1154
  if (name == "minimal-unsat-cores") {
11188
    assign_smt_minimalUnsatCores(opts, name, optionarg == "true");
11189
    return;
11190
  }
11191
1154
  if (name == "model-cores") {
11192
    assign_smt_modelCoresMode(opts, name, optionarg);
11193
    return;
11194
  }
11195
1154
  if (name == "model-u-print" || name == "model-uninterp-print") {
11196
    assign_smt_modelUninterpPrint(opts, name, optionarg);
11197
    return;
11198
  }
11199
1154
  if (name == "model-witness-value") {
11200
    assign_smt_modelWitnessValue(opts, name, optionarg == "true");
11201
    return;
11202
  }
11203
1154
  if (name == "on-repeat-ite-simp") {
11204
    assign_smt_doITESimpOnRepeat(opts, name, optionarg == "true");
11205
    return;
11206
  }
11207
1154
  if (name == "produce-abducts") {
11208
9
    assign_smt_produceAbducts(opts, name, optionarg == "true");
11209
9
    return;
11210
  }
11211
1145
  if (name == "produce-assertions") {
11212
26
    assign_smt_produceAssertions(opts, name, optionarg == "true");
11213
26
    return;
11214
  }
11215
1119
  if (name == "produce-assignments") {
11216
4
    assign_smt_produceAssignments(opts, name, optionarg == "true");
11217
4
    return;
11218
  }
11219
1115
  if (name == "produce-interpols") {
11220
3
    assign_smt_produceInterpols(opts, name, optionarg);
11221
3
    return;
11222
  }
11223
1112
  if (name == "produce-models") {
11224
759
    assign_smt_produceModels(opts, name, optionarg == "true");
11225
759
    return;
11226
  }
11227
353
  if (name == "produce-proofs") {
11228
6
    assign_smt_produceProofs(opts, name, optionarg == "true");
11229
6
    return;
11230
  }
11231
347
  if (name == "produce-unsat-assumptions") {
11232
15
    assign_smt_unsatAssumptions(opts, name, optionarg == "true");
11233
15
    return;
11234
  }
11235
332
  if (name == "produce-unsat-cores") {
11236
15
    assign_smt_unsatCores(opts, name, optionarg == "true");
11237
15
    return;
11238
  }
11239
317
  if (name == "repeat-simp") {
11240
2
    assign_smt_repeatSimp(opts, name, optionarg == "true");
11241
2
    return;
11242
  }
11243
315
  if (name == "simp-ite-compress") {
11244
3
    assign_smt_compressItes(opts, name, optionarg == "true");
11245
3
    return;
11246
  }
11247
312
  if (name == "simp-ite-hunt-zombies") {
11248
    assign_smt_zombieHuntThreshold(opts, name, optionarg);
11249
    return;
11250
  }
11251
312
  if (name == "simp-with-care") {
11252
    assign_smt_simplifyWithCareEnabled(opts, name, optionarg == "true");
11253
    return;
11254
  }
11255
312
  if (name == "simplification" || name == "simplification-mode") {
11256
1
    assign_smt_simplificationMode(opts, name, optionarg);
11257
1
    return;
11258
  }
11259
311
  if (name == "solve-bv-as-int") {
11260
14
    assign_smt_solveBVAsInt(opts, name, optionarg);
11261
14
    return;
11262
  }
11263
297
  if (name == "solve-int-as-bv") {
11264
4
    assign_smt_solveIntAsBV(opts, name, optionarg);
11265
4
    return;
11266
  }
11267
293
  if (name == "solve-real-as-int") {
11268
    assign_smt_solveRealAsInt(opts, name, optionarg == "true");
11269
    return;
11270
  }
11271
293
  if (name == "sort-inference") {
11272
6
    assign_smt_sortInference(opts, name, optionarg == "true");
11273
6
    return;
11274
  }
11275
287
  if (name == "static-learning") {
11276
    assign_smt_doStaticLearning(opts, name, optionarg == "true");
11277
    return;
11278
  }
11279
287
  if (name == "sygus-out") {
11280
    assign_smt_sygusOut(opts, name, optionarg);
11281
    return;
11282
  }
11283
287
  if (name == "sygus-print-callbacks") {
11284
    assign_smt_sygusPrintCallbacks(opts, name, optionarg == "true");
11285
    return;
11286
  }
11287
287
  if (name == "unconstrained-simp") {
11288
    assign_smt_unconstrainedSimp(opts, name, optionarg == "true");
11289
    return;
11290
  }
11291
287
  if (name == "unsat-cores-mode") {
11292
    assign_smt_unsatCoresMode(opts, name, optionarg);
11293
    return;
11294
  }
11295
287
  if (name == "re-elim") {
11296
16
    assign_strings_regExpElim(opts, name, optionarg == "true");
11297
16
    return;
11298
  }
11299
271
  if (name == "re-elim-agg") {
11300
8
    assign_strings_regExpElimAgg(opts, name, optionarg == "true");
11301
8
    return;
11302
  }
11303
263
  if (name == "re-inter-mode") {
11304
    assign_strings_stringRegExpInterMode(opts, name, optionarg);
11305
    return;
11306
  }
11307
263
  if (name == "strings-check-entail-len") {
11308
    assign_strings_stringCheckEntailLen(opts, name, optionarg == "true");
11309
    return;
11310
  }
11311
263
  if (name == "strings-eager") {
11312
    assign_strings_stringEager(opts, name, optionarg == "true");
11313
    return;
11314
  }
11315
263
  if (name == "strings-eager-eval") {
11316
    assign_strings_stringEagerEval(opts, name, optionarg == "true");
11317
    return;
11318
  }
11319
263
  if (name == "strings-eager-len") {
11320
    assign_strings_stringEagerLen(opts, name, optionarg == "true");
11321
    return;
11322
  }
11323
263
  if (name == "strings-exp") {
11324
224
    assign_strings_stringExp(opts, name, optionarg == "true");
11325
224
    return;
11326
  }
11327
39
  if (name == "strings-ff") {
11328
    assign_strings_stringFlatForms(opts, name, optionarg == "true");
11329
    return;
11330
  }
11331
39
  if (name == "strings-fmf") {
11332
26
    assign_strings_stringFMF(opts, name, optionarg == "true");
11333
26
    return;
11334
  }
11335
13
  if (name == "strings-guess-model") {
11336
    assign_strings_stringGuessModel(opts, name, optionarg == "true");
11337
    return;
11338
  }
11339
13
  if (name == "strings-infer-as-lemmas") {
11340
    assign_strings_stringInferAsLemmas(opts, name, optionarg == "true");
11341
    return;
11342
  }
11343
13
  if (name == "strings-infer-sym") {
11344
    assign_strings_stringInferSym(opts, name, optionarg == "true");
11345
    return;
11346
  }
11347
13
  if (name == "strings-lazy-pp") {
11348
11
    assign_strings_stringLazyPreproc(opts, name, optionarg == "true");
11349
11
    return;
11350
  }
11351
2
  if (name == "strings-len-norm") {
11352
    assign_strings_stringLenNorm(opts, name, optionarg == "true");
11353
    return;
11354
  }
11355
2
  if (name == "strings-lprop-csp") {
11356
    assign_strings_stringLenPropCsp(opts, name, optionarg == "true");
11357
    return;
11358
  }
11359
2
  if (name == "strings-min-prefix-explain") {
11360
    assign_strings_stringMinPrefixExplain(opts, name, optionarg == "true");
11361
    return;
11362
  }
11363
2
  if (name == "strings-process-loop-mode") {
11364
    assign_strings_stringProcessLoopMode(opts, name, optionarg);
11365
    return;
11366
  }
11367
2
  if (name == "strings-rexplain-lemmas") {
11368
    assign_strings_stringRExplainLemmas(opts, name, optionarg == "true");
11369
    return;
11370
  }
11371
2
  if (name == "strings-unified-vspt") {
11372
    assign_strings_stringUnifiedVSpt(opts, name, optionarg == "true");
11373
    return;
11374
  }
11375
2
  if (name == "assign-function-values") {
11376
2
    assign_theory_assignFunctionValues(opts, name, optionarg == "true");
11377
2
    return;
11378
  }
11379
  if (name == "condense-function-values") {
11380
    assign_theory_condenseFunctionValues(opts, name, optionarg == "true");
11381
    return;
11382
  }
11383
  if (name == "ee-mode") {
11384
    assign_theory_eeMode(opts, name, optionarg);
11385
    return;
11386
  }
11387
  if (name == "relevance-filter") {
11388
    assign_theory_relevanceFilter(opts, name, optionarg == "true");
11389
    return;
11390
  }
11391
  if (name == "tc-mode") {
11392
    assign_theory_tcMode(opts, name, optionarg);
11393
    return;
11394
  }
11395
  if (name == "theoryof-mode") {
11396
    assign_theory_theoryOfMode(opts, name, optionarg);
11397
    return;
11398
  }
11399
  if (name == "symmetry-breaker" || name == "uf-symmetry-breaker") {
11400
    assign_uf_ufSymmetryBreaker(opts, name, optionarg == "true");
11401
    return;
11402
  }
11403
  if (name == "uf-ho") {
11404
    assign_uf_ufHo(opts, name, optionarg == "true");
11405
    return;
11406
  }
11407
  if (name == "uf-ho-ext") {
11408
    assign_uf_ufHoExt(opts, name, optionarg == "true");
11409
    return;
11410
  }
11411
  if (name == "uf-ss-abort-card") {
11412
    assign_uf_ufssAbortCardinality(opts, name, optionarg);
11413
    return;
11414
  }
11415
  if (name == "uf-ss-fair") {
11416
    assign_uf_ufssFairness(opts, name, optionarg == "true");
11417
    return;
11418
  }
11419
  if (name == "uf-ss-fair-monotone") {
11420
    assign_uf_ufssFairnessMonotone(opts, name, optionarg == "true");
11421
    return;
11422
  }
11423
  if (name == "uf-ss-totality-limited") {
11424
    assign_uf_ufssTotalityLimited(opts, name, optionarg);
11425
    return;
11426
  }
11427
  if (name == "uf-ss-totality-sym-break") {
11428
    assign_uf_ufssTotalitySymBreak(opts, name, optionarg == "true");
11429
    return;
11430
  }
11431
  if (name == "uf-ss") {
11432
    assign_uf_ufssMode(opts, name, optionarg);
11433
    return;
11434
  }
11435
  // clang-format on
11436
  throw OptionException("Unrecognized option key or setting: " + name);
11437
}
11438
11439
9572
void set(Options& opts, const std::string& name, const std::string& optionarg)
11440
{
11441
11442
19144
  Trace("options") << "setOption(" << name << ", " << optionarg << ")"
11443
9572
                   << std::endl;
11444
  // first update this object
11445
9572
  setInternal(opts, name, optionarg);
11446
9570
}
11447
11448
std::vector<std::vector<std::string> > getAll(const Options& opts)
11449
{
11450
  std::vector<std::vector<std::string>> res;
11451
11452
res.push_back({"approx-branch-depth", std::to_string(opts.arith.maxApproxDepth)});
11453
  res.push_back({"arith-brab", opts.arith.brabTest ? "true" : "false"});
11454
  res.push_back({"arith-cong-man", opts.arith.arithCongMan ? "true" : "false"});
11455
  res.push_back({"arith-eq-solver", opts.arith.arithEqSolver ? "true" : "false"});
11456
  res.push_back({"arith-no-partial-fun", opts.arith.arithNoPartialFun ? "true" : "false"});
11457
  res.push_back({"arith-prop-clauses", std::to_string(opts.arith.arithPropAsLemmaLength)});
11458
  { std::stringstream ss; ss << opts.arith.arithPropagationMode; res.push_back({"arith-prop", ss.str()}); }
11459
  res.push_back({"arith-rewrite-equalities", opts.arith.arithRewriteEq ? "true" : "false"});
11460
  res.push_back({"collect-pivot-stats", opts.arith.collectPivots ? "true" : "false"});
11461
  res.push_back({"cut-all-bounded", opts.arith.doCutAllBounded ? "true" : "false"});
11462
  res.push_back({"dio-decomps", opts.arith.exportDioDecompositions ? "true" : "false"});
11463
  res.push_back({"dio-repeat", opts.arith.dioRepeat ? "true" : "false"});
11464
  res.push_back({"dio-solver", opts.arith.arithDioSolver ? "true" : "false"});
11465
  res.push_back({"dio-turns", std::to_string(opts.arith.dioSolverTurns)});
11466
  { std::stringstream ss; ss << opts.arith.arithErrorSelectionRule; res.push_back({"error-selection-rule", ss.str()}); }
11467
  res.push_back({"fc-penalties", opts.arith.havePenalties ? "true" : "false"});
11468
  res.push_back({"heuristic-pivots", std::to_string(opts.arith.arithHeuristicPivots)});
11469
  res.push_back({"lemmas-on-replay-failure", opts.arith.replayFailureLemma ? "true" : "false"});
11470
  res.push_back({"maxCutsInContext", std::to_string(opts.arith.maxCutsInContext)});
11471
  res.push_back({"miplib-trick", opts.arith.arithMLTrick ? "true" : "false"});
11472
  res.push_back({"miplib-trick-subs", std::to_string(opts.arith.arithMLTrickSubstitutions)});
11473
  res.push_back({"new-prop", opts.arith.newProp ? "true" : "false"});
11474
  res.push_back({"nl-cad", opts.arith.nlCad ? "true" : "false"});
11475
  res.push_back({"nl-cad-initial", opts.arith.nlCadUseInitial ? "true" : "false"});
11476
  { std::stringstream ss; ss << opts.arith.nlCadLifting; res.push_back({"nl-cad-lift", ss.str()}); }
11477
  { std::stringstream ss; ss << opts.arith.nlCadProjection; res.push_back({"nl-cad-proj", ss.str()}); }
11478
  res.push_back({"nl-ext-ent-conf", opts.arith.nlExtEntailConflicts ? "true" : "false"});
11479
  res.push_back({"nl-ext-factor", opts.arith.nlExtFactor ? "true" : "false"});
11480
  res.push_back({"nl-ext-inc-prec", opts.arith.nlExtIncPrecision ? "true" : "false"});
11481
  res.push_back({"nl-ext-purify", opts.arith.nlExtPurify ? "true" : "false"});
11482
  res.push_back({"nl-ext-rbound", opts.arith.nlExtResBound ? "true" : "false"});
11483
  res.push_back({"nl-ext-rewrite", opts.arith.nlExtRewrites ? "true" : "false"});
11484
  res.push_back({"nl-ext-split-zero", opts.arith.nlExtSplitZero ? "true" : "false"});
11485
  res.push_back({"nl-ext-tf-taylor-deg", std::to_string(opts.arith.nlExtTfTaylorDegree)});
11486
  res.push_back({"nl-ext-tf-tplanes", opts.arith.nlExtTfTangentPlanes ? "true" : "false"});
11487
  res.push_back({"nl-ext-tplanes", opts.arith.nlExtTangentPlanes ? "true" : "false"});
11488
  res.push_back({"nl-ext-tplanes-interleave", opts.arith.nlExtTangentPlanesInterleave ? "true" : "false"});
11489
  { std::stringstream ss; ss << opts.arith.nlExt; res.push_back({"nl-ext", ss.str()}); }
11490
  res.push_back({"nl-icp", opts.arith.nlICP ? "true" : "false"});
11491
  { std::stringstream ss; ss << opts.arith.nlRlvMode; res.push_back({"nl-rlv", ss.str()}); }
11492
  res.push_back({"pb-rewrites", opts.arith.pbRewrites ? "true" : "false"});
11493
  res.push_back({"pivot-threshold", std::to_string(opts.arith.arithPivotThreshold)});
11494
  res.push_back({"pp-assert-max-sub-size", std::to_string(opts.arith.ppAssertMaxSubSize)});
11495
  res.push_back({"prop-row-length", std::to_string(opts.arith.arithPropagateMaxLength)});
11496
  res.push_back({"replay-early-close-depth", std::to_string(opts.arith.replayEarlyCloseDepths)});
11497
  res.push_back({"replay-failure-penalty", std::to_string(opts.arith.replayFailurePenalty)});
11498
  res.push_back({"replay-lemma-reject-cut", std::to_string(opts.arith.lemmaRejectCutSize)});
11499
  res.push_back({"replay-num-err-penalty", std::to_string(opts.arith.replayNumericFailurePenalty)});
11500
  res.push_back({"replay-reject-cut", std::to_string(opts.arith.replayRejectCutSize)});
11501
  res.push_back({"replay-soi-major-threshold-pen", std::to_string(opts.arith.soiApproxMajorFailurePen)});
11502
  res.push_back({"replay-soi-major-threshold", std::to_string(opts.arith.soiApproxMajorFailure)});
11503
  res.push_back({"replay-soi-minor-threshold-pen", std::to_string(opts.arith.soiApproxMinorFailurePen)});
11504
  res.push_back({"replay-soi-minor-threshold", std::to_string(opts.arith.soiApproxMinorFailure)});
11505
  res.push_back({"restrict-pivots", opts.arith.restrictedPivots ? "true" : "false"});
11506
  res.push_back({"revert-arith-models-on-unsat", opts.arith.revertArithModels ? "true" : "false"});
11507
  res.push_back({"rr-turns", std::to_string(opts.arith.rrTurns)});
11508
  res.push_back({"se-solve-int", opts.arith.trySolveIntStandardEffort ? "true" : "false"});
11509
  res.push_back({"simplex-check-period", std::to_string(opts.arith.arithSimplexCheckPeriod)});
11510
  res.push_back({"soi-qe", opts.arith.soiQuickExplain ? "true" : "false"});
11511
  res.push_back({"standard-effort-variable-order-pivots", std::to_string(opts.arith.arithStandardCheckVarOrderPivots)});
11512
  { std::stringstream ss; ss << opts.arith.arithUnateLemmaMode; res.push_back({"unate-lemmas", ss.str()}); }
11513
  res.push_back({"use-approx", opts.arith.useApprox ? "true" : "false"});
11514
  res.push_back({"use-fcsimplex", opts.arith.useFC ? "true" : "false"});
11515
  res.push_back({"use-soi", opts.arith.useSOI ? "true" : "false"});
11516
  res.push_back({"arrays-config", std::to_string(opts.arrays.arraysConfig)});
11517
  res.push_back({"arrays-eager-index", opts.arrays.arraysEagerIndexSplitting ? "true" : "false"});
11518
  res.push_back({"arrays-eager-lemmas", opts.arrays.arraysEagerLemmas ? "true" : "false"});
11519
  res.push_back({"arrays-exp", opts.arrays.arraysExp ? "true" : "false"});
11520
  res.push_back({"arrays-model-based", opts.arrays.arraysModelBased ? "true" : "false"});
11521
  res.push_back({"arrays-optimize-linear", opts.arrays.arraysOptimizeLinear ? "true" : "false"});
11522
  res.push_back({"arrays-prop", std::to_string(opts.arrays.arraysPropagate)});
11523
  res.push_back({"arrays-reduce-sharing", opts.arrays.arraysReduceSharing ? "true" : "false"});
11524
  res.push_back({"arrays-weak-equiv", opts.arrays.arraysWeakEquivalence ? "true" : "false"});
11525
  { std::stringstream ss; ss << opts.base.err; res.push_back({"err", ss.str()}); }
11526
  { std::stringstream ss; ss << opts.base.in; res.push_back({"in", ss.str()}); }
11527
  res.push_back({"incremental", opts.base.incrementalSolving ? "true" : "false"});
11528
  { std::stringstream ss; ss << opts.base.inputLanguage; res.push_back({"lang", ss.str()}); }
11529
  { std::stringstream ss; ss << opts.base.out; res.push_back({"out", ss.str()}); }
11530
  { std::stringstream ss; ss << opts.base.outputLanguage; res.push_back({"output-lang", ss.str()}); }
11531
  { std::stringstream ss; ss << opts.base.outputTag; res.push_back({"output", ss.str()}); }
11532
  res.push_back({"parse-only", opts.base.parseOnly ? "true" : "false"});
11533
  res.push_back({"preprocess-only", opts.base.preprocessOnly ? "true" : "false"});
11534
  res.push_back({"print-success", opts.base.printSuccess ? "true" : "false"});
11535
  res.push_back({"rlimit-per", std::to_string(opts.base.perCallResourceLimit)});
11536
  res.push_back({"rlimit", std::to_string(opts.base.cumulativeResourceLimit)});
11537
  res.push_back({"stats", opts.base.statistics ? "true" : "false"});
11538
  res.push_back({"stats-all", opts.base.statisticsAll ? "true" : "false"});
11539
  res.push_back({"stats-every-query", opts.base.statisticsEveryQuery ? "true" : "false"});
11540
  res.push_back({"stats-expert", opts.base.statisticsExpert ? "true" : "false"});
11541
  res.push_back({"tlimit-per", std::to_string(opts.base.perCallMillisecondLimit)});
11542
  res.push_back({"tlimit", std::to_string(opts.base.cumulativeMillisecondLimit)});
11543
  res.push_back({"verbosity", std::to_string(opts.base.verbosity)});
11544
  res.push_back({"bitblast-aig", opts.bv.bitvectorAig ? "true" : "false"});
11545
  { std::stringstream ss; ss << opts.bv.bitblastMode; res.push_back({"bitblast", ss.str()}); }
11546
  res.push_back({"bitwise-eq", opts.bv.bitwiseEq ? "true" : "false"});
11547
  { std::stringstream ss; ss << opts.bv.boolToBitvector; res.push_back({"bool-to-bv", ss.str()}); }
11548
  res.push_back({"bv-abstraction", opts.bv.bvAbstraction ? "true" : "false"});
11549
  res.push_back({"bv-aig-simp", opts.bv.bitvectorAigSimplifications});
11550
  res.push_back({"bv-alg-extf", opts.bv.bvAlgExtf ? "true" : "false"});
11551
  res.push_back({"bv-algebraic-budget", std::to_string(opts.bv.bitvectorAlgebraicBudget)});
11552
  res.push_back({"bv-algebraic-solver", opts.bv.bitvectorAlgebraicSolver ? "true" : "false"});
11553
  res.push_back({"bv-assert-input", opts.bv.bvAssertInput ? "true" : "false"});
11554
  res.push_back({"bv-eager-explanations", opts.bv.bvEagerExplanations ? "true" : "false"});
11555
  res.push_back({"bv-eq-solver", opts.bv.bitvectorEqualitySolver ? "true" : "false"});
11556
  res.push_back({"bv-extract-arith", opts.bv.bvExtractArithRewrite ? "true" : "false"});
11557
  res.push_back({"bv-gauss-elim", opts.bv.bvGaussElim ? "true" : "false"});
11558
  res.push_back({"bv-inequality-solver", opts.bv.bitvectorInequalitySolver ? "true" : "false"});
11559
  res.push_back({"bv-intro-pow2", opts.bv.bvIntroducePow2 ? "true" : "false"});
11560
  res.push_back({"bv-num-func", std::to_string(opts.bv.bvNumFunc)});
11561
  res.push_back({"bv-print-consts-as-indexed-symbols", opts.bv.bvPrintConstsAsIndexedSymbols ? "true" : "false"});
11562
  res.push_back({"bv-propagate", opts.bv.bitvectorPropagate ? "true" : "false"});
11563
  res.push_back({"bv-quick-xplain", opts.bv.bitvectorQuickXplain ? "true" : "false"});
11564
  { std::stringstream ss; ss << opts.bv.bvSatSolver; res.push_back({"bv-sat-solver", ss.str()}); }
11565
  res.push_back({"bv-skolemize", opts.bv.skolemizeArguments ? "true" : "false"});
11566
  { std::stringstream ss; ss << opts.bv.bvSolver; res.push_back({"bv-solver", ss.str()}); }
11567
  res.push_back({"bv-to-bool", opts.bv.bitvectorToBool ? "true" : "false"});
11568
  res.push_back({"cdt-bisimilar", opts.datatypes.cdtBisimilar ? "true" : "false"});
11569
  res.push_back({"dt-binary-split", opts.datatypes.dtBinarySplit ? "true" : "false"});
11570
  res.push_back({"dt-blast-splits", opts.datatypes.dtBlastSplits ? "true" : "false"});
11571
  res.push_back({"dt-cyclic", opts.datatypes.dtCyclic ? "true" : "false"});
11572
  res.push_back({"dt-force-assignment", opts.datatypes.dtForceAssignment ? "true" : "false"});
11573
  res.push_back({"dt-infer-as-lemmas", opts.datatypes.dtInferAsLemmas ? "true" : "false"});
11574
  res.push_back({"dt-nested-rec", opts.datatypes.dtNestedRec ? "true" : "false"});
11575
  res.push_back({"dt-polite-optimize", opts.datatypes.dtPoliteOptimize ? "true" : "false"});
11576
  res.push_back({"dt-rewrite-error-sel", opts.datatypes.dtRewriteErrorSel ? "true" : "false"});
11577
  res.push_back({"dt-share-sel", opts.datatypes.dtSharedSelectors ? "true" : "false"});
11578
  res.push_back({"sygus-abort-size", std::to_string(opts.datatypes.sygusAbortSize)});
11579
  res.push_back({"sygus-fair-max", opts.datatypes.sygusFairMax ? "true" : "false"});
11580
  { std::stringstream ss; ss << opts.datatypes.sygusFair; res.push_back({"sygus-fair", ss.str()}); }
11581
  res.push_back({"sygus-sym-break", opts.datatypes.sygusSymBreak ? "true" : "false"});
11582
  res.push_back({"sygus-sym-break-agg", opts.datatypes.sygusSymBreakAgg ? "true" : "false"});
11583
  res.push_back({"sygus-sym-break-dynamic", opts.datatypes.sygusSymBreakDynamic ? "true" : "false"});
11584
  res.push_back({"sygus-sym-break-lazy", opts.datatypes.sygusSymBreakLazy ? "true" : "false"});
11585
  res.push_back({"sygus-sym-break-pbe", opts.datatypes.sygusSymBreakPbe ? "true" : "false"});
11586
  res.push_back({"sygus-sym-break-rlv", opts.datatypes.sygusSymBreakRlv ? "true" : "false"});
11587
  res.push_back({"decision-random-weight", std::to_string(opts.decision.decisionRandomWeight)});
11588
  { std::stringstream ss; ss << opts.decision.decisionThreshold; res.push_back({"decision-threshold", ss.str()}); }
11589
  res.push_back({"decision-use-weight", opts.decision.decisionUseWeight ? "true" : "false"});
11590
  { std::stringstream ss; ss << opts.decision.decisionWeightInternal; res.push_back({"decision-weight-internal", ss.str()}); }
11591
  { std::stringstream ss; ss << opts.decision.decisionMode; res.push_back({"decision", ss.str()}); }
11592
  res.push_back({"jh-rlv-order", opts.decision.jhRlvOrder ? "true" : "false"});
11593
  { std::stringstream ss; ss << opts.decision.jhSkolemRlvMode; res.push_back({"jh-skolem-rlv", ss.str()}); }
11594
  { std::stringstream ss; ss << opts.decision.jhSkolemMode; res.push_back({"jh-skolem", ss.str()}); }
11595
  res.push_back({"dag-thresh", std::to_string(opts.expr.defaultDagThresh)});
11596
  res.push_back({"expr-depth", std::to_string(opts.expr.defaultExprDepth)});
11597
  res.push_back({"type-checking", opts.expr.typeChecking ? "true" : "false"});
11598
  res.push_back({"fp-exp", opts.fp.fpExp ? "true" : "false"});
11599
  res.push_back({"fp-lazy-wb", opts.fp.fpLazyWb ? "true" : "false"});
11600
  res.push_back({"dump-instantiations", opts.driver.dumpInstantiations ? "true" : "false"});
11601
  res.push_back({"dump-instantiations-debug", opts.driver.dumpInstantiationsDebug ? "true" : "false"});
11602
  res.push_back({"dump-models", opts.driver.dumpModels ? "true" : "false"});
11603
  res.push_back({"dump-proofs", opts.driver.dumpProofs ? "true" : "false"});
11604
  res.push_back({"dump-unsat-cores", opts.driver.dumpUnsatCores ? "true" : "false"});
11605
  res.push_back({"dump-unsat-cores-full", opts.driver.dumpUnsatCoresFull ? "true" : "false"});
11606
  res.push_back({"early-exit", opts.driver.earlyExit ? "true" : "false"});
11607
  res.push_back({"force-no-limit-cpu-while-dump", opts.driver.forceNoLimitCpuWhileDump ? "true" : "false"});
11608
  res.push_back({"help", opts.driver.help ? "true" : "false"});
11609
  res.push_back({"interactive", opts.driver.interactive ? "true" : "false"});
11610
  res.push_back({"seed", std::to_string(opts.driver.seed)});
11611
  res.push_back({"segv-spin", opts.driver.segvSpin ? "true" : "false"});
11612
  res.push_back({"version", opts.driver.version ? "true" : "false"});
11613
  res.push_back({"filesystem-access", opts.parser.filesystemAccess ? "true" : "false"});
11614
  res.push_back({"force-logic", opts.parser.forceLogicString});
11615
  res.push_back({"global-declarations", opts.parser.globalDeclarations ? "true" : "false"});
11616
  res.push_back({"mmap", opts.parser.memoryMap ? "true" : "false"});
11617
  res.push_back({"semantic-checks", opts.parser.semanticChecks ? "true" : "false"});
11618
  res.push_back({"strict-parsing", opts.parser.strictParsing ? "true" : "false"});
11619
  res.push_back({"flatten-ho-chains", opts.printer.flattenHOChains ? "true" : "false"});
11620
  { std::stringstream ss; ss << opts.printer.modelFormatMode; res.push_back({"model-format", ss.str()}); }
11621
  res.push_back({"print-inst-full", opts.printer.printInstFull ? "true" : "false"});
11622
  { std::stringstream ss; ss << opts.printer.printInstMode; res.push_back({"print-inst", ss.str()}); }
11623
  res.push_back({"proof-eager-checking", opts.proof.proofEagerChecking ? "true" : "false"});
11624
  { std::stringstream ss; ss << opts.proof.proofFormatMode; res.push_back({"proof-format-mode", ss.str()}); }
11625
  { std::stringstream ss; ss << opts.proof.proofGranularityMode; res.push_back({"proof-granularity", ss.str()}); }
11626
  res.push_back({"proof-pedantic", std::to_string(opts.proof.proofPedantic)});
11627
  res.push_back({"proof-print-conclusion", opts.proof.proofPrintConclusion ? "true" : "false"});
11628
  res.push_back({"minisat-dump-dimacs", opts.prop.minisatDumpDimacs ? "true" : "false"});
11629
  res.push_back({"minisat-elimination", opts.prop.minisatUseElim ? "true" : "false"});
11630
  res.push_back({"random-freq", std::to_string(opts.prop.satRandomFreq)});
11631
  res.push_back({"random-seed", std::to_string(opts.prop.satRandomSeed)});
11632
  res.push_back({"refine-conflicts", opts.prop.sat_refine_conflicts ? "true" : "false"});
11633
  res.push_back({"restart-int-base", std::to_string(opts.prop.satRestartFirst)});
11634
  res.push_back({"restart-int-inc", std::to_string(opts.prop.satRestartInc)});
11635
  res.push_back({"ag-miniscope-quant", opts.quantifiers.aggressiveMiniscopeQuant ? "true" : "false"});
11636
  { std::stringstream ss; ss << opts.quantifiers.cegisSample; res.push_back({"cegis-sample", ss.str()}); }
11637
  res.push_back({"cegqi", opts.quantifiers.cegqi ? "true" : "false"});
11638
  res.push_back({"cegqi-all", opts.quantifiers.cegqiAll ? "true" : "false"});
11639
  res.push_back({"cegqi-bv", opts.quantifiers.cegqiBv ? "true" : "false"});
11640
  res.push_back({"cegqi-bv-concat-inv", opts.quantifiers.cegqiBvConcInv ? "true" : "false"});
11641
  { std::stringstream ss; ss << opts.quantifiers.cegqiBvIneqMode; res.push_back({"cegqi-bv-ineq", ss.str()}); }
11642
  res.push_back({"cegqi-bv-interleave-value", opts.quantifiers.cegqiBvInterleaveValue ? "true" : "false"});
11643
  res.push_back({"cegqi-bv-linear", opts.quantifiers.cegqiBvLinearize ? "true" : "false"});
11644
  res.push_back({"cegqi-bv-rm-extract", opts.quantifiers.cegqiBvRmExtract ? "true" : "false"});
11645
  res.push_back({"cegqi-bv-solve-nl", opts.quantifiers.cegqiBvSolveNl ? "true" : "false"});
11646
  res.push_back({"cegqi-full", opts.quantifiers.cegqiFullEffort ? "true" : "false"});
11647
  res.push_back({"cegqi-innermost", opts.quantifiers.cegqiInnermost ? "true" : "false"});
11648
  res.push_back({"cegqi-midpoint", opts.quantifiers.cegqiMidpoint ? "true" : "false"});
11649
  res.push_back({"cegqi-min-bounds", opts.quantifiers.cegqiMinBounds ? "true" : "false"});
11650
  res.push_back({"cegqi-model", opts.quantifiers.cegqiModel ? "true" : "false"});
11651
  res.push_back({"cegqi-multi-inst", opts.quantifiers.cegqiMultiInst ? "true" : "false"});
11652
  res.push_back({"cegqi-nested-qe", opts.quantifiers.cegqiNestedQE ? "true" : "false"});
11653
  res.push_back({"cegqi-nopt", opts.quantifiers.cegqiNopt ? "true" : "false"});
11654
  res.push_back({"cegqi-repeat-lit", opts.quantifiers.cegqiRepeatLit ? "true" : "false"});
11655
  res.push_back({"cegqi-round-up-lia", opts.quantifiers.cegqiRoundUpLowerLia ? "true" : "false"});
11656
  res.push_back({"cegqi-sat", opts.quantifiers.cegqiSat ? "true" : "false"});
11657
  res.push_back({"cegqi-use-inf-int", opts.quantifiers.cegqiUseInfInt ? "true" : "false"});
11658
  res.push_back({"cegqi-use-inf-real", opts.quantifiers.cegqiUseInfReal ? "true" : "false"});
11659
  res.push_back({"cond-var-split-agg-quant", opts.quantifiers.condVarSplitQuantAgg ? "true" : "false"});
11660
  res.push_back({"cond-var-split-quant", opts.quantifiers.condVarSplitQuant ? "true" : "false"});
11661
  res.push_back({"conjecture-filter-active-terms", opts.quantifiers.conjectureFilterActiveTerms ? "true" : "false"});
11662
  res.push_back({"conjecture-filter-canonical", opts.quantifiers.conjectureFilterCanonical ? "true" : "false"});
11663
  res.push_back({"conjecture-filter-model", opts.quantifiers.conjectureFilterModel ? "true" : "false"});
11664
  res.push_back({"conjecture-gen", opts.quantifiers.conjectureGen ? "true" : "false"});
11665
  res.push_back({"conjecture-gen-gt-enum", std::to_string(opts.quantifiers.conjectureGenGtEnum)});
11666
  res.push_back({"conjecture-gen-max-depth", std::to_string(opts.quantifiers.conjectureGenMaxDepth)});
11667
  res.push_back({"conjecture-gen-per-round", std::to_string(opts.quantifiers.conjectureGenPerRound)});
11668
  res.push_back({"conjecture-gen-uee-intro", opts.quantifiers.conjectureUeeIntro ? "true" : "false"});
11669
  res.push_back({"conjecture-no-filter", opts.quantifiers.conjectureNoFilter ? "true" : "false"});
11670
  res.push_back({"dt-stc-ind", opts.quantifiers.dtStcInduction ? "true" : "false"});
11671
  res.push_back({"dt-var-exp-quant", opts.quantifiers.dtVarExpandQuant ? "true" : "false"});
11672
  res.push_back({"e-matching", opts.quantifiers.eMatching ? "true" : "false"});
11673
  res.push_back({"elim-taut-quant", opts.quantifiers.elimTautQuant ? "true" : "false"});
11674
  res.push_back({"ext-rewrite-quant", opts.quantifiers.extRewriteQuant ? "true" : "false"});
11675
  res.push_back({"finite-model-find", opts.quantifiers.finiteModelFind ? "true" : "false"});
11676
  res.push_back({"fmf-bound", opts.quantifiers.fmfBound ? "true" : "false"});
11677
  res.push_back({"fmf-bound-int", opts.quantifiers.fmfBoundInt ? "true" : "false"});
11678
  res.push_back({"fmf-bound-lazy", opts.quantifiers.fmfBoundLazy ? "true" : "false"});
11679
  res.push_back({"fmf-fmc-simple", opts.quantifiers.fmfFmcSimple ? "true" : "false"});
11680
  res.push_back({"fmf-fresh-dc", opts.quantifiers.fmfFreshDistConst ? "true" : "false"});
11681
  res.push_back({"fmf-fun", opts.quantifiers.fmfFunWellDefined ? "true" : "false"});
11682
  res.push_back({"fmf-fun-rlv", opts.quantifiers.fmfFunWellDefinedRelevant ? "true" : "false"});
11683
  res.push_back({"fmf-inst-engine", opts.quantifiers.fmfInstEngine ? "true" : "false"});
11684
  res.push_back({"fmf-type-completion-thresh", std::to_string(opts.quantifiers.fmfTypeCompletionThresh)});
11685
  res.push_back({"fs-interleave", opts.quantifiers.fullSaturateInterleave ? "true" : "false"});
11686
  res.push_back({"fs-stratify", opts.quantifiers.fullSaturateStratify ? "true" : "false"});
11687
  res.push_back({"fs-sum", opts.quantifiers.fullSaturateSum ? "true" : "false"});
11688
  res.push_back({"full-saturate-quant", opts.quantifiers.fullSaturateQuant ? "true" : "false"});
11689
  res.push_back({"full-saturate-quant-limit", std::to_string(opts.quantifiers.fullSaturateLimit)});
11690
  res.push_back({"full-saturate-quant-rd", opts.quantifiers.fullSaturateQuantRd ? "true" : "false"});
11691
  res.push_back({"global-negate", opts.quantifiers.globalNegate ? "true" : "false"});
11692
  res.push_back({"ho-elim", opts.quantifiers.hoElim ? "true" : "false"});
11693
  res.push_back({"ho-elim-store-ax", opts.quantifiers.hoElimStoreAx ? "true" : "false"});
11694
  res.push_back({"ho-matching", opts.quantifiers.hoMatching ? "true" : "false"});
11695
  res.push_back({"ho-matching-var-priority", opts.quantifiers.hoMatchingVarArgPriority ? "true" : "false"});
11696
  res.push_back({"ho-merge-term-db", opts.quantifiers.hoMergeTermDb ? "true" : "false"});
11697
  res.push_back({"increment-triggers", opts.quantifiers.incrementTriggers ? "true" : "false"});
11698
  res.push_back({"inst-level-input-only", opts.quantifiers.instLevelInputOnly ? "true" : "false"});
11699
  res.push_back({"inst-max-level", std::to_string(opts.quantifiers.instMaxLevel)});
11700
  res.push_back({"inst-max-rounds", std::to_string(opts.quantifiers.instMaxRounds)});
11701
  res.push_back({"inst-no-entail", opts.quantifiers.instNoEntail ? "true" : "false"});
11702
  res.push_back({"inst-when-phase", std::to_string(opts.quantifiers.instWhenPhase)});
11703
  res.push_back({"inst-when-strict-interleave", opts.quantifiers.instWhenStrictInterleave ? "true" : "false"});
11704
  res.push_back({"inst-when-tc-first", opts.quantifiers.instWhenTcFirst ? "true" : "false"});
11705
  { std::stringstream ss; ss << opts.quantifiers.instWhenMode; res.push_back({"inst-when", ss.str()}); }
11706
  res.push_back({"int-wf-ind", opts.quantifiers.intWfInduction ? "true" : "false"});
11707
  res.push_back({"ite-dtt-split-quant", opts.quantifiers.iteDtTesterSplitQuant ? "true" : "false"});
11708
  { std::stringstream ss; ss << opts.quantifiers.iteLiftQuant; res.push_back({"ite-lift-quant", ss.str()}); }
11709
  { std::stringstream ss; ss << opts.quantifiers.literalMatchMode; res.push_back({"literal-matching", ss.str()}); }
11710
  res.push_back({"macros-quant", opts.quantifiers.macrosQuant ? "true" : "false"});
11711
  { std::stringstream ss; ss << opts.quantifiers.macrosQuantMode; res.push_back({"macros-quant-mode", ss.str()}); }
11712
  res.push_back({"mbqi-interleave", opts.quantifiers.mbqiInterleave ? "true" : "false"});
11713
  res.push_back({"mbqi-one-inst-per-round", opts.quantifiers.fmfOneInstPerRound ? "true" : "false"});
11714
  { std::stringstream ss; ss << opts.quantifiers.mbqiMode; res.push_back({"mbqi", ss.str()}); }
11715
  res.push_back({"miniscope-quant", opts.quantifiers.miniscopeQuant ? "true" : "false"});
11716
  res.push_back({"miniscope-quant-fv", opts.quantifiers.miniscopeQuantFreeVar ? "true" : "false"});
11717
  res.push_back({"multi-trigger-cache", opts.quantifiers.multiTriggerCache ? "true" : "false"});
11718
  res.push_back({"multi-trigger-linear", opts.quantifiers.multiTriggerLinear ? "true" : "false"});
11719
  res.push_back({"multi-trigger-priority", opts.quantifiers.multiTriggerPriority ? "true" : "false"});
11720
  res.push_back({"multi-trigger-when-single", opts.quantifiers.multiTriggerWhenSingle ? "true" : "false"});
11721
  res.push_back({"partial-triggers", opts.quantifiers.partialTriggers ? "true" : "false"});
11722
  res.push_back({"pool-inst", opts.quantifiers.poolInst ? "true" : "false"});
11723
  res.push_back({"pre-skolem-quant", opts.quantifiers.preSkolemQuant ? "true" : "false"});
11724
  res.push_back({"pre-skolem-quant-agg", opts.quantifiers.preSkolemQuantAgg ? "true" : "false"});
11725
  res.push_back({"pre-skolem-quant-nested", opts.quantifiers.preSkolemQuantNested ? "true" : "false"});
11726
  res.push_back({"prenex-quant-user", opts.quantifiers.prenexQuantUser ? "true" : "false"});
11727
  { std::stringstream ss; ss << opts.quantifiers.prenexQuant; res.push_back({"prenex-quant", ss.str()}); }
11728
  res.push_back({"purify-triggers", opts.quantifiers.purifyTriggers ? "true" : "false"});
11729
  res.push_back({"qcf-all-conflict", opts.quantifiers.qcfAllConflict ? "true" : "false"});
11730
  res.push_back({"qcf-eager-check-rd", opts.quantifiers.qcfEagerCheckRd ? "true" : "false"});
11731
  res.push_back({"qcf-eager-test", opts.quantifiers.qcfEagerTest ? "true" : "false"});
11732
  res.push_back({"qcf-nested-conflict", opts.quantifiers.qcfNestedConflict ? "true" : "false"});
11733
  res.push_back({"qcf-skip-rd", opts.quantifiers.qcfSkipRd ? "true" : "false"});
11734
  res.push_back({"qcf-tconstraint", opts.quantifiers.qcfTConstraint ? "true" : "false"});
11735
  res.push_back({"qcf-vo-exp", opts.quantifiers.qcfVoExp ? "true" : "false"});
11736
  res.push_back({"quant-alpha-equiv", opts.quantifiers.quantAlphaEquiv ? "true" : "false"});
11737
  res.push_back({"quant-cf", opts.quantifiers.quantConflictFind ? "true" : "false"});
11738
  { std::stringstream ss; ss << opts.quantifiers.qcfMode; res.push_back({"quant-cf-mode", ss.str()}); }
11739
  { std::stringstream ss; ss << opts.quantifiers.qcfWhenMode; res.push_back({"quant-cf-when", ss.str()}); }
11740
  { std::stringstream ss; ss << opts.quantifiers.quantDynamicSplit; res.push_back({"quant-dsplit-mode", ss.str()}); }
11741
  res.push_back({"quant-fun-wd", opts.quantifiers.quantFunWellDefined ? "true" : "false"});
11742
  res.push_back({"quant-ind", opts.quantifiers.quantInduction ? "true" : "false"});
11743
  { std::stringstream ss; ss << opts.quantifiers.quantRepMode; res.push_back({"quant-rep-mode", ss.str()}); }
11744
  res.push_back({"quant-split", opts.quantifiers.quantSplit ? "true" : "false"});
11745
  res.push_back({"register-quant-body-terms", opts.quantifiers.registerQuantBodyTerms ? "true" : "false"});
11746
  res.push_back({"relational-triggers", opts.quantifiers.relationalTriggers ? "true" : "false"});
11747
  res.push_back({"relevant-triggers", opts.quantifiers.relevantTriggers ? "true" : "false"});
11748
  res.push_back({"sygus", opts.quantifiers.sygus ? "true" : "false"});
11749
  res.push_back({"sygus-active-gen-cfactor", std::to_string(opts.quantifiers.sygusActiveGenEnumConsts)});
11750
  { std::stringstream ss; ss << opts.quantifiers.sygusActiveGenMode; res.push_back({"sygus-active-gen", ss.str()}); }
11751
  res.push_back({"sygus-add-const-grammar", opts.quantifiers.sygusAddConstGrammar ? "true" : "false"});
11752
  res.push_back({"sygus-arg-relevant", opts.quantifiers.sygusArgRelevant ? "true" : "false"});
11753
  res.push_back({"sygus-auto-unfold", opts.quantifiers.sygusInvAutoUnfold ? "true" : "false"});
11754
  res.push_back({"sygus-bool-ite-return-const", opts.quantifiers.sygusBoolIteReturnConst ? "true" : "false"});
11755
  res.push_back({"sygus-core-connective", opts.quantifiers.sygusCoreConnective ? "true" : "false"});
11756
  res.push_back({"sygus-crepair-abort", opts.quantifiers.sygusConstRepairAbort ? "true" : "false"});
11757
  res.push_back({"sygus-eval-opt", opts.quantifiers.sygusEvalOpt ? "true" : "false"});
11758
  res.push_back({"sygus-eval-unfold", opts.quantifiers.sygusEvalUnfold ? "true" : "false"});
11759
  res.push_back({"sygus-eval-unfold-bool", opts.quantifiers.sygusEvalUnfoldBool ? "true" : "false"});
11760
  res.push_back({"sygus-expr-miner-check-timeout", std::to_string(opts.quantifiers.sygusExprMinerCheckTimeout)});
11761
  res.push_back({"sygus-ext-rew", opts.quantifiers.sygusExtRew ? "true" : "false"});
11762
  res.push_back({"sygus-filter-sol-rev", opts.quantifiers.sygusFilterSolRevSubsume ? "true" : "false"});
11763
  { std::stringstream ss; ss << opts.quantifiers.sygusFilterSolMode; res.push_back({"sygus-filter-sol", ss.str()}); }
11764
  { std::stringstream ss; ss << opts.quantifiers.sygusGrammarConsMode; res.push_back({"sygus-grammar-cons", ss.str()}); }
11765
  res.push_back({"sygus-grammar-norm", opts.quantifiers.sygusGrammarNorm ? "true" : "false"});
11766
  res.push_back({"sygus-inference", opts.quantifiers.sygusInference ? "true" : "false"});
11767
  res.push_back({"sygus-inst", opts.quantifiers.sygusInst ? "true" : "false"});
11768
  { std::stringstream ss; ss << opts.quantifiers.sygusInstMode; res.push_back({"sygus-inst-mode", ss.str()}); }
11769
  { std::stringstream ss; ss << opts.quantifiers.sygusInstScope; res.push_back({"sygus-inst-scope", ss.str()}); }
11770
  { std::stringstream ss; ss << opts.quantifiers.sygusInstTermSel; res.push_back({"sygus-inst-term-sel", ss.str()}); }
11771
  res.push_back({"sygus-inv-templ-when-sg", opts.quantifiers.sygusInvTemplWhenSyntax ? "true" : "false"});
11772
  { std::stringstream ss; ss << opts.quantifiers.sygusInvTemplMode; res.push_back({"sygus-inv-templ", ss.str()}); }
11773
  res.push_back({"sygus-min-grammar", opts.quantifiers.sygusMinGrammar ? "true" : "false"});
11774
  res.push_back({"sygus-pbe", opts.quantifiers.sygusUnifPbe ? "true" : "false"});
11775
  res.push_back({"sygus-pbe-multi-fair", opts.quantifiers.sygusPbeMultiFair ? "true" : "false"});
11776
  res.push_back({"sygus-pbe-multi-fair-diff", std::to_string(opts.quantifiers.sygusPbeMultiFairDiff)});
11777
  res.push_back({"sygus-qe-preproc", opts.quantifiers.sygusQePreproc ? "true" : "false"});
11778
  res.push_back({"sygus-query-gen", opts.quantifiers.sygusQueryGen ? "true" : "false"});
11779
  res.push_back({"sygus-query-gen-check", opts.quantifiers.sygusQueryGenCheck ? "true" : "false"});
11780
  { std::stringstream ss; ss << opts.quantifiers.sygusQueryGenDumpFiles; res.push_back({"sygus-query-gen-dump-files", ss.str()}); }
11781
  res.push_back({"sygus-query-gen-thresh", std::to_string(opts.quantifiers.sygusQueryGenThresh)});
11782
  res.push_back({"sygus-rec-fun", opts.quantifiers.sygusRecFun ? "true" : "false"});
11783
  res.push_back({"sygus-rec-fun-eval-limit", std::to_string(opts.quantifiers.sygusRecFunEvalLimit)});
11784
  res.push_back({"sygus-repair-const", opts.quantifiers.sygusRepairConst ? "true" : "false"});
11785
  res.push_back({"sygus-repair-const-timeout", std::to_string(opts.quantifiers.sygusRepairConstTimeout)});
11786
  res.push_back({"sygus-rr", opts.quantifiers.sygusRew ? "true" : "false"});
11787
  res.push_back({"sygus-rr-synth", opts.quantifiers.sygusRewSynth ? "true" : "false"});
11788
  res.push_back({"sygus-rr-synth-accel", opts.quantifiers.sygusRewSynthAccel ? "true" : "false"});
11789
  res.push_back({"sygus-rr-synth-check", opts.quantifiers.sygusRewSynthCheck ? "true" : "false"});
11790
  res.push_back({"sygus-rr-synth-filter-cong", opts.quantifiers.sygusRewSynthFilterCong ? "true" : "false"});
11791
  res.push_back({"sygus-rr-synth-filter-match", opts.quantifiers.sygusRewSynthFilterMatch ? "true" : "false"});
11792
  res.push_back({"sygus-rr-synth-filter-nl", opts.quantifiers.sygusRewSynthFilterNonLinear ? "true" : "false"});
11793
  res.push_back({"sygus-rr-synth-filter-order", opts.quantifiers.sygusRewSynthFilterOrder ? "true" : "false"});
11794
  res.push_back({"sygus-rr-synth-input", opts.quantifiers.sygusRewSynthInput ? "true" : "false"});
11795
  res.push_back({"sygus-rr-synth-input-nvars", std::to_string(opts.quantifiers.sygusRewSynthInputNVars)});
11796
  res.push_back({"sygus-rr-synth-input-use-bool", opts.quantifiers.sygusRewSynthInputUseBool ? "true" : "false"});
11797
  res.push_back({"sygus-rr-synth-rec", opts.quantifiers.sygusRewSynthRec ? "true" : "false"});
11798
  res.push_back({"sygus-rr-verify", opts.quantifiers.sygusRewVerify ? "true" : "false"});
11799
  res.push_back({"sygus-rr-verify-abort", opts.quantifiers.sygusRewVerifyAbort ? "true" : "false"});
11800
  res.push_back({"sygus-sample-fp-uniform", opts.quantifiers.sygusSampleFpUniform ? "true" : "false"});
11801
  res.push_back({"sygus-sample-grammar", opts.quantifiers.sygusSampleGrammar ? "true" : "false"});
11802
  res.push_back({"sygus-samples", std::to_string(opts.quantifiers.sygusSamples)});
11803
  res.push_back({"sygus-si-abort", opts.quantifiers.cegqiSingleInvAbort ? "true" : "false"});
11804
  res.push_back({"sygus-si-partial", opts.quantifiers.cegqiSingleInvPartial ? "true" : "false"});
11805
  res.push_back({"sygus-si-rcons-limit", std::to_string(opts.quantifiers.cegqiSingleInvReconstructLimit)});
11806
  { std::stringstream ss; ss << opts.quantifiers.cegqiSingleInvReconstruct; res.push_back({"sygus-si-rcons", ss.str()}); }
11807
  res.push_back({"sygus-si-reconstruct-const", opts.quantifiers.cegqiSingleInvReconstructConst ? "true" : "false"});
11808
  { std::stringstream ss; ss << opts.quantifiers.cegqiSingleInvMode; res.push_back({"sygus-si", ss.str()}); }
11809
  res.push_back({"sygus-stream", opts.quantifiers.sygusStream ? "true" : "false"});
11810
  res.push_back({"sygus-templ-embed-grammar", opts.quantifiers.sygusTemplEmbedGrammar ? "true" : "false"});
11811
  res.push_back({"sygus-unif-cond-independent-no-repeat-sol", opts.quantifiers.sygusUnifCondIndNoRepeatSol ? "true" : "false"});
11812
  { std::stringstream ss; ss << opts.quantifiers.sygusUnifPi; res.push_back({"sygus-unif-pi", ss.str()}); }
11813
  res.push_back({"sygus-unif-shuffle-cond", opts.quantifiers.sygusUnifShuffleCond ? "true" : "false"});
11814
  res.push_back({"sygus-verify-inst-max-rounds", std::to_string(opts.quantifiers.sygusVerifyInstMaxRounds)});
11815
  res.push_back({"term-db-cd", opts.quantifiers.termDbCd ? "true" : "false"});
11816
  { std::stringstream ss; ss << opts.quantifiers.termDbMode; res.push_back({"term-db-mode", ss.str()}); }
11817
  { std::stringstream ss; ss << opts.quantifiers.triggerActiveSelMode; res.push_back({"trigger-active-sel", ss.str()}); }
11818
  { std::stringstream ss; ss << opts.quantifiers.triggerSelMode; res.push_back({"trigger-sel", ss.str()}); }
11819
  { std::stringstream ss; ss << opts.quantifiers.userPatternsQuant; res.push_back({"user-pat", ss.str()}); }
11820
  res.push_back({"var-elim-quant", opts.quantifiers.varElimQuant ? "true" : "false"});
11821
  res.push_back({"var-ineq-elim-quant", opts.quantifiers.varIneqElimQuant ? "true" : "false"});
11822
  res.push_back({"sep-check-neg", opts.sep.sepCheckNeg ? "true" : "false"});
11823
  res.push_back({"sep-child-refine", opts.sep.sepChildRefine ? "true" : "false"});
11824
  res.push_back({"sep-deq-c", opts.sep.sepDisequalC ? "true" : "false"});
11825
  res.push_back({"sep-exp", opts.sep.sepExp ? "true" : "false"});
11826
  res.push_back({"sep-min-refine", opts.sep.sepMinimalRefine ? "true" : "false"});
11827
  res.push_back({"sep-pre-skolem-emp", opts.sep.sepPreSkolemEmp ? "true" : "false"});
11828
  res.push_back({"sets-ext", opts.sets.setsExt ? "true" : "false"});
11829
  res.push_back({"sets-infer-as-lemmas", opts.sets.setsInferAsLemmas ? "true" : "false"});
11830
  res.push_back({"sets-proxy-lemmas", opts.sets.setsProxyLemmas ? "true" : "false"});
11831
  res.push_back({"abstract-values", opts.smt.abstractValues ? "true" : "false"});
11832
  res.push_back({"ackermann", opts.smt.ackermann ? "true" : "false"});
11833
  { std::stringstream ss; ss << opts.smt.blockModelsMode; res.push_back({"block-models", ss.str()}); }
11834
  res.push_back({"bvand-integer-granularity", std::to_string(opts.smt.BVAndIntegerGranularity)});
11835
  res.push_back({"check-abducts", opts.smt.checkAbducts ? "true" : "false"});
11836
  res.push_back({"check-interpols", opts.smt.checkInterpols ? "true" : "false"});
11837
  res.push_back({"check-models", opts.smt.checkModels ? "true" : "false"});
11838
  res.push_back({"check-proofs", opts.smt.checkProofs ? "true" : "false"});
11839
  res.push_back({"check-synth-sol", opts.smt.checkSynthSol ? "true" : "false"});
11840
  res.push_back({"check-unsat-cores", opts.smt.checkUnsatCores ? "true" : "false"});
11841
  res.push_back({"debug-check-models", opts.smt.debugCheckModels ? "true" : "false"});
11842
  { std::stringstream ss; ss << opts.smt.dumpToFileName; res.push_back({"dump-to", ss.str()}); }
11843
  res.push_back({"dump", opts.smt.dumpModeString});
11844
  res.push_back({"early-ite-removal", opts.smt.earlyIteRemoval ? "true" : "false"});
11845
  res.push_back({"expand-definitions", opts.smt.expandDefinitions ? "true" : "false"});
11846
  res.push_back({"ext-rew-prep", opts.smt.extRewPrep ? "true" : "false"});
11847
  res.push_back({"ext-rew-prep-agg", opts.smt.extRewPrepAgg ? "true" : "false"});
11848
  res.push_back({"foreign-theory-rewrite", opts.smt.foreignTheoryRewrite ? "true" : "false"});
11849
  { std::stringstream ss; ss << opts.smt.iandMode; res.push_back({"iand-mode", ss.str()}); }
11850
  res.push_back({"interactive-mode", opts.smt.interactiveMode ? "true" : "false"});
11851
  res.push_back({"ite-simp", opts.smt.doITESimp ? "true" : "false"});
11852
  res.push_back({"learned-rewrite", opts.smt.learnedRewrite ? "true" : "false"});
11853
  res.push_back({"minimal-unsat-cores", opts.smt.minimalUnsatCores ? "true" : "false"});
11854
  { std::stringstream ss; ss << opts.smt.modelCoresMode; res.push_back({"model-cores", ss.str()}); }
11855
  { std::stringstream ss; ss << opts.smt.modelUninterpPrint; res.push_back({"model-u-print", ss.str()}); }
11856
  res.push_back({"model-witness-value", opts.smt.modelWitnessValue ? "true" : "false"});
11857
  res.push_back({"on-repeat-ite-simp", opts.smt.doITESimpOnRepeat ? "true" : "false"});
11858
  res.push_back({"produce-abducts", opts.smt.produceAbducts ? "true" : "false"});
11859
  res.push_back({"produce-assertions", opts.smt.produceAssertions ? "true" : "false"});
11860
  res.push_back({"produce-assignments", opts.smt.produceAssignments ? "true" : "false"});
11861
  { std::stringstream ss; ss << opts.smt.produceInterpols; res.push_back({"produce-interpols", ss.str()}); }
11862
  res.push_back({"produce-models", opts.smt.produceModels ? "true" : "false"});
11863
  res.push_back({"produce-proofs", opts.smt.produceProofs ? "true" : "false"});
11864
  res.push_back({"produce-unsat-assumptions", opts.smt.unsatAssumptions ? "true" : "false"});
11865
  res.push_back({"produce-unsat-cores", opts.smt.unsatCores ? "true" : "false"});
11866
  res.push_back({"repeat-simp", opts.smt.repeatSimp ? "true" : "false"});
11867
  res.push_back({"simp-ite-compress", opts.smt.compressItes ? "true" : "false"});
11868
  res.push_back({"simp-ite-hunt-zombies", std::to_string(opts.smt.zombieHuntThreshold)});
11869
  res.push_back({"simp-with-care", opts.smt.simplifyWithCareEnabled ? "true" : "false"});
11870
  { std::stringstream ss; ss << opts.smt.simplificationMode; res.push_back({"simplification", ss.str()}); }
11871
  { std::stringstream ss; ss << opts.smt.solveBVAsInt; res.push_back({"solve-bv-as-int", ss.str()}); }
11872
  res.push_back({"solve-int-as-bv", std::to_string(opts.smt.solveIntAsBV)});
11873
  res.push_back({"solve-real-as-int", opts.smt.solveRealAsInt ? "true" : "false"});
11874
  res.push_back({"sort-inference", opts.smt.sortInference ? "true" : "false"});
11875
  res.push_back({"static-learning", opts.smt.doStaticLearning ? "true" : "false"});
11876
  { std::stringstream ss; ss << opts.smt.sygusOut; res.push_back({"sygus-out", ss.str()}); }
11877
  res.push_back({"sygus-print-callbacks", opts.smt.sygusPrintCallbacks ? "true" : "false"});
11878
  res.push_back({"unconstrained-simp", opts.smt.unconstrainedSimp ? "true" : "false"});
11879
  { std::stringstream ss; ss << opts.smt.unsatCoresMode; res.push_back({"unsat-cores-mode", ss.str()}); }
11880
  res.push_back({"re-elim", opts.strings.regExpElim ? "true" : "false"});
11881
  res.push_back({"re-elim-agg", opts.strings.regExpElimAgg ? "true" : "false"});
11882
  { std::stringstream ss; ss << opts.strings.stringRegExpInterMode; res.push_back({"re-inter-mode", ss.str()}); }
11883
  res.push_back({"strings-check-entail-len", opts.strings.stringCheckEntailLen ? "true" : "false"});
11884
  res.push_back({"strings-eager", opts.strings.stringEager ? "true" : "false"});
11885
  res.push_back({"strings-eager-eval", opts.strings.stringEagerEval ? "true" : "false"});
11886
  res.push_back({"strings-eager-len", opts.strings.stringEagerLen ? "true" : "false"});
11887
  res.push_back({"strings-exp", opts.strings.stringExp ? "true" : "false"});
11888
  res.push_back({"strings-ff", opts.strings.stringFlatForms ? "true" : "false"});
11889
  res.push_back({"strings-fmf", opts.strings.stringFMF ? "true" : "false"});
11890
  res.push_back({"strings-guess-model", opts.strings.stringGuessModel ? "true" : "false"});
11891
  res.push_back({"strings-infer-as-lemmas", opts.strings.stringInferAsLemmas ? "true" : "false"});
11892
  res.push_back({"strings-infer-sym", opts.strings.stringInferSym ? "true" : "false"});
11893
  res.push_back({"strings-lazy-pp", opts.strings.stringLazyPreproc ? "true" : "false"});
11894
  res.push_back({"strings-len-norm", opts.strings.stringLenNorm ? "true" : "false"});
11895
  res.push_back({"strings-lprop-csp", opts.strings.stringLenPropCsp ? "true" : "false"});
11896
  res.push_back({"strings-min-prefix-explain", opts.strings.stringMinPrefixExplain ? "true" : "false"});
11897
  { std::stringstream ss; ss << opts.strings.stringProcessLoopMode; res.push_back({"strings-process-loop-mode", ss.str()}); }
11898
  res.push_back({"strings-rexplain-lemmas", opts.strings.stringRExplainLemmas ? "true" : "false"});
11899
  res.push_back({"strings-unified-vspt", opts.strings.stringUnifiedVSpt ? "true" : "false"});
11900
  res.push_back({"assign-function-values", opts.theory.assignFunctionValues ? "true" : "false"});
11901
  res.push_back({"condense-function-values", opts.theory.condenseFunctionValues ? "true" : "false"});
11902
  { std::stringstream ss; ss << opts.theory.eeMode; res.push_back({"ee-mode", ss.str()}); }
11903
  res.push_back({"relevance-filter", opts.theory.relevanceFilter ? "true" : "false"});
11904
  { std::stringstream ss; ss << opts.theory.tcMode; res.push_back({"tc-mode", ss.str()}); }
11905
  { std::stringstream ss; ss << opts.theory.theoryOfMode; res.push_back({"theoryof-mode", ss.str()}); }
11906
  res.push_back({"symmetry-breaker", opts.uf.ufSymmetryBreaker ? "true" : "false"});
11907
  res.push_back({"uf-ho", opts.uf.ufHo ? "true" : "false"});
11908
  res.push_back({"uf-ho-ext", opts.uf.ufHoExt ? "true" : "false"});
11909
  res.push_back({"uf-ss-abort-card", std::to_string(opts.uf.ufssAbortCardinality)});
11910
  res.push_back({"uf-ss-fair", opts.uf.ufssFairness ? "true" : "false"});
11911
  res.push_back({"uf-ss-fair-monotone", opts.uf.ufssFairnessMonotone ? "true" : "false"});
11912
  res.push_back({"uf-ss-totality-limited", std::to_string(opts.uf.ufssTotalityLimited)});
11913
  res.push_back({"uf-ss-totality-sym-break", opts.uf.ufssTotalitySymBreak ? "true" : "false"});
11914
  { std::stringstream ss; ss << opts.uf.ufssMode; res.push_back({"uf-ss", ss.str()}); }
11915
11916
  return res;
11917
}
11918
11919
2
std::vector<std::string> getNames()
11920
{
11921
  return {
11922
"abstract-values", "ackermann", "ag-miniscope-quant", "approx-branch-depth",
11923
"arith-brab", "arith-cong-man", "arith-eq-solver", "arith-no-partial-fun",
11924
"arith-prop", "arith-prop-clauses", "arith-rewrite-equalities", "arrays-config",
11925
"arrays-eager-index", "arrays-eager-lemmas", "arrays-exp", "arrays-model-based",
11926
"arrays-optimize-linear", "arrays-prop", "arrays-reduce-sharing",
11927
"arrays-weak-equiv", "assign-function-values", "bitblast", "bitblast-aig",
11928
"bitwise-eq", "block-models", "bool-to-bv", "bv-abstraction", "bv-aig-simp",
11929
"bv-alg-extf", "bv-algebraic-budget", "bv-algebraic-solver", "bv-assert-input",
11930
"bv-eager-explanations", "bv-eq-solver", "bv-extract-arith", "bv-gauss-elim",
11931
"bv-inequality-solver", "bv-intro-pow2", "bv-num-func",
11932
"bv-print-consts-as-indexed-symbols", "bv-propagate", "bv-quick-xplain",
11933
"bv-sat-solver", "bv-skolemize", "bv-solver", "bv-to-bool",
11934
"bvand-integer-granularity", "cdt-bisimilar", "cegis-sample", "cegqi",
11935
"cegqi-all", "cegqi-bv", "cegqi-bv-concat-inv", "cegqi-bv-ineq",
11936
"cegqi-bv-interleave-value", "cegqi-bv-linear", "cegqi-bv-rm-extract",
11937
"cegqi-bv-solve-nl", "cegqi-full", "cegqi-innermost", "cegqi-midpoint",
11938
"cegqi-min-bounds", "cegqi-model", "cegqi-multi-inst", "cegqi-nested-qe",
11939
"cegqi-nopt", "cegqi-repeat-lit", "cegqi-round-up-lia", "cegqi-sat",
11940
"cegqi-use-inf-int", "cegqi-use-inf-real", "check-abducts", "check-interpols",
11941
"check-models", "check-proofs", "check-synth-sol", "check-unsat-cores",
11942
"collect-pivot-stats", "cond-var-split-agg-quant", "cond-var-split-quant",
11943
"condense-function-values", "conjecture-filter-active-terms",
11944
"conjecture-filter-canonical", "conjecture-filter-model", "conjecture-gen",
11945
"conjecture-gen-gt-enum", "conjecture-gen-max-depth",
11946
"conjecture-gen-per-round", "conjecture-gen-uee-intro", "conjecture-no-filter",
11947
"copyright", "cut-all-bounded", "dag-thresh", "debug", "debug-check-models",
11948
"decision", "decision-mode", "decision-random-weight", "decision-threshold",
11949
"decision-use-weight", "decision-weight-internal", "diagnostic-output-channel",
11950
"dio-decomps", "dio-repeat", "dio-solver", "dio-turns", "dt-binary-split",
11951
"dt-blast-splits", "dt-cyclic", "dt-force-assignment", "dt-infer-as-lemmas",
11952
"dt-nested-rec", "dt-polite-optimize", "dt-rewrite-error-sel", "dt-share-sel",
11953
"dt-stc-ind", "dt-var-exp-quant", "dump", "dump-instantiations",
11954
"dump-instantiations-debug", "dump-models", "dump-proofs", "dump-to",
11955
"dump-unsat-cores", "dump-unsat-cores-full", "e-matching", "early-exit",
11956
"early-ite-removal", "ee-mode", "elim-taut-quant", "err",
11957
"error-selection-rule", "expand-definitions", "expr-depth", "ext-rew-prep",
11958
"ext-rew-prep-agg", "ext-rewrite-quant", "fc-penalties", "filesystem-access",
11959
"finite-model-find", "flatten-ho-chains", "fmf-bound", "fmf-bound-int",
11960
"fmf-bound-lazy", "fmf-fmc-simple", "fmf-fresh-dc", "fmf-fun", "fmf-fun-rlv",
11961
"fmf-inst-engine", "fmf-type-completion-thresh", "force-logic",
11962
"force-no-limit-cpu-while-dump", "foreign-theory-rewrite", "fp-exp",
11963
"fp-lazy-wb", "fs-interleave", "fs-stratify", "fs-sum", "full-saturate-quant",
11964
"full-saturate-quant-limit", "full-saturate-quant-rd", "global-declarations",
11965
"global-negate", "help", "heuristic-pivots", "ho-elim", "ho-elim-store-ax",
11966
"ho-matching", "ho-matching-var-priority", "ho-merge-term-db", "iand-mode",
11967
"in", "increment-triggers", "incremental", "input-language",
11968
"inst-level-input-only", "inst-max-level", "inst-max-rounds", "inst-no-entail",
11969
"inst-when", "inst-when-phase", "inst-when-strict-interleave",
11970
"inst-when-tc-first", "int-wf-ind", "interactive", "interactive-mode",
11971
"ite-dtt-split-quant", "ite-lift-quant", "ite-simp", "jh-rlv-order",
11972
"jh-skolem", "jh-skolem-rlv", "lang", "learned-rewrite",
11973
"lemmas-on-replay-failure", "literal-matching", "macros-quant",
11974
"macros-quant-mode", "maxCutsInContext", "mbqi", "mbqi-interleave",
11975
"mbqi-one-inst-per-round", "minimal-unsat-cores", "minisat-dump-dimacs",
11976
"minisat-elimination", "miniscope-quant", "miniscope-quant-fv", "miplib-trick",
11977
"miplib-trick-subs", "mmap", "model-cores", "model-format", "model-u-print",
11978
"model-uninterp-print", "model-witness-value", "multi-trigger-cache",
11979
"multi-trigger-linear", "multi-trigger-priority", "multi-trigger-when-single",
11980
"new-prop", "nl-cad", "nl-cad-initial", "nl-cad-lift", "nl-cad-proj", "nl-ext",
11981
"nl-ext-ent-conf", "nl-ext-factor", "nl-ext-inc-prec", "nl-ext-purify",
11982
"nl-ext-rbound", "nl-ext-rewrite", "nl-ext-split-zero", "nl-ext-tf-taylor-deg",
11983
"nl-ext-tf-tplanes", "nl-ext-tplanes", "nl-ext-tplanes-interleave", "nl-icp",
11984
"nl-rlv", "on-repeat-ite-simp", "out", "output", "output-lang",
11985
"output-language", "parse-only", "partial-triggers", "pb-rewrites",
11986
"pivot-threshold", "pool-inst", "pp-assert-max-sub-size", "pre-skolem-quant",
11987
"pre-skolem-quant-agg", "pre-skolem-quant-nested", "prenex-quant",
11988
"prenex-quant-user", "preprocess-only", "print-inst", "print-inst-full",
11989
"print-success", "produce-abducts", "produce-assertions", "produce-assignments",
11990
"produce-interpols", "produce-models", "produce-proofs",
11991
"produce-unsat-assumptions", "produce-unsat-cores", "proof-eager-checking",
11992
"proof-format-mode", "proof-granularity", "proof-pedantic",
11993
"proof-print-conclusion", "prop-row-length", "purify-triggers",
11994
"qcf-all-conflict", "qcf-eager-check-rd", "qcf-eager-test",
11995
"qcf-nested-conflict", "qcf-skip-rd", "qcf-tconstraint", "qcf-vo-exp",
11996
"quant-alpha-equiv", "quant-cf", "quant-cf-mode", "quant-cf-when",
11997
"quant-dsplit-mode", "quant-fun-wd", "quant-ind", "quant-rep-mode",
11998
"quant-split", "quiet", "random-freq", "random-frequency", "random-seed",
11999
"re-elim", "re-elim-agg", "re-inter-mode", "refine-conflicts",
12000
"register-quant-body-terms", "regular-output-channel", "relational-triggers",
12001
"relevance-filter", "relevant-triggers", "repeat-simp",
12002
"replay-early-close-depth", "replay-failure-penalty", "replay-lemma-reject-cut",
12003
"replay-num-err-penalty", "replay-reject-cut", "replay-soi-major-threshold",
12004
"replay-soi-major-threshold-pen", "replay-soi-minor-threshold",
12005
"replay-soi-minor-threshold-pen", "reproducible-resource-limit",
12006
"restart-int-base", "restart-int-inc", "restrict-pivots",
12007
"revert-arith-models-on-unsat", "rlimit", "rlimit-per", "rr-turns", "rweight",
12008
"se-solve-int", "seed", "segv-spin", "semantic-checks", "sep-check-neg",
12009
"sep-child-refine", "sep-deq-c", "sep-exp", "sep-min-refine",
12010
"sep-pre-skolem-emp", "sets-ext", "sets-infer-as-lemmas", "sets-proxy-lemmas",
12011
"show-config", "show-debug-tags", "show-trace-tags", "simp-ite-compress",
12012
"simp-ite-hunt-zombies", "simp-with-care", "simplex-check-period",
12013
"simplification", "simplification-mode", "soi-qe", "solve-bv-as-int",
12014
"solve-int-as-bv", "solve-real-as-int", "sort-inference",
12015
"standard-effort-variable-order-pivots", "static-learning", "stats",
12016
"stats-all", "stats-every-query", "stats-expert", "strict-parsing",
12017
"strings-check-entail-len", "strings-eager", "strings-eager-eval",
12018
"strings-eager-len", "strings-exp", "strings-ff", "strings-fmf",
12019
"strings-guess-model", "strings-infer-as-lemmas", "strings-infer-sym",
12020
"strings-lazy-pp", "strings-len-norm", "strings-lprop-csp",
12021
"strings-min-prefix-explain", "strings-process-loop-mode",
12022
"strings-rexplain-lemmas", "strings-unified-vspt", "sygus", "sygus-abort-size",
12023
"sygus-active-gen", "sygus-active-gen-cfactor", "sygus-add-const-grammar",
12024
"sygus-arg-relevant", "sygus-auto-unfold", "sygus-bool-ite-return-const",
12025
"sygus-core-connective", "sygus-crepair-abort", "sygus-eval-opt",
12026
"sygus-eval-unfold", "sygus-eval-unfold-bool", "sygus-expr-miner-check-timeout",
12027
"sygus-ext-rew", "sygus-fair", "sygus-fair-max", "sygus-filter-sol",
12028
"sygus-filter-sol-rev", "sygus-grammar-cons", "sygus-grammar-norm",
12029
"sygus-inference", "sygus-inst", "sygus-inst-mode", "sygus-inst-scope",
12030
"sygus-inst-term-sel", "sygus-inv-templ", "sygus-inv-templ-when-sg",
12031
"sygus-min-grammar", "sygus-out", "sygus-pbe", "sygus-pbe-multi-fair",
12032
"sygus-pbe-multi-fair-diff", "sygus-print-callbacks", "sygus-qe-preproc",
12033
"sygus-query-gen", "sygus-query-gen-check", "sygus-query-gen-dump-files",
12034
"sygus-query-gen-thresh", "sygus-rec-fun", "sygus-rec-fun-eval-limit",
12035
"sygus-repair-const", "sygus-repair-const-timeout", "sygus-rr",
12036
"sygus-rr-synth", "sygus-rr-synth-accel", "sygus-rr-synth-check",
12037
"sygus-rr-synth-filter-cong", "sygus-rr-synth-filter-match",
12038
"sygus-rr-synth-filter-nl", "sygus-rr-synth-filter-order",
12039
"sygus-rr-synth-input", "sygus-rr-synth-input-nvars",
12040
"sygus-rr-synth-input-use-bool", "sygus-rr-synth-rec", "sygus-rr-verify",
12041
"sygus-rr-verify-abort", "sygus-sample-fp-uniform", "sygus-sample-grammar",
12042
"sygus-samples", "sygus-si", "sygus-si-abort", "sygus-si-partial",
12043
"sygus-si-rcons", "sygus-si-rcons-limit", "sygus-si-reconstruct-const",
12044
"sygus-stream", "sygus-sym-break", "sygus-sym-break-agg",
12045
"sygus-sym-break-dynamic", "sygus-sym-break-lazy", "sygus-sym-break-pbe",
12046
"sygus-sym-break-rlv", "sygus-templ-embed-grammar",
12047
"sygus-unif-cond-independent-no-repeat-sol", "sygus-unif-pi",
12048
"sygus-unif-shuffle-cond", "sygus-verify-inst-max-rounds", "symmetry-breaker",
12049
"tc-mode", "term-db-cd", "term-db-mode", "theoryof-mode", "tlimit",
12050
"tlimit-per", "trace", "trigger-active-sel", "trigger-sel", "type-checking",
12051
"uf-ho", "uf-ho-ext", "uf-ss", "uf-ss-abort-card", "uf-ss-fair",
12052
"uf-ss-fair-monotone", "uf-ss-totality-limited", "uf-ss-totality-sym-break",
12053
"uf-symmetry-breaker", "unate-lemmas", "unconstrained-simp", "unsat-cores-mode",
12054
"use-approx", "use-fcsimplex", "use-soi", "user-pat", "var-elim-quant",
12055
"var-ineq-elim-quant", "verbose", "verbosity", "version"
12056
2
  };
12057
}
12058
12059
29358
}  // namespace cvc5::options