GCC Code Coverage Report
Directory: . Exec Total Coverage
File: build-coverage/src/options/options_public.cpp Lines: 2722 7977 34.1 %
Date: 2021-08-01 Branches: 2629 18534 14.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
9760
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
9760
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-models          output models after every SAT/INVALID/UNKNOWN response\n"
390
"                         [*]\n"
391
"  --dump-proofs          output proofs after every UNSAT/VALID response [*]\n"
392
"  --dump-unsat-cores     output unsat cores after every UNSAT/VALID response [*]\n"
393
"  --dump-unsat-cores-full\n"
394
"                         dump the full unsat core, including unlabeled\n"
395
"                         assertions [*]\n"
396
"  --early-exit           do not run destructors at exit; default on except in\n"
397
"                         debug builds (EXPERTS only) [*]\n"
398
"  --force-no-limit-cpu-while-dump\n"
399
"                         Force no CPU limit when dumping models and proofs [*]\n"
400
"  --interactive          force interactive/non-interactive mode [*]\n"
401
"  --segv-spin            spin on segfault/other crash waiting for gdb [*]\n"
402
"  --show-debug-tags      show all available tags for debugging\n"
403
"  --show-trace-tags      show all available tags for tracing\n"
404
"\nFrom the Parser module:\n"
405
"  --force-logic=LOGIC    set the logic, and override all further user attempts\n"
406
"                         to change it (EXPERTS only)\n"
407
"  --global-declarations  force all declarations and definitions to be global [*]\n"
408
"  --mmap                 memory map file input [*]\n"
409
"  --semantic-checks      enable semantic checks, including type checks [*]\n"
410
"\nFrom the Printing module:\n"
411
"  --flatten-ho-chains    print (binary) application chains in a flattened way,\n"
412
"                         e.g. (a b c) rather than ((a b) c) [*]\n"
413
"  --inst-format=MODE     print format mode for instantiations, see\n"
414
"                         --inst-format=help\n"
415
"  --model-format=MODE    print format mode for models, see --model-format=help\n"
416
"  --print-inst-full      print instantiations for formulas that do not have\n"
417
"                         given identifiers [*]\n"
418
"  --print-inst=MODE      print format for printing instantiations\n"
419
"\nFrom the Proof module:\n"
420
"  --proof-eager-checking check proofs eagerly with proof for local debugging [*]\n"
421
"  --proof-format-mode=MODE\n"
422
"                         select language of proof output\n"
423
"  --proof-granularity=MODE\n"
424
"                         modes for proof granularity\n"
425
"  --proof-pedantic=N     assertion failure for any incorrect rule application or\n"
426
"                         untrusted lemma having pedantic level <=N with proof\n"
427
"  --proof-print-conclusion\n"
428
"                         Print conclusion of proof steps when printing AST [*]\n"
429
"\nFrom the SAT Layer module:\n"
430
"  --minisat-dump-dimacs  instead of solving minisat dumps the asserted clauses\n"
431
"                         in Dimacs format [*]\n"
432
"  --minisat-elimination  use Minisat elimination [*]\n"
433
"  --random-freq=P | --random-frequency=P\n"
434
"                         sets the frequency of random decisions in the sat\n"
435
"                         solver (P=0.0 by default)\n"
436
"  --random-seed=S        sets the random seed for the sat solver\n"
437
"  --refine-conflicts     refine theory conflict clauses (default false) [*]\n"
438
"  --restart-int-base=N   sets the base restart interval for the sat solver (N=25\n"
439
"                         by default)\n"
440
"  --restart-int-inc=F    sets the restart interval increase factor for the sat\n"
441
"                         solver (F=3.0 by default)\n"
442
"\nFrom the Quantifiers module:\n"
443
"  --ag-miniscope-quant   perform aggressive miniscoping for quantifiers [*]\n"
444
"  --cegis-sample=MODE    mode for using samples in the counterexample-guided\n"
445
"                         inductive synthesis loop\n"
446
"  --cegqi                turns on counterexample-based quantifier instantiation\n"
447
"                         [*]\n"
448
"  --cegqi-all            apply counterexample-based instantiation to all\n"
449
"                         quantified formulas [*]\n"
450
"  --cegqi-bv             use word-level inversion approach for\n"
451
"                         counterexample-guided quantifier instantiation for\n"
452
"                         bit-vectors [*]\n"
453
"  --cegqi-bv-concat-inv  compute inverse for concat over equalities rather than\n"
454
"                         producing an invertibility condition [*]\n"
455
"  --cegqi-bv-ineq=MODE   choose mode for handling bit-vector inequalities with\n"
456
"                         counterexample-guided instantiation\n"
457
"  --cegqi-bv-interleave-value\n"
458
"                         interleave model value instantiation with word-level\n"
459
"                         inversion approach [*]\n"
460
"  --cegqi-bv-linear      linearize adder chains for variables [*]\n"
461
"  --cegqi-bv-rm-extract  replaces extract terms with variables for\n"
462
"                         counterexample-guided instantiation for bit-vectors [*]\n"
463
"  --cegqi-bv-solve-nl    try to solve non-linear bv literals using model value\n"
464
"                         projections [*]\n"
465
"  --cegqi-full           turns on full effort counterexample-based quantifier\n"
466
"                         instantiation, which may resort to model-value\n"
467
"                         instantiation [*]\n"
468
"  --cegqi-innermost      only process innermost quantified formulas in\n"
469
"                         counterexample-based quantifier instantiation [*]\n"
470
"  --cegqi-midpoint       choose substitutions based on midpoints of lower and\n"
471
"                         upper bounds for counterexample-based quantifier\n"
472
"                         instantiation [*]\n"
473
"  --cegqi-min-bounds     use minimally constrained lower/upper bound for\n"
474
"                         counterexample-based quantifier instantiation [*]\n"
475
"  --cegqi-model          guide instantiations by model values for\n"
476
"                         counterexample-based quantifier instantiation [*]\n"
477
"  --cegqi-multi-inst     when applicable, do multi instantiations per quantifier\n"
478
"                         per round in counterexample-based quantifier\n"
479
"                         instantiation [*]\n"
480
"  --cegqi-nested-qe      process nested quantified formulas with quantifier\n"
481
"                         elimination in counterexample-based quantifier\n"
482
"                         instantiation [*]\n"
483
"  --cegqi-nopt           non-optimal bounds for counterexample-based quantifier\n"
484
"                         instantiation [*]\n"
485
"  --cegqi-repeat-lit     solve literals more than once in counterexample-based\n"
486
"                         quantifier instantiation [*]\n"
487
"  --cegqi-round-up-lia   round up integer lower bounds in substitutions for\n"
488
"                         counterexample-based quantifier instantiation [*]\n"
489
"  --cegqi-sat            answer sat when quantifiers are asserted with\n"
490
"                         counterexample-based quantifier instantiation [*]\n"
491
"  --cegqi-use-inf-int    use integer infinity for vts in counterexample-based\n"
492
"                         quantifier instantiation [*]\n"
493
"  --cegqi-use-inf-real   use real infinity for vts in counterexample-based\n"
494
"                         quantifier instantiation [*]\n"
495
"  --cond-var-split-agg-quant\n"
496
"                         aggressive split quantified formulas that lead to\n"
497
"                         variable eliminations [*]\n"
498
"  --cond-var-split-quant split quantified formulas that lead to variable\n"
499
"                         eliminations [*]\n"
500
"  --conjecture-filter-active-terms\n"
501
"                         filter based on active terms [*]\n"
502
"  --conjecture-filter-canonical\n"
503
"                         filter based on canonicity [*]\n"
504
"  --conjecture-filter-model\n"
505
"                         filter based on model [*]\n"
506
"  --conjecture-gen       generate candidate conjectures for inductive proofs [*]\n"
507
"  --conjecture-gen-gt-enum=N\n"
508
"                         number of ground terms to generate for model filtering\n"
509
"  --conjecture-gen-max-depth=N\n"
510
"                         maximum depth of terms to consider for conjectures\n"
511
"  --conjecture-gen-per-round=N\n"
512
"                         number of conjectures to generate per instantiation\n"
513
"                         round\n"
514
"  --conjecture-gen-uee-intro\n"
515
"                         more aggressive merging for universal equality engine,\n"
516
"                         introduces terms [*]\n"
517
"  --conjecture-no-filter do not filter conjectures [*]\n"
518
"  --dt-stc-ind           apply strengthening for existential quantification over\n"
519
"                         datatypes based on structural induction [*]\n"
520
"  --dt-var-exp-quant     expand datatype variables bound to one constructor in\n"
521
"                         quantifiers [*]\n"
522
"  --e-matching           whether to do heuristic E-matching [*]\n"
523
"  --elim-taut-quant      eliminate tautological disjuncts of quantified formulas\n"
524
"                         [*]\n"
525
"  --ext-rewrite-quant    apply extended rewriting to bodies of quantified\n"
526
"                         formulas [*]\n"
527
"  --finite-model-find    use finite model finding heuristic for quantifier\n"
528
"                         instantiation [*]\n"
529
"  --fmf-bound            finite model finding on bounded quantification [*]\n"
530
"  --fmf-bound-int        finite model finding on bounded integer quantification\n"
531
"                         [*]\n"
532
"  --fmf-bound-lazy       enforce bounds for bounded quantification lazily via\n"
533
"                         use of proxy variables [*]\n"
534
"  --fmf-fmc-simple       simple models in full model check for finite model\n"
535
"                         finding [*]\n"
536
"  --fmf-fresh-dc         use fresh distinguished representative when applying\n"
537
"                         Inst-Gen techniques [*]\n"
538
"  --fmf-fun              find models for recursively defined functions, assumes\n"
539
"                         functions are admissible [*]\n"
540
"  --fmf-fun-rlv          find models for recursively defined functions, assumes\n"
541
"                         functions are admissible, allows empty type when\n"
542
"                         function is irrelevant [*]\n"
543
"  --fmf-inst-engine      use instantiation engine in conjunction with finite\n"
544
"                         model finding [*]\n"
545
"  --fmf-type-completion-thresh=N\n"
546
"                         the maximum cardinality of an interpreted type for\n"
547
"                         which exhaustive enumeration in finite model finding is\n"
548
"                         attempted\n"
549
"  --fs-interleave        interleave enumerative instantiation with other\n"
550
"                         techniques [*]\n"
551
"  --fs-stratify          stratify effort levels in enumerative instantiation,\n"
552
"                         which favors speed over fairness [*]\n"
553
"  --fs-sum               enumerating tuples of quantifiers by increasing the sum\n"
554
"                         of indices, rather than the maximum [*]\n"
555
"  --full-saturate-quant  enumerative instantiation: instantiate with ground\n"
556
"                         terms from relevant domain, then arbitrary ground terms\n"
557
"                         before answering unknown [*]\n"
558
"  --full-saturate-quant-limit=N\n"
559
"                         maximum number of rounds of enumerative instantiation\n"
560
"                         to apply (-1 means no limit)\n"
561
"  --full-saturate-quant-rd\n"
562
"                         whether to use relevant domain first for enumerative\n"
563
"                         instantiation strategy [*]\n"
564
"  --global-negate        do global negation of input formula [*]\n"
565
"  --ho-elim              eagerly eliminate higher-order constraints [*]\n"
566
"  --ho-elim-store-ax     use store axiom during ho-elim [*]\n"
567
"  --ho-matching          do higher-order matching algorithm for triggers with\n"
568
"                         variable operators [*]\n"
569
"  --ho-matching-var-priority\n"
570
"                         give priority to variable arguments over constant\n"
571
"                         arguments [*]\n"
572
"  --ho-merge-term-db     merge term indices modulo equality [*]\n"
573
"  --increment-triggers   generate additional triggers as needed during search\n"
574
"                         [*]\n"
575
"  --inst-level-input-only\n"
576
"                         only input terms are assigned instantiation level zero\n"
577
"                         [*]\n"
578
"  --inst-max-level=N     maximum inst level of terms used to instantiate\n"
579
"                         quantified formulas with (-1 == no limit, default)\n"
580
"  --inst-max-rounds=N    maximum number of instantiation rounds (-1 == no limit,\n"
581
"                         default)\n"
582
"  --inst-no-entail       do not consider instances of quantified formulas that\n"
583
"                         are currently entailed [*]\n"
584
"  --inst-when-phase=N    instantiation rounds quantifiers takes (>=1) before\n"
585
"                         allowing theory combination to happen\n"
586
"  --inst-when-strict-interleave\n"
587
"                         ensure theory combination and standard quantifier\n"
588
"                         effort strategies take turns [*]\n"
589
"  --inst-when-tc-first   allow theory combination to happen once initially,\n"
590
"                         before quantifier strategies are run [*]\n"
591
"  --inst-when=MODE       when to apply instantiation\n"
592
"  --int-wf-ind           apply strengthening for integers based on well-founded\n"
593
"                         induction [*]\n"
594
"  --ite-dtt-split-quant  split ites with dt testers as conditions [*]\n"
595
"  --ite-lift-quant=MODE  ite lifting mode for quantified formulas\n"
596
"  --literal-matching=MODE\n"
597
"                         choose literal matching mode\n"
598
"  --macros-quant         perform quantifiers macro expansion [*]\n"
599
"  --macros-quant-mode=MODE\n"
600
"                         mode for quantifiers macro expansion\n"
601
"  --mbqi-interleave      interleave model-based quantifier instantiation with\n"
602
"                         other techniques [*]\n"
603
"  --mbqi-one-inst-per-round\n"
604
"                         only add one instantiation per quantifier per round for\n"
605
"                         mbqi [*]\n"
606
"  --mbqi=MODE            choose mode for model-based quantifier instantiation\n"
607
"  --miniscope-quant      miniscope quantifiers [*]\n"
608
"  --miniscope-quant-fv   miniscope quantifiers for ground subformulas [*]\n"
609
"  --multi-trigger-cache  caching version of multi triggers [*]\n"
610
"  --multi-trigger-linear implementation of multi triggers where maximum number\n"
611
"                         of instantiations is linear wrt number of ground terms\n"
612
"                         [*]\n"
613
"  --multi-trigger-priority\n"
614
"                         only try multi triggers if single triggers give no\n"
615
"                         instantiations [*]\n"
616
"  --multi-trigger-when-single\n"
617
"                         select multi triggers when single triggers exist [*]\n"
618
"  --partial-triggers     use triggers that do not contain all free variables [*]\n"
619
"  --pool-inst            pool-based instantiation: instantiate with ground terms\n"
620
"                         occurring in user-specified pools [*]\n"
621
"  --pre-skolem-quant     apply skolemization eagerly to bodies of quantified\n"
622
"                         formulas [*]\n"
623
"  --pre-skolem-quant-agg apply skolemization to quantified formulas aggressively\n"
624
"                         [*]\n"
625
"  --pre-skolem-quant-nested\n"
626
"                         apply skolemization to nested quantified formulas [*]\n"
627
"  --prenex-quant-user    prenex quantified formulas with user patterns [*]\n"
628
"  --prenex-quant=MODE    prenex mode for quantified formulas\n"
629
"  --purify-triggers      purify triggers, e.g. f( x+1 ) becomes f( y ), x mapsto\n"
630
"                         y-1 [*]\n"
631
"  --qcf-all-conflict     add all available conflicting instances during\n"
632
"                         conflict-based instantiation [*]\n"
633
"  --qcf-eager-check-rd   optimization, eagerly check relevant domain of matched\n"
634
"                         position [*]\n"
635
"  --qcf-eager-test       optimization, test qcf instances eagerly [*]\n"
636
"  --qcf-nested-conflict  consider conflicts for nested quantifiers [*]\n"
637
"  --qcf-skip-rd          optimization, skip instances based on possibly\n"
638
"                         irrelevant portions of quantified formulas [*]\n"
639
"  --qcf-tconstraint      enable entailment checks for t-constraints in qcf\n"
640
"                         algorithm [*]\n"
641
"  --qcf-vo-exp           qcf experimental variable ordering [*]\n"
642
"  --quant-alpha-equiv    infer alpha equivalence between quantified formulas [*]\n"
643
"  --quant-cf             enable conflict find mechanism for quantifiers [*]\n"
644
"  --quant-cf-mode=MODE   what effort to apply conflict find mechanism\n"
645
"  --quant-cf-when=MODE   when to invoke conflict find mechanism for quantifiers\n"
646
"  --quant-dsplit-mode=MODE\n"
647
"                         mode for dynamic quantifiers splitting\n"
648
"  --quant-fun-wd         assume that function defined by quantifiers are well\n"
649
"                         defined [*]\n"
650
"  --quant-ind            use all available techniques for inductive reasoning\n"
651
"                         [*]\n"
652
"  --quant-rep-mode=MODE  selection mode for representatives in quantifiers\n"
653
"                         engine\n"
654
"  --quant-split          apply splitting to quantified formulas based on\n"
655
"                         variable disjoint disjuncts [*]\n"
656
"  --register-quant-body-terms\n"
657
"                         consider ground terms within bodies of quantified\n"
658
"                         formulas for matching [*]\n"
659
"  --relational-triggers  choose relational triggers such as x = f(y), x >= f(y)\n"
660
"                         [*]\n"
661
"  --relevant-triggers    prefer triggers that are more relevant based on SInE\n"
662
"                         style analysis [*]\n"
663
"  --strict-triggers      only instantiate quantifiers with user patterns based\n"
664
"                         on triggers [*]\n"
665
"  --sygus                use sygus solver (default is true for sygus inputs) [*]\n"
666
"  --sygus-active-gen-cfactor=N\n"
667
"                         the branching factor for the number of interpreted\n"
668
"                         constants to consider for each size when using\n"
669
"                         --sygus-active-gen=enum\n"
670
"  --sygus-active-gen=MODE\n"
671
"                         mode for actively-generated sygus enumerators\n"
672
"  --sygus-add-const-grammar\n"
673
"                         statically add constants appearing in conjecture to\n"
674
"                         grammars [*]\n"
675
"  --sygus-arg-relevant   static inference techniques for computing whether\n"
676
"                         arguments of functions-to-synthesize are relevant [*]\n"
677
"  --sygus-auto-unfold    enable approach which automatically unfolds transition\n"
678
"                         systems for directly solving invariant synthesis\n"
679
"                         problems [*]\n"
680
"  --sygus-bool-ite-return-const\n"
681
"                         Only use Boolean constants for return values in\n"
682
"                         unification-based function synthesis [*]\n"
683
"  --sygus-core-connective\n"
684
"                         use unsat core analysis to construct Boolean connective\n"
685
"                         to sygus conjectures [*]\n"
686
"  --sygus-crepair-abort  abort if constant repair techniques are not applicable\n"
687
"                         [*]\n"
688
"  --sygus-eval-opt       use optimized approach for evaluation in sygus [*]\n"
689
"  --sygus-eval-unfold    do unfolding of sygus evaluation functions [*]\n"
690
"  --sygus-eval-unfold-bool\n"
691
"                         do unfolding of Boolean evaluation functions that\n"
692
"                         appear in refinement lemmas [*]\n"
693
"  --sygus-expr-miner-check-timeout=N\n"
694
"                         timeout (in milliseconds) for satisfiability checks in\n"
695
"                         expression miners\n"
696
"  --sygus-ext-rew        use extended rewriter for sygus [*]\n"
697
"  --sygus-filter-sol-rev compute backwards filtering to compute whether previous\n"
698
"                         solutions are filtered based on later ones (EXPERTS\n"
699
"                         only) [*]\n"
700
"  --sygus-filter-sol=MODE\n"
701
"                         mode for filtering sygus solutions\n"
702
"  --sygus-grammar-cons=MODE\n"
703
"                         mode for SyGuS grammar construction\n"
704
"  --sygus-grammar-norm   statically normalize sygus grammars based on flattening\n"
705
"                         (linearization) [*]\n"
706
"  --sygus-inference      attempt to preprocess arbitrary inputs to sygus\n"
707
"                         conjectures [*]\n"
708
"  --sygus-inst           Enable SyGuS instantiation quantifiers module [*]\n"
709
"  --sygus-inst-mode=MODE select instantiation lemma mode\n"
710
"  --sygus-inst-scope=MODE\n"
711
"                         select scope of ground terms\n"
712
"  --sygus-inst-term-sel=MODE\n"
713
"                         granularity for ground terms\n"
714
"  --sygus-inv-templ-when-sg\n"
715
"                         use invariant templates (with solution reconstruction)\n"
716
"                         for syntax guided problems [*]\n"
717
"  --sygus-inv-templ=MODE template mode for sygus invariant synthesis (weaken\n"
718
"                         pre-condition, strengthen post-condition, or none)\n"
719
"  --sygus-min-grammar    statically minimize sygus grammars [*]\n"
720
"  --sygus-pbe            enable approach which unifies conditional solutions,\n"
721
"                         specialized for programming-by-examples (pbe)\n"
722
"                         conjectures [*]\n"
723
"  --sygus-pbe-multi-fair when using multiple enumerators, ensure that we only\n"
724
"                         register value of minimial term size [*]\n"
725
"  --sygus-pbe-multi-fair-diff=N\n"
726
"                         when using multiple enumerators, ensure that we only\n"
727
"                         register values of minimial term size plus this value\n"
728
"                         (default 0)\n"
729
"  --sygus-qe-preproc     use quantifier elimination as a preprocessing step for\n"
730
"                         sygus [*]\n"
731
"  --sygus-query-gen      use sygus to enumerate interesting satisfiability\n"
732
"                         queries [*]\n"
733
"  --sygus-query-gen-check\n"
734
"                         use interesting satisfiability queries to check\n"
735
"                         soundness of cvc5 [*]\n"
736
"  --sygus-query-gen-dump-files=MODE\n"
737
"                         mode for dumping external files corresponding to\n"
738
"                         interesting satisfiability queries with sygus-query-gen\n"
739
"  --sygus-query-gen-thresh=N\n"
740
"                         number of points that we allow to be equal for\n"
741
"                         enumerating satisfiable queries with sygus-query-gen\n"
742
"  --sygus-rec-fun        enable efficient support for recursive functions in\n"
743
"                         sygus grammars [*]\n"
744
"  --sygus-rec-fun-eval-limit=N\n"
745
"                         use a hard limit for how many times in a given\n"
746
"                         evaluator call a recursive function can be evaluated\n"
747
"                         (so infinite loops can be avoided)\n"
748
"  --sygus-repair-const   use approach to repair constants in sygus candidate\n"
749
"                         solutions [*]\n"
750
"  --sygus-repair-const-timeout=N\n"
751
"                         timeout (in milliseconds) for the satisfiability check\n"
752
"                         to repair constants in sygus candidate solutions\n"
753
"  --sygus-rr             use sygus to enumerate and verify correctness of\n"
754
"                         rewrite rules [*]\n"
755
"  --sygus-rr-synth       use sygus to enumerate candidate rewrite rules [*]\n"
756
"  --sygus-rr-synth-accel add dynamic symmetry breaking clauses based on\n"
757
"                         candidate rewrites [*]\n"
758
"  --sygus-rr-synth-check use satisfiability check to verify correctness of\n"
759
"                         candidate rewrites [*]\n"
760
"  --sygus-rr-synth-filter-cong\n"
761
"                         filter candidate rewrites based on congruence [*]\n"
762
"  --sygus-rr-synth-filter-match\n"
763
"                         filter candidate rewrites based on matching [*]\n"
764
"  --sygus-rr-synth-filter-nl\n"
765
"                         filter non-linear candidate rewrites [*]\n"
766
"  --sygus-rr-synth-filter-order\n"
767
"                         filter candidate rewrites based on variable ordering\n"
768
"                         [*]\n"
769
"  --sygus-rr-synth-input synthesize rewrite rules based on the input formula [*]\n"
770
"  --sygus-rr-synth-input-nvars=N\n"
771
"                         the maximum number of variables per type that appear in\n"
772
"                         rewrites from sygus-rr-synth-input\n"
773
"  --sygus-rr-synth-input-use-bool\n"
774
"                         synthesize Boolean rewrite rules based on the input\n"
775
"                         formula [*]\n"
776
"  --sygus-rr-synth-rec   synthesize rewrite rules over all sygus grammar types\n"
777
"                         recursively [*]\n"
778
"  --sygus-rr-verify      use sygus to verify the correctness of rewrite rules\n"
779
"                         via sampling [*]\n"
780
"  --sygus-rr-verify-abort\n"
781
"                         abort when sygus-rr-verify finds an instance of\n"
782
"                         unsoundness [*]\n"
783
"  --sygus-sample-fp-uniform\n"
784
"                         sample floating-point values uniformly instead of in a\n"
785
"                         biased fashion [*]\n"
786
"  --sygus-sample-grammar when applicable, use grammar for choosing sample points\n"
787
"                         [*]\n"
788
"  --sygus-samples=N      number of points to consider when doing sygus rewriter\n"
789
"                         sample testing\n"
790
"  --sygus-si-abort       abort if synthesis conjecture is not single invocation\n"
791
"                         [*]\n"
792
"  --sygus-si-partial     combined techniques for synthesis conjectures that are\n"
793
"                         partially single invocation [*]\n"
794
"  --sygus-si-rcons-limit=N\n"
795
"                         number of rounds of enumeration to use during solution\n"
796
"                         reconstruction (negative means unlimited)\n"
797
"  --sygus-si-rcons=MODE  policy for reconstructing solutions for single\n"
798
"                         invocation conjectures\n"
799
"  --sygus-si-reconstruct-const\n"
800
"                         include constants when reconstruct solutions for single\n"
801
"                         invocation conjectures in original grammar [*]\n"
802
"  --sygus-si=MODE        mode for processing single invocation synthesis\n"
803
"                         conjectures\n"
804
"  --sygus-stream         enumerate a stream of solutions instead of terminating\n"
805
"                         after the first one [*]\n"
806
"  --sygus-templ-embed-grammar\n"
807
"                         embed sygus templates into grammars [*]\n"
808
"  --sygus-unif-cond-independent-no-repeat-sol\n"
809
"                         Do not try repeated solutions when using independent\n"
810
"                         synthesis of conditions in unification-based function\n"
811
"                         synthesis [*]\n"
812
"  --sygus-unif-pi=MODE   mode for synthesis via piecewise-indepedent unification\n"
813
"  --sygus-unif-shuffle-cond\n"
814
"                         Shuffle condition pool when building solutions (may\n"
815
"                         change solutions sizes) [*]\n"
816
"  --sygus-verify-inst-max-rounds=N\n"
817
"                         maximum number of instantiation rounds for sygus\n"
818
"                         verification calls (-1 == no limit, default is 3)\n"
819
"  --term-db-cd           register terms in term database based on the SAT\n"
820
"                         context [*]\n"
821
"  --term-db-mode=MODE    which ground terms to consider for instantiation\n"
822
"  --trigger-active-sel=MODE\n"
823
"                         selection mode to activate triggers\n"
824
"  --trigger-sel=MODE     selection mode for triggers\n"
825
"  --user-pat=MODE        policy for handling user-provided patterns for\n"
826
"                         quantifier instantiation\n"
827
"  --var-elim-quant       enable simple variable elimination for quantified\n"
828
"                         formulas [*]\n"
829
"  --var-ineq-elim-quant  enable variable elimination based on infinite\n"
830
"                         projection of unbound arithmetic variables [*]\n"
831
"\nFrom the Separation Logic Theory module:\n"
832
"  --sep-check-neg        check negated spatial assertions [*]\n"
833
"  --sep-child-refine     child-specific refinements of negated star, positive\n"
834
"                         wand [*]\n"
835
"  --sep-deq-c            assume cardinality elements are distinct [*]\n"
836
"  --sep-exp              experimental flag for sep [*]\n"
837
"  --sep-min-refine       only add refinement lemmas for minimal (innermost)\n"
838
"                         assertions [*]\n"
839
"  --sep-pre-skolem-emp   eliminate emp constraint at preprocess time [*]\n"
840
"\nFrom the Sets Theory module:\n"
841
"  --sets-ext             enable extended symbols such as complement and universe\n"
842
"                         in theory of sets [*]\n"
843
"  --sets-infer-as-lemmas send inferences as lemmas [*]\n"
844
"  --sets-proxy-lemmas    introduce proxy variables eagerly to shorten lemmas [*]\n"
845
"\nFrom the SMT Layer module:\n"
846
"  --abstract-values      in models, output arrays (and in future, maybe others)\n"
847
"                         using abstract values, as required by the SMT-LIB\n"
848
"                         standard [*]\n"
849
"  --ackermann            eliminate functions by ackermannization [*]\n"
850
"  --block-models=MODE    mode for producing several models\n"
851
"  --check-abducts        checks whether produced solutions to get-abduct are\n"
852
"                         correct [*]\n"
853
"  --check-interpols      checks whether produced solutions to get-interpol are\n"
854
"                         correct [*]\n"
855
"  --check-models         after SAT/INVALID/UNKNOWN, check that the generated\n"
856
"                         model satisfies user assertions [*]\n"
857
"  --check-proofs         after UNSAT/VALID, check the generated proof (with\n"
858
"                         proof) [*]\n"
859
"  --check-synth-sol      checks whether produced solutions to\n"
860
"                         functions-to-synthesize satisfy the conjecture [*]\n"
861
"  --check-unsat-cores    after UNSAT/VALID, produce and check an unsat core\n"
862
"                         (expensive) [*]\n"
863
"  --debug-check-models   after SAT/INVALID/UNKNOWN, check that the generated\n"
864
"                         model satisfies user and internal assertions [*]\n"
865
"  --diagnostic-output-channel=CHANNEL\n"
866
"                         set the diagnostic output channel of the solver\n"
867
"  --early-ite-removal    remove ITEs early in preprocessing [*]\n"
868
"  --expand-definitions   always expand symbol definitions in output [*]\n"
869
"  --ext-rew-prep         use extended rewriter as a preprocessing pass [*]\n"
870
"  --ext-rew-prep-agg     use aggressive extended rewriter as a preprocessing\n"
871
"                         pass [*]\n"
872
"  --foreign-theory-rewrite\n"
873
"                         Cross-theory rewrites [*]\n"
874
"  --ite-simp             turn on ite simplification (Kim (and Somenzi) et al.,\n"
875
"                         SAT 2009) [*]\n"
876
"  --learned-rewrite      rewrite the input based on learned literals [*]\n"
877
"  --minimal-unsat-cores  if an unsat core is produced, it is reduced to a\n"
878
"                         minimal unsat core [*]\n"
879
"  --model-cores=MODE     mode for producing model cores\n"
880
"  --model-u-print=MODE | --model-uninterp-print=MODE\n"
881
"                         determines how to print uninterpreted elements in\n"
882
"                         models\n"
883
"  --model-witness-value  in models, use a witness constant for choice functions\n"
884
"                         [*]\n"
885
"  --on-repeat-ite-simp   do the ite simplification pass again if repeating\n"
886
"                         simplification [*]\n"
887
"  --produce-assignments  support the get-assignment command [*]\n"
888
"  --produce-proofs       produce proofs, support check-proofs and get-proof [*]\n"
889
"  --produce-unsat-assumptions\n"
890
"                         turn on unsat assumptions generation [*]\n"
891
"  --produce-unsat-cores  turn on unsat core generation. Unless otherwise\n"
892
"                         specified, cores will be produced using SAT soving\n"
893
"                         under assumptions and preprocessing proofs. [*]\n"
894
"  --regular-output-channel=CHANNEL\n"
895
"                         set the regular output channel of the solver\n"
896
"  --repeat-simp          make multiple passes with nonclausal simplifier [*]\n"
897
"  --simp-ite-compress    enables compressing ites after ite simplification [*]\n"
898
"  --simp-ite-hunt-zombies=N\n"
899
"                         post ite compression enables zombie removal while the\n"
900
"                         number of nodes is above this threshold\n"
901
"  --simp-with-care       enables simplifyWithCare in ite simplificiation [*]\n"
902
"  --simplification=MODE | --simplification-mode=MODE\n"
903
"                         choose simplification mode, see --simplification=help\n"
904
"  --sort-inference       calculate sort inference of input problem, convert the\n"
905
"                         input based on monotonic sorts [*]\n"
906
"  --static-learning      use static learning (on by default) [*]\n"
907
"  --sygus-out=MODE       output mode for sygus\n"
908
"  --sygus-print-callbacks\n"
909
"                         use sygus print callbacks to print sygus terms in the\n"
910
"                         user-provided form (disable for debugging) [*]\n"
911
"  --unconstrained-simp   turn on unconstrained simplification (see\n"
912
"                         Bruttomesso/Brummayer PhD thesis). Fully supported only\n"
913
"                         in (subsets of) the logic QF_ABV. [*]\n"
914
"  --unsat-cores-mode=MODE\n"
915
"                         choose unsat core mode, see --unsat-cores-mode=help\n"
916
"\nFrom the Strings Theory module:\n"
917
"  --re-elim              elimination techniques for regular expressions [*]\n"
918
"  --re-elim-agg          aggressive elimination techniques for regular\n"
919
"                         expressions [*]\n"
920
"  --re-inter-mode=MODE   determines which regular expressions intersections to\n"
921
"                         compute (EXPERTS only)\n"
922
"  --strings-check-entail-len\n"
923
"                         check entailment between length terms to reduce\n"
924
"                         splitting [*]\n"
925
"  --strings-eager        strings eager check [*]\n"
926
"  --strings-eager-eval   perform eager context-dependent evaluation for\n"
927
"                         applications of string kinds [*]\n"
928
"  --strings-eager-len    strings eager length lemmas [*]\n"
929
"  --strings-exp          experimental features in the theory of strings [*]\n"
930
"  --strings-ff           do flat form inferences [*]\n"
931
"  --strings-fmf          the finite model finding used by the theory of strings\n"
932
"                         [*]\n"
933
"  --strings-guess-model  use model guessing to avoid string extended function\n"
934
"                         reductions [*]\n"
935
"  --strings-infer-as-lemmas\n"
936
"                         always send lemmas out instead of making internal\n"
937
"                         inferences [*]\n"
938
"  --strings-infer-sym    strings split on empty string [*]\n"
939
"  --strings-lazy-pp      perform string preprocessing lazily [*]\n"
940
"  --strings-len-norm     strings length normalization lemma [*]\n"
941
"  --strings-lprop-csp    do length propagation based on constant splits [*]\n"
942
"  --strings-min-prefix-explain\n"
943
"                         minimize explanations for prefix of normal forms in\n"
944
"                         strings [*]\n"
945
"  --strings-process-loop-mode=MODE\n"
946
"                         determines how to process looping string equations\n"
947
"                         (EXPERTS only)\n"
948
"  --strings-rexplain-lemmas\n"
949
"                         regression explanations for string lemmas [*]\n"
950
"  --strings-unified-vspt use a single skolem for the variable splitting rule [*]\n"
951
"\nFrom the Theory Layer module:\n"
952
"  --assign-function-values\n"
953
"                         assign values for uninterpreted functions in models [*]\n"
954
"  --condense-function-values\n"
955
"                         condense values for functions in models rather than\n"
956
"                         explicitly representing them [*]\n"
957
"  --ee-mode=MODE         mode for managing equalities across theory solvers\n"
958
"                         (EXPERTS only)\n"
959
"  --relevance-filter     enable analysis of relevance of asserted literals with\n"
960
"                         respect to the input formula [*]\n"
961
"  --tc-mode=MODE         mode for theory combination (EXPERTS only)\n"
962
"  --theoryof-mode=MODE   mode for Theory::theoryof() (EXPERTS only)\n"
963
"\nFrom the Uninterpreted Functions Theory module:\n"
964
"  --symmetry-breaker | --uf-symmetry-breaker\n"
965
"                         use UF symmetry breaker (Deharbe et al., CADE 2011) [*]\n"
966
"  --uf-ho                enable support for higher-order reasoning [*]\n"
967
"  --uf-ho-ext            apply extensionality on function symbols [*]\n"
968
"  --uf-ss-abort-card=N   tells the uf with cardinality to only consider models\n"
969
"                         that interpret uninterpreted sorts of cardinality at\n"
970
"                         most N (-1 == no limit, default)\n"
971
"  --uf-ss-fair           use fair strategy for finite model finding multiple\n"
972
"                         sorts [*]\n"
973
"  --uf-ss-fair-monotone  group monotone sorts when enforcing fairness for finite\n"
974
"                         model finding [*]\n"
975
"  --uf-ss-totality-limited=N\n"
976
"                         apply totality axioms, but only up to cardinality N (-1\n"
977
"                         == do not apply totality axioms, default)\n"
978
"  --uf-ss-totality-sym-break\n"
979
"                         apply symmetry breaking for totality axioms [*]\n"
980
"  --uf-ss=MODE           mode of operation for uf with cardinality solver.\n";
981
982
9760
static const std::string optionsFootnote = "\n\
983
[*] Each of these options has a --no-OPTIONNAME variant, which reverses the\n\
984
    sense of the option.\n\
985
";
986
987
9760
static const std::string languageDescription =
988
    "\
989
Languages currently supported as arguments to the -L / --lang option:\n\
990
  auto                           attempt to automatically determine language\n\
991
  cvc | presentation | pl        CVC presentation language\n\
992
  smt | smtlib | smt2 |\n\
993
  smt2.6 | smtlib2.6             SMT-LIB format 2.6 with support for the strings standard\n\
994
  tptp                           TPTP format (cnf, fof and tff)\n\
995
  sygus | sygus2                 SyGuS version 2.0\n\
996
\n\
997
Languages currently supported as arguments to the --output-lang option:\n\
998
  auto                           match output language to input language\n\
999
  cvc | presentation | pl        CVC presentation language\n\
1000
  smt | smtlib | smt2 |\n\
1001
  smt2.6 | smtlib2.6             SMT-LIB format 2.6 with support for the strings standard\n\
1002
  tptp                           TPTP format\n\
1003
  ast                            internal format (simple syntax trees)\n\
1004
";
1005
// clang-format on
1006
1007
const std::string& getDescription()
1008
{
1009
  return optionsDescription;
1010
}
1011
1012
void printUsage(const std::string& msg, std::ostream& os) {
1013
  os << msg << optionsDescription << std::endl
1014
      << optionsFootnote << std::endl << std::flush;
1015
}
1016
1017
void printShortUsage(const std::string& msg, std::ostream& os) {
1018
  os << msg << mostCommonOptionsDescription << std::endl
1019
      << optionsFootnote << std::endl
1020
      << "For full usage, please use --help."
1021
      << std::endl << std::endl << std::flush;
1022
}
1023
1024
void printLanguageHelp(std::ostream& os) {
1025
  os << languageDescription << std::flush;
1026
}
1027
1028
/** Set a given Options* as "current" just for a particular scope. */
1029
class OptionsGuard {
1030
  Options** d_field;
1031
  Options* d_old;
1032
public:
1033
8783
  OptionsGuard(Options** field, Options* opts) :
1034
    d_field(field),
1035
8783
    d_old(*field) {
1036
8783
    *field = opts;
1037
8783
  }
1038
12368
  ~OptionsGuard() {
1039
6184
    *d_field = d_old;
1040
6184
  }
1041
};/* class OptionsGuard */
1042
1043
/**
1044
 * This is a table of long options.  By policy, each short option
1045
 * should have an equivalent long option (but the reverse isn't the
1046
 * case), so this table should thus contain all command-line options.
1047
 *
1048
 * Each option in this array has four elements:
1049
 *
1050
 * 1. the long option string
1051
 * 2. argument behavior for the option:
1052
 *    no_argument - no argument permitted
1053
 *    required_argument - an argument is expected
1054
 *    optional_argument - an argument is permitted but not required
1055
 * 3. this is a pointer to an int which is set to the 4th entry of the
1056
 *    array if the option is present; or NULL, in which case
1057
 *    getopt_long() returns the 4th entry
1058
 * 4. the return value for getopt_long() when this long option (or the
1059
 *    value to set the 3rd entry to; see #3)
1060
 *
1061
 * If you add something here, you should add it in src/main/usage.h
1062
 * also, to document it.
1063
 *
1064
 * If you add something that has a short option equivalent, you should
1065
 * add it to the getopt_long() call in parse().
1066
 */
1067
// clang-format off
1068
static struct option cmdlineOptions[] = {
1069
  { "approx-branch-depth", required_argument, nullptr, 256 },
1070
  { "arith-brab", no_argument, nullptr, 257 },
1071
  { "no-arith-brab", no_argument, nullptr, 258 },
1072
  { "arith-cong-man", no_argument, nullptr, 259 },
1073
  { "no-arith-cong-man", no_argument, nullptr, 260 },
1074
  { "arith-eq-solver", no_argument, nullptr, 261 },
1075
  { "no-arith-eq-solver", no_argument, nullptr, 262 },
1076
  { "arith-no-partial-fun", no_argument, nullptr, 263 },
1077
  { "no-arith-no-partial-fun", no_argument, nullptr, 264 },
1078
  { "arith-prop-clauses", required_argument, nullptr, 265 },
1079
  { "arith-prop", required_argument, nullptr, 266 },
1080
  { "arith-rewrite-equalities", no_argument, nullptr, 267 },
1081
  { "no-arith-rewrite-equalities", no_argument, nullptr, 268 },
1082
  { "collect-pivot-stats", no_argument, nullptr, 269 },
1083
  { "no-collect-pivot-stats", no_argument, nullptr, 270 },
1084
  { "cut-all-bounded", no_argument, nullptr, 271 },
1085
  { "no-cut-all-bounded", no_argument, nullptr, 272 },
1086
  { "dio-decomps", no_argument, nullptr, 273 },
1087
  { "no-dio-decomps", no_argument, nullptr, 274 },
1088
  { "dio-repeat", no_argument, nullptr, 275 },
1089
  { "no-dio-repeat", no_argument, nullptr, 276 },
1090
  { "dio-solver", no_argument, nullptr, 277 },
1091
  { "no-dio-solver", no_argument, nullptr, 278 },
1092
  { "dio-turns", required_argument, nullptr, 279 },
1093
  { "error-selection-rule", required_argument, nullptr, 280 },
1094
  { "fc-penalties", no_argument, nullptr, 281 },
1095
  { "no-fc-penalties", no_argument, nullptr, 282 },
1096
  { "heuristic-pivots", required_argument, nullptr, 283 },
1097
  { "lemmas-on-replay-failure", no_argument, nullptr, 284 },
1098
  { "no-lemmas-on-replay-failure", no_argument, nullptr, 285 },
1099
  { "maxCutsInContext", required_argument, nullptr, 286 },
1100
  { "miplib-trick", no_argument, nullptr, 287 },
1101
  { "no-miplib-trick", no_argument, nullptr, 288 },
1102
  { "miplib-trick-subs", required_argument, nullptr, 289 },
1103
  { "new-prop", no_argument, nullptr, 290 },
1104
  { "no-new-prop", no_argument, nullptr, 291 },
1105
  { "nl-cad", no_argument, nullptr, 292 },
1106
  { "no-nl-cad", no_argument, nullptr, 293 },
1107
  { "nl-cad-initial", no_argument, nullptr, 294 },
1108
  { "no-nl-cad-initial", no_argument, nullptr, 295 },
1109
  { "nl-cad-lift", required_argument, nullptr, 296 },
1110
  { "nl-cad-proj", required_argument, nullptr, 297 },
1111
  { "nl-ext-ent-conf", no_argument, nullptr, 298 },
1112
  { "no-nl-ext-ent-conf", no_argument, nullptr, 299 },
1113
  { "nl-ext-factor", no_argument, nullptr, 300 },
1114
  { "no-nl-ext-factor", no_argument, nullptr, 301 },
1115
  { "nl-ext-inc-prec", no_argument, nullptr, 302 },
1116
  { "no-nl-ext-inc-prec", no_argument, nullptr, 303 },
1117
  { "nl-ext-purify", no_argument, nullptr, 304 },
1118
  { "no-nl-ext-purify", no_argument, nullptr, 305 },
1119
  { "nl-ext-rbound", no_argument, nullptr, 306 },
1120
  { "no-nl-ext-rbound", no_argument, nullptr, 307 },
1121
  { "nl-ext-rewrite", no_argument, nullptr, 308 },
1122
  { "no-nl-ext-rewrite", no_argument, nullptr, 309 },
1123
  { "nl-ext-split-zero", no_argument, nullptr, 310 },
1124
  { "no-nl-ext-split-zero", no_argument, nullptr, 311 },
1125
  { "nl-ext-tf-taylor-deg", required_argument, nullptr, 312 },
1126
  { "nl-ext-tf-tplanes", no_argument, nullptr, 313 },
1127
  { "no-nl-ext-tf-tplanes", no_argument, nullptr, 314 },
1128
  { "nl-ext-tplanes", no_argument, nullptr, 315 },
1129
  { "no-nl-ext-tplanes", no_argument, nullptr, 316 },
1130
  { "nl-ext-tplanes-interleave", no_argument, nullptr, 317 },
1131
  { "no-nl-ext-tplanes-interleave", no_argument, nullptr, 318 },
1132
  { "nl-ext", required_argument, nullptr, 319 },
1133
  { "nl-icp", no_argument, nullptr, 320 },
1134
  { "no-nl-icp", no_argument, nullptr, 321 },
1135
  { "nl-rlv", required_argument, nullptr, 322 },
1136
  { "pb-rewrites", no_argument, nullptr, 323 },
1137
  { "no-pb-rewrites", no_argument, nullptr, 324 },
1138
  { "pivot-threshold", required_argument, nullptr, 325 },
1139
  { "pp-assert-max-sub-size", required_argument, nullptr, 326 },
1140
  { "prop-row-length", required_argument, nullptr, 327 },
1141
  { "replay-early-close-depth", required_argument, nullptr, 328 },
1142
  { "replay-failure-penalty", required_argument, nullptr, 329 },
1143
  { "replay-lemma-reject-cut", required_argument, nullptr, 330 },
1144
  { "replay-num-err-penalty", required_argument, nullptr, 331 },
1145
  { "replay-reject-cut", required_argument, nullptr, 332 },
1146
  { "replay-soi-major-threshold-pen", required_argument, nullptr, 333 },
1147
  { "replay-soi-major-threshold", required_argument, nullptr, 334 },
1148
  { "replay-soi-minor-threshold-pen", required_argument, nullptr, 335 },
1149
  { "replay-soi-minor-threshold", required_argument, nullptr, 336 },
1150
  { "restrict-pivots", no_argument, nullptr, 337 },
1151
  { "no-restrict-pivots", no_argument, nullptr, 338 },
1152
  { "revert-arith-models-on-unsat", no_argument, nullptr, 339 },
1153
  { "no-revert-arith-models-on-unsat", no_argument, nullptr, 340 },
1154
  { "rr-turns", required_argument, nullptr, 341 },
1155
  { "se-solve-int", no_argument, nullptr, 342 },
1156
  { "no-se-solve-int", no_argument, nullptr, 343 },
1157
  { "simplex-check-period", required_argument, nullptr, 344 },
1158
  { "soi-qe", no_argument, nullptr, 345 },
1159
  { "no-soi-qe", no_argument, nullptr, 346 },
1160
  { "standard-effort-variable-order-pivots", required_argument, nullptr, 347 },
1161
  { "unate-lemmas", required_argument, nullptr, 348 },
1162
  { "use-approx", no_argument, nullptr, 349 },
1163
  { "no-use-approx", no_argument, nullptr, 350 },
1164
  { "use-fcsimplex", no_argument, nullptr, 351 },
1165
  { "no-use-fcsimplex", no_argument, nullptr, 352 },
1166
  { "use-soi", no_argument, nullptr, 353 },
1167
  { "no-use-soi", no_argument, nullptr, 354 },
1168
  { "arrays-config", required_argument, nullptr, 355 },
1169
  { "arrays-eager-index", no_argument, nullptr, 356 },
1170
  { "no-arrays-eager-index", no_argument, nullptr, 357 },
1171
  { "arrays-eager-lemmas", no_argument, nullptr, 358 },
1172
  { "no-arrays-eager-lemmas", no_argument, nullptr, 359 },
1173
  { "arrays-exp", no_argument, nullptr, 360 },
1174
  { "no-arrays-exp", no_argument, nullptr, 361 },
1175
  { "arrays-model-based", no_argument, nullptr, 362 },
1176
  { "no-arrays-model-based", no_argument, nullptr, 363 },
1177
  { "arrays-optimize-linear", no_argument, nullptr, 364 },
1178
  { "no-arrays-optimize-linear", no_argument, nullptr, 365 },
1179
  { "arrays-prop", required_argument, nullptr, 366 },
1180
  { "arrays-reduce-sharing", no_argument, nullptr, 367 },
1181
  { "no-arrays-reduce-sharing", no_argument, nullptr, 368 },
1182
  { "arrays-weak-equiv", no_argument, nullptr, 369 },
1183
  { "no-arrays-weak-equiv", no_argument, nullptr, 370 },
1184
  { "debug", required_argument, nullptr, 371 },
1185
  { "incremental", no_argument, nullptr, 372 },
1186
  { "no-incremental", no_argument, nullptr, 373 },
1187
  { "lang", required_argument, nullptr, 374 },
1188
  { "input-language", required_argument, nullptr, 375 },
1189
  { "output-lang", required_argument, nullptr, 376 },
1190
  { "output-language", required_argument, nullptr, 377 },
1191
  { "output", required_argument, nullptr, 378 },
1192
  { "parse-only", no_argument, nullptr, 379 },
1193
  { "no-parse-only", no_argument, nullptr, 380 },
1194
  { "preprocess-only", no_argument, nullptr, 381 },
1195
  { "no-preprocess-only", no_argument, nullptr, 382 },
1196
  { "print-success", no_argument, nullptr, 383 },
1197
  { "no-print-success", no_argument, nullptr, 384 },
1198
  { "quiet", no_argument, nullptr, 385 },
1199
  { "rlimit-per", required_argument, nullptr, 386 },
1200
  { "reproducible-resource-limit", required_argument, nullptr, 387 },
1201
  { "rlimit", required_argument, nullptr, 388 },
1202
  { "rweight", required_argument, nullptr, 389 },
1203
  { "stats", no_argument, nullptr, 390 },
1204
  { "no-stats", no_argument, nullptr, 391 },
1205
  { "stats-all", no_argument, nullptr, 392 },
1206
  { "no-stats-all", no_argument, nullptr, 393 },
1207
  { "stats-every-query", no_argument, nullptr, 394 },
1208
  { "no-stats-every-query", no_argument, nullptr, 395 },
1209
  { "stats-expert", no_argument, nullptr, 396 },
1210
  { "no-stats-expert", no_argument, nullptr, 397 },
1211
  { "tlimit-per", required_argument, nullptr, 398 },
1212
  { "tlimit", required_argument, nullptr, 399 },
1213
  { "trace", required_argument, nullptr, 400 },
1214
  { "verbose", no_argument, nullptr, 401 },
1215
  { "verbosity", required_argument, nullptr, 402 },
1216
  { "bitblast-aig", no_argument, nullptr, 403 },
1217
  { "no-bitblast-aig", no_argument, nullptr, 404 },
1218
  { "bitblast", required_argument, nullptr, 405 },
1219
  { "bitwise-eq", no_argument, nullptr, 406 },
1220
  { "no-bitwise-eq", no_argument, nullptr, 407 },
1221
  { "bool-to-bv", required_argument, nullptr, 408 },
1222
  { "bv-abstraction", no_argument, nullptr, 409 },
1223
  { "no-bv-abstraction", no_argument, nullptr, 410 },
1224
  { "bv-aig-simp", required_argument, nullptr, 411 },
1225
  { "bv-alg-extf", no_argument, nullptr, 412 },
1226
  { "no-bv-alg-extf", no_argument, nullptr, 413 },
1227
  { "bv-algebraic-budget", required_argument, nullptr, 414 },
1228
  { "bv-algebraic-solver", no_argument, nullptr, 415 },
1229
  { "no-bv-algebraic-solver", no_argument, nullptr, 416 },
1230
  { "bv-assert-input", no_argument, nullptr, 417 },
1231
  { "no-bv-assert-input", no_argument, nullptr, 418 },
1232
  { "bv-eager-explanations", no_argument, nullptr, 419 },
1233
  { "no-bv-eager-explanations", no_argument, nullptr, 420 },
1234
  { "bv-eq-solver", no_argument, nullptr, 421 },
1235
  { "no-bv-eq-solver", no_argument, nullptr, 422 },
1236
  { "bv-extract-arith", no_argument, nullptr, 423 },
1237
  { "no-bv-extract-arith", no_argument, nullptr, 424 },
1238
  { "bv-gauss-elim", no_argument, nullptr, 425 },
1239
  { "no-bv-gauss-elim", no_argument, nullptr, 426 },
1240
  { "bv-inequality-solver", no_argument, nullptr, 427 },
1241
  { "no-bv-inequality-solver", no_argument, nullptr, 428 },
1242
  { "bv-intro-pow2", no_argument, nullptr, 429 },
1243
  { "no-bv-intro-pow2", no_argument, nullptr, 430 },
1244
  { "bv-num-func", required_argument, nullptr, 431 },
1245
  { "bv-print-consts-as-indexed-symbols", no_argument, nullptr, 432 },
1246
  { "no-bv-print-consts-as-indexed-symbols", no_argument, nullptr, 433 },
1247
  { "bv-propagate", no_argument, nullptr, 434 },
1248
  { "no-bv-propagate", no_argument, nullptr, 435 },
1249
  { "bv-quick-xplain", no_argument, nullptr, 436 },
1250
  { "no-bv-quick-xplain", no_argument, nullptr, 437 },
1251
  { "bv-sat-solver", required_argument, nullptr, 438 },
1252
  { "bv-skolemize", no_argument, nullptr, 439 },
1253
  { "no-bv-skolemize", no_argument, nullptr, 440 },
1254
  { "bv-solver", required_argument, nullptr, 441 },
1255
  { "bv-to-bool", no_argument, nullptr, 442 },
1256
  { "no-bv-to-bool", no_argument, nullptr, 443 },
1257
  { "cdt-bisimilar", no_argument, nullptr, 444 },
1258
  { "no-cdt-bisimilar", no_argument, nullptr, 445 },
1259
  { "dt-binary-split", no_argument, nullptr, 446 },
1260
  { "no-dt-binary-split", no_argument, nullptr, 447 },
1261
  { "dt-blast-splits", no_argument, nullptr, 448 },
1262
  { "no-dt-blast-splits", no_argument, nullptr, 449 },
1263
  { "dt-cyclic", no_argument, nullptr, 450 },
1264
  { "no-dt-cyclic", no_argument, nullptr, 451 },
1265
  { "dt-force-assignment", no_argument, nullptr, 452 },
1266
  { "no-dt-force-assignment", no_argument, nullptr, 453 },
1267
  { "dt-infer-as-lemmas", no_argument, nullptr, 454 },
1268
  { "no-dt-infer-as-lemmas", no_argument, nullptr, 455 },
1269
  { "dt-nested-rec", no_argument, nullptr, 456 },
1270
  { "no-dt-nested-rec", no_argument, nullptr, 457 },
1271
  { "dt-polite-optimize", no_argument, nullptr, 458 },
1272
  { "no-dt-polite-optimize", no_argument, nullptr, 459 },
1273
  { "dt-rewrite-error-sel", no_argument, nullptr, 460 },
1274
  { "no-dt-rewrite-error-sel", no_argument, nullptr, 461 },
1275
  { "dt-share-sel", no_argument, nullptr, 462 },
1276
  { "no-dt-share-sel", no_argument, nullptr, 463 },
1277
  { "sygus-abort-size", required_argument, nullptr, 464 },
1278
  { "sygus-fair-max", no_argument, nullptr, 465 },
1279
  { "no-sygus-fair-max", no_argument, nullptr, 466 },
1280
  { "sygus-fair", required_argument, nullptr, 467 },
1281
  { "sygus-sym-break", no_argument, nullptr, 468 },
1282
  { "no-sygus-sym-break", no_argument, nullptr, 469 },
1283
  { "sygus-sym-break-agg", no_argument, nullptr, 470 },
1284
  { "no-sygus-sym-break-agg", no_argument, nullptr, 471 },
1285
  { "sygus-sym-break-dynamic", no_argument, nullptr, 472 },
1286
  { "no-sygus-sym-break-dynamic", no_argument, nullptr, 473 },
1287
  { "sygus-sym-break-lazy", no_argument, nullptr, 474 },
1288
  { "no-sygus-sym-break-lazy", no_argument, nullptr, 475 },
1289
  { "sygus-sym-break-pbe", no_argument, nullptr, 476 },
1290
  { "no-sygus-sym-break-pbe", no_argument, nullptr, 477 },
1291
  { "sygus-sym-break-rlv", no_argument, nullptr, 478 },
1292
  { "no-sygus-sym-break-rlv", no_argument, nullptr, 479 },
1293
  { "decision-random-weight", required_argument, nullptr, 480 },
1294
  { "decision-threshold", required_argument, nullptr, 481 },
1295
  { "decision-use-weight", no_argument, nullptr, 482 },
1296
  { "no-decision-use-weight", no_argument, nullptr, 483 },
1297
  { "decision-weight-internal", required_argument, nullptr, 484 },
1298
  { "decision", required_argument, nullptr, 485 },
1299
  { "decision-mode", required_argument, nullptr, 486 },
1300
  { "jh-rlv-order", no_argument, nullptr, 487 },
1301
  { "no-jh-rlv-order", no_argument, nullptr, 488 },
1302
  { "jh-skolem-rlv", required_argument, nullptr, 489 },
1303
  { "jh-skolem", required_argument, nullptr, 490 },
1304
  { "dag-thresh", required_argument, nullptr, 491 },
1305
  { "expr-depth", required_argument, nullptr, 492 },
1306
  { "type-checking", no_argument, nullptr, 493 },
1307
  { "no-type-checking", no_argument, nullptr, 494 },
1308
  { "fp-exp", no_argument, nullptr, 495 },
1309
  { "no-fp-exp", no_argument, nullptr, 496 },
1310
  { "fp-lazy-wb", no_argument, nullptr, 497 },
1311
  { "no-fp-lazy-wb", no_argument, nullptr, 498 },
1312
  { "copyright", no_argument, nullptr, 499 },
1313
  { "dump-instantiations", no_argument, nullptr, 500 },
1314
  { "no-dump-instantiations", no_argument, nullptr, 501 },
1315
  { "dump-models", no_argument, nullptr, 502 },
1316
  { "no-dump-models", no_argument, nullptr, 503 },
1317
  { "dump-proofs", no_argument, nullptr, 504 },
1318
  { "no-dump-proofs", no_argument, nullptr, 505 },
1319
  { "dump-unsat-cores", no_argument, nullptr, 506 },
1320
  { "no-dump-unsat-cores", no_argument, nullptr, 507 },
1321
  { "dump-unsat-cores-full", no_argument, nullptr, 508 },
1322
  { "no-dump-unsat-cores-full", no_argument, nullptr, 509 },
1323
  { "early-exit", no_argument, nullptr, 510 },
1324
  { "no-early-exit", no_argument, nullptr, 511 },
1325
  { "force-no-limit-cpu-while-dump", no_argument, nullptr, 512 },
1326
  { "no-force-no-limit-cpu-while-dump", no_argument, nullptr, 513 },
1327
  { "help", no_argument, nullptr, 514 },
1328
  { "interactive", no_argument, nullptr, 515 },
1329
  { "no-interactive", no_argument, nullptr, 516 },
1330
  { "interactive-prompt", no_argument, nullptr, 517 },
1331
  { "no-interactive-prompt", no_argument, nullptr, 518 },
1332
  { "seed", required_argument, nullptr, 519 },
1333
  { "segv-spin", no_argument, nullptr, 520 },
1334
  { "no-segv-spin", no_argument, nullptr, 521 },
1335
  { "show-config", no_argument, nullptr, 522 },
1336
  { "show-debug-tags", no_argument, nullptr, 523 },
1337
  { "show-trace-tags", no_argument, nullptr, 524 },
1338
  { "version", no_argument, nullptr, 525 },
1339
  { "filesystem-access", no_argument, nullptr, 526 },
1340
  { "no-filesystem-access", no_argument, nullptr, 527 },
1341
  { "force-logic", required_argument, nullptr, 528 },
1342
  { "global-declarations", no_argument, nullptr, 529 },
1343
  { "no-global-declarations", no_argument, nullptr, 530 },
1344
  { "mmap", no_argument, nullptr, 531 },
1345
  { "no-mmap", no_argument, nullptr, 532 },
1346
  { "semantic-checks", no_argument, nullptr, 533 },
1347
  { "no-semantic-checks", no_argument, nullptr, 534 },
1348
  { "strict-parsing", no_argument, nullptr, 535 },
1349
  { "no-strict-parsing", no_argument, nullptr, 536 },
1350
  { "flatten-ho-chains", no_argument, nullptr, 537 },
1351
  { "no-flatten-ho-chains", no_argument, nullptr, 538 },
1352
  { "inst-format", required_argument, nullptr, 539 },
1353
  { "model-format", required_argument, nullptr, 540 },
1354
  { "print-inst-full", no_argument, nullptr, 541 },
1355
  { "no-print-inst-full", no_argument, nullptr, 542 },
1356
  { "print-inst", required_argument, nullptr, 543 },
1357
  { "proof-eager-checking", no_argument, nullptr, 544 },
1358
  { "no-proof-eager-checking", no_argument, nullptr, 545 },
1359
  { "proof-format-mode", required_argument, nullptr, 546 },
1360
  { "proof-granularity", required_argument, nullptr, 547 },
1361
  { "proof-pedantic", required_argument, nullptr, 548 },
1362
  { "proof-print-conclusion", no_argument, nullptr, 549 },
1363
  { "no-proof-print-conclusion", no_argument, nullptr, 550 },
1364
  { "minisat-dump-dimacs", no_argument, nullptr, 551 },
1365
  { "no-minisat-dump-dimacs", no_argument, nullptr, 552 },
1366
  { "minisat-elimination", no_argument, nullptr, 553 },
1367
  { "no-minisat-elimination", no_argument, nullptr, 554 },
1368
  { "random-freq", required_argument, nullptr, 555 },
1369
  { "random-frequency", required_argument, nullptr, 556 },
1370
  { "random-seed", required_argument, nullptr, 557 },
1371
  { "refine-conflicts", no_argument, nullptr, 558 },
1372
  { "no-refine-conflicts", no_argument, nullptr, 559 },
1373
  { "restart-int-base", required_argument, nullptr, 560 },
1374
  { "restart-int-inc", required_argument, nullptr, 561 },
1375
  { "ag-miniscope-quant", no_argument, nullptr, 562 },
1376
  { "no-ag-miniscope-quant", no_argument, nullptr, 563 },
1377
  { "cegis-sample", required_argument, nullptr, 564 },
1378
  { "cegqi", no_argument, nullptr, 565 },
1379
  { "no-cegqi", no_argument, nullptr, 566 },
1380
  { "cegqi-all", no_argument, nullptr, 567 },
1381
  { "no-cegqi-all", no_argument, nullptr, 568 },
1382
  { "cegqi-bv", no_argument, nullptr, 569 },
1383
  { "no-cegqi-bv", no_argument, nullptr, 570 },
1384
  { "cegqi-bv-concat-inv", no_argument, nullptr, 571 },
1385
  { "no-cegqi-bv-concat-inv", no_argument, nullptr, 572 },
1386
  { "cegqi-bv-ineq", required_argument, nullptr, 573 },
1387
  { "cegqi-bv-interleave-value", no_argument, nullptr, 574 },
1388
  { "no-cegqi-bv-interleave-value", no_argument, nullptr, 575 },
1389
  { "cegqi-bv-linear", no_argument, nullptr, 576 },
1390
  { "no-cegqi-bv-linear", no_argument, nullptr, 577 },
1391
  { "cegqi-bv-rm-extract", no_argument, nullptr, 578 },
1392
  { "no-cegqi-bv-rm-extract", no_argument, nullptr, 579 },
1393
  { "cegqi-bv-solve-nl", no_argument, nullptr, 580 },
1394
  { "no-cegqi-bv-solve-nl", no_argument, nullptr, 581 },
1395
  { "cegqi-full", no_argument, nullptr, 582 },
1396
  { "no-cegqi-full", no_argument, nullptr, 583 },
1397
  { "cegqi-innermost", no_argument, nullptr, 584 },
1398
  { "no-cegqi-innermost", no_argument, nullptr, 585 },
1399
  { "cegqi-midpoint", no_argument, nullptr, 586 },
1400
  { "no-cegqi-midpoint", no_argument, nullptr, 587 },
1401
  { "cegqi-min-bounds", no_argument, nullptr, 588 },
1402
  { "no-cegqi-min-bounds", no_argument, nullptr, 589 },
1403
  { "cegqi-model", no_argument, nullptr, 590 },
1404
  { "no-cegqi-model", no_argument, nullptr, 591 },
1405
  { "cegqi-multi-inst", no_argument, nullptr, 592 },
1406
  { "no-cegqi-multi-inst", no_argument, nullptr, 593 },
1407
  { "cegqi-nested-qe", no_argument, nullptr, 594 },
1408
  { "no-cegqi-nested-qe", no_argument, nullptr, 595 },
1409
  { "cegqi-nopt", no_argument, nullptr, 596 },
1410
  { "no-cegqi-nopt", no_argument, nullptr, 597 },
1411
  { "cegqi-repeat-lit", no_argument, nullptr, 598 },
1412
  { "no-cegqi-repeat-lit", no_argument, nullptr, 599 },
1413
  { "cegqi-round-up-lia", no_argument, nullptr, 600 },
1414
  { "no-cegqi-round-up-lia", no_argument, nullptr, 601 },
1415
  { "cegqi-sat", no_argument, nullptr, 602 },
1416
  { "no-cegqi-sat", no_argument, nullptr, 603 },
1417
  { "cegqi-use-inf-int", no_argument, nullptr, 604 },
1418
  { "no-cegqi-use-inf-int", no_argument, nullptr, 605 },
1419
  { "cegqi-use-inf-real", no_argument, nullptr, 606 },
1420
  { "no-cegqi-use-inf-real", no_argument, nullptr, 607 },
1421
  { "cond-var-split-agg-quant", no_argument, nullptr, 608 },
1422
  { "no-cond-var-split-agg-quant", no_argument, nullptr, 609 },
1423
  { "cond-var-split-quant", no_argument, nullptr, 610 },
1424
  { "no-cond-var-split-quant", no_argument, nullptr, 611 },
1425
  { "conjecture-filter-active-terms", no_argument, nullptr, 612 },
1426
  { "no-conjecture-filter-active-terms", no_argument, nullptr, 613 },
1427
  { "conjecture-filter-canonical", no_argument, nullptr, 614 },
1428
  { "no-conjecture-filter-canonical", no_argument, nullptr, 615 },
1429
  { "conjecture-filter-model", no_argument, nullptr, 616 },
1430
  { "no-conjecture-filter-model", no_argument, nullptr, 617 },
1431
  { "conjecture-gen", no_argument, nullptr, 618 },
1432
  { "no-conjecture-gen", no_argument, nullptr, 619 },
1433
  { "conjecture-gen-gt-enum", required_argument, nullptr, 620 },
1434
  { "conjecture-gen-max-depth", required_argument, nullptr, 621 },
1435
  { "conjecture-gen-per-round", required_argument, nullptr, 622 },
1436
  { "conjecture-gen-uee-intro", no_argument, nullptr, 623 },
1437
  { "no-conjecture-gen-uee-intro", no_argument, nullptr, 624 },
1438
  { "conjecture-no-filter", no_argument, nullptr, 625 },
1439
  { "no-conjecture-no-filter", no_argument, nullptr, 626 },
1440
  { "dt-stc-ind", no_argument, nullptr, 627 },
1441
  { "no-dt-stc-ind", no_argument, nullptr, 628 },
1442
  { "dt-var-exp-quant", no_argument, nullptr, 629 },
1443
  { "no-dt-var-exp-quant", no_argument, nullptr, 630 },
1444
  { "e-matching", no_argument, nullptr, 631 },
1445
  { "no-e-matching", no_argument, nullptr, 632 },
1446
  { "elim-taut-quant", no_argument, nullptr, 633 },
1447
  { "no-elim-taut-quant", no_argument, nullptr, 634 },
1448
  { "ext-rewrite-quant", no_argument, nullptr, 635 },
1449
  { "no-ext-rewrite-quant", no_argument, nullptr, 636 },
1450
  { "finite-model-find", no_argument, nullptr, 637 },
1451
  { "no-finite-model-find", no_argument, nullptr, 638 },
1452
  { "fmf-bound", no_argument, nullptr, 639 },
1453
  { "no-fmf-bound", no_argument, nullptr, 640 },
1454
  { "fmf-bound-int", no_argument, nullptr, 641 },
1455
  { "no-fmf-bound-int", no_argument, nullptr, 642 },
1456
  { "fmf-bound-lazy", no_argument, nullptr, 643 },
1457
  { "no-fmf-bound-lazy", no_argument, nullptr, 644 },
1458
  { "fmf-fmc-simple", no_argument, nullptr, 645 },
1459
  { "no-fmf-fmc-simple", no_argument, nullptr, 646 },
1460
  { "fmf-fresh-dc", no_argument, nullptr, 647 },
1461
  { "no-fmf-fresh-dc", no_argument, nullptr, 648 },
1462
  { "fmf-fun", no_argument, nullptr, 649 },
1463
  { "no-fmf-fun", no_argument, nullptr, 650 },
1464
  { "fmf-fun-rlv", no_argument, nullptr, 651 },
1465
  { "no-fmf-fun-rlv", no_argument, nullptr, 652 },
1466
  { "fmf-inst-engine", no_argument, nullptr, 653 },
1467
  { "no-fmf-inst-engine", no_argument, nullptr, 654 },
1468
  { "fmf-type-completion-thresh", required_argument, nullptr, 655 },
1469
  { "fs-interleave", no_argument, nullptr, 656 },
1470
  { "no-fs-interleave", no_argument, nullptr, 657 },
1471
  { "fs-stratify", no_argument, nullptr, 658 },
1472
  { "no-fs-stratify", no_argument, nullptr, 659 },
1473
  { "fs-sum", no_argument, nullptr, 660 },
1474
  { "no-fs-sum", no_argument, nullptr, 661 },
1475
  { "full-saturate-quant", no_argument, nullptr, 662 },
1476
  { "no-full-saturate-quant", no_argument, nullptr, 663 },
1477
  { "full-saturate-quant-limit", required_argument, nullptr, 664 },
1478
  { "full-saturate-quant-rd", no_argument, nullptr, 665 },
1479
  { "no-full-saturate-quant-rd", no_argument, nullptr, 666 },
1480
  { "global-negate", no_argument, nullptr, 667 },
1481
  { "no-global-negate", no_argument, nullptr, 668 },
1482
  { "ho-elim", no_argument, nullptr, 669 },
1483
  { "no-ho-elim", no_argument, nullptr, 670 },
1484
  { "ho-elim-store-ax", no_argument, nullptr, 671 },
1485
  { "no-ho-elim-store-ax", no_argument, nullptr, 672 },
1486
  { "ho-matching", no_argument, nullptr, 673 },
1487
  { "no-ho-matching", no_argument, nullptr, 674 },
1488
  { "ho-matching-var-priority", no_argument, nullptr, 675 },
1489
  { "no-ho-matching-var-priority", no_argument, nullptr, 676 },
1490
  { "ho-merge-term-db", no_argument, nullptr, 677 },
1491
  { "no-ho-merge-term-db", no_argument, nullptr, 678 },
1492
  { "increment-triggers", no_argument, nullptr, 679 },
1493
  { "no-increment-triggers", no_argument, nullptr, 680 },
1494
  { "inst-level-input-only", no_argument, nullptr, 681 },
1495
  { "no-inst-level-input-only", no_argument, nullptr, 682 },
1496
  { "inst-max-level", required_argument, nullptr, 683 },
1497
  { "inst-max-rounds", required_argument, nullptr, 684 },
1498
  { "inst-no-entail", no_argument, nullptr, 685 },
1499
  { "no-inst-no-entail", no_argument, nullptr, 686 },
1500
  { "inst-when-phase", required_argument, nullptr, 687 },
1501
  { "inst-when-strict-interleave", no_argument, nullptr, 688 },
1502
  { "no-inst-when-strict-interleave", no_argument, nullptr, 689 },
1503
  { "inst-when-tc-first", no_argument, nullptr, 690 },
1504
  { "no-inst-when-tc-first", no_argument, nullptr, 691 },
1505
  { "inst-when", required_argument, nullptr, 692 },
1506
  { "int-wf-ind", no_argument, nullptr, 693 },
1507
  { "no-int-wf-ind", no_argument, nullptr, 694 },
1508
  { "ite-dtt-split-quant", no_argument, nullptr, 695 },
1509
  { "no-ite-dtt-split-quant", no_argument, nullptr, 696 },
1510
  { "ite-lift-quant", required_argument, nullptr, 697 },
1511
  { "literal-matching", required_argument, nullptr, 698 },
1512
  { "macros-quant", no_argument, nullptr, 699 },
1513
  { "no-macros-quant", no_argument, nullptr, 700 },
1514
  { "macros-quant-mode", required_argument, nullptr, 701 },
1515
  { "mbqi-interleave", no_argument, nullptr, 702 },
1516
  { "no-mbqi-interleave", no_argument, nullptr, 703 },
1517
  { "mbqi-one-inst-per-round", no_argument, nullptr, 704 },
1518
  { "no-mbqi-one-inst-per-round", no_argument, nullptr, 705 },
1519
  { "mbqi", required_argument, nullptr, 706 },
1520
  { "miniscope-quant", no_argument, nullptr, 707 },
1521
  { "no-miniscope-quant", no_argument, nullptr, 708 },
1522
  { "miniscope-quant-fv", no_argument, nullptr, 709 },
1523
  { "no-miniscope-quant-fv", no_argument, nullptr, 710 },
1524
  { "multi-trigger-cache", no_argument, nullptr, 711 },
1525
  { "no-multi-trigger-cache", no_argument, nullptr, 712 },
1526
  { "multi-trigger-linear", no_argument, nullptr, 713 },
1527
  { "no-multi-trigger-linear", no_argument, nullptr, 714 },
1528
  { "multi-trigger-priority", no_argument, nullptr, 715 },
1529
  { "no-multi-trigger-priority", no_argument, nullptr, 716 },
1530
  { "multi-trigger-when-single", no_argument, nullptr, 717 },
1531
  { "no-multi-trigger-when-single", no_argument, nullptr, 718 },
1532
  { "partial-triggers", no_argument, nullptr, 719 },
1533
  { "no-partial-triggers", no_argument, nullptr, 720 },
1534
  { "pool-inst", no_argument, nullptr, 721 },
1535
  { "no-pool-inst", no_argument, nullptr, 722 },
1536
  { "pre-skolem-quant", no_argument, nullptr, 723 },
1537
  { "no-pre-skolem-quant", no_argument, nullptr, 724 },
1538
  { "pre-skolem-quant-agg", no_argument, nullptr, 725 },
1539
  { "no-pre-skolem-quant-agg", no_argument, nullptr, 726 },
1540
  { "pre-skolem-quant-nested", no_argument, nullptr, 727 },
1541
  { "no-pre-skolem-quant-nested", no_argument, nullptr, 728 },
1542
  { "prenex-quant-user", no_argument, nullptr, 729 },
1543
  { "no-prenex-quant-user", no_argument, nullptr, 730 },
1544
  { "prenex-quant", required_argument, nullptr, 731 },
1545
  { "purify-triggers", no_argument, nullptr, 732 },
1546
  { "no-purify-triggers", no_argument, nullptr, 733 },
1547
  { "qcf-all-conflict", no_argument, nullptr, 734 },
1548
  { "no-qcf-all-conflict", no_argument, nullptr, 735 },
1549
  { "qcf-eager-check-rd", no_argument, nullptr, 736 },
1550
  { "no-qcf-eager-check-rd", no_argument, nullptr, 737 },
1551
  { "qcf-eager-test", no_argument, nullptr, 738 },
1552
  { "no-qcf-eager-test", no_argument, nullptr, 739 },
1553
  { "qcf-nested-conflict", no_argument, nullptr, 740 },
1554
  { "no-qcf-nested-conflict", no_argument, nullptr, 741 },
1555
  { "qcf-skip-rd", no_argument, nullptr, 742 },
1556
  { "no-qcf-skip-rd", no_argument, nullptr, 743 },
1557
  { "qcf-tconstraint", no_argument, nullptr, 744 },
1558
  { "no-qcf-tconstraint", no_argument, nullptr, 745 },
1559
  { "qcf-vo-exp", no_argument, nullptr, 746 },
1560
  { "no-qcf-vo-exp", no_argument, nullptr, 747 },
1561
  { "quant-alpha-equiv", no_argument, nullptr, 748 },
1562
  { "no-quant-alpha-equiv", no_argument, nullptr, 749 },
1563
  { "quant-cf", no_argument, nullptr, 750 },
1564
  { "no-quant-cf", no_argument, nullptr, 751 },
1565
  { "quant-cf-mode", required_argument, nullptr, 752 },
1566
  { "quant-cf-when", required_argument, nullptr, 753 },
1567
  { "quant-dsplit-mode", required_argument, nullptr, 754 },
1568
  { "quant-fun-wd", no_argument, nullptr, 755 },
1569
  { "no-quant-fun-wd", no_argument, nullptr, 756 },
1570
  { "quant-ind", no_argument, nullptr, 757 },
1571
  { "no-quant-ind", no_argument, nullptr, 758 },
1572
  { "quant-rep-mode", required_argument, nullptr, 759 },
1573
  { "quant-split", no_argument, nullptr, 760 },
1574
  { "no-quant-split", no_argument, nullptr, 761 },
1575
  { "register-quant-body-terms", no_argument, nullptr, 762 },
1576
  { "no-register-quant-body-terms", no_argument, nullptr, 763 },
1577
  { "relational-triggers", no_argument, nullptr, 764 },
1578
  { "no-relational-triggers", no_argument, nullptr, 765 },
1579
  { "relevant-triggers", no_argument, nullptr, 766 },
1580
  { "no-relevant-triggers", no_argument, nullptr, 767 },
1581
  { "strict-triggers", no_argument, nullptr, 768 },
1582
  { "no-strict-triggers", no_argument, nullptr, 769 },
1583
  { "sygus", no_argument, nullptr, 770 },
1584
  { "no-sygus", no_argument, nullptr, 771 },
1585
  { "sygus-active-gen-cfactor", required_argument, nullptr, 772 },
1586
  { "sygus-active-gen", required_argument, nullptr, 773 },
1587
  { "sygus-add-const-grammar", no_argument, nullptr, 774 },
1588
  { "no-sygus-add-const-grammar", no_argument, nullptr, 775 },
1589
  { "sygus-arg-relevant", no_argument, nullptr, 776 },
1590
  { "no-sygus-arg-relevant", no_argument, nullptr, 777 },
1591
  { "sygus-auto-unfold", no_argument, nullptr, 778 },
1592
  { "no-sygus-auto-unfold", no_argument, nullptr, 779 },
1593
  { "sygus-bool-ite-return-const", no_argument, nullptr, 780 },
1594
  { "no-sygus-bool-ite-return-const", no_argument, nullptr, 781 },
1595
  { "sygus-core-connective", no_argument, nullptr, 782 },
1596
  { "no-sygus-core-connective", no_argument, nullptr, 783 },
1597
  { "sygus-crepair-abort", no_argument, nullptr, 784 },
1598
  { "no-sygus-crepair-abort", no_argument, nullptr, 785 },
1599
  { "sygus-eval-opt", no_argument, nullptr, 786 },
1600
  { "no-sygus-eval-opt", no_argument, nullptr, 787 },
1601
  { "sygus-eval-unfold", no_argument, nullptr, 788 },
1602
  { "no-sygus-eval-unfold", no_argument, nullptr, 789 },
1603
  { "sygus-eval-unfold-bool", no_argument, nullptr, 790 },
1604
  { "no-sygus-eval-unfold-bool", no_argument, nullptr, 791 },
1605
  { "sygus-expr-miner-check-timeout", required_argument, nullptr, 792 },
1606
  { "sygus-ext-rew", no_argument, nullptr, 793 },
1607
  { "no-sygus-ext-rew", no_argument, nullptr, 794 },
1608
  { "sygus-filter-sol-rev", no_argument, nullptr, 795 },
1609
  { "no-sygus-filter-sol-rev", no_argument, nullptr, 796 },
1610
  { "sygus-filter-sol", required_argument, nullptr, 797 },
1611
  { "sygus-grammar-cons", required_argument, nullptr, 798 },
1612
  { "sygus-grammar-norm", no_argument, nullptr, 799 },
1613
  { "no-sygus-grammar-norm", no_argument, nullptr, 800 },
1614
  { "sygus-inference", no_argument, nullptr, 801 },
1615
  { "no-sygus-inference", no_argument, nullptr, 802 },
1616
  { "sygus-inst", no_argument, nullptr, 803 },
1617
  { "no-sygus-inst", no_argument, nullptr, 804 },
1618
  { "sygus-inst-mode", required_argument, nullptr, 805 },
1619
  { "sygus-inst-scope", required_argument, nullptr, 806 },
1620
  { "sygus-inst-term-sel", required_argument, nullptr, 807 },
1621
  { "sygus-inv-templ-when-sg", no_argument, nullptr, 808 },
1622
  { "no-sygus-inv-templ-when-sg", no_argument, nullptr, 809 },
1623
  { "sygus-inv-templ", required_argument, nullptr, 810 },
1624
  { "sygus-min-grammar", no_argument, nullptr, 811 },
1625
  { "no-sygus-min-grammar", no_argument, nullptr, 812 },
1626
  { "sygus-pbe", no_argument, nullptr, 813 },
1627
  { "no-sygus-pbe", no_argument, nullptr, 814 },
1628
  { "sygus-pbe-multi-fair", no_argument, nullptr, 815 },
1629
  { "no-sygus-pbe-multi-fair", no_argument, nullptr, 816 },
1630
  { "sygus-pbe-multi-fair-diff", required_argument, nullptr, 817 },
1631
  { "sygus-qe-preproc", no_argument, nullptr, 818 },
1632
  { "no-sygus-qe-preproc", no_argument, nullptr, 819 },
1633
  { "sygus-query-gen", no_argument, nullptr, 820 },
1634
  { "no-sygus-query-gen", no_argument, nullptr, 821 },
1635
  { "sygus-query-gen-check", no_argument, nullptr, 822 },
1636
  { "no-sygus-query-gen-check", no_argument, nullptr, 823 },
1637
  { "sygus-query-gen-dump-files", required_argument, nullptr, 824 },
1638
  { "sygus-query-gen-thresh", required_argument, nullptr, 825 },
1639
  { "sygus-rec-fun", no_argument, nullptr, 826 },
1640
  { "no-sygus-rec-fun", no_argument, nullptr, 827 },
1641
  { "sygus-rec-fun-eval-limit", required_argument, nullptr, 828 },
1642
  { "sygus-repair-const", no_argument, nullptr, 829 },
1643
  { "no-sygus-repair-const", no_argument, nullptr, 830 },
1644
  { "sygus-repair-const-timeout", required_argument, nullptr, 831 },
1645
  { "sygus-rr", no_argument, nullptr, 832 },
1646
  { "no-sygus-rr", no_argument, nullptr, 833 },
1647
  { "sygus-rr-synth", no_argument, nullptr, 834 },
1648
  { "no-sygus-rr-synth", no_argument, nullptr, 835 },
1649
  { "sygus-rr-synth-accel", no_argument, nullptr, 836 },
1650
  { "no-sygus-rr-synth-accel", no_argument, nullptr, 837 },
1651
  { "sygus-rr-synth-check", no_argument, nullptr, 838 },
1652
  { "no-sygus-rr-synth-check", no_argument, nullptr, 839 },
1653
  { "sygus-rr-synth-filter-cong", no_argument, nullptr, 840 },
1654
  { "no-sygus-rr-synth-filter-cong", no_argument, nullptr, 841 },
1655
  { "sygus-rr-synth-filter-match", no_argument, nullptr, 842 },
1656
  { "no-sygus-rr-synth-filter-match", no_argument, nullptr, 843 },
1657
  { "sygus-rr-synth-filter-nl", no_argument, nullptr, 844 },
1658
  { "no-sygus-rr-synth-filter-nl", no_argument, nullptr, 845 },
1659
  { "sygus-rr-synth-filter-order", no_argument, nullptr, 846 },
1660
  { "no-sygus-rr-synth-filter-order", no_argument, nullptr, 847 },
1661
  { "sygus-rr-synth-input", no_argument, nullptr, 848 },
1662
  { "no-sygus-rr-synth-input", no_argument, nullptr, 849 },
1663
  { "sygus-rr-synth-input-nvars", required_argument, nullptr, 850 },
1664
  { "sygus-rr-synth-input-use-bool", no_argument, nullptr, 851 },
1665
  { "no-sygus-rr-synth-input-use-bool", no_argument, nullptr, 852 },
1666
  { "sygus-rr-synth-rec", no_argument, nullptr, 853 },
1667
  { "no-sygus-rr-synth-rec", no_argument, nullptr, 854 },
1668
  { "sygus-rr-verify", no_argument, nullptr, 855 },
1669
  { "no-sygus-rr-verify", no_argument, nullptr, 856 },
1670
  { "sygus-rr-verify-abort", no_argument, nullptr, 857 },
1671
  { "no-sygus-rr-verify-abort", no_argument, nullptr, 858 },
1672
  { "sygus-sample-fp-uniform", no_argument, nullptr, 859 },
1673
  { "no-sygus-sample-fp-uniform", no_argument, nullptr, 860 },
1674
  { "sygus-sample-grammar", no_argument, nullptr, 861 },
1675
  { "no-sygus-sample-grammar", no_argument, nullptr, 862 },
1676
  { "sygus-samples", required_argument, nullptr, 863 },
1677
  { "sygus-si-abort", no_argument, nullptr, 864 },
1678
  { "no-sygus-si-abort", no_argument, nullptr, 865 },
1679
  { "sygus-si-partial", no_argument, nullptr, 866 },
1680
  { "no-sygus-si-partial", no_argument, nullptr, 867 },
1681
  { "sygus-si-rcons-limit", required_argument, nullptr, 868 },
1682
  { "sygus-si-rcons", required_argument, nullptr, 869 },
1683
  { "sygus-si-reconstruct-const", no_argument, nullptr, 870 },
1684
  { "no-sygus-si-reconstruct-const", no_argument, nullptr, 871 },
1685
  { "sygus-si", required_argument, nullptr, 872 },
1686
  { "sygus-stream", no_argument, nullptr, 873 },
1687
  { "no-sygus-stream", no_argument, nullptr, 874 },
1688
  { "sygus-templ-embed-grammar", no_argument, nullptr, 875 },
1689
  { "no-sygus-templ-embed-grammar", no_argument, nullptr, 876 },
1690
  { "sygus-unif-cond-independent-no-repeat-sol", no_argument, nullptr, 877 },
1691
  { "no-sygus-unif-cond-independent-no-repeat-sol", no_argument, nullptr, 878 },
1692
  { "sygus-unif-pi", required_argument, nullptr, 879 },
1693
  { "sygus-unif-shuffle-cond", no_argument, nullptr, 880 },
1694
  { "no-sygus-unif-shuffle-cond", no_argument, nullptr, 881 },
1695
  { "sygus-verify-inst-max-rounds", required_argument, nullptr, 882 },
1696
  { "term-db-cd", no_argument, nullptr, 883 },
1697
  { "no-term-db-cd", no_argument, nullptr, 884 },
1698
  { "term-db-mode", required_argument, nullptr, 885 },
1699
  { "trigger-active-sel", required_argument, nullptr, 886 },
1700
  { "trigger-sel", required_argument, nullptr, 887 },
1701
  { "user-pat", required_argument, nullptr, 888 },
1702
  { "var-elim-quant", no_argument, nullptr, 889 },
1703
  { "no-var-elim-quant", no_argument, nullptr, 890 },
1704
  { "var-ineq-elim-quant", no_argument, nullptr, 891 },
1705
  { "no-var-ineq-elim-quant", no_argument, nullptr, 892 },
1706
  { "sep-check-neg", no_argument, nullptr, 893 },
1707
  { "no-sep-check-neg", no_argument, nullptr, 894 },
1708
  { "sep-child-refine", no_argument, nullptr, 895 },
1709
  { "no-sep-child-refine", no_argument, nullptr, 896 },
1710
  { "sep-deq-c", no_argument, nullptr, 897 },
1711
  { "no-sep-deq-c", no_argument, nullptr, 898 },
1712
  { "sep-exp", no_argument, nullptr, 899 },
1713
  { "no-sep-exp", no_argument, nullptr, 900 },
1714
  { "sep-min-refine", no_argument, nullptr, 901 },
1715
  { "no-sep-min-refine", no_argument, nullptr, 902 },
1716
  { "sep-pre-skolem-emp", no_argument, nullptr, 903 },
1717
  { "no-sep-pre-skolem-emp", no_argument, nullptr, 904 },
1718
  { "sets-ext", no_argument, nullptr, 905 },
1719
  { "no-sets-ext", no_argument, nullptr, 906 },
1720
  { "sets-infer-as-lemmas", no_argument, nullptr, 907 },
1721
  { "no-sets-infer-as-lemmas", no_argument, nullptr, 908 },
1722
  { "sets-proxy-lemmas", no_argument, nullptr, 909 },
1723
  { "no-sets-proxy-lemmas", no_argument, nullptr, 910 },
1724
  { "abstract-values", no_argument, nullptr, 911 },
1725
  { "no-abstract-values", no_argument, nullptr, 912 },
1726
  { "ackermann", no_argument, nullptr, 913 },
1727
  { "no-ackermann", no_argument, nullptr, 914 },
1728
  { "block-models", required_argument, nullptr, 915 },
1729
  { "bvand-integer-granularity", required_argument, nullptr, 916 },
1730
  { "check-abducts", no_argument, nullptr, 917 },
1731
  { "no-check-abducts", no_argument, nullptr, 918 },
1732
  { "check-interpols", no_argument, nullptr, 919 },
1733
  { "no-check-interpols", no_argument, nullptr, 920 },
1734
  { "check-models", no_argument, nullptr, 921 },
1735
  { "no-check-models", no_argument, nullptr, 922 },
1736
  { "check-proofs", no_argument, nullptr, 923 },
1737
  { "no-check-proofs", no_argument, nullptr, 924 },
1738
  { "check-synth-sol", no_argument, nullptr, 925 },
1739
  { "no-check-synth-sol", no_argument, nullptr, 926 },
1740
  { "check-unsat-cores", no_argument, nullptr, 927 },
1741
  { "no-check-unsat-cores", no_argument, nullptr, 928 },
1742
  { "debug-check-models", no_argument, nullptr, 929 },
1743
  { "no-debug-check-models", no_argument, nullptr, 930 },
1744
  { "diagnostic-output-channel", required_argument, nullptr, 931 },
1745
  { "dump-to", required_argument, nullptr, 932 },
1746
  { "dump", required_argument, nullptr, 933 },
1747
  { "early-ite-removal", no_argument, nullptr, 934 },
1748
  { "no-early-ite-removal", no_argument, nullptr, 935 },
1749
  { "expand-definitions", no_argument, nullptr, 936 },
1750
  { "no-expand-definitions", no_argument, nullptr, 937 },
1751
  { "ext-rew-prep", no_argument, nullptr, 938 },
1752
  { "no-ext-rew-prep", no_argument, nullptr, 939 },
1753
  { "ext-rew-prep-agg", no_argument, nullptr, 940 },
1754
  { "no-ext-rew-prep-agg", no_argument, nullptr, 941 },
1755
  { "foreign-theory-rewrite", no_argument, nullptr, 942 },
1756
  { "no-foreign-theory-rewrite", no_argument, nullptr, 943 },
1757
  { "iand-mode", required_argument, nullptr, 944 },
1758
  { "interactive-mode", no_argument, nullptr, 945 },
1759
  { "no-interactive-mode", no_argument, nullptr, 946 },
1760
  { "ite-simp", no_argument, nullptr, 947 },
1761
  { "no-ite-simp", no_argument, nullptr, 948 },
1762
  { "learned-rewrite", no_argument, nullptr, 949 },
1763
  { "no-learned-rewrite", no_argument, nullptr, 950 },
1764
  { "minimal-unsat-cores", no_argument, nullptr, 951 },
1765
  { "no-minimal-unsat-cores", no_argument, nullptr, 952 },
1766
  { "model-cores", required_argument, nullptr, 953 },
1767
  { "model-u-print", required_argument, nullptr, 954 },
1768
  { "model-uninterp-print", required_argument, nullptr, 955 },
1769
  { "model-witness-value", no_argument, nullptr, 956 },
1770
  { "no-model-witness-value", no_argument, nullptr, 957 },
1771
  { "on-repeat-ite-simp", no_argument, nullptr, 958 },
1772
  { "no-on-repeat-ite-simp", no_argument, nullptr, 959 },
1773
  { "produce-abducts", no_argument, nullptr, 960 },
1774
  { "no-produce-abducts", no_argument, nullptr, 961 },
1775
  { "produce-assertions", no_argument, nullptr, 962 },
1776
  { "no-produce-assertions", no_argument, nullptr, 963 },
1777
  { "produce-assignments", no_argument, nullptr, 964 },
1778
  { "no-produce-assignments", no_argument, nullptr, 965 },
1779
  { "produce-interpols", required_argument, nullptr, 966 },
1780
  { "produce-models", no_argument, nullptr, 967 },
1781
  { "no-produce-models", no_argument, nullptr, 968 },
1782
  { "produce-proofs", no_argument, nullptr, 969 },
1783
  { "no-produce-proofs", no_argument, nullptr, 970 },
1784
  { "produce-unsat-assumptions", no_argument, nullptr, 971 },
1785
  { "no-produce-unsat-assumptions", no_argument, nullptr, 972 },
1786
  { "produce-unsat-cores", no_argument, nullptr, 973 },
1787
  { "no-produce-unsat-cores", no_argument, nullptr, 974 },
1788
  { "regular-output-channel", required_argument, nullptr, 975 },
1789
  { "repeat-simp", no_argument, nullptr, 976 },
1790
  { "no-repeat-simp", no_argument, nullptr, 977 },
1791
  { "simp-ite-compress", no_argument, nullptr, 978 },
1792
  { "no-simp-ite-compress", no_argument, nullptr, 979 },
1793
  { "simp-ite-hunt-zombies", required_argument, nullptr, 980 },
1794
  { "simp-with-care", no_argument, nullptr, 981 },
1795
  { "no-simp-with-care", no_argument, nullptr, 982 },
1796
  { "simplification", required_argument, nullptr, 983 },
1797
  { "simplification-mode", required_argument, nullptr, 984 },
1798
  { "solve-bv-as-int", required_argument, nullptr, 985 },
1799
  { "solve-int-as-bv", required_argument, nullptr, 986 },
1800
  { "solve-real-as-int", no_argument, nullptr, 987 },
1801
  { "no-solve-real-as-int", no_argument, nullptr, 988 },
1802
  { "sort-inference", no_argument, nullptr, 989 },
1803
  { "no-sort-inference", no_argument, nullptr, 990 },
1804
  { "static-learning", no_argument, nullptr, 991 },
1805
  { "no-static-learning", no_argument, nullptr, 992 },
1806
  { "sygus-out", required_argument, nullptr, 993 },
1807
  { "sygus-print-callbacks", no_argument, nullptr, 994 },
1808
  { "no-sygus-print-callbacks", no_argument, nullptr, 995 },
1809
  { "unconstrained-simp", no_argument, nullptr, 996 },
1810
  { "no-unconstrained-simp", no_argument, nullptr, 997 },
1811
  { "unsat-cores-mode", required_argument, nullptr, 998 },
1812
  { "re-elim", no_argument, nullptr, 999 },
1813
  { "no-re-elim", no_argument, nullptr, 1000 },
1814
  { "re-elim-agg", no_argument, nullptr, 1001 },
1815
  { "no-re-elim-agg", no_argument, nullptr, 1002 },
1816
  { "re-inter-mode", required_argument, nullptr, 1003 },
1817
  { "strings-check-entail-len", no_argument, nullptr, 1004 },
1818
  { "no-strings-check-entail-len", no_argument, nullptr, 1005 },
1819
  { "strings-eager", no_argument, nullptr, 1006 },
1820
  { "no-strings-eager", no_argument, nullptr, 1007 },
1821
  { "strings-eager-eval", no_argument, nullptr, 1008 },
1822
  { "no-strings-eager-eval", no_argument, nullptr, 1009 },
1823
  { "strings-eager-len", no_argument, nullptr, 1010 },
1824
  { "no-strings-eager-len", no_argument, nullptr, 1011 },
1825
  { "strings-exp", no_argument, nullptr, 1012 },
1826
  { "no-strings-exp", no_argument, nullptr, 1013 },
1827
  { "strings-ff", no_argument, nullptr, 1014 },
1828
  { "no-strings-ff", no_argument, nullptr, 1015 },
1829
  { "strings-fmf", no_argument, nullptr, 1016 },
1830
  { "no-strings-fmf", no_argument, nullptr, 1017 },
1831
  { "strings-guess-model", no_argument, nullptr, 1018 },
1832
  { "no-strings-guess-model", no_argument, nullptr, 1019 },
1833
  { "strings-infer-as-lemmas", no_argument, nullptr, 1020 },
1834
  { "no-strings-infer-as-lemmas", no_argument, nullptr, 1021 },
1835
  { "strings-infer-sym", no_argument, nullptr, 1022 },
1836
  { "no-strings-infer-sym", no_argument, nullptr, 1023 },
1837
  { "strings-lazy-pp", no_argument, nullptr, 1024 },
1838
  { "no-strings-lazy-pp", no_argument, nullptr, 1025 },
1839
  { "strings-len-norm", no_argument, nullptr, 1026 },
1840
  { "no-strings-len-norm", no_argument, nullptr, 1027 },
1841
  { "strings-lprop-csp", no_argument, nullptr, 1028 },
1842
  { "no-strings-lprop-csp", no_argument, nullptr, 1029 },
1843
  { "strings-min-prefix-explain", no_argument, nullptr, 1030 },
1844
  { "no-strings-min-prefix-explain", no_argument, nullptr, 1031 },
1845
  { "strings-process-loop-mode", required_argument, nullptr, 1032 },
1846
  { "strings-rexplain-lemmas", no_argument, nullptr, 1033 },
1847
  { "no-strings-rexplain-lemmas", no_argument, nullptr, 1034 },
1848
  { "strings-unified-vspt", no_argument, nullptr, 1035 },
1849
  { "no-strings-unified-vspt", no_argument, nullptr, 1036 },
1850
  { "assign-function-values", no_argument, nullptr, 1037 },
1851
  { "no-assign-function-values", no_argument, nullptr, 1038 },
1852
  { "condense-function-values", no_argument, nullptr, 1039 },
1853
  { "no-condense-function-values", no_argument, nullptr, 1040 },
1854
  { "ee-mode", required_argument, nullptr, 1041 },
1855
  { "relevance-filter", no_argument, nullptr, 1042 },
1856
  { "no-relevance-filter", no_argument, nullptr, 1043 },
1857
  { "tc-mode", required_argument, nullptr, 1044 },
1858
  { "theoryof-mode", required_argument, nullptr, 1045 },
1859
  { "symmetry-breaker", no_argument, nullptr, 1046 },
1860
  { "uf-symmetry-breaker", no_argument, nullptr, 1047 },
1861
  { "no-symmetry-breaker", no_argument, nullptr, 1048 },
1862
  { "no-uf-symmetry-breaker", no_argument, nullptr, 1049 },
1863
  { "uf-ho", no_argument, nullptr, 1050 },
1864
  { "no-uf-ho", no_argument, nullptr, 1051 },
1865
  { "uf-ho-ext", no_argument, nullptr, 1052 },
1866
  { "no-uf-ho-ext", no_argument, nullptr, 1053 },
1867
  { "uf-ss-abort-card", required_argument, nullptr, 1054 },
1868
  { "uf-ss-fair", no_argument, nullptr, 1055 },
1869
  { "no-uf-ss-fair", no_argument, nullptr, 1056 },
1870
  { "uf-ss-fair-monotone", no_argument, nullptr, 1057 },
1871
  { "no-uf-ss-fair-monotone", no_argument, nullptr, 1058 },
1872
  { "uf-ss-totality-limited", required_argument, nullptr, 1059 },
1873
  { "uf-ss-totality-sym-break", no_argument, nullptr, 1060 },
1874
  { "no-uf-ss-totality-sym-break", no_argument, nullptr, 1061 },
1875
  { "uf-ss", required_argument, nullptr, 1062 },
1876
  {nullptr, no_argument, nullptr, '\0'}};
1877
// clang-format on
1878
1879
std::string suggestCommandLineOptions(const std::string& optionName)
1880
{
1881
  DidYouMean didYouMean;
1882
1883
  const char* opt;
1884
  for(size_t i = 0; (opt = cmdlineOptions[i].name) != nullptr; ++i) {
1885
    didYouMean.addWord(std::string("--") + cmdlineOptions[i].name);
1886
  }
1887
1888
  return didYouMean.getMatchAsString(optionName.substr(0, optionName.find('=')));
1889
}
1890
1891
/**
1892
 * This is a default handler for options of built-in C++ type.  This
1893
 * template is really just a helper for the handleOption() template,
1894
 * below.  Variants of this template handle numeric and non-numeric,
1895
 * integral and non-integral, signed and unsigned C++ types.
1896
 * handleOption() makes sure to instantiate the right one.
1897
 *
1898
 * This implements default behavior when e.g. an option is
1899
 * unsigned but the user specifies a negative argument; etc.
1900
 */
1901
template <class T, bool is_numeric, bool is_integer>
1902
struct OptionHandler {
1903
  static T handle(const std::string& option, const std::string& flag, const std::string& optionarg);
1904
};/* struct OptionHandler<> */
1905
1906
/** Variant for integral C++ types */
1907
template <class T>
1908
struct OptionHandler<T, true, true> {
1909
134
  static bool stringToInt(T& t, const std::string& str) {
1910
268
    std::istringstream ss(str);
1911
134
    ss >> t;
1912
    char tmp;
1913
268
    return !(ss.fail() || ss.get(tmp));
1914
  }
1915
1916
101
  static bool containsMinus(const std::string& str) {
1917
101
    return str.find('-') != std::string::npos;
1918
  }
1919
1920
134
  static T handle(const std::string& option, const std::string& flag, const std::string& optionarg) {
1921
    try {
1922
      T i;
1923
134
      bool success = stringToInt(i, optionarg);
1924
1925
134
      if(!success){
1926
        throw OptionException(flag + ": failed to parse "+ optionarg +
1927
                              " as an integer of the appropriate type.");
1928
      }
1929
1930
      // Depending in the platform unsigned numbers with '-' signs may parse.
1931
      // Reject these by looking for any minus if it is not signed.
1932
101
      if( (! std::numeric_limits<T>::is_signed) && containsMinus(optionarg) ) {
1933
        // unsigned type but user gave negative argument
1934
        throw OptionException(flag + " requires a nonnegative argument");
1935
134
      } else if(i < std::numeric_limits<T>::min()) {
1936
        // negative overflow for type
1937
        std::stringstream ss;
1938
        ss << flag << " requires an argument >= "
1939
           << std::numeric_limits<T>::min();
1940
        throw OptionException(ss.str());
1941
134
      } else if(i > std::numeric_limits<T>::max()) {
1942
        // positive overflow for type
1943
        std::stringstream ss;
1944
        ss << flag << " requires an argument <= "
1945
           << std::numeric_limits<T>::max();
1946
        throw OptionException(ss.str());
1947
      }
1948
1949
134
      return i;
1950
1951
      // if(std::numeric_limits<T>::is_signed) {
1952
      //   return T(i.getLong());
1953
      // } else {
1954
      //   return T(i.getUnsignedLong());
1955
      // }
1956
    } catch(std::invalid_argument&) {
1957
      // user gave something other than an integer
1958
      throw OptionException(flag + " requires an integer argument");
1959
    }
1960
  }
1961
};/* struct OptionHandler<T, true, true> */
1962
1963
/** Variant for numeric but non-integral C++ types */
1964
template <class T>
1965
struct OptionHandler<T, true, false> {
1966
  static T handle(const std::string& option, const std::string& flag, const std::string& optionarg) {
1967
    std::stringstream inss(optionarg);
1968
    long double r;
1969
    inss >> r;
1970
    if(! inss.eof()) {
1971
      // we didn't consume the whole string (junk at end)
1972
      throw OptionException(flag + " requires a numeric argument");
1973
    }
1974
1975
    if(! std::numeric_limits<T>::is_signed && r < 0.0) {
1976
      // unsigned type but user gave negative value
1977
      throw OptionException(flag + " requires a nonnegative argument");
1978
    } else if(r < -std::numeric_limits<T>::max()) {
1979
      // negative overflow for type
1980
      std::stringstream ss;
1981
      ss << flag << " requires an argument >= "
1982
         << -std::numeric_limits<T>::max();
1983
      throw OptionException(ss.str());
1984
    } else if(r > std::numeric_limits<T>::max()) {
1985
      // positive overflow for type
1986
      std::stringstream ss;
1987
      ss << flag << " requires an argument <= "
1988
         << std::numeric_limits<T>::max();
1989
      throw OptionException(ss.str());
1990
    }
1991
1992
    return T(r);
1993
  }
1994
};/* struct OptionHandler<T, true, false> */
1995
1996
/** Variant for non-numeric C++ types */
1997
template <class T>
1998
struct OptionHandler<T, false, false> {
1999
  static T handle(const std::string& option, const std::string& flag, const std::string& optionarg) {
2000
    T::unsupported_handleOption_call___please_write_me;
2001
    // The above line causes a compiler error if this version of the template
2002
    // is ever instantiated (meaning that a specialization is missing).  So
2003
    // don't worry about the segfault in the next line, the "return" is only
2004
    // there to keep the compiler from giving additional, distracting errors
2005
    // and warnings.
2006
    return *(T*)0;
2007
  }
2008
};/* struct OptionHandler<T, false, false> */
2009
2010
/** Handle an option of type T in the default way. */
2011
template <class T>
2012
134
T handleOption(const std::string& option, const std::string& flag, const std::string& optionarg) {
2013
134
  return OptionHandler<T, std::numeric_limits<T>::is_specialized, std::numeric_limits<T>::is_integer>::handle(option, flag, optionarg);
2014
}
2015
2016
/** Handle an option of type std::string in the default way. */
2017
template <>
2018
12
std::string handleOption<std::string>(const std::string& option, const std::string& flag, const std::string& optionarg) {
2019
12
  return optionarg;
2020
}
2021
2022
// clang-format off
2023
2024
void assign_arith_maxApproxDepth(Options& opts, const std::string& option, const std::string& optionarg) {
2025
  auto value = handleOption<int16_t>("approx-branch-depth", option, optionarg);
2026
2027
  opts.arith.maxApproxDepth = value;
2028
  opts.arith.maxApproxDepthWasSetByUser = true;
2029
  Trace("options") << "user assigned option maxApproxDepth = " << value << std::endl;
2030
}
2031
2032
4
void assign_arith_brabTest(Options& opts, const std::string& option, bool value) {
2033
2034
4
  opts.arith.brabTest = value;
2035
4
  opts.arith.brabTestWasSetByUser = true;
2036
4
  Trace("options") << "user assigned option brabTest = " << value << std::endl;
2037
4
}
2038
2039
void assign_arith_arithCongMan(Options& opts, const std::string& option, bool value) {
2040
2041
  opts.arith.arithCongMan = value;
2042
  opts.arith.arithCongManWasSetByUser = true;
2043
  Trace("options") << "user assigned option arithCongMan = " << value << std::endl;
2044
}
2045
2046
6
void assign_arith_arithEqSolver(Options& opts, const std::string& option, bool value) {
2047
2048
6
  opts.arith.arithEqSolver = value;
2049
6
  opts.arith.arithEqSolverWasSetByUser = true;
2050
6
  Trace("options") << "user assigned option arithEqSolver = " << value << std::endl;
2051
6
}
2052
2053
3
void assign_arith_arithNoPartialFun(Options& opts, const std::string& option, bool value) {
2054
2055
3
  opts.arith.arithNoPartialFun = value;
2056
3
  opts.arith.arithNoPartialFunWasSetByUser = true;
2057
3
  Trace("options") << "user assigned option arithNoPartialFun = " << value << std::endl;
2058
3
}
2059
2060
void assign_arith_arithPropAsLemmaLength(Options& opts, const std::string& option, const std::string& optionarg) {
2061
  auto value = handleOption<uint16_t>("arith-prop-clauses", option, optionarg);
2062
2063
  opts.arith.arithPropAsLemmaLength = value;
2064
  opts.arith.arithPropAsLemmaLengthWasSetByUser = true;
2065
  Trace("options") << "user assigned option arithPropAsLemmaLength = " << value << std::endl;
2066
}
2067
2068
void assign_arith_arithPropagationMode(Options& opts, const std::string& option, const std::string& optionarg) {
2069
  auto value = stringToArithPropagationMode(optionarg);
2070
2071
  opts.arith.arithPropagationMode = value;
2072
  opts.arith.arithPropagationModeWasSetByUser = true;
2073
  Trace("options") << "user assigned option arithPropagationMode = " << value << std::endl;
2074
}
2075
2076
9
void assign_arith_arithRewriteEq(Options& opts, const std::string& option, bool value) {
2077
2078
9
  opts.arith.arithRewriteEq = value;
2079
9
  opts.arith.arithRewriteEqWasSetByUser = true;
2080
9
  Trace("options") << "user assigned option arithRewriteEq = " << value << std::endl;
2081
9
}
2082
2083
void assign_arith_collectPivots(Options& opts, const std::string& option, bool value) {
2084
2085
  opts.arith.collectPivots = value;
2086
  opts.arith.collectPivotsWasSetByUser = true;
2087
  Trace("options") << "user assigned option collectPivots = " << value << std::endl;
2088
}
2089
2090
void assign_arith_doCutAllBounded(Options& opts, const std::string& option, bool value) {
2091
2092
  opts.arith.doCutAllBounded = value;
2093
  opts.arith.doCutAllBoundedWasSetByUser = true;
2094
  Trace("options") << "user assigned option doCutAllBounded = " << value << std::endl;
2095
}
2096
2097
void assign_arith_exportDioDecompositions(Options& opts, const std::string& option, bool value) {
2098
2099
  opts.arith.exportDioDecompositions = value;
2100
  opts.arith.exportDioDecompositionsWasSetByUser = true;
2101
  Trace("options") << "user assigned option exportDioDecompositions = " << value << std::endl;
2102
}
2103
2104
void assign_arith_dioRepeat(Options& opts, const std::string& option, bool value) {
2105
2106
  opts.arith.dioRepeat = value;
2107
  opts.arith.dioRepeatWasSetByUser = true;
2108
  Trace("options") << "user assigned option dioRepeat = " << value << std::endl;
2109
}
2110
2111
void assign_arith_arithDioSolver(Options& opts, const std::string& option, bool value) {
2112
2113
  opts.arith.arithDioSolver = value;
2114
  opts.arith.arithDioSolverWasSetByUser = true;
2115
  Trace("options") << "user assigned option arithDioSolver = " << value << std::endl;
2116
}
2117
2118
void assign_arith_dioSolverTurns(Options& opts, const std::string& option, const std::string& optionarg) {
2119
  auto value = handleOption<int>("dio-turns", option, optionarg);
2120
2121
  opts.arith.dioSolverTurns = value;
2122
  opts.arith.dioSolverTurnsWasSetByUser = true;
2123
  Trace("options") << "user assigned option dioSolverTurns = " << value << std::endl;
2124
}
2125
2126
void assign_arith_arithErrorSelectionRule(Options& opts, const std::string& option, const std::string& optionarg) {
2127
  auto value = stringToErrorSelectionRule(optionarg);
2128
2129
  opts.arith.arithErrorSelectionRule = value;
2130
  opts.arith.arithErrorSelectionRuleWasSetByUser = true;
2131
  Trace("options") << "user assigned option arithErrorSelectionRule = " << value << std::endl;
2132
}
2133
2134
void assign_arith_havePenalties(Options& opts, const std::string& option, bool value) {
2135
2136
  opts.arith.havePenalties = value;
2137
  opts.arith.havePenaltiesWasSetByUser = true;
2138
  Trace("options") << "user assigned option havePenalties = " << value << std::endl;
2139
}
2140
2141
void assign_arith_arithHeuristicPivots(Options& opts, const std::string& option, const std::string& optionarg) {
2142
  auto value = handleOption<int16_t>("heuristic-pivots", option, optionarg);
2143
2144
  opts.arith.arithHeuristicPivots = value;
2145
  opts.arith.arithHeuristicPivotsWasSetByUser = true;
2146
  Trace("options") << "user assigned option arithHeuristicPivots = " << value << std::endl;
2147
}
2148
2149
void assign_arith_replayFailureLemma(Options& opts, const std::string& option, bool value) {
2150
2151
  opts.arith.replayFailureLemma = value;
2152
  opts.arith.replayFailureLemmaWasSetByUser = true;
2153
  Trace("options") << "user assigned option replayFailureLemma = " << value << std::endl;
2154
}
2155
2156
void assign_arith_maxCutsInContext(Options& opts, const std::string& option, const std::string& optionarg) {
2157
  auto value = handleOption<unsigned>("maxCutsInContext", option, optionarg);
2158
2159
  opts.arith.maxCutsInContext = value;
2160
  opts.arith.maxCutsInContextWasSetByUser = true;
2161
  Trace("options") << "user assigned option maxCutsInContext = " << value << std::endl;
2162
}
2163
2164
8
void assign_arith_arithMLTrick(Options& opts, const std::string& option, bool value) {
2165
2166
8
  opts.arith.arithMLTrick = value;
2167
8
  opts.arith.arithMLTrickWasSetByUser = true;
2168
8
  Trace("options") << "user assigned option arithMLTrick = " << value << std::endl;
2169
8
}
2170
2171
void assign_arith_arithMLTrickSubstitutions(Options& opts, const std::string& option, const std::string& optionarg) {
2172
  auto value = handleOption<unsigned>("miplib-trick-subs", option, optionarg);
2173
2174
  opts.arith.arithMLTrickSubstitutions = value;
2175
  opts.arith.arithMLTrickSubstitutionsWasSetByUser = true;
2176
  Trace("options") << "user assigned option arithMLTrickSubstitutions = " << value << std::endl;
2177
}
2178
2179
8
void assign_arith_newProp(Options& opts, const std::string& option, bool value) {
2180
2181
8
  opts.arith.newProp = value;
2182
8
  opts.arith.newPropWasSetByUser = true;
2183
8
  Trace("options") << "user assigned option newProp = " << value << std::endl;
2184
8
}
2185
2186
5
void assign_arith_nlCad(Options& opts, const std::string& option, bool value) {
2187
2188
5
  opts.arith.nlCad = value;
2189
5
  opts.arith.nlCadWasSetByUser = true;
2190
5
  Trace("options") << "user assigned option nlCad = " << value << std::endl;
2191
5
}
2192
2193
void assign_arith_nlCadUseInitial(Options& opts, const std::string& option, bool value) {
2194
2195
  opts.arith.nlCadUseInitial = value;
2196
  opts.arith.nlCadUseInitialWasSetByUser = true;
2197
  Trace("options") << "user assigned option nlCadUseInitial = " << value << std::endl;
2198
}
2199
2200
void assign_arith_nlCadLifting(Options& opts, const std::string& option, const std::string& optionarg) {
2201
  auto value = stringToNlCadLiftingMode(optionarg);
2202
2203
  opts.arith.nlCadLifting = value;
2204
  opts.arith.nlCadLiftingWasSetByUser = true;
2205
  Trace("options") << "user assigned option nlCadLifting = " << value << std::endl;
2206
}
2207
2208
void assign_arith_nlCadProjection(Options& opts, const std::string& option, const std::string& optionarg) {
2209
  auto value = stringToNlCadProjectionMode(optionarg);
2210
2211
  opts.arith.nlCadProjection = value;
2212
  opts.arith.nlCadProjectionWasSetByUser = true;
2213
  Trace("options") << "user assigned option nlCadProjection = " << value << std::endl;
2214
}
2215
2216
void assign_arith_nlExtEntailConflicts(Options& opts, const std::string& option, bool value) {
2217
2218
  opts.arith.nlExtEntailConflicts = value;
2219
  opts.arith.nlExtEntailConflictsWasSetByUser = true;
2220
  Trace("options") << "user assigned option nlExtEntailConflicts = " << value << std::endl;
2221
}
2222
2223
void assign_arith_nlExtFactor(Options& opts, const std::string& option, bool value) {
2224
2225
  opts.arith.nlExtFactor = value;
2226
  opts.arith.nlExtFactorWasSetByUser = true;
2227
  Trace("options") << "user assigned option nlExtFactor = " << value << std::endl;
2228
}
2229
2230
2
void assign_arith_nlExtIncPrecision(Options& opts, const std::string& option, bool value) {
2231
2232
2
  opts.arith.nlExtIncPrecision = value;
2233
2
  opts.arith.nlExtIncPrecisionWasSetByUser = true;
2234
2
  Trace("options") << "user assigned option nlExtIncPrecision = " << value << std::endl;
2235
2
}
2236
2237
4
void assign_arith_nlExtPurify(Options& opts, const std::string& option, bool value) {
2238
2239
4
  opts.arith.nlExtPurify = value;
2240
4
  opts.arith.nlExtPurifyWasSetByUser = true;
2241
4
  Trace("options") << "user assigned option nlExtPurify = " << value << std::endl;
2242
4
}
2243
2244
void assign_arith_nlExtResBound(Options& opts, const std::string& option, bool value) {
2245
2246
  opts.arith.nlExtResBound = value;
2247
  opts.arith.nlExtResBoundWasSetByUser = true;
2248
  Trace("options") << "user assigned option nlExtResBound = " << value << std::endl;
2249
}
2250
2251
void assign_arith_nlExtRewrites(Options& opts, const std::string& option, bool value) {
2252
2253
  opts.arith.nlExtRewrites = value;
2254
  opts.arith.nlExtRewritesWasSetByUser = true;
2255
  Trace("options") << "user assigned option nlExtRewrites = " << value << std::endl;
2256
}
2257
2258
void assign_arith_nlExtSplitZero(Options& opts, const std::string& option, bool value) {
2259
2260
  opts.arith.nlExtSplitZero = value;
2261
  opts.arith.nlExtSplitZeroWasSetByUser = true;
2262
  Trace("options") << "user assigned option nlExtSplitZero = " << value << std::endl;
2263
}
2264
2265
void assign_arith_nlExtTfTaylorDegree(Options& opts, const std::string& option, const std::string& optionarg) {
2266
  auto value = handleOption<int16_t>("nl-ext-tf-taylor-deg", option, optionarg);
2267
2268
  opts.arith.nlExtTfTaylorDegree = value;
2269
  opts.arith.nlExtTfTaylorDegreeWasSetByUser = true;
2270
  Trace("options") << "user assigned option nlExtTfTaylorDegree = " << value << std::endl;
2271
}
2272
2273
41
void assign_arith_nlExtTfTangentPlanes(Options& opts, const std::string& option, bool value) {
2274
2275
41
  opts.arith.nlExtTfTangentPlanes = value;
2276
41
  opts.arith.nlExtTfTangentPlanesWasSetByUser = true;
2277
41
  Trace("options") << "user assigned option nlExtTfTangentPlanes = " << value << std::endl;
2278
41
}
2279
2280
42
void assign_arith_nlExtTangentPlanes(Options& opts, const std::string& option, bool value) {
2281
2282
42
  opts.arith.nlExtTangentPlanes = value;
2283
42
  opts.arith.nlExtTangentPlanesWasSetByUser = true;
2284
42
  Trace("options") << "user assigned option nlExtTangentPlanes = " << value << std::endl;
2285
42
}
2286
2287
void assign_arith_nlExtTangentPlanesInterleave(Options& opts, const std::string& option, bool value) {
2288
2289
  opts.arith.nlExtTangentPlanesInterleave = value;
2290
  opts.arith.nlExtTangentPlanesInterleaveWasSetByUser = true;
2291
  Trace("options") << "user assigned option nlExtTangentPlanesInterleave = " << value << std::endl;
2292
}
2293
2294
125
void assign_arith_nlExt(Options& opts, const std::string& option, const std::string& optionarg) {
2295
125
  auto value = stringToNlExtMode(optionarg);
2296
2297
125
  opts.arith.nlExt = value;
2298
125
  opts.arith.nlExtWasSetByUser = true;
2299
125
  Trace("options") << "user assigned option nlExt = " << value << std::endl;
2300
125
}
2301
2302
2
void assign_arith_nlICP(Options& opts, const std::string& option, bool value) {
2303
2304
2
  opts.arith.nlICP = value;
2305
2
  opts.arith.nlICPWasSetByUser = true;
2306
2
  Trace("options") << "user assigned option nlICP = " << value << std::endl;
2307
2
}
2308
2309
10
void assign_arith_nlRlvMode(Options& opts, const std::string& option, const std::string& optionarg) {
2310
10
  auto value = stringToNlRlvMode(optionarg);
2311
2312
10
  opts.arith.nlRlvMode = value;
2313
10
  opts.arith.nlRlvModeWasSetByUser = true;
2314
10
  Trace("options") << "user assigned option nlRlvMode = " << value << std::endl;
2315
10
}
2316
2317
2
void assign_arith_pbRewrites(Options& opts, const std::string& option, bool value) {
2318
2319
2
  opts.arith.pbRewrites = value;
2320
2
  opts.arith.pbRewritesWasSetByUser = true;
2321
2
  Trace("options") << "user assigned option pbRewrites = " << value << std::endl;
2322
2
}
2323
2324
void assign_arith_arithPivotThreshold(Options& opts, const std::string& option, const std::string& optionarg) {
2325
  auto value = handleOption<uint16_t>("pivot-threshold", option, optionarg);
2326
2327
  opts.arith.arithPivotThreshold = value;
2328
  opts.arith.arithPivotThresholdWasSetByUser = true;
2329
  Trace("options") << "user assigned option arithPivotThreshold = " << value << std::endl;
2330
}
2331
2332
void assign_arith_ppAssertMaxSubSize(Options& opts, const std::string& option, const std::string& optionarg) {
2333
  auto value = handleOption<unsigned>("pp-assert-max-sub-size", option, optionarg);
2334
2335
  opts.arith.ppAssertMaxSubSize = value;
2336
  opts.arith.ppAssertMaxSubSizeWasSetByUser = true;
2337
  Trace("options") << "user assigned option ppAssertMaxSubSize = " << value << std::endl;
2338
}
2339
2340
void assign_arith_arithPropagateMaxLength(Options& opts, const std::string& option, const std::string& optionarg) {
2341
  auto value = handleOption<uint16_t>("prop-row-length", option, optionarg);
2342
2343
  opts.arith.arithPropagateMaxLength = value;
2344
  opts.arith.arithPropagateMaxLengthWasSetByUser = true;
2345
  Trace("options") << "user assigned option arithPropagateMaxLength = " << value << std::endl;
2346
}
2347
2348
void assign_arith_replayEarlyCloseDepths(Options& opts, const std::string& option, const std::string& optionarg) {
2349
  auto value = handleOption<int>("replay-early-close-depth", option, optionarg);
2350
2351
  opts.arith.replayEarlyCloseDepths = value;
2352
  opts.arith.replayEarlyCloseDepthsWasSetByUser = true;
2353
  Trace("options") << "user assigned option replayEarlyCloseDepths = " << value << std::endl;
2354
}
2355
2356
void assign_arith_replayFailurePenalty(Options& opts, const std::string& option, const std::string& optionarg) {
2357
  auto value = handleOption<int>("replay-failure-penalty", option, optionarg);
2358
2359
  opts.arith.replayFailurePenalty = value;
2360
  opts.arith.replayFailurePenaltyWasSetByUser = true;
2361
  Trace("options") << "user assigned option replayFailurePenalty = " << value << std::endl;
2362
}
2363
2364
void assign_arith_lemmaRejectCutSize(Options& opts, const std::string& option, const std::string& optionarg) {
2365
  auto value = handleOption<unsigned>("replay-lemma-reject-cut", option, optionarg);
2366
2367
  opts.arith.lemmaRejectCutSize = value;
2368
  opts.arith.lemmaRejectCutSizeWasSetByUser = true;
2369
  Trace("options") << "user assigned option lemmaRejectCutSize = " << value << std::endl;
2370
}
2371
2372
void assign_arith_replayNumericFailurePenalty(Options& opts, const std::string& option, const std::string& optionarg) {
2373
  auto value = handleOption<int>("replay-num-err-penalty", option, optionarg);
2374
2375
  opts.arith.replayNumericFailurePenalty = value;
2376
  opts.arith.replayNumericFailurePenaltyWasSetByUser = true;
2377
  Trace("options") << "user assigned option replayNumericFailurePenalty = " << value << std::endl;
2378
}
2379
2380
void assign_arith_replayRejectCutSize(Options& opts, const std::string& option, const std::string& optionarg) {
2381
  auto value = handleOption<unsigned>("replay-reject-cut", option, optionarg);
2382
2383
  opts.arith.replayRejectCutSize = value;
2384
  opts.arith.replayRejectCutSizeWasSetByUser = true;
2385
  Trace("options") << "user assigned option replayRejectCutSize = " << value << std::endl;
2386
}
2387
2388
void assign_arith_soiApproxMajorFailurePen(Options& opts, const std::string& option, const std::string& optionarg) {
2389
  auto value = handleOption<int>("replay-soi-major-threshold-pen", option, optionarg);
2390
2391
  opts.arith.soiApproxMajorFailurePen = value;
2392
  opts.arith.soiApproxMajorFailurePenWasSetByUser = true;
2393
  Trace("options") << "user assigned option soiApproxMajorFailurePen = " << value << std::endl;
2394
}
2395
2396
void assign_arith_soiApproxMajorFailure(Options& opts, const std::string& option, const std::string& optionarg) {
2397
  auto value = handleOption<double>("replay-soi-major-threshold", option, optionarg);
2398
2399
  opts.arith.soiApproxMajorFailure = value;
2400
  opts.arith.soiApproxMajorFailureWasSetByUser = true;
2401
  Trace("options") << "user assigned option soiApproxMajorFailure = " << value << std::endl;
2402
}
2403
2404
void assign_arith_soiApproxMinorFailurePen(Options& opts, const std::string& option, const std::string& optionarg) {
2405
  auto value = handleOption<int>("replay-soi-minor-threshold-pen", option, optionarg);
2406
2407
  opts.arith.soiApproxMinorFailurePen = value;
2408
  opts.arith.soiApproxMinorFailurePenWasSetByUser = true;
2409
  Trace("options") << "user assigned option soiApproxMinorFailurePen = " << value << std::endl;
2410
}
2411
2412
void assign_arith_soiApproxMinorFailure(Options& opts, const std::string& option, const std::string& optionarg) {
2413
  auto value = handleOption<double>("replay-soi-minor-threshold", option, optionarg);
2414
2415
  opts.arith.soiApproxMinorFailure = value;
2416
  opts.arith.soiApproxMinorFailureWasSetByUser = true;
2417
  Trace("options") << "user assigned option soiApproxMinorFailure = " << value << std::endl;
2418
}
2419
2420
void assign_arith_restrictedPivots(Options& opts, const std::string& option, bool value) {
2421
2422
  opts.arith.restrictedPivots = value;
2423
  opts.arith.restrictedPivotsWasSetByUser = true;
2424
  Trace("options") << "user assigned option restrictedPivots = " << value << std::endl;
2425
}
2426
2427
void assign_arith_revertArithModels(Options& opts, const std::string& option, bool value) {
2428
2429
  opts.arith.revertArithModels = value;
2430
  opts.arith.revertArithModelsWasSetByUser = true;
2431
  Trace("options") << "user assigned option revertArithModels = " << value << std::endl;
2432
}
2433
2434
void assign_arith_rrTurns(Options& opts, const std::string& option, const std::string& optionarg) {
2435
  auto value = handleOption<int>("rr-turns", option, optionarg);
2436
2437
  opts.arith.rrTurns = value;
2438
  opts.arith.rrTurnsWasSetByUser = true;
2439
  Trace("options") << "user assigned option rrTurns = " << value << std::endl;
2440
}
2441
2442
void assign_arith_trySolveIntStandardEffort(Options& opts, const std::string& option, bool value) {
2443
2444
  opts.arith.trySolveIntStandardEffort = value;
2445
  opts.arith.trySolveIntStandardEffortWasSetByUser = true;
2446
  Trace("options") << "user assigned option trySolveIntStandardEffort = " << value << std::endl;
2447
}
2448
2449
void assign_arith_arithSimplexCheckPeriod(Options& opts, const std::string& option, const std::string& optionarg) {
2450
  auto value = handleOption<uint16_t>("simplex-check-period", option, optionarg);
2451
2452
  opts.arith.arithSimplexCheckPeriod = value;
2453
  opts.arith.arithSimplexCheckPeriodWasSetByUser = true;
2454
  Trace("options") << "user assigned option arithSimplexCheckPeriod = " << value << std::endl;
2455
}
2456
2457
void assign_arith_soiQuickExplain(Options& opts, const std::string& option, bool value) {
2458
2459
  opts.arith.soiQuickExplain = value;
2460
  opts.arith.soiQuickExplainWasSetByUser = true;
2461
  Trace("options") << "user assigned option soiQuickExplain = " << value << std::endl;
2462
}
2463
2464
void assign_arith_arithStandardCheckVarOrderPivots(Options& opts, const std::string& option, const std::string& optionarg) {
2465
  auto value = handleOption<int16_t>("standard-effort-variable-order-pivots", option, optionarg);
2466
2467
  opts.arith.arithStandardCheckVarOrderPivots = value;
2468
  opts.arith.arithStandardCheckVarOrderPivotsWasSetByUser = true;
2469
  Trace("options") << "user assigned option arithStandardCheckVarOrderPivots = " << value << std::endl;
2470
}
2471
2472
void assign_arith_arithUnateLemmaMode(Options& opts, const std::string& option, const std::string& optionarg) {
2473
  auto value = stringToArithUnateLemmaMode(optionarg);
2474
2475
  opts.arith.arithUnateLemmaMode = value;
2476
  opts.arith.arithUnateLemmaModeWasSetByUser = true;
2477
  Trace("options") << "user assigned option arithUnateLemmaMode = " << value << std::endl;
2478
}
2479
2480
void assign_arith_useApprox(Options& opts, const std::string& option, bool value) {
2481
2482
  opts.arith.useApprox = value;
2483
  opts.arith.useApproxWasSetByUser = true;
2484
  Trace("options") << "user assigned option useApprox = " << value << std::endl;
2485
}
2486
2487
void assign_arith_useFC(Options& opts, const std::string& option, bool value) {
2488
2489
  opts.arith.useFC = value;
2490
  opts.arith.useFCWasSetByUser = true;
2491
  Trace("options") << "user assigned option useFC = " << value << std::endl;
2492
}
2493
2494
void assign_arith_useSOI(Options& opts, const std::string& option, bool value) {
2495
2496
  opts.arith.useSOI = value;
2497
  opts.arith.useSOIWasSetByUser = true;
2498
  Trace("options") << "user assigned option useSOI = " << value << std::endl;
2499
}
2500
2501
void assign_arrays_arraysConfig(Options& opts, const std::string& option, const std::string& optionarg) {
2502
  auto value = handleOption<int>("arrays-config", option, optionarg);
2503
2504
  opts.arrays.arraysConfig = value;
2505
  opts.arrays.arraysConfigWasSetByUser = true;
2506
  Trace("options") << "user assigned option arraysConfig = " << value << std::endl;
2507
}
2508
2509
void assign_arrays_arraysEagerIndexSplitting(Options& opts, const std::string& option, bool value) {
2510
2511
  opts.arrays.arraysEagerIndexSplitting = value;
2512
  opts.arrays.arraysEagerIndexSplittingWasSetByUser = true;
2513
  Trace("options") << "user assigned option arraysEagerIndexSplitting = " << value << std::endl;
2514
}
2515
2516
void assign_arrays_arraysEagerLemmas(Options& opts, const std::string& option, bool value) {
2517
2518
  opts.arrays.arraysEagerLemmas = value;
2519
  opts.arrays.arraysEagerLemmasWasSetByUser = true;
2520
  Trace("options") << "user assigned option arraysEagerLemmas = " << value << std::endl;
2521
}
2522
2523
10
void assign_arrays_arraysExp(Options& opts, const std::string& option, bool value) {
2524
2525
10
  opts.arrays.arraysExp = value;
2526
10
  opts.arrays.arraysExpWasSetByUser = true;
2527
10
  Trace("options") << "user assigned option arraysExp = " << value << std::endl;
2528
10
}
2529
2530
void assign_arrays_arraysModelBased(Options& opts, const std::string& option, bool value) {
2531
2532
  opts.arrays.arraysModelBased = value;
2533
  opts.arrays.arraysModelBasedWasSetByUser = true;
2534
  Trace("options") << "user assigned option arraysModelBased = " << value << std::endl;
2535
}
2536
2537
void assign_arrays_arraysOptimizeLinear(Options& opts, const std::string& option, bool value) {
2538
2539
  opts.arrays.arraysOptimizeLinear = value;
2540
  opts.arrays.arraysOptimizeLinearWasSetByUser = true;
2541
  Trace("options") << "user assigned option arraysOptimizeLinear = " << value << std::endl;
2542
}
2543
2544
void assign_arrays_arraysPropagate(Options& opts, const std::string& option, const std::string& optionarg) {
2545
  auto value = handleOption<int>("arrays-prop", option, optionarg);
2546
2547
  opts.arrays.arraysPropagate = value;
2548
  opts.arrays.arraysPropagateWasSetByUser = true;
2549
  Trace("options") << "user assigned option arraysPropagate = " << value << std::endl;
2550
}
2551
2552
void assign_arrays_arraysReduceSharing(Options& opts, const std::string& option, bool value) {
2553
2554
  opts.arrays.arraysReduceSharing = value;
2555
  opts.arrays.arraysReduceSharingWasSetByUser = true;
2556
  Trace("options") << "user assigned option arraysReduceSharing = " << value << std::endl;
2557
}
2558
2559
void assign_arrays_arraysWeakEquivalence(Options& opts, const std::string& option, bool value) {
2560
2561
  opts.arrays.arraysWeakEquivalence = value;
2562
  opts.arrays.arraysWeakEquivalenceWasSetByUser = true;
2563
  Trace("options") << "user assigned option arraysWeakEquivalence = " << value << std::endl;
2564
}
2565
2566
7273
void assign_base_incrementalSolving(Options& opts, const std::string& option, bool value) {
2567
2568
7273
  opts.base.incrementalSolving = value;
2569
7273
  opts.base.incrementalSolvingWasSetByUser = true;
2570
7273
  Trace("options") << "user assigned option incrementalSolving = " << value << std::endl;
2571
7273
}
2572
2573
512
void assign_base_inputLanguage(Options& opts, const std::string& option, const std::string& optionarg) {
2574
512
  auto value = opts.handler().stringToInputLanguage("lang", option, optionarg);
2575
2576
512
  opts.base.inputLanguage = value;
2577
512
  opts.base.inputLanguageWasSetByUser = true;
2578
512
  Trace("options") << "user assigned option inputLanguage = " << value << std::endl;
2579
512
}
2580
2581
void assign_base_languageHelp(Options& opts, const std::string& option, bool value) {
2582
2583
  opts.base.languageHelp = value;
2584
  opts.base.languageHelpWasSetByUser = true;
2585
  Trace("options") << "user assigned option languageHelp = " << value << std::endl;
2586
}
2587
2588
89
void assign_base_outputLanguage(Options& opts, const std::string& option, const std::string& optionarg) {
2589
89
  auto value = opts.handler().stringToOutputLanguage("output-lang", option, optionarg);
2590
2591
89
  opts.base.outputLanguage = value;
2592
89
  opts.base.outputLanguageWasSetByUser = true;
2593
89
  Trace("options") << "user assigned option outputLanguage = " << value << std::endl;
2594
89
}
2595
2596
void assign_base_parseOnly(Options& opts, const std::string& option, bool value) {
2597
2598
  opts.base.parseOnly = value;
2599
  opts.base.parseOnlyWasSetByUser = true;
2600
  Trace("options") << "user assigned option parseOnly = " << value << std::endl;
2601
}
2602
2603
3
void assign_base_preprocessOnly(Options& opts, const std::string& option, bool value) {
2604
2605
3
  opts.base.preprocessOnly = value;
2606
3
  opts.base.preprocessOnlyWasSetByUser = true;
2607
3
  Trace("options") << "user assigned option preprocessOnly = " << value << std::endl;
2608
3
}
2609
2610
30
void assign_base_printSuccess(Options& opts, const std::string& option, bool value) {
2611
2612
30
  opts.base.printSuccess = value;
2613
30
  opts.base.printSuccessWasSetByUser = true;
2614
30
  Trace("options") << "user assigned option printSuccess = " << value << std::endl;
2615
30
}
2616
2617
void assign_base_perCallResourceLimit(Options& opts, const std::string& option, const std::string& optionarg) {
2618
  auto value = handleOption<uint64_t>("rlimit-per", option, optionarg);
2619
2620
  opts.base.perCallResourceLimit = value;
2621
  opts.base.perCallResourceLimitWasSetByUser = true;
2622
  Trace("options") << "user assigned option perCallResourceLimit = " << value << std::endl;
2623
}
2624
2625
void assign_base_cumulativeResourceLimit(Options& opts, const std::string& option, const std::string& optionarg) {
2626
  auto value = handleOption<uint64_t>("rlimit", option, optionarg);
2627
2628
  opts.base.cumulativeResourceLimit = value;
2629
  opts.base.cumulativeResourceLimitWasSetByUser = true;
2630
  Trace("options") << "user assigned option cumulativeResourceLimit = " << value << std::endl;
2631
}
2632
2633
2
void assign_base_statistics(Options& opts, const std::string& option, bool value) {
2634
2
  opts.handler().setStats("stats", option, value);
2635
2
  opts.base.statistics = value;
2636
2
  opts.base.statisticsWasSetByUser = true;
2637
2
  Trace("options") << "user assigned option statistics = " << value << std::endl;
2638
2
}
2639
2640
1
void assign_base_statisticsAll(Options& opts, const std::string& option, bool value) {
2641
1
  opts.handler().setStats("stats-all", option, value);
2642
1
  opts.base.statisticsAll = value;
2643
1
  opts.base.statisticsAllWasSetByUser = true;
2644
1
  Trace("options") << "user assigned option statisticsAll = " << value << std::endl;
2645
1
}
2646
2647
void assign_base_statisticsEveryQuery(Options& opts, const std::string& option, bool value) {
2648
  opts.handler().setStats("stats-every-query", option, value);
2649
  opts.base.statisticsEveryQuery = value;
2650
  opts.base.statisticsEveryQueryWasSetByUser = true;
2651
  Trace("options") << "user assigned option statisticsEveryQuery = " << value << std::endl;
2652
}
2653
2654
1
void assign_base_statisticsExpert(Options& opts, const std::string& option, bool value) {
2655
1
  opts.handler().setStats("stats-expert", option, value);
2656
1
  opts.base.statisticsExpert = value;
2657
1
  opts.base.statisticsExpertWasSetByUser = true;
2658
1
  Trace("options") << "user assigned option statisticsExpert = " << value << std::endl;
2659
1
}
2660
2661
6
void assign_base_perCallMillisecondLimit(Options& opts, const std::string& option, const std::string& optionarg) {
2662
6
  auto value = handleOption<uint64_t>("tlimit-per", option, optionarg);
2663
2664
6
  opts.base.perCallMillisecondLimit = value;
2665
6
  opts.base.perCallMillisecondLimitWasSetByUser = true;
2666
6
  Trace("options") << "user assigned option perCallMillisecondLimit = " << value << std::endl;
2667
6
}
2668
2669
void assign_base_cumulativeMillisecondLimit(Options& opts, const std::string& option, const std::string& optionarg) {
2670
  auto value = handleOption<uint64_t>("tlimit", option, optionarg);
2671
2672
  opts.base.cumulativeMillisecondLimit = value;
2673
  opts.base.cumulativeMillisecondLimitWasSetByUser = true;
2674
  Trace("options") << "user assigned option cumulativeMillisecondLimit = " << value << std::endl;
2675
}
2676
2677
6
void assign_base_verbosity(Options& opts, const std::string& option, const std::string& optionarg) {
2678
6
  auto value = handleOption<int>("verbosity", option, optionarg);
2679
6
  opts.handler().setVerbosity("verbosity", option, value);
2680
6
  opts.base.verbosity = value;
2681
6
  opts.base.verbosityWasSetByUser = true;
2682
6
  Trace("options") << "user assigned option verbosity = " << value << std::endl;
2683
6
}
2684
2685
void assign_bv_bitvectorAig(Options& opts, const std::string& option, bool value) {
2686
  opts.handler().abcEnabledBuild("bitblast-aig", option, value);
2687
opts.handler().setBitblastAig("bitblast-aig", option, value);
2688
  opts.bv.bitvectorAig = value;
2689
  opts.bv.bitvectorAigWasSetByUser = true;
2690
  Trace("options") << "user assigned option bitvectorAig = " << value << std::endl;
2691
}
2692
2693
40
void assign_bv_bitblastMode(Options& opts, const std::string& option, const std::string& optionarg) {
2694
40
  auto value = stringToBitblastMode(optionarg);
2695
2696
40
  opts.bv.bitblastMode = value;
2697
40
  opts.bv.bitblastModeWasSetByUser = true;
2698
40
  Trace("options") << "user assigned option bitblastMode = " << value << std::endl;
2699
40
}
2700
2701
void assign_bv_bitwiseEq(Options& opts, const std::string& option, bool value) {
2702
2703
  opts.bv.bitwiseEq = value;
2704
  opts.bv.bitwiseEqWasSetByUser = true;
2705
  Trace("options") << "user assigned option bitwiseEq = " << value << std::endl;
2706
}
2707
2708
12
void assign_bv_boolToBitvector(Options& opts, const std::string& option, const std::string& optionarg) {
2709
12
  auto value = stringToBoolToBVMode(optionarg);
2710
2711
12
  opts.bv.boolToBitvector = value;
2712
12
  opts.bv.boolToBitvectorWasSetByUser = true;
2713
12
  Trace("options") << "user assigned option boolToBitvector = " << value << std::endl;
2714
12
}
2715
2716
4
void assign_bv_bvAbstraction(Options& opts, const std::string& option, bool value) {
2717
2718
4
  opts.bv.bvAbstraction = value;
2719
4
  opts.bv.bvAbstractionWasSetByUser = true;
2720
4
  Trace("options") << "user assigned option bvAbstraction = " << value << std::endl;
2721
4
}
2722
2723
void assign_bv_bitvectorAigSimplifications(Options& opts, const std::string& option, const std::string& optionarg) {
2724
  auto value = handleOption<std::string>("bv-aig-simp", option, optionarg);
2725
  opts.handler().abcEnabledBuild("bv-aig-simp", option, value);
2726
  opts.bv.bitvectorAigSimplifications = value;
2727
  opts.bv.bitvectorAigSimplificationsWasSetByUser = true;
2728
  Trace("options") << "user assigned option bitvectorAigSimplifications = " << value << std::endl;
2729
}
2730
2731
void assign_bv_bvAlgExtf(Options& opts, const std::string& option, bool value) {
2732
2733
  opts.bv.bvAlgExtf = value;
2734
  opts.bv.bvAlgExtfWasSetByUser = true;
2735
  Trace("options") << "user assigned option bvAlgExtf = " << value << std::endl;
2736
}
2737
2738
void assign_bv_bitvectorAlgebraicBudget(Options& opts, const std::string& option, const std::string& optionarg) {
2739
  auto value = handleOption<unsigned>("bv-algebraic-budget", option, optionarg);
2740
2741
  opts.bv.bitvectorAlgebraicBudget = value;
2742
  opts.bv.bitvectorAlgebraicBudgetWasSetByUser = true;
2743
  Trace("options") << "user assigned option bitvectorAlgebraicBudget = " << value << std::endl;
2744
}
2745
2746
void assign_bv_bitvectorAlgebraicSolver(Options& opts, const std::string& option, bool value) {
2747
2748
  opts.bv.bitvectorAlgebraicSolver = value;
2749
  opts.bv.bitvectorAlgebraicSolverWasSetByUser = true;
2750
  Trace("options") << "user assigned option bitvectorAlgebraicSolver = " << value << std::endl;
2751
}
2752
2753
6
void assign_bv_bvAssertInput(Options& opts, const std::string& option, bool value) {
2754
2755
6
  opts.bv.bvAssertInput = value;
2756
6
  opts.bv.bvAssertInputWasSetByUser = true;
2757
6
  Trace("options") << "user assigned option bvAssertInput = " << value << std::endl;
2758
6
}
2759
2760
void assign_bv_bvEagerExplanations(Options& opts, const std::string& option, bool value) {
2761
2762
  opts.bv.bvEagerExplanations = value;
2763
  opts.bv.bvEagerExplanationsWasSetByUser = true;
2764
  Trace("options") << "user assigned option bvEagerExplanations = " << value << std::endl;
2765
}
2766
2767
2
void assign_bv_bitvectorEqualitySolver(Options& opts, const std::string& option, bool value) {
2768
2769
2
  opts.bv.bitvectorEqualitySolver = value;
2770
2
  opts.bv.bitvectorEqualitySolverWasSetByUser = true;
2771
2
  Trace("options") << "user assigned option bitvectorEqualitySolver = " << value << std::endl;
2772
2
}
2773
2774
void assign_bv_bvExtractArithRewrite(Options& opts, const std::string& option, bool value) {
2775
2776
  opts.bv.bvExtractArithRewrite = value;
2777
  opts.bv.bvExtractArithRewriteWasSetByUser = true;
2778
  Trace("options") << "user assigned option bvExtractArithRewrite = " << value << std::endl;
2779
}
2780
2781
void assign_bv_bvGaussElim(Options& opts, const std::string& option, bool value) {
2782
2783
  opts.bv.bvGaussElim = value;
2784
  opts.bv.bvGaussElimWasSetByUser = true;
2785
  Trace("options") << "user assigned option bvGaussElim = " << value << std::endl;
2786
}
2787
2788
void assign_bv_bitvectorInequalitySolver(Options& opts, const std::string& option, bool value) {
2789
2790
  opts.bv.bitvectorInequalitySolver = value;
2791
  opts.bv.bitvectorInequalitySolverWasSetByUser = true;
2792
  Trace("options") << "user assigned option bitvectorInequalitySolver = " << value << std::endl;
2793
}
2794
2795
2
void assign_bv_bvIntroducePow2(Options& opts, const std::string& option, bool value) {
2796
2797
2
  opts.bv.bvIntroducePow2 = value;
2798
2
  opts.bv.bvIntroducePow2WasSetByUser = true;
2799
2
  Trace("options") << "user assigned option bvIntroducePow2 = " << value << std::endl;
2800
2
}
2801
2802
void assign_bv_bvNumFunc(Options& opts, const std::string& option, const std::string& optionarg) {
2803
  auto value = handleOption<unsigned>("bv-num-func", option, optionarg);
2804
2805
  opts.bv.bvNumFunc = value;
2806
  opts.bv.bvNumFuncWasSetByUser = true;
2807
  Trace("options") << "user assigned option bvNumFunc = " << value << std::endl;
2808
}
2809
2810
2
void assign_bv_bvPrintConstsAsIndexedSymbols(Options& opts, const std::string& option, bool value) {
2811
2812
2
  opts.bv.bvPrintConstsAsIndexedSymbols = value;
2813
2
  opts.bv.bvPrintConstsAsIndexedSymbolsWasSetByUser = true;
2814
2
  Trace("options") << "user assigned option bvPrintConstsAsIndexedSymbols = " << value << std::endl;
2815
2
}
2816
2817
void assign_bv_bitvectorPropagate(Options& opts, const std::string& option, bool value) {
2818
2819
  opts.bv.bitvectorPropagate = value;
2820
  opts.bv.bitvectorPropagateWasSetByUser = true;
2821
  Trace("options") << "user assigned option bitvectorPropagate = " << value << std::endl;
2822
}
2823
2824
void assign_bv_bitvectorQuickXplain(Options& opts, const std::string& option, bool value) {
2825
2826
  opts.bv.bitvectorQuickXplain = value;
2827
  opts.bv.bitvectorQuickXplainWasSetByUser = true;
2828
  Trace("options") << "user assigned option bitvectorQuickXplain = " << value << std::endl;
2829
}
2830
2831
18
void assign_bv_bvSatSolver(Options& opts, const std::string& option, const std::string& optionarg) {
2832
18
  auto value = stringToSatSolverMode(optionarg);
2833
16
  opts.handler().checkBvSatSolver("bv-sat-solver", option, value);
2834
16
  opts.bv.bvSatSolver = value;
2835
16
  opts.bv.bvSatSolverWasSetByUser = true;
2836
16
  Trace("options") << "user assigned option bvSatSolver = " << value << std::endl;
2837
16
}
2838
2839
void assign_bv_skolemizeArguments(Options& opts, const std::string& option, bool value) {
2840
2841
  opts.bv.skolemizeArguments = value;
2842
  opts.bv.skolemizeArgumentsWasSetByUser = true;
2843
  Trace("options") << "user assigned option skolemizeArguments = " << value << std::endl;
2844
}
2845
2846
43
void assign_bv_bvSolver(Options& opts, const std::string& option, const std::string& optionarg) {
2847
43
  auto value = stringToBVSolver(optionarg);
2848
2849
43
  opts.bv.bvSolver = value;
2850
43
  opts.bv.bvSolverWasSetByUser = true;
2851
43
  Trace("options") << "user assigned option bvSolver = " << value << std::endl;
2852
43
}
2853
2854
10
void assign_bv_bitvectorToBool(Options& opts, const std::string& option, bool value) {
2855
2856
10
  opts.bv.bitvectorToBool = value;
2857
10
  opts.bv.bitvectorToBoolWasSetByUser = true;
2858
10
  Trace("options") << "user assigned option bitvectorToBool = " << value << std::endl;
2859
10
}
2860
2861
void assign_datatypes_cdtBisimilar(Options& opts, const std::string& option, bool value) {
2862
2863
  opts.datatypes.cdtBisimilar = value;
2864
  opts.datatypes.cdtBisimilarWasSetByUser = true;
2865
  Trace("options") << "user assigned option cdtBisimilar = " << value << std::endl;
2866
}
2867
2868
void assign_datatypes_dtBinarySplit(Options& opts, const std::string& option, bool value) {
2869
2870
  opts.datatypes.dtBinarySplit = value;
2871
  opts.datatypes.dtBinarySplitWasSetByUser = true;
2872
  Trace("options") << "user assigned option dtBinarySplit = " << value << std::endl;
2873
}
2874
2875
void assign_datatypes_dtBlastSplits(Options& opts, const std::string& option, bool value) {
2876
2877
  opts.datatypes.dtBlastSplits = value;
2878
  opts.datatypes.dtBlastSplitsWasSetByUser = true;
2879
  Trace("options") << "user assigned option dtBlastSplits = " << value << std::endl;
2880
}
2881
2882
void assign_datatypes_dtCyclic(Options& opts, const std::string& option, bool value) {
2883
2884
  opts.datatypes.dtCyclic = value;
2885
  opts.datatypes.dtCyclicWasSetByUser = true;
2886
  Trace("options") << "user assigned option dtCyclic = " << value << std::endl;
2887
}
2888
2889
void assign_datatypes_dtForceAssignment(Options& opts, const std::string& option, bool value) {
2890
2891
  opts.datatypes.dtForceAssignment = value;
2892
  opts.datatypes.dtForceAssignmentWasSetByUser = true;
2893
  Trace("options") << "user assigned option dtForceAssignment = " << value << std::endl;
2894
}
2895
2896
void assign_datatypes_dtInferAsLemmas(Options& opts, const std::string& option, bool value) {
2897
2898
  opts.datatypes.dtInferAsLemmas = value;
2899
  opts.datatypes.dtInferAsLemmasWasSetByUser = true;
2900
  Trace("options") << "user assigned option dtInferAsLemmas = " << value << std::endl;
2901
}
2902
2903
10
void assign_datatypes_dtNestedRec(Options& opts, const std::string& option, bool value) {
2904
2905
10
  opts.datatypes.dtNestedRec = value;
2906
10
  opts.datatypes.dtNestedRecWasSetByUser = true;
2907
10
  Trace("options") << "user assigned option dtNestedRec = " << value << std::endl;
2908
10
}
2909
2910
void assign_datatypes_dtPoliteOptimize(Options& opts, const std::string& option, bool value) {
2911
2912
  opts.datatypes.dtPoliteOptimize = value;
2913
  opts.datatypes.dtPoliteOptimizeWasSetByUser = true;
2914
  Trace("options") << "user assigned option dtPoliteOptimize = " << value << std::endl;
2915
}
2916
2917
5
void assign_datatypes_dtRewriteErrorSel(Options& opts, const std::string& option, bool value) {
2918
2919
5
  opts.datatypes.dtRewriteErrorSel = value;
2920
5
  opts.datatypes.dtRewriteErrorSelWasSetByUser = true;
2921
5
  Trace("options") << "user assigned option dtRewriteErrorSel = " << value << std::endl;
2922
5
}
2923
2924
void assign_datatypes_dtSharedSelectors(Options& opts, const std::string& option, bool value) {
2925
2926
  opts.datatypes.dtSharedSelectors = value;
2927
  opts.datatypes.dtSharedSelectorsWasSetByUser = true;
2928
  Trace("options") << "user assigned option dtSharedSelectors = " << value << std::endl;
2929
}
2930
2931
11
void assign_datatypes_sygusAbortSize(Options& opts, const std::string& option, const std::string& optionarg) {
2932
11
  auto value = handleOption<int>("sygus-abort-size", option, optionarg);
2933
2934
11
  opts.datatypes.sygusAbortSize = value;
2935
11
  opts.datatypes.sygusAbortSizeWasSetByUser = true;
2936
11
  Trace("options") << "user assigned option sygusAbortSize = " << value << std::endl;
2937
11
}
2938
2939
void assign_datatypes_sygusFairMax(Options& opts, const std::string& option, bool value) {
2940
2941
  opts.datatypes.sygusFairMax = value;
2942
  opts.datatypes.sygusFairMaxWasSetByUser = true;
2943
  Trace("options") << "user assigned option sygusFairMax = " << value << std::endl;
2944
}
2945
2946
2
void assign_datatypes_sygusFair(Options& opts, const std::string& option, const std::string& optionarg) {
2947
2
  auto value = stringToSygusFairMode(optionarg);
2948
2949
2
  opts.datatypes.sygusFair = value;
2950
2
  opts.datatypes.sygusFairWasSetByUser = true;
2951
2
  Trace("options") << "user assigned option sygusFair = " << value << std::endl;
2952
2
}
2953
2954
8
void assign_datatypes_sygusSymBreak(Options& opts, const std::string& option, bool value) {
2955
2956
8
  opts.datatypes.sygusSymBreak = value;
2957
8
  opts.datatypes.sygusSymBreakWasSetByUser = true;
2958
8
  Trace("options") << "user assigned option sygusSymBreak = " << value << std::endl;
2959
8
}
2960
2961
void assign_datatypes_sygusSymBreakAgg(Options& opts, const std::string& option, bool value) {
2962
2963
  opts.datatypes.sygusSymBreakAgg = value;
2964
  opts.datatypes.sygusSymBreakAggWasSetByUser = true;
2965
  Trace("options") << "user assigned option sygusSymBreakAgg = " << value << std::endl;
2966
}
2967
2968
void assign_datatypes_sygusSymBreakDynamic(Options& opts, const std::string& option, bool value) {
2969
2970
  opts.datatypes.sygusSymBreakDynamic = value;
2971
  opts.datatypes.sygusSymBreakDynamicWasSetByUser = true;
2972
  Trace("options") << "user assigned option sygusSymBreakDynamic = " << value << std::endl;
2973
}
2974
2975
2
void assign_datatypes_sygusSymBreakLazy(Options& opts, const std::string& option, bool value) {
2976
2977
2
  opts.datatypes.sygusSymBreakLazy = value;
2978
2
  opts.datatypes.sygusSymBreakLazyWasSetByUser = true;
2979
2
  Trace("options") << "user assigned option sygusSymBreakLazy = " << value << std::endl;
2980
2
}
2981
2982
void assign_datatypes_sygusSymBreakPbe(Options& opts, const std::string& option, bool value) {
2983
2984
  opts.datatypes.sygusSymBreakPbe = value;
2985
  opts.datatypes.sygusSymBreakPbeWasSetByUser = true;
2986
  Trace("options") << "user assigned option sygusSymBreakPbe = " << value << std::endl;
2987
}
2988
2989
2
void assign_datatypes_sygusSymBreakRlv(Options& opts, const std::string& option, bool value) {
2990
2991
2
  opts.datatypes.sygusSymBreakRlv = value;
2992
2
  opts.datatypes.sygusSymBreakRlvWasSetByUser = true;
2993
2
  Trace("options") << "user assigned option sygusSymBreakRlv = " << value << std::endl;
2994
2
}
2995
2996
void assign_decision_decisionRandomWeight(Options& opts, const std::string& option, const std::string& optionarg) {
2997
  auto value = handleOption<int>("decision-random-weight", option, optionarg);
2998
2999
  opts.decision.decisionRandomWeight = value;
3000
  opts.decision.decisionRandomWeightWasSetByUser = true;
3001
  Trace("options") << "user assigned option decisionRandomWeight = " << value << std::endl;
3002
}
3003
3004
void assign_decision_decisionThreshold(Options& opts, const std::string& option, const std::string& optionarg) {
3005
  auto value = handleOption<cvc5::decision::DecisionWeight>("decision-threshold", option, optionarg);
3006
3007
  opts.decision.decisionThreshold = value;
3008
  opts.decision.decisionThresholdWasSetByUser = true;
3009
  Trace("options") << "user assigned option decisionThreshold = " << value << std::endl;
3010
}
3011
3012
void assign_decision_decisionUseWeight(Options& opts, const std::string& option, bool value) {
3013
3014
  opts.decision.decisionUseWeight = value;
3015
  opts.decision.decisionUseWeightWasSetByUser = true;
3016
  Trace("options") << "user assigned option decisionUseWeight = " << value << std::endl;
3017
}
3018
3019
void assign_decision_decisionWeightInternal(Options& opts, const std::string& option, const std::string& optionarg) {
3020
  auto value = stringToDecisionWeightInternal(optionarg);
3021
3022
  opts.decision.decisionWeightInternal = value;
3023
  opts.decision.decisionWeightInternalWasSetByUser = true;
3024
  Trace("options") << "user assigned option decisionWeightInternal = " << value << std::endl;
3025
}
3026
3027
94
void assign_decision_decisionMode(Options& opts, const std::string& option, const std::string& optionarg) {
3028
94
  auto value = stringToDecisionMode(optionarg);
3029
3030
94
  opts.decision.decisionMode = value;
3031
94
  opts.decision.decisionModeWasSetByUser = true;
3032
94
  Trace("options") << "user assigned option decisionMode = " << value << std::endl;
3033
94
}
3034
3035
10
void assign_decision_jhRlvOrder(Options& opts, const std::string& option, bool value) {
3036
3037
10
  opts.decision.jhRlvOrder = value;
3038
10
  opts.decision.jhRlvOrderWasSetByUser = true;
3039
10
  Trace("options") << "user assigned option jhRlvOrder = " << value << std::endl;
3040
10
}
3041
3042
void assign_decision_jhSkolemRlvMode(Options& opts, const std::string& option, const std::string& optionarg) {
3043
  auto value = stringToJutificationSkolemRlvMode(optionarg);
3044
3045
  opts.decision.jhSkolemRlvMode = value;
3046
  opts.decision.jhSkolemRlvModeWasSetByUser = true;
3047
  Trace("options") << "user assigned option jhSkolemRlvMode = " << value << std::endl;
3048
}
3049
3050
void assign_decision_jhSkolemMode(Options& opts, const std::string& option, const std::string& optionarg) {
3051
  auto value = stringToJutificationSkolemMode(optionarg);
3052
3053
  opts.decision.jhSkolemMode = value;
3054
  opts.decision.jhSkolemModeWasSetByUser = true;
3055
  Trace("options") << "user assigned option jhSkolemMode = " << value << std::endl;
3056
}
3057
3058
2
void assign_expr_defaultDagThresh(Options& opts, const std::string& option, const std::string& optionarg) {
3059
2
  auto value = handleOption<int>("dag-thresh", option, optionarg);
3060
2
  opts.handler().setDefaultDagThreshPredicate("dag-thresh", option, value);
3061
2
  opts.expr.defaultDagThresh = value;
3062
2
  opts.expr.defaultDagThreshWasSetByUser = true;
3063
2
  Trace("options") << "user assigned option defaultDagThresh = " << value << std::endl;
3064
2
}
3065
3066
void assign_expr_defaultExprDepth(Options& opts, const std::string& option, const std::string& optionarg) {
3067
  auto value = handleOption<int>("expr-depth", option, optionarg);
3068
  opts.handler().setDefaultExprDepthPredicate("expr-depth", option, value);
3069
  opts.expr.defaultExprDepth = value;
3070
  opts.expr.defaultExprDepthWasSetByUser = true;
3071
  Trace("options") << "user assigned option defaultExprDepth = " << value << std::endl;
3072
}
3073
3074
void assign_expr_typeChecking(Options& opts, const std::string& option, bool value) {
3075
3076
  opts.expr.typeChecking = value;
3077
  opts.expr.typeCheckingWasSetByUser = true;
3078
  Trace("options") << "user assigned option typeChecking = " << value << std::endl;
3079
}
3080
3081
22
void assign_fp_fpExp(Options& opts, const std::string& option, bool value) {
3082
3083
22
  opts.fp.fpExp = value;
3084
22
  opts.fp.fpExpWasSetByUser = true;
3085
22
  Trace("options") << "user assigned option fpExp = " << value << std::endl;
3086
22
}
3087
3088
3
void assign_fp_fpLazyWb(Options& opts, const std::string& option, bool value) {
3089
3090
3
  opts.fp.fpLazyWb = value;
3091
3
  opts.fp.fpLazyWbWasSetByUser = true;
3092
3
  Trace("options") << "user assigned option fpLazyWb = " << value << std::endl;
3093
3
}
3094
3095
12
void assign_driver_dumpInstantiations(Options& opts, const std::string& option, bool value) {
3096
3097
12
  opts.driver.dumpInstantiations = value;
3098
12
  opts.driver.dumpInstantiationsWasSetByUser = true;
3099
12
  Trace("options") << "user assigned option dumpInstantiations = " << value << std::endl;
3100
12
}
3101
3102
6
void assign_driver_dumpModels(Options& opts, const std::string& option, bool value) {
3103
3104
6
  opts.driver.dumpModels = value;
3105
6
  opts.driver.dumpModelsWasSetByUser = true;
3106
6
  Trace("options") << "user assigned option dumpModels = " << value << std::endl;
3107
6
}
3108
3109
void assign_driver_dumpProofs(Options& opts, const std::string& option, bool value) {
3110
3111
  opts.driver.dumpProofs = value;
3112
  opts.driver.dumpProofsWasSetByUser = true;
3113
  Trace("options") << "user assigned option dumpProofs = " << value << std::endl;
3114
}
3115
3116
void assign_driver_dumpUnsatCores(Options& opts, const std::string& option, bool value) {
3117
3118
  opts.driver.dumpUnsatCores = value;
3119
  opts.driver.dumpUnsatCoresWasSetByUser = true;
3120
  Trace("options") << "user assigned option dumpUnsatCores = " << value << std::endl;
3121
}
3122
3123
3
void assign_driver_dumpUnsatCoresFull(Options& opts, const std::string& option, bool value) {
3124
3125
3
  opts.driver.dumpUnsatCoresFull = value;
3126
3
  opts.driver.dumpUnsatCoresFullWasSetByUser = true;
3127
3
  Trace("options") << "user assigned option dumpUnsatCoresFull = " << value << std::endl;
3128
3
}
3129
3130
void assign_driver_earlyExit(Options& opts, const std::string& option, bool value) {
3131
3132
  opts.driver.earlyExit = value;
3133
  opts.driver.earlyExitWasSetByUser = true;
3134
  Trace("options") << "user assigned option earlyExit = " << value << std::endl;
3135
}
3136
3137
void assign_driver_forceNoLimitCpuWhileDump(Options& opts, const std::string& option, bool value) {
3138
3139
  opts.driver.forceNoLimitCpuWhileDump = value;
3140
  opts.driver.forceNoLimitCpuWhileDumpWasSetByUser = true;
3141
  Trace("options") << "user assigned option forceNoLimitCpuWhileDump = " << value << std::endl;
3142
}
3143
3144
void assign_driver_help(Options& opts, const std::string& option, bool value) {
3145
3146
  opts.driver.help = value;
3147
  opts.driver.helpWasSetByUser = true;
3148
  Trace("options") << "user assigned option help = " << value << std::endl;
3149
}
3150
3151
void assign_driver_interactive(Options& opts, const std::string& option, bool value) {
3152
3153
  opts.driver.interactive = value;
3154
  opts.driver.interactiveWasSetByUser = true;
3155
  Trace("options") << "user assigned option interactive = " << value << std::endl;
3156
}
3157
3158
void assign_driver_interactivePrompt(Options& opts, const std::string& option, bool value) {
3159
3160
  opts.driver.interactivePrompt = value;
3161
  opts.driver.interactivePromptWasSetByUser = true;
3162
  Trace("options") << "user assigned option interactivePrompt = " << value << std::endl;
3163
}
3164
3165
void assign_driver_seed(Options& opts, const std::string& option, const std::string& optionarg) {
3166
  auto value = handleOption<uint64_t>("seed", option, optionarg);
3167
3168
  opts.driver.seed = value;
3169
  opts.driver.seedWasSetByUser = true;
3170
  Trace("options") << "user assigned option seed = " << value << std::endl;
3171
}
3172
3173
void assign_driver_segvSpin(Options& opts, const std::string& option, bool value) {
3174
3175
  opts.driver.segvSpin = value;
3176
  opts.driver.segvSpinWasSetByUser = true;
3177
  Trace("options") << "user assigned option segvSpin = " << value << std::endl;
3178
}
3179
3180
void assign_driver_version(Options& opts, const std::string& option, bool value) {
3181
3182
  opts.driver.version = value;
3183
  opts.driver.versionWasSetByUser = true;
3184
  Trace("options") << "user assigned option version = " << value << std::endl;
3185
}
3186
3187
void assign_parser_filesystemAccess(Options& opts, const std::string& option, bool value) {
3188
3189
  opts.parser.filesystemAccess = value;
3190
  opts.parser.filesystemAccessWasSetByUser = true;
3191
  Trace("options") << "user assigned option filesystemAccess = " << value << std::endl;
3192
}
3193
3194
9
void assign_parser_forceLogicString(Options& opts, const std::string& option, const std::string& optionarg) {
3195
18
  auto value = handleOption<std::string>("force-logic", option, optionarg);
3196
3197
9
  opts.parser.forceLogicString = value;
3198
9
  opts.parser.forceLogicStringWasSetByUser = true;
3199
9
  Trace("options") << "user assigned option forceLogicString = " << value << std::endl;
3200
9
}
3201
3202
19
void assign_parser_globalDeclarations(Options& opts, const std::string& option, bool value) {
3203
3204
19
  opts.parser.globalDeclarations = value;
3205
19
  opts.parser.globalDeclarationsWasSetByUser = true;
3206
19
  Trace("options") << "user assigned option globalDeclarations = " << value << std::endl;
3207
19
}
3208
3209
void assign_parser_memoryMap(Options& opts, const std::string& option, bool value) {
3210
3211
  opts.parser.memoryMap = value;
3212
  opts.parser.memoryMapWasSetByUser = true;
3213
  Trace("options") << "user assigned option memoryMap = " << value << std::endl;
3214
}
3215
3216
void assign_parser_semanticChecks(Options& opts, const std::string& option, bool value) {
3217
3218
  opts.parser.semanticChecks = value;
3219
  opts.parser.semanticChecksWasSetByUser = true;
3220
  Trace("options") << "user assigned option semanticChecks = " << value << std::endl;
3221
}
3222
3223
9
void assign_parser_strictParsing(Options& opts, const std::string& option, bool value) {
3224
3225
9
  opts.parser.strictParsing = value;
3226
9
  opts.parser.strictParsingWasSetByUser = true;
3227
9
  Trace("options") << "user assigned option strictParsing = " << value << std::endl;
3228
9
}
3229
3230
void assign_printer_flattenHOChains(Options& opts, const std::string& option, bool value) {
3231
3232
  opts.printer.flattenHOChains = value;
3233
  opts.printer.flattenHOChainsWasSetByUser = true;
3234
  Trace("options") << "user assigned option flattenHOChains = " << value << std::endl;
3235
}
3236
3237
void assign_printer_instFormatMode(Options& opts, const std::string& option, const std::string& optionarg) {
3238
  auto value = opts.handler().stringToInstFormatMode("inst-format", option, optionarg);
3239
3240
  opts.printer.instFormatMode = value;
3241
  opts.printer.instFormatModeWasSetByUser = true;
3242
  Trace("options") << "user assigned option instFormatMode = " << value << std::endl;
3243
}
3244
3245
void assign_printer_modelFormatMode(Options& opts, const std::string& option, const std::string& optionarg) {
3246
  auto value = stringToModelFormatMode(optionarg);
3247
3248
  opts.printer.modelFormatMode = value;
3249
  opts.printer.modelFormatModeWasSetByUser = true;
3250
  Trace("options") << "user assigned option modelFormatMode = " << value << std::endl;
3251
}
3252
3253
12
void assign_printer_printInstFull(Options& opts, const std::string& option, bool value) {
3254
3255
12
  opts.printer.printInstFull = value;
3256
12
  opts.printer.printInstFullWasSetByUser = true;
3257
12
  Trace("options") << "user assigned option printInstFull = " << value << std::endl;
3258
12
}
3259
3260
3
void assign_printer_printInstMode(Options& opts, const std::string& option, const std::string& optionarg) {
3261
3
  auto value = stringToPrintInstMode(optionarg);
3262
3263
3
  opts.printer.printInstMode = value;
3264
3
  opts.printer.printInstModeWasSetByUser = true;
3265
3
  Trace("options") << "user assigned option printInstMode = " << value << std::endl;
3266
3
}
3267
3268
2
void assign_proof_proofEagerChecking(Options& opts, const std::string& option, bool value) {
3269
3270
2
  opts.proof.proofEagerChecking = value;
3271
2
  opts.proof.proofEagerCheckingWasSetByUser = true;
3272
2
  Trace("options") << "user assigned option proofEagerChecking = " << value << std::endl;
3273
2
}
3274
3275
void assign_proof_proofFormatMode(Options& opts, const std::string& option, const std::string& optionarg) {
3276
  auto value = stringToProofFormatMode(optionarg);
3277
3278
  opts.proof.proofFormatMode = value;
3279
  opts.proof.proofFormatModeWasSetByUser = true;
3280
  Trace("options") << "user assigned option proofFormatMode = " << value << std::endl;
3281
}
3282
3283
void assign_proof_proofGranularityMode(Options& opts, const std::string& option, const std::string& optionarg) {
3284
  auto value = stringToProofGranularityMode(optionarg);
3285
3286
  opts.proof.proofGranularityMode = value;
3287
  opts.proof.proofGranularityModeWasSetByUser = true;
3288
  Trace("options") << "user assigned option proofGranularityMode = " << value << std::endl;
3289
}
3290
3291
void assign_proof_proofPedantic(Options& opts, const std::string& option, const std::string& optionarg) {
3292
  auto value = handleOption<uint32_t>("proof-pedantic", option, optionarg);
3293
3294
  opts.proof.proofPedantic = value;
3295
  opts.proof.proofPedanticWasSetByUser = true;
3296
  Trace("options") << "user assigned option proofPedantic = " << value << std::endl;
3297
}
3298
3299
void assign_proof_proofPrintConclusion(Options& opts, const std::string& option, bool value) {
3300
3301
  opts.proof.proofPrintConclusion = value;
3302
  opts.proof.proofPrintConclusionWasSetByUser = true;
3303
  Trace("options") << "user assigned option proofPrintConclusion = " << value << std::endl;
3304
}
3305
3306
void assign_prop_minisatDumpDimacs(Options& opts, const std::string& option, bool value) {
3307
3308
  opts.prop.minisatDumpDimacs = value;
3309
  opts.prop.minisatDumpDimacsWasSetByUser = true;
3310
  Trace("options") << "user assigned option minisatDumpDimacs = " << value << std::endl;
3311
}
3312
3313
void assign_prop_minisatUseElim(Options& opts, const std::string& option, bool value) {
3314
3315
  opts.prop.minisatUseElim = value;
3316
  opts.prop.minisatUseElimWasSetByUser = true;
3317
  Trace("options") << "user assigned option minisatUseElim = " << value << std::endl;
3318
}
3319
3320
void assign_prop_satRandomFreq(Options& opts, const std::string& option, const std::string& optionarg) {
3321
  auto value = handleOption<double>("random-freq", option, optionarg);
3322
  opts.handler().betweenZeroAndOne("random-freq", option, value);
3323
  opts.prop.satRandomFreq = value;
3324
  opts.prop.satRandomFreqWasSetByUser = true;
3325
  Trace("options") << "user assigned option satRandomFreq = " << value << std::endl;
3326
}
3327
3328
2
void assign_prop_satRandomSeed(Options& opts, const std::string& option, const std::string& optionarg) {
3329
2
  auto value = handleOption<uint32_t>("random-seed", option, optionarg);
3330
3331
2
  opts.prop.satRandomSeed = value;
3332
2
  opts.prop.satRandomSeedWasSetByUser = true;
3333
2
  Trace("options") << "user assigned option satRandomSeed = " << value << std::endl;
3334
2
}
3335
3336
void assign_prop_sat_refine_conflicts(Options& opts, const std::string& option, bool value) {
3337
3338
  opts.prop.sat_refine_conflicts = value;
3339
  opts.prop.sat_refine_conflictsWasSetByUser = true;
3340
  Trace("options") << "user assigned option sat_refine_conflicts = " << value << std::endl;
3341
}
3342
3343
void assign_prop_satRestartFirst(Options& opts, const std::string& option, const std::string& optionarg) {
3344
  auto value = handleOption<unsigned>("restart-int-base", option, optionarg);
3345
3346
  opts.prop.satRestartFirst = value;
3347
  opts.prop.satRestartFirstWasSetByUser = true;
3348
  Trace("options") << "user assigned option satRestartFirst = " << value << std::endl;
3349
}
3350
3351
void assign_prop_satRestartInc(Options& opts, const std::string& option, const std::string& optionarg) {
3352
  auto value = handleOption<double>("restart-int-inc", option, optionarg);
3353
  opts.handler().geqZero("restart-int-inc", option, value);
3354
  opts.prop.satRestartInc = value;
3355
  opts.prop.satRestartIncWasSetByUser = true;
3356
  Trace("options") << "user assigned option satRestartInc = " << value << std::endl;
3357
}
3358
3359
4
void assign_quantifiers_aggressiveMiniscopeQuant(Options& opts, const std::string& option, bool value) {
3360
3361
4
  opts.quantifiers.aggressiveMiniscopeQuant = value;
3362
4
  opts.quantifiers.aggressiveMiniscopeQuantWasSetByUser = true;
3363
4
  Trace("options") << "user assigned option aggressiveMiniscopeQuant = " << value << std::endl;
3364
4
}
3365
3366
3
void assign_quantifiers_cegisSample(Options& opts, const std::string& option, const std::string& optionarg) {
3367
3
  auto value = stringToCegisSampleMode(optionarg);
3368
3369
3
  opts.quantifiers.cegisSample = value;
3370
3
  opts.quantifiers.cegisSampleWasSetByUser = true;
3371
3
  Trace("options") << "user assigned option cegisSample = " << value << std::endl;
3372
3
}
3373
3374
19
void assign_quantifiers_cegqi(Options& opts, const std::string& option, bool value) {
3375
3376
19
  opts.quantifiers.cegqi = value;
3377
19
  opts.quantifiers.cegqiWasSetByUser = true;
3378
19
  Trace("options") << "user assigned option cegqi = " << value << std::endl;
3379
19
}
3380
3381
18
void assign_quantifiers_cegqiAll(Options& opts, const std::string& option, bool value) {
3382
3383
18
  opts.quantifiers.cegqiAll = value;
3384
18
  opts.quantifiers.cegqiAllWasSetByUser = true;
3385
18
  Trace("options") << "user assigned option cegqiAll = " << value << std::endl;
3386
18
}
3387
3388
106
void assign_quantifiers_cegqiBv(Options& opts, const std::string& option, bool value) {
3389
3390
106
  opts.quantifiers.cegqiBv = value;
3391
106
  opts.quantifiers.cegqiBvWasSetByUser = true;
3392
106
  Trace("options") << "user assigned option cegqiBv = " << value << std::endl;
3393
106
}
3394
3395
void assign_quantifiers_cegqiBvConcInv(Options& opts, const std::string& option, bool value) {
3396
3397
  opts.quantifiers.cegqiBvConcInv = value;
3398
  opts.quantifiers.cegqiBvConcInvWasSetByUser = true;
3399
  Trace("options") << "user assigned option cegqiBvConcInv = " << value << std::endl;
3400
}
3401
3402
82
void assign_quantifiers_cegqiBvIneqMode(Options& opts, const std::string& option, const std::string& optionarg) {
3403
82
  auto value = stringToCegqiBvIneqMode(optionarg);
3404
3405
82
  opts.quantifiers.cegqiBvIneqMode = value;
3406
82
  opts.quantifiers.cegqiBvIneqModeWasSetByUser = true;
3407
82
  Trace("options") << "user assigned option cegqiBvIneqMode = " << value << std::endl;
3408
82
}
3409
3410
void assign_quantifiers_cegqiBvInterleaveValue(Options& opts, const std::string& option, bool value) {
3411
3412
  opts.quantifiers.cegqiBvInterleaveValue = value;
3413
  opts.quantifiers.cegqiBvInterleaveValueWasSetByUser = true;
3414
  Trace("options") << "user assigned option cegqiBvInterleaveValue = " << value << std::endl;
3415
}
3416
3417
void assign_quantifiers_cegqiBvLinearize(Options& opts, const std::string& option, bool value) {
3418
3419
  opts.quantifiers.cegqiBvLinearize = value;
3420
  opts.quantifiers.cegqiBvLinearizeWasSetByUser = true;
3421
  Trace("options") << "user assigned option cegqiBvLinearize = " << value << std::endl;
3422
}
3423
3424
2
void assign_quantifiers_cegqiBvRmExtract(Options& opts, const std::string& option, bool value) {
3425
3426
2
  opts.quantifiers.cegqiBvRmExtract = value;
3427
2
  opts.quantifiers.cegqiBvRmExtractWasSetByUser = true;
3428
2
  Trace("options") << "user assigned option cegqiBvRmExtract = " << value << std::endl;
3429
2
}
3430
3431
void assign_quantifiers_cegqiBvSolveNl(Options& opts, const std::string& option, bool value) {
3432
3433
  opts.quantifiers.cegqiBvSolveNl = value;
3434
  opts.quantifiers.cegqiBvSolveNlWasSetByUser = true;
3435
  Trace("options") << "user assigned option cegqiBvSolveNl = " << value << std::endl;
3436
}
3437
3438
599
void assign_quantifiers_cegqiFullEffort(Options& opts, const std::string& option, bool value) {
3439
3440
599
  opts.quantifiers.cegqiFullEffort = value;
3441
599
  opts.quantifiers.cegqiFullEffortWasSetByUser = true;
3442
599
  Trace("options") << "user assigned option cegqiFullEffort = " << value << std::endl;
3443
599
}
3444
3445
void assign_quantifiers_cegqiInnermost(Options& opts, const std::string& option, bool value) {
3446
3447
  opts.quantifiers.cegqiInnermost = value;
3448
  opts.quantifiers.cegqiInnermostWasSetByUser = true;
3449
  Trace("options") << "user assigned option cegqiInnermost = " << value << std::endl;
3450
}
3451
3452
void assign_quantifiers_cegqiMidpoint(Options& opts, const std::string& option, bool value) {
3453
3454
  opts.quantifiers.cegqiMidpoint = value;
3455
  opts.quantifiers.cegqiMidpointWasSetByUser = true;
3456
  Trace("options") << "user assigned option cegqiMidpoint = " << value << std::endl;
3457
}
3458
3459
void assign_quantifiers_cegqiMinBounds(Options& opts, const std::string& option, bool value) {
3460
3461
  opts.quantifiers.cegqiMinBounds = value;
3462
  opts.quantifiers.cegqiMinBoundsWasSetByUser = true;
3463
  Trace("options") << "user assigned option cegqiMinBounds = " << value << std::endl;
3464
}
3465
3466
void assign_quantifiers_cegqiModel(Options& opts, const std::string& option, bool value) {
3467
3468
  opts.quantifiers.cegqiModel = value;
3469
  opts.quantifiers.cegqiModelWasSetByUser = true;
3470
  Trace("options") << "user assigned option cegqiModel = " << value << std::endl;
3471
}
3472
3473
3
void assign_quantifiers_cegqiMultiInst(Options& opts, const std::string& option, bool value) {
3474
3475
3
  opts.quantifiers.cegqiMultiInst = value;
3476
3
  opts.quantifiers.cegqiMultiInstWasSetByUser = true;
3477
3
  Trace("options") << "user assigned option cegqiMultiInst = " << value << std::endl;
3478
3
}
3479
3480
19
void assign_quantifiers_cegqiNestedQE(Options& opts, const std::string& option, bool value) {
3481
3482
19
  opts.quantifiers.cegqiNestedQE = value;
3483
19
  opts.quantifiers.cegqiNestedQEWasSetByUser = true;
3484
19
  Trace("options") << "user assigned option cegqiNestedQE = " << value << std::endl;
3485
19
}
3486
3487
void assign_quantifiers_cegqiNopt(Options& opts, const std::string& option, bool value) {
3488
3489
  opts.quantifiers.cegqiNopt = value;
3490
  opts.quantifiers.cegqiNoptWasSetByUser = true;
3491
  Trace("options") << "user assigned option cegqiNopt = " << value << std::endl;
3492
}
3493
3494
void assign_quantifiers_cegqiRepeatLit(Options& opts, const std::string& option, bool value) {
3495
3496
  opts.quantifiers.cegqiRepeatLit = value;
3497
  opts.quantifiers.cegqiRepeatLitWasSetByUser = true;
3498
  Trace("options") << "user assigned option cegqiRepeatLit = " << value << std::endl;
3499
}
3500
3501
void assign_quantifiers_cegqiRoundUpLowerLia(Options& opts, const std::string& option, bool value) {
3502
3503
  opts.quantifiers.cegqiRoundUpLowerLia = value;
3504
  opts.quantifiers.cegqiRoundUpLowerLiaWasSetByUser = true;
3505
  Trace("options") << "user assigned option cegqiRoundUpLowerLia = " << value << std::endl;
3506
}
3507
3508
void assign_quantifiers_cegqiSat(Options& opts, const std::string& option, bool value) {
3509
3510
  opts.quantifiers.cegqiSat = value;
3511
  opts.quantifiers.cegqiSatWasSetByUser = true;
3512
  Trace("options") << "user assigned option cegqiSat = " << value << std::endl;
3513
}
3514
3515
6
void assign_quantifiers_cegqiUseInfInt(Options& opts, const std::string& option, bool value) {
3516
3517
6
  opts.quantifiers.cegqiUseInfInt = value;
3518
6
  opts.quantifiers.cegqiUseInfIntWasSetByUser = true;
3519
6
  Trace("options") << "user assigned option cegqiUseInfInt = " << value << std::endl;
3520
6
}
3521
3522
6
void assign_quantifiers_cegqiUseInfReal(Options& opts, const std::string& option, bool value) {
3523
3524
6
  opts.quantifiers.cegqiUseInfReal = value;
3525
6
  opts.quantifiers.cegqiUseInfRealWasSetByUser = true;
3526
6
  Trace("options") << "user assigned option cegqiUseInfReal = " << value << std::endl;
3527
6
}
3528
3529
void assign_quantifiers_condVarSplitQuantAgg(Options& opts, const std::string& option, bool value) {
3530
3531
  opts.quantifiers.condVarSplitQuantAgg = value;
3532
  opts.quantifiers.condVarSplitQuantAggWasSetByUser = true;
3533
  Trace("options") << "user assigned option condVarSplitQuantAgg = " << value << std::endl;
3534
}
3535
3536
void assign_quantifiers_condVarSplitQuant(Options& opts, const std::string& option, bool value) {
3537
3538
  opts.quantifiers.condVarSplitQuant = value;
3539
  opts.quantifiers.condVarSplitQuantWasSetByUser = true;
3540
  Trace("options") << "user assigned option condVarSplitQuant = " << value << std::endl;
3541
}
3542
3543
void assign_quantifiers_conjectureFilterActiveTerms(Options& opts, const std::string& option, bool value) {
3544
3545
  opts.quantifiers.conjectureFilterActiveTerms = value;
3546
  opts.quantifiers.conjectureFilterActiveTermsWasSetByUser = true;
3547
  Trace("options") << "user assigned option conjectureFilterActiveTerms = " << value << std::endl;
3548
}
3549
3550
void assign_quantifiers_conjectureFilterCanonical(Options& opts, const std::string& option, bool value) {
3551
3552
  opts.quantifiers.conjectureFilterCanonical = value;
3553
  opts.quantifiers.conjectureFilterCanonicalWasSetByUser = true;
3554
  Trace("options") << "user assigned option conjectureFilterCanonical = " << value << std::endl;
3555
}
3556
3557
2
void assign_quantifiers_conjectureFilterModel(Options& opts, const std::string& option, bool value) {
3558
3559
2
  opts.quantifiers.conjectureFilterModel = value;
3560
2
  opts.quantifiers.conjectureFilterModelWasSetByUser = true;
3561
2
  Trace("options") << "user assigned option conjectureFilterModel = " << value << std::endl;
3562
2
}
3563
3564
7
void assign_quantifiers_conjectureGen(Options& opts, const std::string& option, bool value) {
3565
3566
7
  opts.quantifiers.conjectureGen = value;
3567
7
  opts.quantifiers.conjectureGenWasSetByUser = true;
3568
7
  Trace("options") << "user assigned option conjectureGen = " << value << std::endl;
3569
7
}
3570
3571
void assign_quantifiers_conjectureGenGtEnum(Options& opts, const std::string& option, const std::string& optionarg) {
3572
  auto value = handleOption<int>("conjecture-gen-gt-enum", option, optionarg);
3573
3574
  opts.quantifiers.conjectureGenGtEnum = value;
3575
  opts.quantifiers.conjectureGenGtEnumWasSetByUser = true;
3576
  Trace("options") << "user assigned option conjectureGenGtEnum = " << value << std::endl;
3577
}
3578
3579
void assign_quantifiers_conjectureGenMaxDepth(Options& opts, const std::string& option, const std::string& optionarg) {
3580
  auto value = handleOption<int>("conjecture-gen-max-depth", option, optionarg);
3581
3582
  opts.quantifiers.conjectureGenMaxDepth = value;
3583
  opts.quantifiers.conjectureGenMaxDepthWasSetByUser = true;
3584
  Trace("options") << "user assigned option conjectureGenMaxDepth = " << value << std::endl;
3585
}
3586
3587
void assign_quantifiers_conjectureGenPerRound(Options& opts, const std::string& option, const std::string& optionarg) {
3588
  auto value = handleOption<int>("conjecture-gen-per-round", option, optionarg);
3589
3590
  opts.quantifiers.conjectureGenPerRound = value;
3591
  opts.quantifiers.conjectureGenPerRoundWasSetByUser = true;
3592
  Trace("options") << "user assigned option conjectureGenPerRound = " << value << std::endl;
3593
}
3594
3595
void assign_quantifiers_conjectureUeeIntro(Options& opts, const std::string& option, bool value) {
3596
3597
  opts.quantifiers.conjectureUeeIntro = value;
3598
  opts.quantifiers.conjectureUeeIntroWasSetByUser = true;
3599
  Trace("options") << "user assigned option conjectureUeeIntro = " << value << std::endl;
3600
}
3601
3602
2
void assign_quantifiers_conjectureNoFilter(Options& opts, const std::string& option, bool value) {
3603
3604
2
  opts.quantifiers.conjectureNoFilter = value;
3605
2
  opts.quantifiers.conjectureNoFilterWasSetByUser = true;
3606
2
  Trace("options") << "user assigned option conjectureNoFilter = " << value << std::endl;
3607
2
}
3608
3609
void assign_quantifiers_dtStcInduction(Options& opts, const std::string& option, bool value) {
3610
3611
  opts.quantifiers.dtStcInduction = value;
3612
  opts.quantifiers.dtStcInductionWasSetByUser = true;
3613
  Trace("options") << "user assigned option dtStcInduction = " << value << std::endl;
3614
}
3615
3616
void assign_quantifiers_dtVarExpandQuant(Options& opts, const std::string& option, bool value) {
3617
3618
  opts.quantifiers.dtVarExpandQuant = value;
3619
  opts.quantifiers.dtVarExpandQuantWasSetByUser = true;
3620
  Trace("options") << "user assigned option dtVarExpandQuant = " << value << std::endl;
3621
}
3622
3623
1
void assign_quantifiers_eMatching(Options& opts, const std::string& option, bool value) {
3624
3625
1
  opts.quantifiers.eMatching = value;
3626
1
  opts.quantifiers.eMatchingWasSetByUser = true;
3627
1
  Trace("options") << "user assigned option eMatching = " << value << std::endl;
3628
1
}
3629
3630
void assign_quantifiers_elimTautQuant(Options& opts, const std::string& option, bool value) {
3631
3632
  opts.quantifiers.elimTautQuant = value;
3633
  opts.quantifiers.elimTautQuantWasSetByUser = true;
3634
  Trace("options") << "user assigned option elimTautQuant = " << value << std::endl;
3635
}
3636
3637
11
void assign_quantifiers_extRewriteQuant(Options& opts, const std::string& option, bool value) {
3638
3639
11
  opts.quantifiers.extRewriteQuant = value;
3640
11
  opts.quantifiers.extRewriteQuantWasSetByUser = true;
3641
11
  Trace("options") << "user assigned option extRewriteQuant = " << value << std::endl;
3642
11
}
3643
3644
176
void assign_quantifiers_finiteModelFind(Options& opts, const std::string& option, bool value) {
3645
3646
176
  opts.quantifiers.finiteModelFind = value;
3647
176
  opts.quantifiers.finiteModelFindWasSetByUser = true;
3648
176
  Trace("options") << "user assigned option finiteModelFind = " << value << std::endl;
3649
176
}
3650
3651
44
void assign_quantifiers_fmfBound(Options& opts, const std::string& option, bool value) {
3652
3653
44
  opts.quantifiers.fmfBound = value;
3654
44
  opts.quantifiers.fmfBoundWasSetByUser = true;
3655
44
  Trace("options") << "user assigned option fmfBound = " << value << std::endl;
3656
44
}
3657
3658
12
void assign_quantifiers_fmfBoundInt(Options& opts, const std::string& option, bool value) {
3659
3660
12
  opts.quantifiers.fmfBoundInt = value;
3661
12
  opts.quantifiers.fmfBoundIntWasSetByUser = true;
3662
12
  Trace("options") << "user assigned option fmfBoundInt = " << value << std::endl;
3663
12
}
3664
3665
3
void assign_quantifiers_fmfBoundLazy(Options& opts, const std::string& option, bool value) {
3666
3667
3
  opts.quantifiers.fmfBoundLazy = value;
3668
3
  opts.quantifiers.fmfBoundLazyWasSetByUser = true;
3669
3
  Trace("options") << "user assigned option fmfBoundLazy = " << value << std::endl;
3670
3
}
3671
3672
void assign_quantifiers_fmfFmcSimple(Options& opts, const std::string& option, bool value) {
3673
3674
  opts.quantifiers.fmfFmcSimple = value;
3675
  opts.quantifiers.fmfFmcSimpleWasSetByUser = true;
3676
  Trace("options") << "user assigned option fmfFmcSimple = " << value << std::endl;
3677
}
3678
3679
void assign_quantifiers_fmfFreshDistConst(Options& opts, const std::string& option, bool value) {
3680
3681
  opts.quantifiers.fmfFreshDistConst = value;
3682
  opts.quantifiers.fmfFreshDistConstWasSetByUser = true;
3683
  Trace("options") << "user assigned option fmfFreshDistConst = " << value << std::endl;
3684
}
3685
3686
51
void assign_quantifiers_fmfFunWellDefined(Options& opts, const std::string& option, bool value) {
3687
3688
51
  opts.quantifiers.fmfFunWellDefined = value;
3689
51
  opts.quantifiers.fmfFunWellDefinedWasSetByUser = true;
3690
51
  Trace("options") << "user assigned option fmfFunWellDefined = " << value << std::endl;
3691
51
}
3692
3693
10
void assign_quantifiers_fmfFunWellDefinedRelevant(Options& opts, const std::string& option, bool value) {
3694
3695
10
  opts.quantifiers.fmfFunWellDefinedRelevant = value;
3696
10
  opts.quantifiers.fmfFunWellDefinedRelevantWasSetByUser = true;
3697
10
  Trace("options") << "user assigned option fmfFunWellDefinedRelevant = " << value << std::endl;
3698
10
}
3699
3700
7
void assign_quantifiers_fmfInstEngine(Options& opts, const std::string& option, bool value) {
3701
3702
7
  opts.quantifiers.fmfInstEngine = value;
3703
7
  opts.quantifiers.fmfInstEngineWasSetByUser = true;
3704
7
  Trace("options") << "user assigned option fmfInstEngine = " << value << std::endl;
3705
7
}
3706
3707
void assign_quantifiers_fmfTypeCompletionThresh(Options& opts, const std::string& option, const std::string& optionarg) {
3708
  auto value = handleOption<int>("fmf-type-completion-thresh", option, optionarg);
3709
3710
  opts.quantifiers.fmfTypeCompletionThresh = value;
3711
  opts.quantifiers.fmfTypeCompletionThreshWasSetByUser = true;
3712
  Trace("options") << "user assigned option fmfTypeCompletionThresh = " << value << std::endl;
3713
}
3714
3715
void assign_quantifiers_fullSaturateInterleave(Options& opts, const std::string& option, bool value) {
3716
3717
  opts.quantifiers.fullSaturateInterleave = value;
3718
  opts.quantifiers.fullSaturateInterleaveWasSetByUser = true;
3719
  Trace("options") << "user assigned option fullSaturateInterleave = " << value << std::endl;
3720
}
3721
3722
3
void assign_quantifiers_fullSaturateStratify(Options& opts, const std::string& option, bool value) {
3723
3724
3
  opts.quantifiers.fullSaturateStratify = value;
3725
3
  opts.quantifiers.fullSaturateStratifyWasSetByUser = true;
3726
3
  Trace("options") << "user assigned option fullSaturateStratify = " << value << std::endl;
3727
3
}
3728
3729
void assign_quantifiers_fullSaturateSum(Options& opts, const std::string& option, bool value) {
3730
3731
  opts.quantifiers.fullSaturateSum = value;
3732
  opts.quantifiers.fullSaturateSumWasSetByUser = true;
3733
  Trace("options") << "user assigned option fullSaturateSum = " << value << std::endl;
3734
}
3735
3736
76
void assign_quantifiers_fullSaturateQuant(Options& opts, const std::string& option, bool value) {
3737
3738
76
  opts.quantifiers.fullSaturateQuant = value;
3739
76
  opts.quantifiers.fullSaturateQuantWasSetByUser = true;
3740
76
  Trace("options") << "user assigned option fullSaturateQuant = " << value << std::endl;
3741
76
}
3742
3743
3
void assign_quantifiers_fullSaturateLimit(Options& opts, const std::string& option, const std::string& optionarg) {
3744
3
  auto value = handleOption<int>("full-saturate-quant-limit", option, optionarg);
3745
3746
3
  opts.quantifiers.fullSaturateLimit = value;
3747
3
  opts.quantifiers.fullSaturateLimitWasSetByUser = true;
3748
3
  Trace("options") << "user assigned option fullSaturateLimit = " << value << std::endl;
3749
3
}
3750
3751
void assign_quantifiers_fullSaturateQuantRd(Options& opts, const std::string& option, bool value) {
3752
3753
  opts.quantifiers.fullSaturateQuantRd = value;
3754
  opts.quantifiers.fullSaturateQuantRdWasSetByUser = true;
3755
  Trace("options") << "user assigned option fullSaturateQuantRd = " << value << std::endl;
3756
}
3757
3758
8
void assign_quantifiers_globalNegate(Options& opts, const std::string& option, bool value) {
3759
3760
8
  opts.quantifiers.globalNegate = value;
3761
8
  opts.quantifiers.globalNegateWasSetByUser = true;
3762
8
  Trace("options") << "user assigned option globalNegate = " << value << std::endl;
3763
8
}
3764
3765
8
void assign_quantifiers_hoElim(Options& opts, const std::string& option, bool value) {
3766
3767
8
  opts.quantifiers.hoElim = value;
3768
8
  opts.quantifiers.hoElimWasSetByUser = true;
3769
8
  Trace("options") << "user assigned option hoElim = " << value << std::endl;
3770
8
}
3771
3772
1
void assign_quantifiers_hoElimStoreAx(Options& opts, const std::string& option, bool value) {
3773
3774
1
  opts.quantifiers.hoElimStoreAx = value;
3775
1
  opts.quantifiers.hoElimStoreAxWasSetByUser = true;
3776
1
  Trace("options") << "user assigned option hoElimStoreAx = " << value << std::endl;
3777
1
}
3778
3779
void assign_quantifiers_hoMatching(Options& opts, const std::string& option, bool value) {
3780
3781
  opts.quantifiers.hoMatching = value;
3782
  opts.quantifiers.hoMatchingWasSetByUser = true;
3783
  Trace("options") << "user assigned option hoMatching = " << value << std::endl;
3784
}
3785
3786
void assign_quantifiers_hoMatchingVarArgPriority(Options& opts, const std::string& option, bool value) {
3787
3788
  opts.quantifiers.hoMatchingVarArgPriority = value;
3789
  opts.quantifiers.hoMatchingVarArgPriorityWasSetByUser = true;
3790
  Trace("options") << "user assigned option hoMatchingVarArgPriority = " << value << std::endl;
3791
}
3792
3793
void assign_quantifiers_hoMergeTermDb(Options& opts, const std::string& option, bool value) {
3794
3795
  opts.quantifiers.hoMergeTermDb = value;
3796
  opts.quantifiers.hoMergeTermDbWasSetByUser = true;
3797
  Trace("options") << "user assigned option hoMergeTermDb = " << value << std::endl;
3798
}
3799
3800
void assign_quantifiers_incrementTriggers(Options& opts, const std::string& option, bool value) {
3801
3802
  opts.quantifiers.incrementTriggers = value;
3803
  opts.quantifiers.incrementTriggersWasSetByUser = true;
3804
  Trace("options") << "user assigned option incrementTriggers = " << value << std::endl;
3805
}
3806
3807
void assign_quantifiers_instLevelInputOnly(Options& opts, const std::string& option, bool value) {
3808
3809
  opts.quantifiers.instLevelInputOnly = value;
3810
  opts.quantifiers.instLevelInputOnlyWasSetByUser = true;
3811
  Trace("options") << "user assigned option instLevelInputOnly = " << value << std::endl;
3812
}
3813
3814
3
void assign_quantifiers_instMaxLevel(Options& opts, const std::string& option, const std::string& optionarg) {
3815
3
  auto value = handleOption<int>("inst-max-level", option, optionarg);
3816
3817
3
  opts.quantifiers.instMaxLevel = value;
3818
3
  opts.quantifiers.instMaxLevelWasSetByUser = true;
3819
3
  Trace("options") << "user assigned option instMaxLevel = " << value << std::endl;
3820
3
}
3821
3822
void assign_quantifiers_instMaxRounds(Options& opts, const std::string& option, const std::string& optionarg) {
3823
  auto value = handleOption<int>("inst-max-rounds", option, optionarg);
3824
3825
  opts.quantifiers.instMaxRounds = value;
3826
  opts.quantifiers.instMaxRoundsWasSetByUser = true;
3827
  Trace("options") << "user assigned option instMaxRounds = " << value << std::endl;
3828
}
3829
3830
void assign_quantifiers_instNoEntail(Options& opts, const std::string& option, bool value) {
3831
3832
  opts.quantifiers.instNoEntail = value;
3833
  opts.quantifiers.instNoEntailWasSetByUser = true;
3834
  Trace("options") << "user assigned option instNoEntail = " << value << std::endl;
3835
}
3836
3837
void assign_quantifiers_instWhenPhase(Options& opts, const std::string& option, const std::string& optionarg) {
3838
  auto value = handleOption<int>("inst-when-phase", option, optionarg);
3839
3840
  opts.quantifiers.instWhenPhase = value;
3841
  opts.quantifiers.instWhenPhaseWasSetByUser = true;
3842
  Trace("options") << "user assigned option instWhenPhase = " << value << std::endl;
3843
}
3844
3845
void assign_quantifiers_instWhenStrictInterleave(Options& opts, const std::string& option, bool value) {
3846
3847
  opts.quantifiers.instWhenStrictInterleave = value;
3848
  opts.quantifiers.instWhenStrictInterleaveWasSetByUser = true;
3849
  Trace("options") << "user assigned option instWhenStrictInterleave = " << value << std::endl;
3850
}
3851
3852
void assign_quantifiers_instWhenTcFirst(Options& opts, const std::string& option, bool value) {
3853
3854
  opts.quantifiers.instWhenTcFirst = value;
3855
  opts.quantifiers.instWhenTcFirstWasSetByUser = true;
3856
  Trace("options") << "user assigned option instWhenTcFirst = " << value << std::endl;
3857
}
3858
3859
3
void assign_quantifiers_instWhenMode(Options& opts, const std::string& option, const std::string& optionarg) {
3860
3
  auto value = stringToInstWhenMode(optionarg);
3861
3
  opts.handler().checkInstWhenMode("inst-when", option, value);
3862
3
  opts.quantifiers.instWhenMode = value;
3863
3
  opts.quantifiers.instWhenModeWasSetByUser = true;
3864
3
  Trace("options") << "user assigned option instWhenMode = " << value << std::endl;
3865
3
}
3866
3867
5
void assign_quantifiers_intWfInduction(Options& opts, const std::string& option, bool value) {
3868
3869
5
  opts.quantifiers.intWfInduction = value;
3870
5
  opts.quantifiers.intWfInductionWasSetByUser = true;
3871
5
  Trace("options") << "user assigned option intWfInduction = " << value << std::endl;
3872
5
}
3873
3874
void assign_quantifiers_iteDtTesterSplitQuant(Options& opts, const std::string& option, bool value) {
3875
3876
  opts.quantifiers.iteDtTesterSplitQuant = value;
3877
  opts.quantifiers.iteDtTesterSplitQuantWasSetByUser = true;
3878
  Trace("options") << "user assigned option iteDtTesterSplitQuant = " << value << std::endl;
3879
}
3880
3881
void assign_quantifiers_iteLiftQuant(Options& opts, const std::string& option, const std::string& optionarg) {
3882
  auto value = stringToIteLiftQuantMode(optionarg);
3883
3884
  opts.quantifiers.iteLiftQuant = value;
3885
  opts.quantifiers.iteLiftQuantWasSetByUser = true;
3886
  Trace("options") << "user assigned option iteLiftQuant = " << value << std::endl;
3887
}
3888
3889
void assign_quantifiers_literalMatchMode(Options& opts, const std::string& option, const std::string& optionarg) {
3890
  auto value = stringToLiteralMatchMode(optionarg);
3891
3892
  opts.quantifiers.literalMatchMode = value;
3893
  opts.quantifiers.literalMatchModeWasSetByUser = true;
3894
  Trace("options") << "user assigned option literalMatchMode = " << value << std::endl;
3895
}
3896
3897
17
void assign_quantifiers_macrosQuant(Options& opts, const std::string& option, bool value) {
3898
3899
17
  opts.quantifiers.macrosQuant = value;
3900
17
  opts.quantifiers.macrosQuantWasSetByUser = true;
3901
17
  Trace("options") << "user assigned option macrosQuant = " << value << std::endl;
3902
17
}
3903
3904
2
void assign_quantifiers_macrosQuantMode(Options& opts, const std::string& option, const std::string& optionarg) {
3905
2
  auto value = stringToMacrosQuantMode(optionarg);
3906
3907
2
  opts.quantifiers.macrosQuantMode = value;
3908
2
  opts.quantifiers.macrosQuantModeWasSetByUser = true;
3909
2
  Trace("options") << "user assigned option macrosQuantMode = " << value << std::endl;
3910
2
}
3911
3912
void assign_quantifiers_mbqiInterleave(Options& opts, const std::string& option, bool value) {
3913
3914
  opts.quantifiers.mbqiInterleave = value;
3915
  opts.quantifiers.mbqiInterleaveWasSetByUser = true;
3916
  Trace("options") << "user assigned option mbqiInterleave = " << value << std::endl;
3917
}
3918
3919
void assign_quantifiers_fmfOneInstPerRound(Options& opts, const std::string& option, bool value) {
3920
3921
  opts.quantifiers.fmfOneInstPerRound = value;
3922
  opts.quantifiers.fmfOneInstPerRoundWasSetByUser = true;
3923
  Trace("options") << "user assigned option fmfOneInstPerRound = " << value << std::endl;
3924
}
3925
3926
void assign_quantifiers_mbqiMode(Options& opts, const std::string& option, const std::string& optionarg) {
3927
  auto value = stringToMbqiMode(optionarg);
3928
3929
  opts.quantifiers.mbqiMode = value;
3930
  opts.quantifiers.mbqiModeWasSetByUser = true;
3931
  Trace("options") << "user assigned option mbqiMode = " << value << std::endl;
3932
}
3933
3934
116
void assign_quantifiers_miniscopeQuant(Options& opts, const std::string& option, bool value) {
3935
3936
116
  opts.quantifiers.miniscopeQuant = value;
3937
116
  opts.quantifiers.miniscopeQuantWasSetByUser = true;
3938
116
  Trace("options") << "user assigned option miniscopeQuant = " << value << std::endl;
3939
116
}
3940
3941
114
void assign_quantifiers_miniscopeQuantFreeVar(Options& opts, const std::string& option, bool value) {
3942
3943
114
  opts.quantifiers.miniscopeQuantFreeVar = value;
3944
114
  opts.quantifiers.miniscopeQuantFreeVarWasSetByUser = true;
3945
114
  Trace("options") << "user assigned option miniscopeQuantFreeVar = " << value << std::endl;
3946
114
}
3947
3948
3
void assign_quantifiers_multiTriggerCache(Options& opts, const std::string& option, bool value) {
3949
3950
3
  opts.quantifiers.multiTriggerCache = value;
3951
3
  opts.quantifiers.multiTriggerCacheWasSetByUser = true;
3952
3
  Trace("options") << "user assigned option multiTriggerCache = " << value << std::endl;
3953
3
}
3954
3955
void assign_quantifiers_multiTriggerLinear(Options& opts, const std::string& option, bool value) {
3956
3957
  opts.quantifiers.multiTriggerLinear = value;
3958
  opts.quantifiers.multiTriggerLinearWasSetByUser = true;
3959
  Trace("options") << "user assigned option multiTriggerLinear = " << value << std::endl;
3960
}
3961
3962
void assign_quantifiers_multiTriggerPriority(Options& opts, const std::string& option, bool value) {
3963
3964
  opts.quantifiers.multiTriggerPriority = value;
3965
  opts.quantifiers.multiTriggerPriorityWasSetByUser = true;
3966
  Trace("options") << "user assigned option multiTriggerPriority = " << value << std::endl;
3967
}
3968
3969
void assign_quantifiers_multiTriggerWhenSingle(Options& opts, const std::string& option, bool value) {
3970
3971
  opts.quantifiers.multiTriggerWhenSingle = value;
3972
  opts.quantifiers.multiTriggerWhenSingleWasSetByUser = true;
3973
  Trace("options") << "user assigned option multiTriggerWhenSingle = " << value << std::endl;
3974
}
3975
3976
3
void assign_quantifiers_partialTriggers(Options& opts, const std::string& option, bool value) {
3977
3978
3
  opts.quantifiers.partialTriggers = value;
3979
3
  opts.quantifiers.partialTriggersWasSetByUser = true;
3980
3
  Trace("options") << "user assigned option partialTriggers = " << value << std::endl;
3981
3
}
3982
3983
3
void assign_quantifiers_poolInst(Options& opts, const std::string& option, bool value) {
3984
3985
3
  opts.quantifiers.poolInst = value;
3986
3
  opts.quantifiers.poolInstWasSetByUser = true;
3987
3
  Trace("options") << "user assigned option poolInst = " << value << std::endl;
3988
3
}
3989
3990
2
void assign_quantifiers_preSkolemQuant(Options& opts, const std::string& option, bool value) {
3991
3992
2
  opts.quantifiers.preSkolemQuant = value;
3993
2
  opts.quantifiers.preSkolemQuantWasSetByUser = true;
3994
2
  Trace("options") << "user assigned option preSkolemQuant = " << value << std::endl;
3995
2
}
3996
3997
void assign_quantifiers_preSkolemQuantAgg(Options& opts, const std::string& option, bool value) {
3998
3999
  opts.quantifiers.preSkolemQuantAgg = value;
4000
  opts.quantifiers.preSkolemQuantAggWasSetByUser = true;
4001
  Trace("options") << "user assigned option preSkolemQuantAgg = " << value << std::endl;
4002
}
4003
4004
2
void assign_quantifiers_preSkolemQuantNested(Options& opts, const std::string& option, bool value) {
4005
4006
2
  opts.quantifiers.preSkolemQuantNested = value;
4007
2
  opts.quantifiers.preSkolemQuantNestedWasSetByUser = true;
4008
2
  Trace("options") << "user assigned option preSkolemQuantNested = " << value << std::endl;
4009
2
}
4010
4011
void assign_quantifiers_prenexQuantUser(Options& opts, const std::string& option, bool value) {
4012
4013
  opts.quantifiers.prenexQuantUser = value;
4014
  opts.quantifiers.prenexQuantUserWasSetByUser = true;
4015
  Trace("options") << "user assigned option prenexQuantUser = " << value << std::endl;
4016
}
4017
4018
void assign_quantifiers_prenexQuant(Options& opts, const std::string& option, const std::string& optionarg) {
4019
  auto value = stringToPrenexQuantMode(optionarg);
4020
4021
  opts.quantifiers.prenexQuant = value;
4022
  opts.quantifiers.prenexQuantWasSetByUser = true;
4023
  Trace("options") << "user assigned option prenexQuant = " << value << std::endl;
4024
}
4025
4026
3
void assign_quantifiers_purifyTriggers(Options& opts, const std::string& option, bool value) {
4027
4028
3
  opts.quantifiers.purifyTriggers = value;
4029
3
  opts.quantifiers.purifyTriggersWasSetByUser = true;
4030
3
  Trace("options") << "user assigned option purifyTriggers = " << value << std::endl;
4031
3
}
4032
4033
void assign_quantifiers_qcfAllConflict(Options& opts, const std::string& option, bool value) {
4034
4035
  opts.quantifiers.qcfAllConflict = value;
4036
  opts.quantifiers.qcfAllConflictWasSetByUser = true;
4037
  Trace("options") << "user assigned option qcfAllConflict = " << value << std::endl;
4038
}
4039
4040
void assign_quantifiers_qcfEagerCheckRd(Options& opts, const std::string& option, bool value) {
4041
4042
  opts.quantifiers.qcfEagerCheckRd = value;
4043
  opts.quantifiers.qcfEagerCheckRdWasSetByUser = true;
4044
  Trace("options") << "user assigned option qcfEagerCheckRd = " << value << std::endl;
4045
}
4046
4047
void assign_quantifiers_qcfEagerTest(Options& opts, const std::string& option, bool value) {
4048
4049
  opts.quantifiers.qcfEagerTest = value;
4050
  opts.quantifiers.qcfEagerTestWasSetByUser = true;
4051
  Trace("options") << "user assigned option qcfEagerTest = " << value << std::endl;
4052
}
4053
4054
void assign_quantifiers_qcfNestedConflict(Options& opts, const std::string& option, bool value) {
4055
4056
  opts.quantifiers.qcfNestedConflict = value;
4057
  opts.quantifiers.qcfNestedConflictWasSetByUser = true;
4058
  Trace("options") << "user assigned option qcfNestedConflict = " << value << std::endl;
4059
}
4060
4061
void assign_quantifiers_qcfSkipRd(Options& opts, const std::string& option, bool value) {
4062
4063
  opts.quantifiers.qcfSkipRd = value;
4064
  opts.quantifiers.qcfSkipRdWasSetByUser = true;
4065
  Trace("options") << "user assigned option qcfSkipRd = " << value << std::endl;
4066
}
4067
4068
6
void assign_quantifiers_qcfTConstraint(Options& opts, const std::string& option, bool value) {
4069
4070
6
  opts.quantifiers.qcfTConstraint = value;
4071
6
  opts.quantifiers.qcfTConstraintWasSetByUser = true;
4072
6
  Trace("options") << "user assigned option qcfTConstraint = " << value << std::endl;
4073
6
}
4074
4075
void assign_quantifiers_qcfVoExp(Options& opts, const std::string& option, bool value) {
4076
4077
  opts.quantifiers.qcfVoExp = value;
4078
  opts.quantifiers.qcfVoExpWasSetByUser = true;
4079
  Trace("options") << "user assigned option qcfVoExp = " << value << std::endl;
4080
}
4081
4082
void assign_quantifiers_quantAlphaEquiv(Options& opts, const std::string& option, bool value) {
4083
4084
  opts.quantifiers.quantAlphaEquiv = value;
4085
  opts.quantifiers.quantAlphaEquivWasSetByUser = true;
4086
  Trace("options") << "user assigned option quantAlphaEquiv = " << value << std::endl;
4087
}
4088
4089
void assign_quantifiers_quantConflictFind(Options& opts, const std::string& option, bool value) {
4090
4091
  opts.quantifiers.quantConflictFind = value;
4092
  opts.quantifiers.quantConflictFindWasSetByUser = true;
4093
  Trace("options") << "user assigned option quantConflictFind = " << value << std::endl;
4094
}
4095
4096
void assign_quantifiers_qcfMode(Options& opts, const std::string& option, const std::string& optionarg) {
4097
  auto value = stringToQcfMode(optionarg);
4098
4099
  opts.quantifiers.qcfMode = value;
4100
  opts.quantifiers.qcfModeWasSetByUser = true;
4101
  Trace("options") << "user assigned option qcfMode = " << value << std::endl;
4102
}
4103
4104
void assign_quantifiers_qcfWhenMode(Options& opts, const std::string& option, const std::string& optionarg) {
4105
  auto value = stringToQcfWhenMode(optionarg);
4106
4107
  opts.quantifiers.qcfWhenMode = value;
4108
  opts.quantifiers.qcfWhenModeWasSetByUser = true;
4109
  Trace("options") << "user assigned option qcfWhenMode = " << value << std::endl;
4110
}
4111
4112
void assign_quantifiers_quantDynamicSplit(Options& opts, const std::string& option, const std::string& optionarg) {
4113
  auto value = stringToQuantDSplitMode(optionarg);
4114
4115
  opts.quantifiers.quantDynamicSplit = value;
4116
  opts.quantifiers.quantDynamicSplitWasSetByUser = true;
4117
  Trace("options") << "user assigned option quantDynamicSplit = " << value << std::endl;
4118
}
4119
4120
void assign_quantifiers_quantFunWellDefined(Options& opts, const std::string& option, bool value) {
4121
4122
  opts.quantifiers.quantFunWellDefined = value;
4123
  opts.quantifiers.quantFunWellDefinedWasSetByUser = true;
4124
  Trace("options") << "user assigned option quantFunWellDefined = " << value << std::endl;
4125
}
4126
4127
8
void assign_quantifiers_quantInduction(Options& opts, const std::string& option, bool value) {
4128
4129
8
  opts.quantifiers.quantInduction = value;
4130
8
  opts.quantifiers.quantInductionWasSetByUser = true;
4131
8
  Trace("options") << "user assigned option quantInduction = " << value << std::endl;
4132
8
}
4133
4134
void assign_quantifiers_quantRepMode(Options& opts, const std::string& option, const std::string& optionarg) {
4135
  auto value = stringToQuantRepMode(optionarg);
4136
4137
  opts.quantifiers.quantRepMode = value;
4138
  opts.quantifiers.quantRepModeWasSetByUser = true;
4139
  Trace("options") << "user assigned option quantRepMode = " << value << std::endl;
4140
}
4141
4142
114
void assign_quantifiers_quantSplit(Options& opts, const std::string& option, bool value) {
4143
4144
114
  opts.quantifiers.quantSplit = value;
4145
114
  opts.quantifiers.quantSplitWasSetByUser = true;
4146
114
  Trace("options") << "user assigned option quantSplit = " << value << std::endl;
4147
114
}
4148
4149
void assign_quantifiers_registerQuantBodyTerms(Options& opts, const std::string& option, bool value) {
4150
4151
  opts.quantifiers.registerQuantBodyTerms = value;
4152
  opts.quantifiers.registerQuantBodyTermsWasSetByUser = true;
4153
  Trace("options") << "user assigned option registerQuantBodyTerms = " << value << std::endl;
4154
}
4155
4156
15
void assign_quantifiers_relationalTriggers(Options& opts, const std::string& option, bool value) {
4157
4158
15
  opts.quantifiers.relationalTriggers = value;
4159
15
  opts.quantifiers.relationalTriggersWasSetByUser = true;
4160
15
  Trace("options") << "user assigned option relationalTriggers = " << value << std::endl;
4161
15
}
4162
4163
3
void assign_quantifiers_relevantTriggers(Options& opts, const std::string& option, bool value) {
4164
4165
3
  opts.quantifiers.relevantTriggers = value;
4166
3
  opts.quantifiers.relevantTriggersWasSetByUser = true;
4167
3
  Trace("options") << "user assigned option relevantTriggers = " << value << std::endl;
4168
3
}
4169
4170
void assign_quantifiers_strictTriggers(Options& opts, const std::string& option, bool value) {
4171
4172
  opts.quantifiers.strictTriggers = value;
4173
  opts.quantifiers.strictTriggersWasSetByUser = true;
4174
  Trace("options") << "user assigned option strictTriggers = " << value << std::endl;
4175
}
4176
4177
void assign_quantifiers_sygus(Options& opts, const std::string& option, bool value) {
4178
4179
  opts.quantifiers.sygus = value;
4180
  opts.quantifiers.sygusWasSetByUser = true;
4181
  Trace("options") << "user assigned option sygus = " << value << std::endl;
4182
}
4183
4184
void assign_quantifiers_sygusActiveGenEnumConsts(Options& opts, const std::string& option, const std::string& optionarg) {
4185
  auto value = handleOption<unsigned long>("sygus-active-gen-cfactor", option, optionarg);
4186
4187
  opts.quantifiers.sygusActiveGenEnumConsts = value;
4188
  opts.quantifiers.sygusActiveGenEnumConstsWasSetByUser = true;
4189
  Trace("options") << "user assigned option sygusActiveGenEnumConsts = " << value << std::endl;
4190
}
4191
4192
14
void assign_quantifiers_sygusActiveGenMode(Options& opts, const std::string& option, const std::string& optionarg) {
4193
14
  auto value = stringToSygusActiveGenMode(optionarg);
4194
4195
14
  opts.quantifiers.sygusActiveGenMode = value;
4196
14
  opts.quantifiers.sygusActiveGenModeWasSetByUser = true;
4197
14
  Trace("options") << "user assigned option sygusActiveGenMode = " << value << std::endl;
4198
14
}
4199
4200
2
void assign_quantifiers_sygusAddConstGrammar(Options& opts, const std::string& option, bool value) {
4201
4202
2
  opts.quantifiers.sygusAddConstGrammar = value;
4203
2
  opts.quantifiers.sygusAddConstGrammarWasSetByUser = true;
4204
2
  Trace("options") << "user assigned option sygusAddConstGrammar = " << value << std::endl;
4205
2
}
4206
4207
3
void assign_quantifiers_sygusArgRelevant(Options& opts, const std::string& option, bool value) {
4208
4209
3
  opts.quantifiers.sygusArgRelevant = value;
4210
3
  opts.quantifiers.sygusArgRelevantWasSetByUser = true;
4211
3
  Trace("options") << "user assigned option sygusArgRelevant = " << value << std::endl;
4212
3
}
4213
4214
void assign_quantifiers_sygusInvAutoUnfold(Options& opts, const std::string& option, bool value) {
4215
4216
  opts.quantifiers.sygusInvAutoUnfold = value;
4217
  opts.quantifiers.sygusInvAutoUnfoldWasSetByUser = true;
4218
  Trace("options") << "user assigned option sygusInvAutoUnfold = " << value << std::endl;
4219
}
4220
4221
1
void assign_quantifiers_sygusBoolIteReturnConst(Options& opts, const std::string& option, bool value) {
4222
4223
1
  opts.quantifiers.sygusBoolIteReturnConst = value;
4224
1
  opts.quantifiers.sygusBoolIteReturnConstWasSetByUser = true;
4225
1
  Trace("options") << "user assigned option sygusBoolIteReturnConst = " << value << std::endl;
4226
1
}
4227
4228
5
void assign_quantifiers_sygusCoreConnective(Options& opts, const std::string& option, bool value) {
4229
4230
5
  opts.quantifiers.sygusCoreConnective = value;
4231
5
  opts.quantifiers.sygusCoreConnectiveWasSetByUser = true;
4232
5
  Trace("options") << "user assigned option sygusCoreConnective = " << value << std::endl;
4233
5
}
4234
4235
void assign_quantifiers_sygusConstRepairAbort(Options& opts, const std::string& option, bool value) {
4236
4237
  opts.quantifiers.sygusConstRepairAbort = value;
4238
  opts.quantifiers.sygusConstRepairAbortWasSetByUser = true;
4239
  Trace("options") << "user assigned option sygusConstRepairAbort = " << value << std::endl;
4240
}
4241
4242
void assign_quantifiers_sygusEvalOpt(Options& opts, const std::string& option, bool value) {
4243
4244
  opts.quantifiers.sygusEvalOpt = value;
4245
  opts.quantifiers.sygusEvalOptWasSetByUser = true;
4246
  Trace("options") << "user assigned option sygusEvalOpt = " << value << std::endl;
4247
}
4248
4249
void assign_quantifiers_sygusEvalUnfold(Options& opts, const std::string& option, bool value) {
4250
4251
  opts.quantifiers.sygusEvalUnfold = value;
4252
  opts.quantifiers.sygusEvalUnfoldWasSetByUser = true;
4253
  Trace("options") << "user assigned option sygusEvalUnfold = " << value << std::endl;
4254
}
4255
4256
void assign_quantifiers_sygusEvalUnfoldBool(Options& opts, const std::string& option, bool value) {
4257
4258
  opts.quantifiers.sygusEvalUnfoldBool = value;
4259
  opts.quantifiers.sygusEvalUnfoldBoolWasSetByUser = true;
4260
  Trace("options") << "user assigned option sygusEvalUnfoldBool = " << value << std::endl;
4261
}
4262
4263
void assign_quantifiers_sygusExprMinerCheckTimeout(Options& opts, const std::string& option, const std::string& optionarg) {
4264
  auto value = handleOption<unsigned long>("sygus-expr-miner-check-timeout", option, optionarg);
4265
4266
  opts.quantifiers.sygusExprMinerCheckTimeout = value;
4267
  opts.quantifiers.sygusExprMinerCheckTimeoutWasSetByUser = true;
4268
  Trace("options") << "user assigned option sygusExprMinerCheckTimeout = " << value << std::endl;
4269
}
4270
4271
2
void assign_quantifiers_sygusExtRew(Options& opts, const std::string& option, bool value) {
4272
4273
2
  opts.quantifiers.sygusExtRew = value;
4274
2
  opts.quantifiers.sygusExtRewWasSetByUser = true;
4275
2
  Trace("options") << "user assigned option sygusExtRew = " << value << std::endl;
4276
2
}
4277
4278
void assign_quantifiers_sygusFilterSolRevSubsume(Options& opts, const std::string& option, bool value) {
4279
4280
  opts.quantifiers.sygusFilterSolRevSubsume = value;
4281
  opts.quantifiers.sygusFilterSolRevSubsumeWasSetByUser = true;
4282
  Trace("options") << "user assigned option sygusFilterSolRevSubsume = " << value << std::endl;
4283
}
4284
4285
void assign_quantifiers_sygusFilterSolMode(Options& opts, const std::string& option, const std::string& optionarg) {
4286
  auto value = stringToSygusFilterSolMode(optionarg);
4287
4288
  opts.quantifiers.sygusFilterSolMode = value;
4289
  opts.quantifiers.sygusFilterSolModeWasSetByUser = true;
4290
  Trace("options") << "user assigned option sygusFilterSolMode = " << value << std::endl;
4291
}
4292
4293
6
void assign_quantifiers_sygusGrammarConsMode(Options& opts, const std::string& option, const std::string& optionarg) {
4294
6
  auto value = stringToSygusGrammarConsMode(optionarg);
4295
4296
6
  opts.quantifiers.sygusGrammarConsMode = value;
4297
6
  opts.quantifiers.sygusGrammarConsModeWasSetByUser = true;
4298
6
  Trace("options") << "user assigned option sygusGrammarConsMode = " << value << std::endl;
4299
6
}
4300
4301
void assign_quantifiers_sygusGrammarNorm(Options& opts, const std::string& option, bool value) {
4302
4303
  opts.quantifiers.sygusGrammarNorm = value;
4304
  opts.quantifiers.sygusGrammarNormWasSetByUser = true;
4305
  Trace("options") << "user assigned option sygusGrammarNorm = " << value << std::endl;
4306
}
4307
4308
60
void assign_quantifiers_sygusInference(Options& opts, const std::string& option, bool value) {
4309
4310
60
  opts.quantifiers.sygusInference = value;
4311
60
  opts.quantifiers.sygusInferenceWasSetByUser = true;
4312
60
  Trace("options") << "user assigned option sygusInference = " << value << std::endl;
4313
60
}
4314
4315
18
void assign_quantifiers_sygusInst(Options& opts, const std::string& option, bool value) {
4316
4317
18
  opts.quantifiers.sygusInst = value;
4318
18
  opts.quantifiers.sygusInstWasSetByUser = true;
4319
18
  Trace("options") << "user assigned option sygusInst = " << value << std::endl;
4320
18
}
4321
4322
void assign_quantifiers_sygusInstMode(Options& opts, const std::string& option, const std::string& optionarg) {
4323
  auto value = stringToSygusInstMode(optionarg);
4324
4325
  opts.quantifiers.sygusInstMode = value;
4326
  opts.quantifiers.sygusInstModeWasSetByUser = true;
4327
  Trace("options") << "user assigned option sygusInstMode = " << value << std::endl;
4328
}
4329
4330
void assign_quantifiers_sygusInstScope(Options& opts, const std::string& option, const std::string& optionarg) {
4331
  auto value = stringToSygusInstScope(optionarg);
4332
4333
  opts.quantifiers.sygusInstScope = value;
4334
  opts.quantifiers.sygusInstScopeWasSetByUser = true;
4335
  Trace("options") << "user assigned option sygusInstScope = " << value << std::endl;
4336
}
4337
4338
void assign_quantifiers_sygusInstTermSel(Options& opts, const std::string& option, const std::string& optionarg) {
4339
  auto value = stringToSygusInstTermSelMode(optionarg);
4340
4341
  opts.quantifiers.sygusInstTermSel = value;
4342
  opts.quantifiers.sygusInstTermSelWasSetByUser = true;
4343
  Trace("options") << "user assigned option sygusInstTermSel = " << value << std::endl;
4344
}
4345
4346
void assign_quantifiers_sygusInvTemplWhenSyntax(Options& opts, const std::string& option, bool value) {
4347
4348
  opts.quantifiers.sygusInvTemplWhenSyntax = value;
4349
  opts.quantifiers.sygusInvTemplWhenSyntaxWasSetByUser = true;
4350
  Trace("options") << "user assigned option sygusInvTemplWhenSyntax = " << value << std::endl;
4351
}
4352
4353
3
void assign_quantifiers_sygusInvTemplMode(Options& opts, const std::string& option, const std::string& optionarg) {
4354
3
  auto value = stringToSygusInvTemplMode(optionarg);
4355
4356
3
  opts.quantifiers.sygusInvTemplMode = value;
4357
3
  opts.quantifiers.sygusInvTemplModeWasSetByUser = true;
4358
3
  Trace("options") << "user assigned option sygusInvTemplMode = " << value << std::endl;
4359
3
}
4360
4361
void assign_quantifiers_sygusMinGrammar(Options& opts, const std::string& option, bool value) {
4362
4363
  opts.quantifiers.sygusMinGrammar = value;
4364
  opts.quantifiers.sygusMinGrammarWasSetByUser = true;
4365
  Trace("options") << "user assigned option sygusMinGrammar = " << value << std::endl;
4366
}
4367
4368
6
void assign_quantifiers_sygusUnifPbe(Options& opts, const std::string& option, bool value) {
4369
4370
6
  opts.quantifiers.sygusUnifPbe = value;
4371
6
  opts.quantifiers.sygusUnifPbeWasSetByUser = true;
4372
6
  Trace("options") << "user assigned option sygusUnifPbe = " << value << std::endl;
4373
6
}
4374
4375
void assign_quantifiers_sygusPbeMultiFair(Options& opts, const std::string& option, bool value) {
4376
4377
  opts.quantifiers.sygusPbeMultiFair = value;
4378
  opts.quantifiers.sygusPbeMultiFairWasSetByUser = true;
4379
  Trace("options") << "user assigned option sygusPbeMultiFair = " << value << std::endl;
4380
}
4381
4382
void assign_quantifiers_sygusPbeMultiFairDiff(Options& opts, const std::string& option, const std::string& optionarg) {
4383
  auto value = handleOption<int>("sygus-pbe-multi-fair-diff", option, optionarg);
4384
4385
  opts.quantifiers.sygusPbeMultiFairDiff = value;
4386
  opts.quantifiers.sygusPbeMultiFairDiffWasSetByUser = true;
4387
  Trace("options") << "user assigned option sygusPbeMultiFairDiff = " << value << std::endl;
4388
}
4389
4390
4
void assign_quantifiers_sygusQePreproc(Options& opts, const std::string& option, bool value) {
4391
4392
4
  opts.quantifiers.sygusQePreproc = value;
4393
4
  opts.quantifiers.sygusQePreprocWasSetByUser = true;
4394
4
  Trace("options") << "user assigned option sygusQePreproc = " << value << std::endl;
4395
4
}
4396
4397
void assign_quantifiers_sygusQueryGen(Options& opts, const std::string& option, bool value) {
4398
4399
  opts.quantifiers.sygusQueryGen = value;
4400
  opts.quantifiers.sygusQueryGenWasSetByUser = true;
4401
  Trace("options") << "user assigned option sygusQueryGen = " << value << std::endl;
4402
}
4403
4404
void assign_quantifiers_sygusQueryGenCheck(Options& opts, const std::string& option, bool value) {
4405
4406
  opts.quantifiers.sygusQueryGenCheck = value;
4407
  opts.quantifiers.sygusQueryGenCheckWasSetByUser = true;
4408
  Trace("options") << "user assigned option sygusQueryGenCheck = " << value << std::endl;
4409
}
4410
4411
void assign_quantifiers_sygusQueryGenDumpFiles(Options& opts, const std::string& option, const std::string& optionarg) {
4412
  auto value = stringToSygusQueryDumpFilesMode(optionarg);
4413
4414
  opts.quantifiers.sygusQueryGenDumpFiles = value;
4415
  opts.quantifiers.sygusQueryGenDumpFilesWasSetByUser = true;
4416
  Trace("options") << "user assigned option sygusQueryGenDumpFiles = " << value << std::endl;
4417
}
4418
4419
void assign_quantifiers_sygusQueryGenThresh(Options& opts, const std::string& option, const std::string& optionarg) {
4420
  auto value = handleOption<unsigned>("sygus-query-gen-thresh", option, optionarg);
4421
4422
  opts.quantifiers.sygusQueryGenThresh = value;
4423
  opts.quantifiers.sygusQueryGenThreshWasSetByUser = true;
4424
  Trace("options") << "user assigned option sygusQueryGenThresh = " << value << std::endl;
4425
}
4426
4427
3
void assign_quantifiers_sygusRecFun(Options& opts, const std::string& option, bool value) {
4428
4429
3
  opts.quantifiers.sygusRecFun = value;
4430
3
  opts.quantifiers.sygusRecFunWasSetByUser = true;
4431
3
  Trace("options") << "user assigned option sygusRecFun = " << value << std::endl;
4432
3
}
4433
4434
void assign_quantifiers_sygusRecFunEvalLimit(Options& opts, const std::string& option, const std::string& optionarg) {
4435
  auto value = handleOption<unsigned>("sygus-rec-fun-eval-limit", option, optionarg);
4436
4437
  opts.quantifiers.sygusRecFunEvalLimit = value;
4438
  opts.quantifiers.sygusRecFunEvalLimitWasSetByUser = true;
4439
  Trace("options") << "user assigned option sygusRecFunEvalLimit = " << value << std::endl;
4440
}
4441
4442
8
void assign_quantifiers_sygusRepairConst(Options& opts, const std::string& option, bool value) {
4443
4444
8
  opts.quantifiers.sygusRepairConst = value;
4445
8
  opts.quantifiers.sygusRepairConstWasSetByUser = true;
4446
8
  Trace("options") << "user assigned option sygusRepairConst = " << value << std::endl;
4447
8
}
4448
4449
void assign_quantifiers_sygusRepairConstTimeout(Options& opts, const std::string& option, const std::string& optionarg) {
4450
  auto value = handleOption<unsigned long>("sygus-repair-const-timeout", option, optionarg);
4451
4452
  opts.quantifiers.sygusRepairConstTimeout = value;
4453
  opts.quantifiers.sygusRepairConstTimeoutWasSetByUser = true;
4454
  Trace("options") << "user assigned option sygusRepairConstTimeout = " << value << std::endl;
4455
}
4456
4457
6
void assign_quantifiers_sygusRew(Options& opts, const std::string& option, bool value) {
4458
4459
6
  opts.quantifiers.sygusRew = value;
4460
6
  opts.quantifiers.sygusRewWasSetByUser = true;
4461
6
  Trace("options") << "user assigned option sygusRew = " << value << std::endl;
4462
6
}
4463
4464
1
void assign_quantifiers_sygusRewSynth(Options& opts, const std::string& option, bool value) {
4465
4466
1
  opts.quantifiers.sygusRewSynth = value;
4467
1
  opts.quantifiers.sygusRewSynthWasSetByUser = true;
4468
1
  Trace("options") << "user assigned option sygusRewSynth = " << value << std::endl;
4469
1
}
4470
4471
void assign_quantifiers_sygusRewSynthAccel(Options& opts, const std::string& option, bool value) {
4472
4473
  opts.quantifiers.sygusRewSynthAccel = value;
4474
  opts.quantifiers.sygusRewSynthAccelWasSetByUser = true;
4475
  Trace("options") << "user assigned option sygusRewSynthAccel = " << value << std::endl;
4476
}
4477
4478
5
void assign_quantifiers_sygusRewSynthCheck(Options& opts, const std::string& option, bool value) {
4479
4480
5
  opts.quantifiers.sygusRewSynthCheck = value;
4481
5
  opts.quantifiers.sygusRewSynthCheckWasSetByUser = true;
4482
5
  Trace("options") << "user assigned option sygusRewSynthCheck = " << value << std::endl;
4483
5
}
4484
4485
void assign_quantifiers_sygusRewSynthFilterCong(Options& opts, const std::string& option, bool value) {
4486
4487
  opts.quantifiers.sygusRewSynthFilterCong = value;
4488
  opts.quantifiers.sygusRewSynthFilterCongWasSetByUser = true;
4489
  Trace("options") << "user assigned option sygusRewSynthFilterCong = " << value << std::endl;
4490
}
4491
4492
void assign_quantifiers_sygusRewSynthFilterMatch(Options& opts, const std::string& option, bool value) {
4493
4494
  opts.quantifiers.sygusRewSynthFilterMatch = value;
4495
  opts.quantifiers.sygusRewSynthFilterMatchWasSetByUser = true;
4496
  Trace("options") << "user assigned option sygusRewSynthFilterMatch = " << value << std::endl;
4497
}
4498
4499
void assign_quantifiers_sygusRewSynthFilterNonLinear(Options& opts, const std::string& option, bool value) {
4500
4501
  opts.quantifiers.sygusRewSynthFilterNonLinear = value;
4502
  opts.quantifiers.sygusRewSynthFilterNonLinearWasSetByUser = true;
4503
  Trace("options") << "user assigned option sygusRewSynthFilterNonLinear = " << value << std::endl;
4504
}
4505
4506
void assign_quantifiers_sygusRewSynthFilterOrder(Options& opts, const std::string& option, bool value) {
4507
4508
  opts.quantifiers.sygusRewSynthFilterOrder = value;
4509
  opts.quantifiers.sygusRewSynthFilterOrderWasSetByUser = true;
4510
  Trace("options") << "user assigned option sygusRewSynthFilterOrder = " << value << std::endl;
4511
}
4512
4513
256
void assign_quantifiers_sygusRewSynthInput(Options& opts, const std::string& option, bool value) {
4514
4515
256
  opts.quantifiers.sygusRewSynthInput = value;
4516
256
  opts.quantifiers.sygusRewSynthInputWasSetByUser = true;
4517
256
  Trace("options") << "user assigned option sygusRewSynthInput = " << value << std::endl;
4518
256
}
4519
4520
void assign_quantifiers_sygusRewSynthInputNVars(Options& opts, const std::string& option, const std::string& optionarg) {
4521
  auto value = handleOption<int>("sygus-rr-synth-input-nvars", option, optionarg);
4522
4523
  opts.quantifiers.sygusRewSynthInputNVars = value;
4524
  opts.quantifiers.sygusRewSynthInputNVarsWasSetByUser = true;
4525
  Trace("options") << "user assigned option sygusRewSynthInputNVars = " << value << std::endl;
4526
}
4527
4528
void assign_quantifiers_sygusRewSynthInputUseBool(Options& opts, const std::string& option, bool value) {
4529
4530
  opts.quantifiers.sygusRewSynthInputUseBool = value;
4531
  opts.quantifiers.sygusRewSynthInputUseBoolWasSetByUser = true;
4532
  Trace("options") << "user assigned option sygusRewSynthInputUseBool = " << value << std::endl;
4533
}
4534
4535
void assign_quantifiers_sygusRewSynthRec(Options& opts, const std::string& option, bool value) {
4536
4537
  opts.quantifiers.sygusRewSynthRec = value;
4538
  opts.quantifiers.sygusRewSynthRecWasSetByUser = true;
4539
  Trace("options") << "user assigned option sygusRewSynthRec = " << value << std::endl;
4540
}
4541
4542
void assign_quantifiers_sygusRewVerify(Options& opts, const std::string& option, bool value) {
4543
4544
  opts.quantifiers.sygusRewVerify = value;
4545
  opts.quantifiers.sygusRewVerifyWasSetByUser = true;
4546
  Trace("options") << "user assigned option sygusRewVerify = " << value << std::endl;
4547
}
4548
4549
7
void assign_quantifiers_sygusRewVerifyAbort(Options& opts, const std::string& option, bool value) {
4550
4551
7
  opts.quantifiers.sygusRewVerifyAbort = value;
4552
7
  opts.quantifiers.sygusRewVerifyAbortWasSetByUser = true;
4553
7
  Trace("options") << "user assigned option sygusRewVerifyAbort = " << value << std::endl;
4554
7
}
4555
4556
void assign_quantifiers_sygusSampleFpUniform(Options& opts, const std::string& option, bool value) {
4557
4558
  opts.quantifiers.sygusSampleFpUniform = value;
4559
  opts.quantifiers.sygusSampleFpUniformWasSetByUser = true;
4560
  Trace("options") << "user assigned option sygusSampleFpUniform = " << value << std::endl;
4561
}
4562
4563
void assign_quantifiers_sygusSampleGrammar(Options& opts, const std::string& option, bool value) {
4564
4565
  opts.quantifiers.sygusSampleGrammar = value;
4566
  opts.quantifiers.sygusSampleGrammarWasSetByUser = true;
4567
  Trace("options") << "user assigned option sygusSampleGrammar = " << value << std::endl;
4568
}
4569
4570
7
void assign_quantifiers_sygusSamples(Options& opts, const std::string& option, const std::string& optionarg) {
4571
7
  auto value = handleOption<int>("sygus-samples", option, optionarg);
4572
4573
7
  opts.quantifiers.sygusSamples = value;
4574
7
  opts.quantifiers.sygusSamplesWasSetByUser = true;
4575
7
  Trace("options") << "user assigned option sygusSamples = " << value << std::endl;
4576
7
}
4577
4578
void assign_quantifiers_cegqiSingleInvAbort(Options& opts, const std::string& option, bool value) {
4579
4580
  opts.quantifiers.cegqiSingleInvAbort = value;
4581
  opts.quantifiers.cegqiSingleInvAbortWasSetByUser = true;
4582
  Trace("options") << "user assigned option cegqiSingleInvAbort = " << value << std::endl;
4583
}
4584
4585
void assign_quantifiers_cegqiSingleInvPartial(Options& opts, const std::string& option, bool value) {
4586
4587
  opts.quantifiers.cegqiSingleInvPartial = value;
4588
  opts.quantifiers.cegqiSingleInvPartialWasSetByUser = true;
4589
  Trace("options") << "user assigned option cegqiSingleInvPartial = " << value << std::endl;
4590
}
4591
4592
1
void assign_quantifiers_cegqiSingleInvReconstructLimit(Options& opts, const std::string& option, const std::string& optionarg) {
4593
1
  auto value = handleOption<int>("sygus-si-rcons-limit", option, optionarg);
4594
4595
1
  opts.quantifiers.cegqiSingleInvReconstructLimit = value;
4596
1
  opts.quantifiers.cegqiSingleInvReconstructLimitWasSetByUser = true;
4597
1
  Trace("options") << "user assigned option cegqiSingleInvReconstructLimit = " << value << std::endl;
4598
1
}
4599
4600
void assign_quantifiers_cegqiSingleInvReconstruct(Options& opts, const std::string& option, const std::string& optionarg) {
4601
  auto value = stringToCegqiSingleInvRconsMode(optionarg);
4602
4603
  opts.quantifiers.cegqiSingleInvReconstruct = value;
4604
  opts.quantifiers.cegqiSingleInvReconstructWasSetByUser = true;
4605
  Trace("options") << "user assigned option cegqiSingleInvReconstruct = " << value << std::endl;
4606
}
4607
4608
void assign_quantifiers_cegqiSingleInvReconstructConst(Options& opts, const std::string& option, bool value) {
4609
4610
  opts.quantifiers.cegqiSingleInvReconstructConst = value;
4611
  opts.quantifiers.cegqiSingleInvReconstructConstWasSetByUser = true;
4612
  Trace("options") << "user assigned option cegqiSingleInvReconstructConst = " << value << std::endl;
4613
}
4614
4615
47
void assign_quantifiers_cegqiSingleInvMode(Options& opts, const std::string& option, const std::string& optionarg) {
4616
47
  auto value = stringToCegqiSingleInvMode(optionarg);
4617
4618
47
  opts.quantifiers.cegqiSingleInvMode = value;
4619
47
  opts.quantifiers.cegqiSingleInvModeWasSetByUser = true;
4620
47
  Trace("options") << "user assigned option cegqiSingleInvMode = " << value << std::endl;
4621
47
}
4622
4623
4
void assign_quantifiers_sygusStream(Options& opts, const std::string& option, bool value) {
4624
4625
4
  opts.quantifiers.sygusStream = value;
4626
4
  opts.quantifiers.sygusStreamWasSetByUser = true;
4627
4
  Trace("options") << "user assigned option sygusStream = " << value << std::endl;
4628
4
}
4629
4630
void assign_quantifiers_sygusTemplEmbedGrammar(Options& opts, const std::string& option, bool value) {
4631
4632
  opts.quantifiers.sygusTemplEmbedGrammar = value;
4633
  opts.quantifiers.sygusTemplEmbedGrammarWasSetByUser = true;
4634
  Trace("options") << "user assigned option sygusTemplEmbedGrammar = " << value << std::endl;
4635
}
4636
4637
void assign_quantifiers_sygusUnifCondIndNoRepeatSol(Options& opts, const std::string& option, bool value) {
4638
4639
  opts.quantifiers.sygusUnifCondIndNoRepeatSol = value;
4640
  opts.quantifiers.sygusUnifCondIndNoRepeatSolWasSetByUser = true;
4641
  Trace("options") << "user assigned option sygusUnifCondIndNoRepeatSol = " << value << std::endl;
4642
}
4643
4644
9
void assign_quantifiers_sygusUnifPi(Options& opts, const std::string& option, const std::string& optionarg) {
4645
9
  auto value = stringToSygusUnifPiMode(optionarg);
4646
4647
9
  opts.quantifiers.sygusUnifPi = value;
4648
9
  opts.quantifiers.sygusUnifPiWasSetByUser = true;
4649
9
  Trace("options") << "user assigned option sygusUnifPi = " << value << std::endl;
4650
9
}
4651
4652
void assign_quantifiers_sygusUnifShuffleCond(Options& opts, const std::string& option, bool value) {
4653
4654
  opts.quantifiers.sygusUnifShuffleCond = value;
4655
  opts.quantifiers.sygusUnifShuffleCondWasSetByUser = true;
4656
  Trace("options") << "user assigned option sygusUnifShuffleCond = " << value << std::endl;
4657
}
4658
4659
void assign_quantifiers_sygusVerifyInstMaxRounds(Options& opts, const std::string& option, const std::string& optionarg) {
4660
  auto value = handleOption<int>("sygus-verify-inst-max-rounds", option, optionarg);
4661
4662
  opts.quantifiers.sygusVerifyInstMaxRounds = value;
4663
  opts.quantifiers.sygusVerifyInstMaxRoundsWasSetByUser = true;
4664
  Trace("options") << "user assigned option sygusVerifyInstMaxRounds = " << value << std::endl;
4665
}
4666
4667
void assign_quantifiers_termDbCd(Options& opts, const std::string& option, bool value) {
4668
4669
  opts.quantifiers.termDbCd = value;
4670
  opts.quantifiers.termDbCdWasSetByUser = true;
4671
  Trace("options") << "user assigned option termDbCd = " << value << std::endl;
4672
}
4673
4674
void assign_quantifiers_termDbMode(Options& opts, const std::string& option, const std::string& optionarg) {
4675
  auto value = stringToTermDbMode(optionarg);
4676
4677
  opts.quantifiers.termDbMode = value;
4678
  opts.quantifiers.termDbModeWasSetByUser = true;
4679
  Trace("options") << "user assigned option termDbMode = " << value << std::endl;
4680
}
4681
4682
void assign_quantifiers_triggerActiveSelMode(Options& opts, const std::string& option, const std::string& optionarg) {
4683
  auto value = stringToTriggerActiveSelMode(optionarg);
4684
4685
  opts.quantifiers.triggerActiveSelMode = value;
4686
  opts.quantifiers.triggerActiveSelModeWasSetByUser = true;
4687
  Trace("options") << "user assigned option triggerActiveSelMode = " << value << std::endl;
4688
}
4689
4690
void assign_quantifiers_triggerSelMode(Options& opts, const std::string& option, const std::string& optionarg) {
4691
  auto value = stringToTriggerSelMode(optionarg);
4692
4693
  opts.quantifiers.triggerSelMode = value;
4694
  opts.quantifiers.triggerSelModeWasSetByUser = true;
4695
  Trace("options") << "user assigned option triggerSelMode = " << value << std::endl;
4696
}
4697
4698
void assign_quantifiers_userPatternsQuant(Options& opts, const std::string& option, const std::string& optionarg) {
4699
  auto value = stringToUserPatMode(optionarg);
4700
4701
  opts.quantifiers.userPatternsQuant = value;
4702
  opts.quantifiers.userPatternsQuantWasSetByUser = true;
4703
  Trace("options") << "user assigned option userPatternsQuant = " << value << std::endl;
4704
}
4705
4706
void assign_quantifiers_varElimQuant(Options& opts, const std::string& option, bool value) {
4707
4708
  opts.quantifiers.varElimQuant = value;
4709
  opts.quantifiers.varElimQuantWasSetByUser = true;
4710
  Trace("options") << "user assigned option varElimQuant = " << value << std::endl;
4711
}
4712
4713
7
void assign_quantifiers_varIneqElimQuant(Options& opts, const std::string& option, bool value) {
4714
4715
7
  opts.quantifiers.varIneqElimQuant = value;
4716
7
  opts.quantifiers.varIneqElimQuantWasSetByUser = true;
4717
7
  Trace("options") << "user assigned option varIneqElimQuant = " << value << std::endl;
4718
7
}
4719
4720
void assign_sep_sepCheckNeg(Options& opts, const std::string& option, bool value) {
4721
4722
  opts.sep.sepCheckNeg = value;
4723
  opts.sep.sepCheckNegWasSetByUser = true;
4724
  Trace("options") << "user assigned option sepCheckNeg = " << value << std::endl;
4725
}
4726
4727
void assign_sep_sepChildRefine(Options& opts, const std::string& option, bool value) {
4728
4729
  opts.sep.sepChildRefine = value;
4730
  opts.sep.sepChildRefineWasSetByUser = true;
4731
  Trace("options") << "user assigned option sepChildRefine = " << value << std::endl;
4732
}
4733
4734
void assign_sep_sepDisequalC(Options& opts, const std::string& option, bool value) {
4735
4736
  opts.sep.sepDisequalC = value;
4737
  opts.sep.sepDisequalCWasSetByUser = true;
4738
  Trace("options") << "user assigned option sepDisequalC = " << value << std::endl;
4739
}
4740
4741
void assign_sep_sepExp(Options& opts, const std::string& option, bool value) {
4742
4743
  opts.sep.sepExp = value;
4744
  opts.sep.sepExpWasSetByUser = true;
4745
  Trace("options") << "user assigned option sepExp = " << value << std::endl;
4746
}
4747
4748
void assign_sep_sepMinimalRefine(Options& opts, const std::string& option, bool value) {
4749
4750
  opts.sep.sepMinimalRefine = value;
4751
  opts.sep.sepMinimalRefineWasSetByUser = true;
4752
  Trace("options") << "user assigned option sepMinimalRefine = " << value << std::endl;
4753
}
4754
4755
1
void assign_sep_sepPreSkolemEmp(Options& opts, const std::string& option, bool value) {
4756
4757
1
  opts.sep.sepPreSkolemEmp = value;
4758
1
  opts.sep.sepPreSkolemEmpWasSetByUser = true;
4759
1
  Trace("options") << "user assigned option sepPreSkolemEmp = " << value << std::endl;
4760
1
}
4761
4762
116
void assign_sets_setsExt(Options& opts, const std::string& option, bool value) {
4763
4764
116
  opts.sets.setsExt = value;
4765
116
  opts.sets.setsExtWasSetByUser = true;
4766
116
  Trace("options") << "user assigned option setsExt = " << value << std::endl;
4767
116
}
4768
4769
2
void assign_sets_setsInferAsLemmas(Options& opts, const std::string& option, bool value) {
4770
4771
2
  opts.sets.setsInferAsLemmas = value;
4772
2
  opts.sets.setsInferAsLemmasWasSetByUser = true;
4773
2
  Trace("options") << "user assigned option setsInferAsLemmas = " << value << std::endl;
4774
2
}
4775
4776
void assign_sets_setsProxyLemmas(Options& opts, const std::string& option, bool value) {
4777
4778
  opts.sets.setsProxyLemmas = value;
4779
  opts.sets.setsProxyLemmasWasSetByUser = true;
4780
  Trace("options") << "user assigned option setsProxyLemmas = " << value << std::endl;
4781
}
4782
4783
4
void assign_smt_abstractValues(Options& opts, const std::string& option, bool value) {
4784
4785
4
  opts.smt.abstractValues = value;
4786
4
  opts.smt.abstractValuesWasSetByUser = true;
4787
4
  Trace("options") << "user assigned option abstractValues = " << value << std::endl;
4788
4
}
4789
4790
31
void assign_smt_ackermann(Options& opts, const std::string& option, bool value) {
4791
4792
31
  opts.smt.ackermann = value;
4793
31
  opts.smt.ackermannWasSetByUser = true;
4794
31
  Trace("options") << "user assigned option ackermann = " << value << std::endl;
4795
31
}
4796
4797
21
void assign_smt_blockModelsMode(Options& opts, const std::string& option, const std::string& optionarg) {
4798
21
  auto value = stringToBlockModelsMode(optionarg);
4799
4800
21
  opts.smt.blockModelsMode = value;
4801
21
  opts.smt.blockModelsModeWasSetByUser = true;
4802
21
  Trace("options") << "user assigned option blockModelsMode = " << value << std::endl;
4803
21
}
4804
4805
78
void assign_smt_BVAndIntegerGranularity(Options& opts, const std::string& option, const std::string& optionarg) {
4806
78
  auto value = handleOption<uint32_t>("bvand-integer-granularity", option, optionarg);
4807
4808
78
  opts.smt.BVAndIntegerGranularity = value;
4809
78
  opts.smt.BVAndIntegerGranularityWasSetByUser = true;
4810
78
  Trace("options") << "user assigned option BVAndIntegerGranularity = " << value << std::endl;
4811
78
}
4812
4813
13
void assign_smt_checkAbducts(Options& opts, const std::string& option, bool value) {
4814
4815
13
  opts.smt.checkAbducts = value;
4816
13
  opts.smt.checkAbductsWasSetByUser = true;
4817
13
  Trace("options") << "user assigned option checkAbducts = " << value << std::endl;
4818
13
}
4819
4820
8
void assign_smt_checkInterpols(Options& opts, const std::string& option, bool value) {
4821
4822
8
  opts.smt.checkInterpols = value;
4823
8
  opts.smt.checkInterpolsWasSetByUser = true;
4824
8
  Trace("options") << "user assigned option checkInterpols = " << value << std::endl;
4825
8
}
4826
4827
116
void assign_smt_checkModels(Options& opts, const std::string& option, bool value) {
4828
4829
116
  opts.smt.checkModels = value;
4830
116
  opts.smt.checkModelsWasSetByUser = true;
4831
116
  Trace("options") << "user assigned option checkModels = " << value << std::endl;
4832
116
}
4833
4834
1158
void assign_smt_checkProofs(Options& opts, const std::string& option, bool value) {
4835
4836
1158
  opts.smt.checkProofs = value;
4837
1158
  opts.smt.checkProofsWasSetByUser = true;
4838
1158
  Trace("options") << "user assigned option checkProofs = " << value << std::endl;
4839
1158
}
4840
4841
188
void assign_smt_checkSynthSol(Options& opts, const std::string& option, bool value) {
4842
4843
188
  opts.smt.checkSynthSol = value;
4844
188
  opts.smt.checkSynthSolWasSetByUser = true;
4845
188
  Trace("options") << "user assigned option checkSynthSol = " << value << std::endl;
4846
188
}
4847
4848
1180
void assign_smt_checkUnsatCores(Options& opts, const std::string& option, bool value) {
4849
4850
1180
  opts.smt.checkUnsatCores = value;
4851
1180
  opts.smt.checkUnsatCoresWasSetByUser = true;
4852
1180
  Trace("options") << "user assigned option checkUnsatCores = " << value << std::endl;
4853
1180
}
4854
4855
1224
void assign_smt_debugCheckModels(Options& opts, const std::string& option, bool value) {
4856
4857
1224
  opts.smt.debugCheckModels = value;
4858
1224
  opts.smt.debugCheckModelsWasSetByUser = true;
4859
1224
  Trace("options") << "user assigned option debugCheckModels = " << value << std::endl;
4860
1224
}
4861
4862
void assign_smt_diagnosticChannelName(Options& opts, const std::string& option, const std::string& optionarg) {
4863
  auto value = handleOption<std::string>("diagnostic-output-channel", option, optionarg);
4864
4865
  opts.smt.diagnosticChannelName = value;
4866
  opts.smt.diagnosticChannelNameWasSetByUser = true;
4867
  Trace("options") << "user assigned option diagnosticChannelName = " << value << std::endl;
4868
}
4869
4870
void assign_smt_dumpToFileName(Options& opts, const std::string& option, const std::string& optionarg) {
4871
  auto value = handleOption<std::string>("dump-to", option, optionarg);
4872
4873
  opts.smt.dumpToFileName = value;
4874
  opts.smt.dumpToFileNameWasSetByUser = true;
4875
  Trace("options") << "user assigned option dumpToFileName = " << value << std::endl;
4876
}
4877
4878
3
void assign_smt_dumpModeString(Options& opts, const std::string& option, const std::string& optionarg) {
4879
6
  auto value = handleOption<std::string>("dump", option, optionarg);
4880
4881
3
  opts.smt.dumpModeString = value;
4882
3
  opts.smt.dumpModeStringWasSetByUser = true;
4883
3
  Trace("options") << "user assigned option dumpModeString = " << value << std::endl;
4884
3
}
4885
4886
void assign_smt_earlyIteRemoval(Options& opts, const std::string& option, bool value) {
4887
4888
  opts.smt.earlyIteRemoval = value;
4889
  opts.smt.earlyIteRemovalWasSetByUser = true;
4890
  Trace("options") << "user assigned option earlyIteRemoval = " << value << std::endl;
4891
}
4892
4893
void assign_smt_expandDefinitions(Options& opts, const std::string& option, bool value) {
4894
4895
  opts.smt.expandDefinitions = value;
4896
  opts.smt.expandDefinitionsWasSetByUser = true;
4897
  Trace("options") << "user assigned option expandDefinitions = " << value << std::endl;
4898
}
4899
4900
19
void assign_smt_extRewPrep(Options& opts, const std::string& option, bool value) {
4901
4902
19
  opts.smt.extRewPrep = value;
4903
19
  opts.smt.extRewPrepWasSetByUser = true;
4904
19
  Trace("options") << "user assigned option extRewPrep = " << value << std::endl;
4905
19
}
4906
4907
7
void assign_smt_extRewPrepAgg(Options& opts, const std::string& option, bool value) {
4908
4909
7
  opts.smt.extRewPrepAgg = value;
4910
7
  opts.smt.extRewPrepAggWasSetByUser = true;
4911
7
  Trace("options") << "user assigned option extRewPrepAgg = " << value << std::endl;
4912
7
}
4913
4914
2
void assign_smt_foreignTheoryRewrite(Options& opts, const std::string& option, bool value) {
4915
4916
2
  opts.smt.foreignTheoryRewrite = value;
4917
2
  opts.smt.foreignTheoryRewriteWasSetByUser = true;
4918
2
  Trace("options") << "user assigned option foreignTheoryRewrite = " << value << std::endl;
4919
2
}
4920
4921
68
void assign_smt_iandMode(Options& opts, const std::string& option, const std::string& optionarg) {
4922
68
  auto value = stringToIandMode(optionarg);
4923
4924
68
  opts.smt.iandMode = value;
4925
68
  opts.smt.iandModeWasSetByUser = true;
4926
68
  Trace("options") << "user assigned option iandMode = " << value << std::endl;
4927
68
}
4928
4929
2
void assign_smt_interactiveMode(Options& opts, const std::string& option, bool value) {
4930
2
  opts.handler().setProduceAssertions("interactive-mode", option, value);
4931
2
  opts.smt.interactiveMode = value;
4932
2
  opts.smt.interactiveModeWasSetByUser = true;
4933
2
  Trace("options") << "user assigned option interactiveMode = " << value << std::endl;
4934
2
}
4935
4936
3
void assign_smt_doITESimp(Options& opts, const std::string& option, bool value) {
4937
4938
3
  opts.smt.doITESimp = value;
4939
3
  opts.smt.doITESimpWasSetByUser = true;
4940
3
  Trace("options") << "user assigned option doITESimp = " << value << std::endl;
4941
3
}
4942
4943
2
void assign_smt_learnedRewrite(Options& opts, const std::string& option, bool value) {
4944
4945
2
  opts.smt.learnedRewrite = value;
4946
2
  opts.smt.learnedRewriteWasSetByUser = true;
4947
2
  Trace("options") << "user assigned option learnedRewrite = " << value << std::endl;
4948
2
}
4949
4950
3
void assign_smt_minimalUnsatCores(Options& opts, const std::string& option, bool value) {
4951
4952
3
  opts.smt.minimalUnsatCores = value;
4953
3
  opts.smt.minimalUnsatCoresWasSetByUser = true;
4954
3
  Trace("options") << "user assigned option minimalUnsatCores = " << value << std::endl;
4955
3
}
4956
4957
6
void assign_smt_modelCoresMode(Options& opts, const std::string& option, const std::string& optionarg) {
4958
6
  auto value = stringToModelCoresMode(optionarg);
4959
4960
6
  opts.smt.modelCoresMode = value;
4961
6
  opts.smt.modelCoresModeWasSetByUser = true;
4962
6
  Trace("options") << "user assigned option modelCoresMode = " << value << std::endl;
4963
6
}
4964
4965
1
void assign_smt_modelUninterpPrint(Options& opts, const std::string& option, const std::string& optionarg) {
4966
1
  auto value = stringToModelUninterpPrintMode(optionarg);
4967
4968
1
  opts.smt.modelUninterpPrint = value;
4969
1
  opts.smt.modelUninterpPrintWasSetByUser = true;
4970
1
  Trace("options") << "user assigned option modelUninterpPrint = " << value << std::endl;
4971
1
}
4972
4973
1
void assign_smt_modelWitnessValue(Options& opts, const std::string& option, bool value) {
4974
4975
1
  opts.smt.modelWitnessValue = value;
4976
1
  opts.smt.modelWitnessValueWasSetByUser = true;
4977
1
  Trace("options") << "user assigned option modelWitnessValue = " << value << std::endl;
4978
1
}
4979
4980
void assign_smt_doITESimpOnRepeat(Options& opts, const std::string& option, bool value) {
4981
4982
  opts.smt.doITESimpOnRepeat = value;
4983
  opts.smt.doITESimpOnRepeatWasSetByUser = true;
4984
  Trace("options") << "user assigned option doITESimpOnRepeat = " << value << std::endl;
4985
}
4986
4987
21
void assign_smt_produceAbducts(Options& opts, const std::string& option, bool value) {
4988
4989
21
  opts.smt.produceAbducts = value;
4990
21
  opts.smt.produceAbductsWasSetByUser = true;
4991
21
  Trace("options") << "user assigned option produceAbducts = " << value << std::endl;
4992
21
}
4993
4994
26
void assign_smt_produceAssertions(Options& opts, const std::string& option, bool value) {
4995
26
  opts.handler().setProduceAssertions("produce-assertions", option, value);
4996
26
  opts.smt.produceAssertions = value;
4997
26
  opts.smt.produceAssertionsWasSetByUser = true;
4998
26
  Trace("options") << "user assigned option produceAssertions = " << value << std::endl;
4999
26
}
5000
5001
4
void assign_smt_produceAssignments(Options& opts, const std::string& option, bool value) {
5002
5003
4
  opts.smt.produceAssignments = value;
5004
4
  opts.smt.produceAssignmentsWasSetByUser = true;
5005
4
  Trace("options") << "user assigned option produceAssignments = " << value << std::endl;
5006
4
}
5007
5008
11
void assign_smt_produceInterpols(Options& opts, const std::string& option, const std::string& optionarg) {
5009
11
  auto value = stringToProduceInterpols(optionarg);
5010
5011
11
  opts.smt.produceInterpols = value;
5012
11
  opts.smt.produceInterpolsWasSetByUser = true;
5013
11
  Trace("options") << "user assigned option produceInterpols = " << value << std::endl;
5014
11
}
5015
5016
796
void assign_smt_produceModels(Options& opts, const std::string& option, bool value) {
5017
5018
796
  opts.smt.produceModels = value;
5019
796
  opts.smt.produceModelsWasSetByUser = true;
5020
796
  Trace("options") << "user assigned option produceModels = " << value << std::endl;
5021
796
}
5022
5023
29
void assign_smt_produceProofs(Options& opts, const std::string& option, bool value) {
5024
5025
29
  opts.smt.produceProofs = value;
5026
29
  opts.smt.produceProofsWasSetByUser = true;
5027
29
  Trace("options") << "user assigned option produceProofs = " << value << std::endl;
5028
29
}
5029
5030
15
void assign_smt_unsatAssumptions(Options& opts, const std::string& option, bool value) {
5031
5032
15
  opts.smt.unsatAssumptions = value;
5033
15
  opts.smt.unsatAssumptionsWasSetByUser = true;
5034
15
  Trace("options") << "user assigned option unsatAssumptions = " << value << std::endl;
5035
15
}
5036
5037
21
void assign_smt_unsatCores(Options& opts, const std::string& option, bool value) {
5038
5039
21
  opts.smt.unsatCores = value;
5040
21
  opts.smt.unsatCoresWasSetByUser = true;
5041
21
  Trace("options") << "user assigned option unsatCores = " << value << std::endl;
5042
21
}
5043
5044
void assign_smt_regularChannelName(Options& opts, const std::string& option, const std::string& optionarg) {
5045
  auto value = handleOption<std::string>("regular-output-channel", option, optionarg);
5046
5047
  opts.smt.regularChannelName = value;
5048
  opts.smt.regularChannelNameWasSetByUser = true;
5049
  Trace("options") << "user assigned option regularChannelName = " << value << std::endl;
5050
}
5051
5052
4
void assign_smt_repeatSimp(Options& opts, const std::string& option, bool value) {
5053
5054
4
  opts.smt.repeatSimp = value;
5055
4
  opts.smt.repeatSimpWasSetByUser = true;
5056
4
  Trace("options") << "user assigned option repeatSimp = " << value << std::endl;
5057
4
}
5058
5059
3
void assign_smt_compressItes(Options& opts, const std::string& option, bool value) {
5060
5061
3
  opts.smt.compressItes = value;
5062
3
  opts.smt.compressItesWasSetByUser = true;
5063
3
  Trace("options") << "user assigned option compressItes = " << value << std::endl;
5064
3
}
5065
5066
void assign_smt_zombieHuntThreshold(Options& opts, const std::string& option, const std::string& optionarg) {
5067
  auto value = handleOption<uint32_t>("simp-ite-hunt-zombies", option, optionarg);
5068
5069
  opts.smt.zombieHuntThreshold = value;
5070
  opts.smt.zombieHuntThresholdWasSetByUser = true;
5071
  Trace("options") << "user assigned option zombieHuntThreshold = " << value << std::endl;
5072
}
5073
5074
void assign_smt_simplifyWithCareEnabled(Options& opts, const std::string& option, bool value) {
5075
5076
  opts.smt.simplifyWithCareEnabled = value;
5077
  opts.smt.simplifyWithCareEnabledWasSetByUser = true;
5078
  Trace("options") << "user assigned option simplifyWithCareEnabled = " << value << std::endl;
5079
}
5080
5081
32
void assign_smt_simplificationMode(Options& opts, const std::string& option, const std::string& optionarg) {
5082
32
  auto value = stringToSimplificationMode(optionarg);
5083
5084
32
  opts.smt.simplificationMode = value;
5085
32
  opts.smt.simplificationModeWasSetByUser = true;
5086
32
  Trace("options") << "user assigned option simplificationMode = " << value << std::endl;
5087
32
}
5088
5089
149
void assign_smt_solveBVAsInt(Options& opts, const std::string& option, const std::string& optionarg) {
5090
149
  auto value = stringToSolveBVAsIntMode(optionarg);
5091
5092
149
  opts.smt.solveBVAsInt = value;
5093
149
  opts.smt.solveBVAsIntWasSetByUser = true;
5094
149
  Trace("options") << "user assigned option solveBVAsInt = " << value << std::endl;
5095
149
}
5096
5097
15
void assign_smt_solveIntAsBV(Options& opts, const std::string& option, const std::string& optionarg) {
5098
15
  auto value = handleOption<uint32_t>("solve-int-as-bv", option, optionarg);
5099
5100
15
  opts.smt.solveIntAsBV = value;
5101
15
  opts.smt.solveIntAsBVWasSetByUser = true;
5102
15
  Trace("options") << "user assigned option solveIntAsBV = " << value << std::endl;
5103
15
}
5104
5105
9
void assign_smt_solveRealAsInt(Options& opts, const std::string& option, bool value) {
5106
5107
9
  opts.smt.solveRealAsInt = value;
5108
9
  opts.smt.solveRealAsIntWasSetByUser = true;
5109
9
  Trace("options") << "user assigned option solveRealAsInt = " << value << std::endl;
5110
9
}
5111
5112
26
void assign_smt_sortInference(Options& opts, const std::string& option, bool value) {
5113
5114
26
  opts.smt.sortInference = value;
5115
26
  opts.smt.sortInferenceWasSetByUser = true;
5116
26
  Trace("options") << "user assigned option sortInference = " << value << std::endl;
5117
26
}
5118
5119
void assign_smt_doStaticLearning(Options& opts, const std::string& option, bool value) {
5120
5121
  opts.smt.doStaticLearning = value;
5122
  opts.smt.doStaticLearningWasSetByUser = true;
5123
  Trace("options") << "user assigned option doStaticLearning = " << value << std::endl;
5124
}
5125
5126
182
void assign_smt_sygusOut(Options& opts, const std::string& option, const std::string& optionarg) {
5127
182
  auto value = stringToSygusSolutionOutMode(optionarg);
5128
5129
182
  opts.smt.sygusOut = value;
5130
182
  opts.smt.sygusOutWasSetByUser = true;
5131
182
  Trace("options") << "user assigned option sygusOut = " << value << std::endl;
5132
182
}
5133
5134
void assign_smt_sygusPrintCallbacks(Options& opts, const std::string& option, bool value) {
5135
5136
  opts.smt.sygusPrintCallbacks = value;
5137
  opts.smt.sygusPrintCallbacksWasSetByUser = true;
5138
  Trace("options") << "user assigned option sygusPrintCallbacks = " << value << std::endl;
5139
}
5140
5141
107
void assign_smt_unconstrainedSimp(Options& opts, const std::string& option, bool value) {
5142
5143
107
  opts.smt.unconstrainedSimp = value;
5144
107
  opts.smt.unconstrainedSimpWasSetByUser = true;
5145
107
  Trace("options") << "user assigned option unconstrainedSimp = " << value << std::endl;
5146
107
}
5147
5148
2
void assign_smt_unsatCoresMode(Options& opts, const std::string& option, const std::string& optionarg) {
5149
2
  auto value = stringToUnsatCoresMode(optionarg);
5150
5151
2
  opts.smt.unsatCoresMode = value;
5152
2
  opts.smt.unsatCoresModeWasSetByUser = true;
5153
2
  Trace("options") << "user assigned option unsatCoresMode = " << value << std::endl;
5154
2
}
5155
5156
51
void assign_strings_regExpElim(Options& opts, const std::string& option, bool value) {
5157
5158
51
  opts.strings.regExpElim = value;
5159
51
  opts.strings.regExpElimWasSetByUser = true;
5160
51
  Trace("options") << "user assigned option regExpElim = " << value << std::endl;
5161
51
}
5162
5163
20
void assign_strings_regExpElimAgg(Options& opts, const std::string& option, bool value) {
5164
5165
20
  opts.strings.regExpElimAgg = value;
5166
20
  opts.strings.regExpElimAggWasSetByUser = true;
5167
20
  Trace("options") << "user assigned option regExpElimAgg = " << value << std::endl;
5168
20
}
5169
5170
void assign_strings_stringRegExpInterMode(Options& opts, const std::string& option, const std::string& optionarg) {
5171
  auto value = stringToRegExpInterMode(optionarg);
5172
5173
  opts.strings.stringRegExpInterMode = value;
5174
  opts.strings.stringRegExpInterModeWasSetByUser = true;
5175
  Trace("options") << "user assigned option stringRegExpInterMode = " << value << std::endl;
5176
}
5177
5178
void assign_strings_stringCheckEntailLen(Options& opts, const std::string& option, bool value) {
5179
5180
  opts.strings.stringCheckEntailLen = value;
5181
  opts.strings.stringCheckEntailLenWasSetByUser = true;
5182
  Trace("options") << "user assigned option stringCheckEntailLen = " << value << std::endl;
5183
}
5184
5185
2
void assign_strings_stringEager(Options& opts, const std::string& option, bool value) {
5186
5187
2
  opts.strings.stringEager = value;
5188
2
  opts.strings.stringEagerWasSetByUser = true;
5189
2
  Trace("options") << "user assigned option stringEager = " << value << std::endl;
5190
2
}
5191
5192
void assign_strings_stringEagerEval(Options& opts, const std::string& option, bool value) {
5193
5194
  opts.strings.stringEagerEval = value;
5195
  opts.strings.stringEagerEvalWasSetByUser = true;
5196
  Trace("options") << "user assigned option stringEagerEval = " << value << std::endl;
5197
}
5198
5199
void assign_strings_stringEagerLen(Options& opts, const std::string& option, bool value) {
5200
5201
  opts.strings.stringEagerLen = value;
5202
  opts.strings.stringEagerLenWasSetByUser = true;
5203
  Trace("options") << "user assigned option stringEagerLen = " << value << std::endl;
5204
}
5205
5206
543
void assign_strings_stringExp(Options& opts, const std::string& option, bool value) {
5207
5208
543
  opts.strings.stringExp = value;
5209
543
  opts.strings.stringExpWasSetByUser = true;
5210
543
  Trace("options") << "user assigned option stringExp = " << value << std::endl;
5211
543
}
5212
5213
void assign_strings_stringFlatForms(Options& opts, const std::string& option, bool value) {
5214
5215
  opts.strings.stringFlatForms = value;
5216
  opts.strings.stringFlatFormsWasSetByUser = true;
5217
  Trace("options") << "user assigned option stringFlatForms = " << value << std::endl;
5218
}
5219
5220
51
void assign_strings_stringFMF(Options& opts, const std::string& option, bool value) {
5221
5222
51
  opts.strings.stringFMF = value;
5223
51
  opts.strings.stringFMFWasSetByUser = true;
5224
51
  Trace("options") << "user assigned option stringFMF = " << value << std::endl;
5225
51
}
5226
5227
void assign_strings_stringGuessModel(Options& opts, const std::string& option, bool value) {
5228
5229
  opts.strings.stringGuessModel = value;
5230
  opts.strings.stringGuessModelWasSetByUser = true;
5231
  Trace("options") << "user assigned option stringGuessModel = " << value << std::endl;
5232
}
5233
5234
void assign_strings_stringInferAsLemmas(Options& opts, const std::string& option, bool value) {
5235
5236
  opts.strings.stringInferAsLemmas = value;
5237
  opts.strings.stringInferAsLemmasWasSetByUser = true;
5238
  Trace("options") << "user assigned option stringInferAsLemmas = " << value << std::endl;
5239
}
5240
5241
void assign_strings_stringInferSym(Options& opts, const std::string& option, bool value) {
5242
5243
  opts.strings.stringInferSym = value;
5244
  opts.strings.stringInferSymWasSetByUser = true;
5245
  Trace("options") << "user assigned option stringInferSym = " << value << std::endl;
5246
}
5247
5248
32
void assign_strings_stringLazyPreproc(Options& opts, const std::string& option, bool value) {
5249
5250
32
  opts.strings.stringLazyPreproc = value;
5251
32
  opts.strings.stringLazyPreprocWasSetByUser = true;
5252
32
  Trace("options") << "user assigned option stringLazyPreproc = " << value << std::endl;
5253
32
}
5254
5255
void assign_strings_stringLenNorm(Options& opts, const std::string& option, bool value) {
5256
5257
  opts.strings.stringLenNorm = value;
5258
  opts.strings.stringLenNormWasSetByUser = true;
5259
  Trace("options") << "user assigned option stringLenNorm = " << value << std::endl;
5260
}
5261
5262
void assign_strings_stringLenPropCsp(Options& opts, const std::string& option, bool value) {
5263
5264
  opts.strings.stringLenPropCsp = value;
5265
  opts.strings.stringLenPropCspWasSetByUser = true;
5266
  Trace("options") << "user assigned option stringLenPropCsp = " << value << std::endl;
5267
}
5268
5269
void assign_strings_stringMinPrefixExplain(Options& opts, const std::string& option, bool value) {
5270
5271
  opts.strings.stringMinPrefixExplain = value;
5272
  opts.strings.stringMinPrefixExplainWasSetByUser = true;
5273
  Trace("options") << "user assigned option stringMinPrefixExplain = " << value << std::endl;
5274
}
5275
5276
void assign_strings_stringProcessLoopMode(Options& opts, const std::string& option, const std::string& optionarg) {
5277
  auto value = stringToProcessLoopMode(optionarg);
5278
5279
  opts.strings.stringProcessLoopMode = value;
5280
  opts.strings.stringProcessLoopModeWasSetByUser = true;
5281
  Trace("options") << "user assigned option stringProcessLoopMode = " << value << std::endl;
5282
}
5283
5284
void assign_strings_stringRExplainLemmas(Options& opts, const std::string& option, bool value) {
5285
5286
  opts.strings.stringRExplainLemmas = value;
5287
  opts.strings.stringRExplainLemmasWasSetByUser = true;
5288
  Trace("options") << "user assigned option stringRExplainLemmas = " << value << std::endl;
5289
}
5290
5291
void assign_strings_stringUnifiedVSpt(Options& opts, const std::string& option, bool value) {
5292
5293
  opts.strings.stringUnifiedVSpt = value;
5294
  opts.strings.stringUnifiedVSptWasSetByUser = true;
5295
  Trace("options") << "user assigned option stringUnifiedVSpt = " << value << std::endl;
5296
}
5297
5298
2
void assign_theory_assignFunctionValues(Options& opts, const std::string& option, bool value) {
5299
5300
2
  opts.theory.assignFunctionValues = value;
5301
2
  opts.theory.assignFunctionValuesWasSetByUser = true;
5302
2
  Trace("options") << "user assigned option assignFunctionValues = " << value << std::endl;
5303
2
}
5304
5305
void assign_theory_condenseFunctionValues(Options& opts, const std::string& option, bool value) {
5306
5307
  opts.theory.condenseFunctionValues = value;
5308
  opts.theory.condenseFunctionValuesWasSetByUser = true;
5309
  Trace("options") << "user assigned option condenseFunctionValues = " << value << std::endl;
5310
}
5311
5312
56
void assign_theory_eeMode(Options& opts, const std::string& option, const std::string& optionarg) {
5313
56
  auto value = stringToEqEngineMode(optionarg);
5314
5315
56
  opts.theory.eeMode = value;
5316
56
  opts.theory.eeModeWasSetByUser = true;
5317
56
  Trace("options") << "user assigned option eeMode = " << value << std::endl;
5318
56
}
5319
5320
void assign_theory_relevanceFilter(Options& opts, const std::string& option, bool value) {
5321
5322
  opts.theory.relevanceFilter = value;
5323
  opts.theory.relevanceFilterWasSetByUser = true;
5324
  Trace("options") << "user assigned option relevanceFilter = " << value << std::endl;
5325
}
5326
5327
void assign_theory_tcMode(Options& opts, const std::string& option, const std::string& optionarg) {
5328
  auto value = stringToTcMode(optionarg);
5329
5330
  opts.theory.tcMode = value;
5331
  opts.theory.tcModeWasSetByUser = true;
5332
  Trace("options") << "user assigned option tcMode = " << value << std::endl;
5333
}
5334
5335
5
void assign_theory_theoryOfMode(Options& opts, const std::string& option, const std::string& optionarg) {
5336
5
  auto value = stringToTheoryOfMode(optionarg);
5337
5338
5
  opts.theory.theoryOfMode = value;
5339
5
  opts.theory.theoryOfModeWasSetByUser = true;
5340
5
  Trace("options") << "user assigned option theoryOfMode = " << value << std::endl;
5341
5
}
5342
5343
void assign_uf_ufSymmetryBreaker(Options& opts, const std::string& option, bool value) {
5344
5345
  opts.uf.ufSymmetryBreaker = value;
5346
  opts.uf.ufSymmetryBreakerWasSetByUser = true;
5347
  Trace("options") << "user assigned option ufSymmetryBreaker = " << value << std::endl;
5348
}
5349
5350
void assign_uf_ufHo(Options& opts, const std::string& option, bool value) {
5351
5352
  opts.uf.ufHo = value;
5353
  opts.uf.ufHoWasSetByUser = true;
5354
  Trace("options") << "user assigned option ufHo = " << value << std::endl;
5355
}
5356
5357
void assign_uf_ufHoExt(Options& opts, const std::string& option, bool value) {
5358
5359
  opts.uf.ufHoExt = value;
5360
  opts.uf.ufHoExtWasSetByUser = true;
5361
  Trace("options") << "user assigned option ufHoExt = " << value << std::endl;
5362
}
5363
5364
void assign_uf_ufssAbortCardinality(Options& opts, const std::string& option, const std::string& optionarg) {
5365
  auto value = handleOption<int>("uf-ss-abort-card", option, optionarg);
5366
5367
  opts.uf.ufssAbortCardinality = value;
5368
  opts.uf.ufssAbortCardinalityWasSetByUser = true;
5369
  Trace("options") << "user assigned option ufssAbortCardinality = " << value << std::endl;
5370
}
5371
5372
void assign_uf_ufssFairness(Options& opts, const std::string& option, bool value) {
5373
5374
  opts.uf.ufssFairness = value;
5375
  opts.uf.ufssFairnessWasSetByUser = true;
5376
  Trace("options") << "user assigned option ufssFairness = " << value << std::endl;
5377
}
5378
5379
4
void assign_uf_ufssFairnessMonotone(Options& opts, const std::string& option, bool value) {
5380
5381
4
  opts.uf.ufssFairnessMonotone = value;
5382
4
  opts.uf.ufssFairnessMonotoneWasSetByUser = true;
5383
4
  Trace("options") << "user assigned option ufssFairnessMonotone = " << value << std::endl;
5384
4
}
5385
5386
void assign_uf_ufssTotalityLimited(Options& opts, const std::string& option, const std::string& optionarg) {
5387
  auto value = handleOption<int>("uf-ss-totality-limited", option, optionarg);
5388
5389
  opts.uf.ufssTotalityLimited = value;
5390
  opts.uf.ufssTotalityLimitedWasSetByUser = true;
5391
  Trace("options") << "user assigned option ufssTotalityLimited = " << value << std::endl;
5392
}
5393
5394
void assign_uf_ufssTotalitySymBreak(Options& opts, const std::string& option, bool value) {
5395
5396
  opts.uf.ufssTotalitySymBreak = value;
5397
  opts.uf.ufssTotalitySymBreakWasSetByUser = true;
5398
  Trace("options") << "user assigned option ufssTotalitySymBreak = " << value << std::endl;
5399
}
5400
5401
7
void assign_uf_ufssMode(Options& opts, const std::string& option, const std::string& optionarg) {
5402
7
  auto value = stringToUfssMode(optionarg);
5403
5404
7
  opts.uf.ufssMode = value;
5405
7
  opts.uf.ufssModeWasSetByUser = true;
5406
7
  Trace("options") << "user assigned option ufssMode = " << value << std::endl;
5407
7
}
5408
// clang-format off
5409
5410
8783
void parseInternal(Options& opts, int argc,
5411
                                    char* argv[],
5412
                                    std::vector<std::string>& nonoptions)
5413
{
5414
8783
  Assert(argv != nullptr);
5415
8783
  if(Debug.isOn("options")) {
5416
    Debug("options") << "starting a new parseInternal with "
5417
                     << argc << " arguments" << std::endl;
5418
    for( int i = 0; i < argc ; i++ ){
5419
      Assert(argv[i] != NULL);
5420
      Debug("options") << "  argv[" << i << "] = " << argv[i] << std::endl;
5421
    }
5422
  }
5423
5424
  // Reset getopt(), in the case of multiple calls to parse().
5425
  // This can be = 1 in newer GNU getopt, but older (< 2007) require = 0.
5426
8783
  optind = 0;
5427
#if HAVE_DECL_OPTRESET
5428
  optreset = 1; // on BSD getopt() (e.g. Mac OS), might need this
5429
#endif /* HAVE_DECL_OPTRESET */
5430
5431
  // We must parse the binary name, which is manually ignored below. Setting
5432
  // this to 1 leads to incorrect behavior on some platforms.
5433
8783
  int main_optind = 0;
5434
  int old_optind;
5435
5436
5437
  while(true) { // Repeat Forever
5438
5439
24218
    optopt = 0;
5440
32161
    std::string option, optionarg;
5441
5442
24218
    optind = main_optind;
5443
24218
    old_optind = main_optind;
5444
5445
    // If we encounter an element that is not at zero and does not start
5446
    // with a "-", this is a non-option. We consume this element as a
5447
    // non-option.
5448
39589
    if (main_optind > 0 && main_optind < argc &&
5449
9251
        argv[main_optind][0] != '-') {
5450
12240
      Debug("options") << "enqueueing " << argv[main_optind]
5451
6120
                       << " as a non-option." << std::endl;
5452
6120
      nonoptions.push_back(argv[main_optind]);
5453
6120
      ++main_optind;
5454
6120
      continue;
5455
    }
5456
5457
5458
36196
    Debug("options") << "[ before, main_optind == " << main_optind << " ]"
5459
18098
                     << std::endl;
5460
18098
    Debug("options") << "[ before, optind == " << optind << " ]" << std::endl;
5461
36196
    Debug("options") << "[ argc == " << argc << ", argv == " << argv << " ]"
5462
18098
                     << std::endl;
5463
    // clang-format off
5464
18098
    int c = getopt_long(argc, argv,
5465
                        "+:d:iL:o:qt:vhs:Vm",
5466
18098
                        cmdlineOptions, NULL);
5467
    // clang-format on
5468
5469
18098
    main_optind = optind;
5470
5471
36196
    Debug("options") << "[ got " << int(c) << " (" << char(c) << ") ]"
5472
18098
                     << "[ next option will be at pos: " << optind << " ]"
5473
18098
                     << std::endl;
5474
5475
    // The initial getopt_long call should always determine that argv[0]
5476
    // is not an option and returns -1. We always manually advance beyond
5477
    // this element.
5478
19470
    if ( old_optind == 0  && c == -1 ) {
5479
1372
      Assert(main_optind > 0);
5480
1372
      continue;
5481
    }
5482
5483
16726
    if ( c == -1 ) {
5484
6184
      if(Debug.isOn("options")) {
5485
        Debug("options") << "done with option parsing" << std::endl;
5486
        for(int index = optind; index < argc; ++index) {
5487
          Debug("options") << "remaining " << argv[index] << std::endl;
5488
        }
5489
      }
5490
6184
      break;
5491
    }
5492
5493
10542
    option = argv[old_optind == 0 ? 1 : old_optind];
5494
10542
    optionarg = (optarg == NULL) ? "" : optarg;
5495
5496
21084
    Debug("preemptGetopt") << "processing option " << c
5497
10542
                           << " (`" << char(c) << "'), " << option << std::endl;
5498
5499
    // clang-format off
5500
10542
    switch(c)
5501
    {
5502
case 256: // --approx-branch-depth=N
5503
        assign_arith_maxApproxDepth(opts, option, optionarg);
5504
      break;
5505
2
    case 257: // --arith-brab
5506
2
        assign_arith_brabTest(opts, option, true);
5507
2
      break;
5508
2
    case 258:// --no-arith-brab
5509
2
        assign_arith_brabTest(opts, option, false);
5510
2
      break;
5511
    case 259: // --arith-cong-man
5512
        assign_arith_arithCongMan(opts, option, true);
5513
      break;
5514
    case 260:// --no-arith-cong-man
5515
        assign_arith_arithCongMan(opts, option, false);
5516
      break;
5517
6
    case 261: // --arith-eq-solver
5518
6
        assign_arith_arithEqSolver(opts, option, true);
5519
6
      break;
5520
    case 262:// --no-arith-eq-solver
5521
        assign_arith_arithEqSolver(opts, option, false);
5522
      break;
5523
    case 263: // --arith-no-partial-fun
5524
        assign_arith_arithNoPartialFun(opts, option, true);
5525
      break;
5526
    case 264:// --no-arith-no-partial-fun
5527
        assign_arith_arithNoPartialFun(opts, option, false);
5528
      break;
5529
    case 265: // --arith-prop-clauses=N
5530
        assign_arith_arithPropAsLemmaLength(opts, option, optionarg);
5531
      break;
5532
    case 266: // --arith-prop=MODE
5533
        assign_arith_arithPropagationMode(opts, option, optionarg);
5534
      break;
5535
4
    case 267: // --arith-rewrite-equalities
5536
4
        assign_arith_arithRewriteEq(opts, option, true);
5537
4
      break;
5538
    case 268:// --no-arith-rewrite-equalities
5539
        assign_arith_arithRewriteEq(opts, option, false);
5540
      break;
5541
    case 269: // --collect-pivot-stats
5542
        assign_arith_collectPivots(opts, option, true);
5543
      break;
5544
    case 270:// --no-collect-pivot-stats
5545
        assign_arith_collectPivots(opts, option, false);
5546
      break;
5547
    case 271: // --cut-all-bounded
5548
        assign_arith_doCutAllBounded(opts, option, true);
5549
      break;
5550
    case 272:// --no-cut-all-bounded
5551
        assign_arith_doCutAllBounded(opts, option, false);
5552
      break;
5553
    case 273: // --dio-decomps
5554
        assign_arith_exportDioDecompositions(opts, option, true);
5555
      break;
5556
    case 274:// --no-dio-decomps
5557
        assign_arith_exportDioDecompositions(opts, option, false);
5558
      break;
5559
    case 275: // --dio-repeat
5560
        assign_arith_dioRepeat(opts, option, true);
5561
      break;
5562
    case 276:// --no-dio-repeat
5563
        assign_arith_dioRepeat(opts, option, false);
5564
      break;
5565
    case 277: // --dio-solver
5566
        assign_arith_arithDioSolver(opts, option, true);
5567
      break;
5568
    case 278:// --no-dio-solver
5569
        assign_arith_arithDioSolver(opts, option, false);
5570
      break;
5571
    case 279: // --dio-turns=N
5572
        assign_arith_dioSolverTurns(opts, option, optionarg);
5573
      break;
5574
    case 280: // --error-selection-rule=RULE
5575
        assign_arith_arithErrorSelectionRule(opts, option, optionarg);
5576
      break;
5577
    case 281: // --fc-penalties
5578
        assign_arith_havePenalties(opts, option, true);
5579
      break;
5580
    case 282:// --no-fc-penalties
5581
        assign_arith_havePenalties(opts, option, false);
5582
      break;
5583
    case 283: // --heuristic-pivots=N
5584
        assign_arith_arithHeuristicPivots(opts, option, optionarg);
5585
      break;
5586
    case 284: // --lemmas-on-replay-failure
5587
        assign_arith_replayFailureLemma(opts, option, true);
5588
      break;
5589
    case 285:// --no-lemmas-on-replay-failure
5590
        assign_arith_replayFailureLemma(opts, option, false);
5591
      break;
5592
    case 286: // --maxCutsInContext=N
5593
        assign_arith_maxCutsInContext(opts, option, optionarg);
5594
      break;
5595
8
    case 287: // --miplib-trick
5596
8
        assign_arith_arithMLTrick(opts, option, true);
5597
8
      break;
5598
    case 288:// --no-miplib-trick
5599
        assign_arith_arithMLTrick(opts, option, false);
5600
      break;
5601
    case 289: // --miplib-trick-subs=N
5602
        assign_arith_arithMLTrickSubstitutions(opts, option, optionarg);
5603
      break;
5604
    case 290: // --new-prop
5605
        assign_arith_newProp(opts, option, true);
5606
      break;
5607
8
    case 291:// --no-new-prop
5608
8
        assign_arith_newProp(opts, option, false);
5609
8
      break;
5610
5
    case 292: // --nl-cad
5611
5
        assign_arith_nlCad(opts, option, true);
5612
5
      break;
5613
    case 293:// --no-nl-cad
5614
        assign_arith_nlCad(opts, option, false);
5615
      break;
5616
    case 294: // --nl-cad-initial
5617
        assign_arith_nlCadUseInitial(opts, option, true);
5618
      break;
5619
    case 295:// --no-nl-cad-initial
5620
        assign_arith_nlCadUseInitial(opts, option, false);
5621
      break;
5622
    case 296: // --nl-cad-lift=MODE
5623
        assign_arith_nlCadLifting(opts, option, optionarg);
5624
      break;
5625
    case 297: // --nl-cad-proj=MODE
5626
        assign_arith_nlCadProjection(opts, option, optionarg);
5627
      break;
5628
    case 298: // --nl-ext-ent-conf
5629
        assign_arith_nlExtEntailConflicts(opts, option, true);
5630
      break;
5631
    case 299:// --no-nl-ext-ent-conf
5632
        assign_arith_nlExtEntailConflicts(opts, option, false);
5633
      break;
5634
    case 300: // --nl-ext-factor
5635
        assign_arith_nlExtFactor(opts, option, true);
5636
      break;
5637
    case 301:// --no-nl-ext-factor
5638
        assign_arith_nlExtFactor(opts, option, false);
5639
      break;
5640
    case 302: // --nl-ext-inc-prec
5641
        assign_arith_nlExtIncPrecision(opts, option, true);
5642
      break;
5643
2
    case 303:// --no-nl-ext-inc-prec
5644
2
        assign_arith_nlExtIncPrecision(opts, option, false);
5645
2
      break;
5646
2
    case 304: // --nl-ext-purify
5647
2
        assign_arith_nlExtPurify(opts, option, true);
5648
2
      break;
5649
    case 305:// --no-nl-ext-purify
5650
        assign_arith_nlExtPurify(opts, option, false);
5651
      break;
5652
    case 306: // --nl-ext-rbound
5653
        assign_arith_nlExtResBound(opts, option, true);
5654
      break;
5655
    case 307:// --no-nl-ext-rbound
5656
        assign_arith_nlExtResBound(opts, option, false);
5657
      break;
5658
    case 308: // --nl-ext-rewrite
5659
        assign_arith_nlExtRewrites(opts, option, true);
5660
      break;
5661
    case 309:// --no-nl-ext-rewrite
5662
        assign_arith_nlExtRewrites(opts, option, false);
5663
      break;
5664
    case 310: // --nl-ext-split-zero
5665
        assign_arith_nlExtSplitZero(opts, option, true);
5666
      break;
5667
    case 311:// --no-nl-ext-split-zero
5668
        assign_arith_nlExtSplitZero(opts, option, false);
5669
      break;
5670
    case 312: // --nl-ext-tf-taylor-deg=N
5671
        assign_arith_nlExtTfTaylorDegree(opts, option, optionarg);
5672
      break;
5673
39
    case 313: // --nl-ext-tf-tplanes
5674
39
        assign_arith_nlExtTfTangentPlanes(opts, option, true);
5675
39
      break;
5676
2
    case 314:// --no-nl-ext-tf-tplanes
5677
2
        assign_arith_nlExtTfTangentPlanes(opts, option, false);
5678
2
      break;
5679
42
    case 315: // --nl-ext-tplanes
5680
42
        assign_arith_nlExtTangentPlanes(opts, option, true);
5681
42
      break;
5682
    case 316:// --no-nl-ext-tplanes
5683
        assign_arith_nlExtTangentPlanes(opts, option, false);
5684
      break;
5685
    case 317: // --nl-ext-tplanes-interleave
5686
        assign_arith_nlExtTangentPlanesInterleave(opts, option, true);
5687
      break;
5688
    case 318:// --no-nl-ext-tplanes-interleave
5689
        assign_arith_nlExtTangentPlanesInterleave(opts, option, false);
5690
      break;
5691
125
    case 319: // --nl-ext=MODE
5692
125
        assign_arith_nlExt(opts, option, optionarg);
5693
125
      break;
5694
2
    case 320: // --nl-icp
5695
2
        assign_arith_nlICP(opts, option, true);
5696
2
      break;
5697
    case 321:// --no-nl-icp
5698
        assign_arith_nlICP(opts, option, false);
5699
      break;
5700
10
    case 322: // --nl-rlv=MODE
5701
10
        assign_arith_nlRlvMode(opts, option, optionarg);
5702
10
      break;
5703
2
    case 323: // --pb-rewrites
5704
2
        assign_arith_pbRewrites(opts, option, true);
5705
2
      break;
5706
    case 324:// --no-pb-rewrites
5707
        assign_arith_pbRewrites(opts, option, false);
5708
      break;
5709
    case 325: // --pivot-threshold=N
5710
        assign_arith_arithPivotThreshold(opts, option, optionarg);
5711
      break;
5712
    case 326: // --pp-assert-max-sub-size=N
5713
        assign_arith_ppAssertMaxSubSize(opts, option, optionarg);
5714
      break;
5715
    case 327: // --prop-row-length=N
5716
        assign_arith_arithPropagateMaxLength(opts, option, optionarg);
5717
      break;
5718
    case 328: // --replay-early-close-depth=N
5719
        assign_arith_replayEarlyCloseDepths(opts, option, optionarg);
5720
      break;
5721
    case 329: // --replay-failure-penalty=N
5722
        assign_arith_replayFailurePenalty(opts, option, optionarg);
5723
      break;
5724
    case 330: // --replay-lemma-reject-cut=N
5725
        assign_arith_lemmaRejectCutSize(opts, option, optionarg);
5726
      break;
5727
    case 331: // --replay-num-err-penalty=N
5728
        assign_arith_replayNumericFailurePenalty(opts, option, optionarg);
5729
      break;
5730
    case 332: // --replay-reject-cut=N
5731
        assign_arith_replayRejectCutSize(opts, option, optionarg);
5732
      break;
5733
    case 333: // --replay-soi-major-threshold-pen=N
5734
        assign_arith_soiApproxMajorFailurePen(opts, option, optionarg);
5735
      break;
5736
    case 334: // --replay-soi-major-threshold=T
5737
        assign_arith_soiApproxMajorFailure(opts, option, optionarg);
5738
      break;
5739
    case 335: // --replay-soi-minor-threshold-pen=N
5740
        assign_arith_soiApproxMinorFailurePen(opts, option, optionarg);
5741
      break;
5742
    case 336: // --replay-soi-minor-threshold=T
5743
        assign_arith_soiApproxMinorFailure(opts, option, optionarg);
5744
      break;
5745
    case 337: // --restrict-pivots
5746
        assign_arith_restrictedPivots(opts, option, true);
5747
      break;
5748
    case 338:// --no-restrict-pivots
5749
        assign_arith_restrictedPivots(opts, option, false);
5750
      break;
5751
    case 339: // --revert-arith-models-on-unsat
5752
        assign_arith_revertArithModels(opts, option, true);
5753
      break;
5754
    case 340:// --no-revert-arith-models-on-unsat
5755
        assign_arith_revertArithModels(opts, option, false);
5756
      break;
5757
    case 341: // --rr-turns=N
5758
        assign_arith_rrTurns(opts, option, optionarg);
5759
      break;
5760
    case 342: // --se-solve-int
5761
        assign_arith_trySolveIntStandardEffort(opts, option, true);
5762
      break;
5763
    case 343:// --no-se-solve-int
5764
        assign_arith_trySolveIntStandardEffort(opts, option, false);
5765
      break;
5766
    case 344: // --simplex-check-period=N
5767
        assign_arith_arithSimplexCheckPeriod(opts, option, optionarg);
5768
      break;
5769
    case 345: // --soi-qe
5770
        assign_arith_soiQuickExplain(opts, option, true);
5771
      break;
5772
    case 346:// --no-soi-qe
5773
        assign_arith_soiQuickExplain(opts, option, false);
5774
      break;
5775
    case 347: // --standard-effort-variable-order-pivots=N
5776
        assign_arith_arithStandardCheckVarOrderPivots(opts, option, optionarg);
5777
      break;
5778
    case 348: // --unate-lemmas=MODE
5779
        assign_arith_arithUnateLemmaMode(opts, option, optionarg);
5780
      break;
5781
    case 349: // --use-approx
5782
        assign_arith_useApprox(opts, option, true);
5783
      break;
5784
    case 350:// --no-use-approx
5785
        assign_arith_useApprox(opts, option, false);
5786
      break;
5787
    case 351: // --use-fcsimplex
5788
        assign_arith_useFC(opts, option, true);
5789
      break;
5790
    case 352:// --no-use-fcsimplex
5791
        assign_arith_useFC(opts, option, false);
5792
      break;
5793
    case 353: // --use-soi
5794
        assign_arith_useSOI(opts, option, true);
5795
      break;
5796
    case 354:// --no-use-soi
5797
        assign_arith_useSOI(opts, option, false);
5798
      break;
5799
    case 355: // --arrays-config=N
5800
        assign_arrays_arraysConfig(opts, option, optionarg);
5801
      break;
5802
    case 356: // --arrays-eager-index
5803
        assign_arrays_arraysEagerIndexSplitting(opts, option, true);
5804
      break;
5805
    case 357:// --no-arrays-eager-index
5806
        assign_arrays_arraysEagerIndexSplitting(opts, option, false);
5807
      break;
5808
    case 358: // --arrays-eager-lemmas
5809
        assign_arrays_arraysEagerLemmas(opts, option, true);
5810
      break;
5811
    case 359:// --no-arrays-eager-lemmas
5812
        assign_arrays_arraysEagerLemmas(opts, option, false);
5813
      break;
5814
3
    case 360: // --arrays-exp
5815
3
        assign_arrays_arraysExp(opts, option, true);
5816
3
      break;
5817
    case 361:// --no-arrays-exp
5818
        assign_arrays_arraysExp(opts, option, false);
5819
      break;
5820
    case 362: // --arrays-model-based
5821
        assign_arrays_arraysModelBased(opts, option, true);
5822
      break;
5823
    case 363:// --no-arrays-model-based
5824
        assign_arrays_arraysModelBased(opts, option, false);
5825
      break;
5826
    case 364: // --arrays-optimize-linear
5827
        assign_arrays_arraysOptimizeLinear(opts, option, true);
5828
      break;
5829
    case 365:// --no-arrays-optimize-linear
5830
        assign_arrays_arraysOptimizeLinear(opts, option, false);
5831
      break;
5832
    case 366: // --arrays-prop=N
5833
        assign_arrays_arraysPropagate(opts, option, optionarg);
5834
      break;
5835
    case 367: // --arrays-reduce-sharing
5836
        assign_arrays_arraysReduceSharing(opts, option, true);
5837
      break;
5838
    case 368:// --no-arrays-reduce-sharing
5839
        assign_arrays_arraysReduceSharing(opts, option, false);
5840
      break;
5841
    case 369: // --arrays-weak-equiv
5842
        assign_arrays_arraysWeakEquivalence(opts, option, true);
5843
      break;
5844
    case 370:// --no-arrays-weak-equiv
5845
        assign_arrays_arraysWeakEquivalence(opts, option, false);
5846
      break;
5847
    case 'd':
5848
    case 371: // --debug=TAG
5849
    opts.handler().enableDebugTag("debug", option, optionarg);
5850
      break;
5851
664
    case 'i':
5852
    case 372: // --incremental
5853
664
        assign_base_incrementalSolving(opts, option, true);
5854
664
      break;
5855
    case 373:// --no-incremental
5856
        assign_base_incrementalSolving(opts, option, false);
5857
      break;
5858
227
    case 'L':
5859
    case 374: // --lang=LANG
5860
    case 375: // --input-language
5861
227
        assign_base_inputLanguage(opts, option, optionarg);
5862
227
      break;
5863
64
    case 376: // --output-lang=LANG
5864
    case 377: // --output-language
5865
64
        assign_base_outputLanguage(opts, option, optionarg);
5866
64
      break;
5867
3
    case 'o':
5868
    case 378: // --output=TAG
5869
3
    opts.handler().enableOutputTag("output", option, optionarg);
5870
3
      break;
5871
    case 379: // --parse-only
5872
        assign_base_parseOnly(opts, option, true);
5873
      break;
5874
    case 380:// --no-parse-only
5875
        assign_base_parseOnly(opts, option, false);
5876
      break;
5877
3
    case 381: // --preprocess-only
5878
3
        assign_base_preprocessOnly(opts, option, true);
5879
3
      break;
5880
    case 382:// --no-preprocess-only
5881
        assign_base_preprocessOnly(opts, option, false);
5882
      break;
5883
2
    case 383: // --print-success
5884
2
        assign_base_printSuccess(opts, option, true);
5885
2
      break;
5886
    case 384:// --no-print-success
5887
        assign_base_printSuccess(opts, option, false);
5888
      break;
5889
187
    case 'q':
5890
    case 385: // --quiet
5891
187
    opts.handler().decreaseVerbosity("quiet", option);
5892
187
      break;
5893
    case 386: // --rlimit-per=N
5894
    case 387: // --reproducible-resource-limit
5895
        assign_base_perCallResourceLimit(opts, option, optionarg);
5896
      break;
5897
    case 388: // --rlimit=N
5898
        assign_base_cumulativeResourceLimit(opts, option, optionarg);
5899
      break;
5900
    case 389: // --rweight=VAL=N
5901
    opts.handler().setResourceWeight("rweight", option, optionarg);
5902
      break;
5903
    case 390: // --stats
5904
        assign_base_statistics(opts, option, true);
5905
      break;
5906
    case 391:// --no-stats
5907
        assign_base_statistics(opts, option, false);
5908
      break;
5909
    case 392: // --stats-all
5910
        assign_base_statisticsAll(opts, option, true);
5911
      break;
5912
    case 393:// --no-stats-all
5913
        assign_base_statisticsAll(opts, option, false);
5914
      break;
5915
    case 394: // --stats-every-query
5916
        assign_base_statisticsEveryQuery(opts, option, true);
5917
      break;
5918
    case 395:// --no-stats-every-query
5919
        assign_base_statisticsEveryQuery(opts, option, false);
5920
      break;
5921
    case 396: // --stats-expert
5922
        assign_base_statisticsExpert(opts, option, true);
5923
      break;
5924
    case 397:// --no-stats-expert
5925
        assign_base_statisticsExpert(opts, option, false);
5926
      break;
5927
6
    case 398: // --tlimit-per=MS
5928
6
        assign_base_perCallMillisecondLimit(opts, option, optionarg);
5929
6
      break;
5930
    case 399: // --tlimit=MS
5931
        assign_base_cumulativeMillisecondLimit(opts, option, optionarg);
5932
      break;
5933
    case 't':
5934
    case 400: // --trace=TAG
5935
    opts.handler().enableTraceTag("trace", option, optionarg);
5936
      break;
5937
3
    case 'v':
5938
    case 401: // --verbose
5939
3
    opts.handler().increaseVerbosity("verbose", option);
5940
3
      break;
5941
    case 402: // --verbosity=N
5942
        assign_base_verbosity(opts, option, optionarg);
5943
      break;
5944
    case 403: // --bitblast-aig
5945
        assign_bv_bitvectorAig(opts, option, true);
5946
      break;
5947
    case 404:// --no-bitblast-aig
5948
        assign_bv_bitvectorAig(opts, option, false);
5949
      break;
5950
38
    case 405: // --bitblast=MODE
5951
38
        assign_bv_bitblastMode(opts, option, optionarg);
5952
38
      break;
5953
    case 406: // --bitwise-eq
5954
        assign_bv_bitwiseEq(opts, option, true);
5955
      break;
5956
    case 407:// --no-bitwise-eq
5957
        assign_bv_bitwiseEq(opts, option, false);
5958
      break;
5959
12
    case 408: // --bool-to-bv=MODE
5960
12
        assign_bv_boolToBitvector(opts, option, optionarg);
5961
12
      break;
5962
4
    case 409: // --bv-abstraction
5963
4
        assign_bv_bvAbstraction(opts, option, true);
5964
4
      break;
5965
    case 410:// --no-bv-abstraction
5966
        assign_bv_bvAbstraction(opts, option, false);
5967
      break;
5968
    case 411: // --bv-aig-simp=COMMAND
5969
        assign_bv_bitvectorAigSimplifications(opts, option, optionarg);
5970
      break;
5971
    case 412: // --bv-alg-extf
5972
        assign_bv_bvAlgExtf(opts, option, true);
5973
      break;
5974
    case 413:// --no-bv-alg-extf
5975
        assign_bv_bvAlgExtf(opts, option, false);
5976
      break;
5977
    case 414: // --bv-algebraic-budget=N
5978
        assign_bv_bitvectorAlgebraicBudget(opts, option, optionarg);
5979
      break;
5980
    case 415: // --bv-algebraic-solver
5981
        assign_bv_bitvectorAlgebraicSolver(opts, option, true);
5982
      break;
5983
    case 416:// --no-bv-algebraic-solver
5984
        assign_bv_bitvectorAlgebraicSolver(opts, option, false);
5985
      break;
5986
6
    case 417: // --bv-assert-input
5987
6
        assign_bv_bvAssertInput(opts, option, true);
5988
6
      break;
5989
    case 418:// --no-bv-assert-input
5990
        assign_bv_bvAssertInput(opts, option, false);
5991
      break;
5992
    case 419: // --bv-eager-explanations
5993
        assign_bv_bvEagerExplanations(opts, option, true);
5994
      break;
5995
    case 420:// --no-bv-eager-explanations
5996
        assign_bv_bvEagerExplanations(opts, option, false);
5997
      break;
5998
    case 421: // --bv-eq-solver
5999
        assign_bv_bitvectorEqualitySolver(opts, option, true);
6000
      break;
6001
2
    case 422:// --no-bv-eq-solver
6002
2
        assign_bv_bitvectorEqualitySolver(opts, option, false);
6003
2
      break;
6004
    case 423: // --bv-extract-arith
6005
        assign_bv_bvExtractArithRewrite(opts, option, true);
6006
      break;
6007
    case 424:// --no-bv-extract-arith
6008
        assign_bv_bvExtractArithRewrite(opts, option, false);
6009
      break;
6010
    case 425: // --bv-gauss-elim
6011
        assign_bv_bvGaussElim(opts, option, true);
6012
      break;
6013
    case 426:// --no-bv-gauss-elim
6014
        assign_bv_bvGaussElim(opts, option, false);
6015
      break;
6016
    case 427: // --bv-inequality-solver
6017
        assign_bv_bitvectorInequalitySolver(opts, option, true);
6018
      break;
6019
    case 428:// --no-bv-inequality-solver
6020
        assign_bv_bitvectorInequalitySolver(opts, option, false);
6021
      break;
6022
2
    case 429: // --bv-intro-pow2
6023
2
        assign_bv_bvIntroducePow2(opts, option, true);
6024
2
      break;
6025
    case 430:// --no-bv-intro-pow2
6026
        assign_bv_bvIntroducePow2(opts, option, false);
6027
      break;
6028
    case 431: // --bv-num-func=N
6029
        assign_bv_bvNumFunc(opts, option, optionarg);
6030
      break;
6031
2
    case 432: // --bv-print-consts-as-indexed-symbols
6032
2
        assign_bv_bvPrintConstsAsIndexedSymbols(opts, option, true);
6033
2
      break;
6034
    case 433:// --no-bv-print-consts-as-indexed-symbols
6035
        assign_bv_bvPrintConstsAsIndexedSymbols(opts, option, false);
6036
      break;
6037
    case 434: // --bv-propagate
6038
        assign_bv_bitvectorPropagate(opts, option, true);
6039
      break;
6040
    case 435:// --no-bv-propagate
6041
        assign_bv_bitvectorPropagate(opts, option, false);
6042
      break;
6043
    case 436: // --bv-quick-xplain
6044
        assign_bv_bitvectorQuickXplain(opts, option, true);
6045
      break;
6046
    case 437:// --no-bv-quick-xplain
6047
        assign_bv_bitvectorQuickXplain(opts, option, false);
6048
      break;
6049
14
    case 438: // --bv-sat-solver=MODE
6050
14
        assign_bv_bvSatSolver(opts, option, optionarg);
6051
14
      break;
6052
    case 439: // --bv-skolemize
6053
        assign_bv_skolemizeArguments(opts, option, true);
6054
      break;
6055
    case 440:// --no-bv-skolemize
6056
        assign_bv_skolemizeArguments(opts, option, false);
6057
      break;
6058
41
    case 441: // --bv-solver=MODE
6059
41
        assign_bv_bvSolver(opts, option, optionarg);
6060
41
      break;
6061
10
    case 442: // --bv-to-bool
6062
10
        assign_bv_bitvectorToBool(opts, option, true);
6063
10
      break;
6064
    case 443:// --no-bv-to-bool
6065
        assign_bv_bitvectorToBool(opts, option, false);
6066
      break;
6067
    case 444: // --cdt-bisimilar
6068
        assign_datatypes_cdtBisimilar(opts, option, true);
6069
      break;
6070
    case 445:// --no-cdt-bisimilar
6071
        assign_datatypes_cdtBisimilar(opts, option, false);
6072
      break;
6073
    case 446: // --dt-binary-split
6074
        assign_datatypes_dtBinarySplit(opts, option, true);
6075
      break;
6076
    case 447:// --no-dt-binary-split
6077
        assign_datatypes_dtBinarySplit(opts, option, false);
6078
      break;
6079
    case 448: // --dt-blast-splits
6080
        assign_datatypes_dtBlastSplits(opts, option, true);
6081
      break;
6082
    case 449:// --no-dt-blast-splits
6083
        assign_datatypes_dtBlastSplits(opts, option, false);
6084
      break;
6085
    case 450: // --dt-cyclic
6086
        assign_datatypes_dtCyclic(opts, option, true);
6087
      break;
6088
    case 451:// --no-dt-cyclic
6089
        assign_datatypes_dtCyclic(opts, option, false);
6090
      break;
6091
    case 452: // --dt-force-assignment
6092
        assign_datatypes_dtForceAssignment(opts, option, true);
6093
      break;
6094
    case 453:// --no-dt-force-assignment
6095
        assign_datatypes_dtForceAssignment(opts, option, false);
6096
      break;
6097
    case 454: // --dt-infer-as-lemmas
6098
        assign_datatypes_dtInferAsLemmas(opts, option, true);
6099
      break;
6100
    case 455:// --no-dt-infer-as-lemmas
6101
        assign_datatypes_dtInferAsLemmas(opts, option, false);
6102
      break;
6103
10
    case 456: // --dt-nested-rec
6104
10
        assign_datatypes_dtNestedRec(opts, option, true);
6105
10
      break;
6106
    case 457:// --no-dt-nested-rec
6107
        assign_datatypes_dtNestedRec(opts, option, false);
6108
      break;
6109
    case 458: // --dt-polite-optimize
6110
        assign_datatypes_dtPoliteOptimize(opts, option, true);
6111
      break;
6112
    case 459:// --no-dt-polite-optimize
6113
        assign_datatypes_dtPoliteOptimize(opts, option, false);
6114
      break;
6115
5
    case 460: // --dt-rewrite-error-sel
6116
5
        assign_datatypes_dtRewriteErrorSel(opts, option, true);
6117
5
      break;
6118
    case 461:// --no-dt-rewrite-error-sel
6119
        assign_datatypes_dtRewriteErrorSel(opts, option, false);
6120
      break;
6121
    case 462: // --dt-share-sel
6122
        assign_datatypes_dtSharedSelectors(opts, option, true);
6123
      break;
6124
    case 463:// --no-dt-share-sel
6125
        assign_datatypes_dtSharedSelectors(opts, option, false);
6126
      break;
6127
11
    case 464: // --sygus-abort-size=N
6128
11
        assign_datatypes_sygusAbortSize(opts, option, optionarg);
6129
11
      break;
6130
    case 465: // --sygus-fair-max
6131
        assign_datatypes_sygusFairMax(opts, option, true);
6132
      break;
6133
    case 466:// --no-sygus-fair-max
6134
        assign_datatypes_sygusFairMax(opts, option, false);
6135
      break;
6136
2
    case 467: // --sygus-fair=MODE
6137
2
        assign_datatypes_sygusFair(opts, option, optionarg);
6138
2
      break;
6139
    case 468: // --sygus-sym-break
6140
        assign_datatypes_sygusSymBreak(opts, option, true);
6141
      break;
6142
6
    case 469:// --no-sygus-sym-break
6143
6
        assign_datatypes_sygusSymBreak(opts, option, false);
6144
6
      break;
6145
    case 470: // --sygus-sym-break-agg
6146
        assign_datatypes_sygusSymBreakAgg(opts, option, true);
6147
      break;
6148
    case 471:// --no-sygus-sym-break-agg
6149
        assign_datatypes_sygusSymBreakAgg(opts, option, false);
6150
      break;
6151
    case 472: // --sygus-sym-break-dynamic
6152
        assign_datatypes_sygusSymBreakDynamic(opts, option, true);
6153
      break;
6154
    case 473:// --no-sygus-sym-break-dynamic
6155
        assign_datatypes_sygusSymBreakDynamic(opts, option, false);
6156
      break;
6157
    case 474: // --sygus-sym-break-lazy
6158
        assign_datatypes_sygusSymBreakLazy(opts, option, true);
6159
      break;
6160
    case 475:// --no-sygus-sym-break-lazy
6161
        assign_datatypes_sygusSymBreakLazy(opts, option, false);
6162
      break;
6163
    case 476: // --sygus-sym-break-pbe
6164
        assign_datatypes_sygusSymBreakPbe(opts, option, true);
6165
      break;
6166
    case 477:// --no-sygus-sym-break-pbe
6167
        assign_datatypes_sygusSymBreakPbe(opts, option, false);
6168
      break;
6169
    case 478: // --sygus-sym-break-rlv
6170
        assign_datatypes_sygusSymBreakRlv(opts, option, true);
6171
      break;
6172
    case 479:// --no-sygus-sym-break-rlv
6173
        assign_datatypes_sygusSymBreakRlv(opts, option, false);
6174
      break;
6175
    case 480: // --decision-random-weight=N
6176
        assign_decision_decisionRandomWeight(opts, option, optionarg);
6177
      break;
6178
    case 481: // --decision-threshold=N
6179
        assign_decision_decisionThreshold(opts, option, optionarg);
6180
      break;
6181
    case 482: // --decision-use-weight
6182
        assign_decision_decisionUseWeight(opts, option, true);
6183
      break;
6184
    case 483:// --no-decision-use-weight
6185
        assign_decision_decisionUseWeight(opts, option, false);
6186
      break;
6187
    case 484: // --decision-weight-internal=HOW
6188
        assign_decision_decisionWeightInternal(opts, option, optionarg);
6189
      break;
6190
94
    case 485: // --decision=MODE
6191
    case 486: // --decision-mode
6192
94
        assign_decision_decisionMode(opts, option, optionarg);
6193
94
      break;
6194
3
    case 487: // --jh-rlv-order
6195
3
        assign_decision_jhRlvOrder(opts, option, true);
6196
3
      break;
6197
7
    case 488:// --no-jh-rlv-order
6198
7
        assign_decision_jhRlvOrder(opts, option, false);
6199
7
      break;
6200
    case 489: // --jh-skolem-rlv=MODE
6201
        assign_decision_jhSkolemRlvMode(opts, option, optionarg);
6202
      break;
6203
    case 490: // --jh-skolem=MODE
6204
        assign_decision_jhSkolemMode(opts, option, optionarg);
6205
      break;
6206
1
    case 491: // --dag-thresh=N
6207
1
        assign_expr_defaultDagThresh(opts, option, optionarg);
6208
1
      break;
6209
    case 492: // --expr-depth=N
6210
        assign_expr_defaultExprDepth(opts, option, optionarg);
6211
      break;
6212
    case 493: // --type-checking
6213
        assign_expr_typeChecking(opts, option, true);
6214
      break;
6215
    case 494:// --no-type-checking
6216
        assign_expr_typeChecking(opts, option, false);
6217
      break;
6218
22
    case 495: // --fp-exp
6219
22
        assign_fp_fpExp(opts, option, true);
6220
22
      break;
6221
    case 496:// --no-fp-exp
6222
        assign_fp_fpExp(opts, option, false);
6223
      break;
6224
3
    case 497: // --fp-lazy-wb
6225
3
        assign_fp_fpLazyWb(opts, option, true);
6226
3
      break;
6227
    case 498:// --no-fp-lazy-wb
6228
        assign_fp_fpLazyWb(opts, option, false);
6229
      break;
6230
    case 499: // --copyright
6231
    opts.handler().copyright("copyright", option);
6232
      break;
6233
12
    case 500: // --dump-instantiations
6234
12
        assign_driver_dumpInstantiations(opts, option, true);
6235
12
      break;
6236
    case 501:// --no-dump-instantiations
6237
        assign_driver_dumpInstantiations(opts, option, false);
6238
      break;
6239
6
    case 502: // --dump-models
6240
6
        assign_driver_dumpModels(opts, option, true);
6241
6
      break;
6242
    case 503:// --no-dump-models
6243
        assign_driver_dumpModels(opts, option, false);
6244
      break;
6245
    case 504: // --dump-proofs
6246
        assign_driver_dumpProofs(opts, option, true);
6247
      break;
6248
    case 505:// --no-dump-proofs
6249
        assign_driver_dumpProofs(opts, option, false);
6250
      break;
6251
    case 506: // --dump-unsat-cores
6252
        assign_driver_dumpUnsatCores(opts, option, true);
6253
      break;
6254
    case 507:// --no-dump-unsat-cores
6255
        assign_driver_dumpUnsatCores(opts, option, false);
6256
      break;
6257
3
    case 508: // --dump-unsat-cores-full
6258
3
        assign_driver_dumpUnsatCoresFull(opts, option, true);
6259
3
      break;
6260
    case 509:// --no-dump-unsat-cores-full
6261
        assign_driver_dumpUnsatCoresFull(opts, option, false);
6262
      break;
6263
    case 510: // --early-exit
6264
        assign_driver_earlyExit(opts, option, true);
6265
      break;
6266
    case 511:// --no-early-exit
6267
        assign_driver_earlyExit(opts, option, false);
6268
      break;
6269
    case 512: // --force-no-limit-cpu-while-dump
6270
        assign_driver_forceNoLimitCpuWhileDump(opts, option, true);
6271
      break;
6272
    case 513:// --no-force-no-limit-cpu-while-dump
6273
        assign_driver_forceNoLimitCpuWhileDump(opts, option, false);
6274
      break;
6275
    case 'h':
6276
    case 514: // --help
6277
        assign_driver_help(opts, option, true);
6278
      break;
6279
    case 515: // --interactive
6280
        assign_driver_interactive(opts, option, true);
6281
      break;
6282
    case 516:// --no-interactive
6283
        assign_driver_interactive(opts, option, false);
6284
      break;
6285
    case 517: // --interactive-prompt
6286
        assign_driver_interactivePrompt(opts, option, true);
6287
      break;
6288
    case 518:// --no-interactive-prompt
6289
        assign_driver_interactivePrompt(opts, option, false);
6290
      break;
6291
    case 's':
6292
    case 519: // --seed=N
6293
        assign_driver_seed(opts, option, optionarg);
6294
      break;
6295
    case 520: // --segv-spin
6296
        assign_driver_segvSpin(opts, option, true);
6297
      break;
6298
    case 521:// --no-segv-spin
6299
        assign_driver_segvSpin(opts, option, false);
6300
      break;
6301
2599
    case 522: // --show-config
6302
2599
    opts.handler().showConfiguration("show-config", option);
6303
      break;
6304
    case 523: // --show-debug-tags
6305
    opts.handler().showDebugTags("show-debug-tags", option);
6306
      break;
6307
    case 524: // --show-trace-tags
6308
    opts.handler().showTraceTags("show-trace-tags", option);
6309
      break;
6310
    case 'V':
6311
    case 525: // --version
6312
        assign_driver_version(opts, option, true);
6313
      break;
6314
    case 526: // --filesystem-access
6315
        assign_parser_filesystemAccess(opts, option, true);
6316
      break;
6317
    case 527:// --no-filesystem-access
6318
        assign_parser_filesystemAccess(opts, option, false);
6319
      break;
6320
9
    case 528: // --force-logic=LOGIC
6321
9
        assign_parser_forceLogicString(opts, option, optionarg);
6322
9
      break;
6323
    case 529: // --global-declarations
6324
        assign_parser_globalDeclarations(opts, option, true);
6325
      break;
6326
    case 530:// --no-global-declarations
6327
        assign_parser_globalDeclarations(opts, option, false);
6328
      break;
6329
    case 531: // --mmap
6330
        assign_parser_memoryMap(opts, option, true);
6331
      break;
6332
    case 532:// --no-mmap
6333
        assign_parser_memoryMap(opts, option, false);
6334
      break;
6335
    case 533: // --semantic-checks
6336
        assign_parser_semanticChecks(opts, option, true);
6337
      break;
6338
    case 534:// --no-semantic-checks
6339
        assign_parser_semanticChecks(opts, option, false);
6340
      break;
6341
9
    case 535: // --strict-parsing
6342
9
        assign_parser_strictParsing(opts, option, true);
6343
9
      break;
6344
    case 536:// --no-strict-parsing
6345
        assign_parser_strictParsing(opts, option, false);
6346
      break;
6347
    case 537: // --flatten-ho-chains
6348
        assign_printer_flattenHOChains(opts, option, true);
6349
      break;
6350
    case 538:// --no-flatten-ho-chains
6351
        assign_printer_flattenHOChains(opts, option, false);
6352
      break;
6353
    case 539: // --inst-format=MODE
6354
        assign_printer_instFormatMode(opts, option, optionarg);
6355
      break;
6356
    case 540: // --model-format=MODE
6357
        assign_printer_modelFormatMode(opts, option, optionarg);
6358
      break;
6359
9
    case 541: // --print-inst-full
6360
9
        assign_printer_printInstFull(opts, option, true);
6361
9
      break;
6362
3
    case 542:// --no-print-inst-full
6363
3
        assign_printer_printInstFull(opts, option, false);
6364
3
      break;
6365
3
    case 543: // --print-inst=MODE
6366
3
        assign_printer_printInstMode(opts, option, optionarg);
6367
3
      break;
6368
2
    case 544: // --proof-eager-checking
6369
2
        assign_proof_proofEagerChecking(opts, option, true);
6370
2
      break;
6371
    case 545:// --no-proof-eager-checking
6372
        assign_proof_proofEagerChecking(opts, option, false);
6373
      break;
6374
    case 546: // --proof-format-mode=MODE
6375
        assign_proof_proofFormatMode(opts, option, optionarg);
6376
      break;
6377
    case 547: // --proof-granularity=MODE
6378
        assign_proof_proofGranularityMode(opts, option, optionarg);
6379
      break;
6380
    case 548: // --proof-pedantic=N
6381
        assign_proof_proofPedantic(opts, option, optionarg);
6382
      break;
6383
    case 549: // --proof-print-conclusion
6384
        assign_proof_proofPrintConclusion(opts, option, true);
6385
      break;
6386
    case 550:// --no-proof-print-conclusion
6387
        assign_proof_proofPrintConclusion(opts, option, false);
6388
      break;
6389
    case 551: // --minisat-dump-dimacs
6390
        assign_prop_minisatDumpDimacs(opts, option, true);
6391
      break;
6392
    case 552:// --no-minisat-dump-dimacs
6393
        assign_prop_minisatDumpDimacs(opts, option, false);
6394
      break;
6395
    case 553: // --minisat-elimination
6396
        assign_prop_minisatUseElim(opts, option, true);
6397
      break;
6398
    case 554:// --no-minisat-elimination
6399
        assign_prop_minisatUseElim(opts, option, false);
6400
      break;
6401
    case 555: // --random-freq=P
6402
    case 556: // --random-frequency
6403
        assign_prop_satRandomFreq(opts, option, optionarg);
6404
      break;
6405
    case 557: // --random-seed=S
6406
        assign_prop_satRandomSeed(opts, option, optionarg);
6407
      break;
6408
    case 558: // --refine-conflicts
6409
        assign_prop_sat_refine_conflicts(opts, option, true);
6410
      break;
6411
    case 559:// --no-refine-conflicts
6412
        assign_prop_sat_refine_conflicts(opts, option, false);
6413
      break;
6414
    case 560: // --restart-int-base=N
6415
        assign_prop_satRestartFirst(opts, option, optionarg);
6416
      break;
6417
    case 561: // --restart-int-inc=F
6418
        assign_prop_satRestartInc(opts, option, optionarg);
6419
      break;
6420
    case 562: // --ag-miniscope-quant
6421
        assign_quantifiers_aggressiveMiniscopeQuant(opts, option, true);
6422
      break;
6423
    case 563:// --no-ag-miniscope-quant
6424
        assign_quantifiers_aggressiveMiniscopeQuant(opts, option, false);
6425
      break;
6426
3
    case 564: // --cegis-sample=MODE
6427
3
        assign_quantifiers_cegisSample(opts, option, optionarg);
6428
3
      break;
6429
17
    case 565: // --cegqi
6430
17
        assign_quantifiers_cegqi(opts, option, true);
6431
17
      break;
6432
2
    case 566:// --no-cegqi
6433
2
        assign_quantifiers_cegqi(opts, option, false);
6434
2
      break;
6435
15
    case 567: // --cegqi-all
6436
15
        assign_quantifiers_cegqiAll(opts, option, true);
6437
15
      break;
6438
    case 568:// --no-cegqi-all
6439
        assign_quantifiers_cegqiAll(opts, option, false);
6440
      break;
6441
106
    case 569: // --cegqi-bv
6442
106
        assign_quantifiers_cegqiBv(opts, option, true);
6443
106
      break;
6444
    case 570:// --no-cegqi-bv
6445
        assign_quantifiers_cegqiBv(opts, option, false);
6446
      break;
6447
    case 571: // --cegqi-bv-concat-inv
6448
        assign_quantifiers_cegqiBvConcInv(opts, option, true);
6449
      break;
6450
    case 572:// --no-cegqi-bv-concat-inv
6451
        assign_quantifiers_cegqiBvConcInv(opts, option, false);
6452
      break;
6453
82
    case 573: // --cegqi-bv-ineq=MODE
6454
82
        assign_quantifiers_cegqiBvIneqMode(opts, option, optionarg);
6455
82
      break;
6456
    case 574: // --cegqi-bv-interleave-value
6457
        assign_quantifiers_cegqiBvInterleaveValue(opts, option, true);
6458
      break;
6459
    case 575:// --no-cegqi-bv-interleave-value
6460
        assign_quantifiers_cegqiBvInterleaveValue(opts, option, false);
6461
      break;
6462
    case 576: // --cegqi-bv-linear
6463
        assign_quantifiers_cegqiBvLinearize(opts, option, true);
6464
      break;
6465
    case 577:// --no-cegqi-bv-linear
6466
        assign_quantifiers_cegqiBvLinearize(opts, option, false);
6467
      break;
6468
2
    case 578: // --cegqi-bv-rm-extract
6469
2
        assign_quantifiers_cegqiBvRmExtract(opts, option, true);
6470
2
      break;
6471
    case 579:// --no-cegqi-bv-rm-extract
6472
        assign_quantifiers_cegqiBvRmExtract(opts, option, false);
6473
      break;
6474
    case 580: // --cegqi-bv-solve-nl
6475
        assign_quantifiers_cegqiBvSolveNl(opts, option, true);
6476
      break;
6477
    case 581:// --no-cegqi-bv-solve-nl
6478
        assign_quantifiers_cegqiBvSolveNl(opts, option, false);
6479
      break;
6480
5
    case 582: // --cegqi-full
6481
5
        assign_quantifiers_cegqiFullEffort(opts, option, true);
6482
5
      break;
6483
82
    case 583:// --no-cegqi-full
6484
82
        assign_quantifiers_cegqiFullEffort(opts, option, false);
6485
82
      break;
6486
    case 584: // --cegqi-innermost
6487
        assign_quantifiers_cegqiInnermost(opts, option, true);
6488
      break;
6489
    case 585:// --no-cegqi-innermost
6490
        assign_quantifiers_cegqiInnermost(opts, option, false);
6491
      break;
6492
    case 586: // --cegqi-midpoint
6493
        assign_quantifiers_cegqiMidpoint(opts, option, true);
6494
      break;
6495
    case 587:// --no-cegqi-midpoint
6496
        assign_quantifiers_cegqiMidpoint(opts, option, false);
6497
      break;
6498
    case 588: // --cegqi-min-bounds
6499
        assign_quantifiers_cegqiMinBounds(opts, option, true);
6500
      break;
6501
    case 589:// --no-cegqi-min-bounds
6502
        assign_quantifiers_cegqiMinBounds(opts, option, false);
6503
      break;
6504
    case 590: // --cegqi-model
6505
        assign_quantifiers_cegqiModel(opts, option, true);
6506
      break;
6507
    case 591:// --no-cegqi-model
6508
        assign_quantifiers_cegqiModel(opts, option, false);
6509
      break;
6510
3
    case 592: // --cegqi-multi-inst
6511
3
        assign_quantifiers_cegqiMultiInst(opts, option, true);
6512
3
      break;
6513
    case 593:// --no-cegqi-multi-inst
6514
        assign_quantifiers_cegqiMultiInst(opts, option, false);
6515
      break;
6516
7
    case 594: // --cegqi-nested-qe
6517
7
        assign_quantifiers_cegqiNestedQE(opts, option, true);
6518
7
      break;
6519
    case 595:// --no-cegqi-nested-qe
6520
        assign_quantifiers_cegqiNestedQE(opts, option, false);
6521
      break;
6522
    case 596: // --cegqi-nopt
6523
        assign_quantifiers_cegqiNopt(opts, option, true);
6524
      break;
6525
    case 597:// --no-cegqi-nopt
6526
        assign_quantifiers_cegqiNopt(opts, option, false);
6527
      break;
6528
    case 598: // --cegqi-repeat-lit
6529
        assign_quantifiers_cegqiRepeatLit(opts, option, true);
6530
      break;
6531
    case 599:// --no-cegqi-repeat-lit
6532
        assign_quantifiers_cegqiRepeatLit(opts, option, false);
6533
      break;
6534
    case 600: // --cegqi-round-up-lia
6535
        assign_quantifiers_cegqiRoundUpLowerLia(opts, option, true);
6536
      break;
6537
    case 601:// --no-cegqi-round-up-lia
6538
        assign_quantifiers_cegqiRoundUpLowerLia(opts, option, false);
6539
      break;
6540
    case 602: // --cegqi-sat
6541
        assign_quantifiers_cegqiSat(opts, option, true);
6542
      break;
6543
    case 603:// --no-cegqi-sat
6544
        assign_quantifiers_cegqiSat(opts, option, false);
6545
      break;
6546
3
    case 604: // --cegqi-use-inf-int
6547
3
        assign_quantifiers_cegqiUseInfInt(opts, option, true);
6548
3
      break;
6549
    case 605:// --no-cegqi-use-inf-int
6550
        assign_quantifiers_cegqiUseInfInt(opts, option, false);
6551
      break;
6552
3
    case 606: // --cegqi-use-inf-real
6553
3
        assign_quantifiers_cegqiUseInfReal(opts, option, true);
6554
3
      break;
6555
    case 607:// --no-cegqi-use-inf-real
6556
        assign_quantifiers_cegqiUseInfReal(opts, option, false);
6557
      break;
6558
    case 608: // --cond-var-split-agg-quant
6559
        assign_quantifiers_condVarSplitQuantAgg(opts, option, true);
6560
      break;
6561
    case 609:// --no-cond-var-split-agg-quant
6562
        assign_quantifiers_condVarSplitQuantAgg(opts, option, false);
6563
      break;
6564
    case 610: // --cond-var-split-quant
6565
        assign_quantifiers_condVarSplitQuant(opts, option, true);
6566
      break;
6567
    case 611:// --no-cond-var-split-quant
6568
        assign_quantifiers_condVarSplitQuant(opts, option, false);
6569
      break;
6570
    case 612: // --conjecture-filter-active-terms
6571
        assign_quantifiers_conjectureFilterActiveTerms(opts, option, true);
6572
      break;
6573
    case 613:// --no-conjecture-filter-active-terms
6574
        assign_quantifiers_conjectureFilterActiveTerms(opts, option, false);
6575
      break;
6576
    case 614: // --conjecture-filter-canonical
6577
        assign_quantifiers_conjectureFilterCanonical(opts, option, true);
6578
      break;
6579
    case 615:// --no-conjecture-filter-canonical
6580
        assign_quantifiers_conjectureFilterCanonical(opts, option, false);
6581
      break;
6582
    case 616: // --conjecture-filter-model
6583
        assign_quantifiers_conjectureFilterModel(opts, option, true);
6584
      break;
6585
    case 617:// --no-conjecture-filter-model
6586
        assign_quantifiers_conjectureFilterModel(opts, option, false);
6587
      break;
6588
3
    case 618: // --conjecture-gen
6589
3
        assign_quantifiers_conjectureGen(opts, option, true);
6590
3
      break;
6591
    case 619:// --no-conjecture-gen
6592
        assign_quantifiers_conjectureGen(opts, option, false);
6593
      break;
6594
    case 620: // --conjecture-gen-gt-enum=N
6595
        assign_quantifiers_conjectureGenGtEnum(opts, option, optionarg);
6596
      break;
6597
    case 621: // --conjecture-gen-max-depth=N
6598
        assign_quantifiers_conjectureGenMaxDepth(opts, option, optionarg);
6599
      break;
6600
    case 622: // --conjecture-gen-per-round=N
6601
        assign_quantifiers_conjectureGenPerRound(opts, option, optionarg);
6602
      break;
6603
    case 623: // --conjecture-gen-uee-intro
6604
        assign_quantifiers_conjectureUeeIntro(opts, option, true);
6605
      break;
6606
    case 624:// --no-conjecture-gen-uee-intro
6607
        assign_quantifiers_conjectureUeeIntro(opts, option, false);
6608
      break;
6609
    case 625: // --conjecture-no-filter
6610
        assign_quantifiers_conjectureNoFilter(opts, option, true);
6611
      break;
6612
    case 626:// --no-conjecture-no-filter
6613
        assign_quantifiers_conjectureNoFilter(opts, option, false);
6614
      break;
6615
    case 627: // --dt-stc-ind
6616
        assign_quantifiers_dtStcInduction(opts, option, true);
6617
      break;
6618
    case 628:// --no-dt-stc-ind
6619
        assign_quantifiers_dtStcInduction(opts, option, false);
6620
      break;
6621
    case 629: // --dt-var-exp-quant
6622
        assign_quantifiers_dtVarExpandQuant(opts, option, true);
6623
      break;
6624
    case 630:// --no-dt-var-exp-quant
6625
        assign_quantifiers_dtVarExpandQuant(opts, option, false);
6626
      break;
6627
    case 631: // --e-matching
6628
        assign_quantifiers_eMatching(opts, option, true);
6629
      break;
6630
    case 632:// --no-e-matching
6631
        assign_quantifiers_eMatching(opts, option, false);
6632
      break;
6633
    case 633: // --elim-taut-quant
6634
        assign_quantifiers_elimTautQuant(opts, option, true);
6635
      break;
6636
    case 634:// --no-elim-taut-quant
6637
        assign_quantifiers_elimTautQuant(opts, option, false);
6638
      break;
6639
9
    case 635: // --ext-rewrite-quant
6640
9
        assign_quantifiers_extRewriteQuant(opts, option, true);
6641
9
      break;
6642
    case 636:// --no-ext-rewrite-quant
6643
        assign_quantifiers_extRewriteQuant(opts, option, false);
6644
      break;
6645
159
    case 637: // --finite-model-find
6646
159
        assign_quantifiers_finiteModelFind(opts, option, true);
6647
159
      break;
6648
1
    case 638:// --no-finite-model-find
6649
1
        assign_quantifiers_finiteModelFind(opts, option, false);
6650
1
      break;
6651
30
    case 639: // --fmf-bound
6652
30
        assign_quantifiers_fmfBound(opts, option, true);
6653
30
      break;
6654
    case 640:// --no-fmf-bound
6655
        assign_quantifiers_fmfBound(opts, option, false);
6656
      break;
6657
6
    case 641: // --fmf-bound-int
6658
6
        assign_quantifiers_fmfBoundInt(opts, option, true);
6659
6
      break;
6660
    case 642:// --no-fmf-bound-int
6661
        assign_quantifiers_fmfBoundInt(opts, option, false);
6662
      break;
6663
3
    case 643: // --fmf-bound-lazy
6664
3
        assign_quantifiers_fmfBoundLazy(opts, option, true);
6665
3
      break;
6666
    case 644:// --no-fmf-bound-lazy
6667
        assign_quantifiers_fmfBoundLazy(opts, option, false);
6668
      break;
6669
    case 645: // --fmf-fmc-simple
6670
        assign_quantifiers_fmfFmcSimple(opts, option, true);
6671
      break;
6672
    case 646:// --no-fmf-fmc-simple
6673
        assign_quantifiers_fmfFmcSimple(opts, option, false);
6674
      break;
6675
    case 647: // --fmf-fresh-dc
6676
        assign_quantifiers_fmfFreshDistConst(opts, option, true);
6677
      break;
6678
    case 648:// --no-fmf-fresh-dc
6679
        assign_quantifiers_fmfFreshDistConst(opts, option, false);
6680
      break;
6681
37
    case 649: // --fmf-fun
6682
37
        assign_quantifiers_fmfFunWellDefined(opts, option, true);
6683
37
      break;
6684
    case 650:// --no-fmf-fun
6685
        assign_quantifiers_fmfFunWellDefined(opts, option, false);
6686
      break;
6687
10
    case 651: // --fmf-fun-rlv
6688
10
        assign_quantifiers_fmfFunWellDefinedRelevant(opts, option, true);
6689
10
      break;
6690
    case 652:// --no-fmf-fun-rlv
6691
        assign_quantifiers_fmfFunWellDefinedRelevant(opts, option, false);
6692
      break;
6693
7
    case 653: // --fmf-inst-engine
6694
7
        assign_quantifiers_fmfInstEngine(opts, option, true);
6695
7
      break;
6696
    case 654:// --no-fmf-inst-engine
6697
        assign_quantifiers_fmfInstEngine(opts, option, false);
6698
      break;
6699
    case 655: // --fmf-type-completion-thresh=N
6700
        assign_quantifiers_fmfTypeCompletionThresh(opts, option, optionarg);
6701
      break;
6702
    case 656: // --fs-interleave
6703
        assign_quantifiers_fullSaturateInterleave(opts, option, true);
6704
      break;
6705
    case 657:// --no-fs-interleave
6706
        assign_quantifiers_fullSaturateInterleave(opts, option, false);
6707
      break;
6708
3
    case 658: // --fs-stratify
6709
3
        assign_quantifiers_fullSaturateStratify(opts, option, true);
6710
3
      break;
6711
    case 659:// --no-fs-stratify
6712
        assign_quantifiers_fullSaturateStratify(opts, option, false);
6713
      break;
6714
    case 660: // --fs-sum
6715
        assign_quantifiers_fullSaturateSum(opts, option, true);
6716
      break;
6717
    case 661:// --no-fs-sum
6718
        assign_quantifiers_fullSaturateSum(opts, option, false);
6719
      break;
6720
76
    case 662: // --full-saturate-quant
6721
76
        assign_quantifiers_fullSaturateQuant(opts, option, true);
6722
76
      break;
6723
    case 663:// --no-full-saturate-quant
6724
        assign_quantifiers_fullSaturateQuant(opts, option, false);
6725
      break;
6726
3
    case 664: // --full-saturate-quant-limit=N
6727
3
        assign_quantifiers_fullSaturateLimit(opts, option, optionarg);
6728
3
      break;
6729
    case 665: // --full-saturate-quant-rd
6730
        assign_quantifiers_fullSaturateQuantRd(opts, option, true);
6731
      break;
6732
    case 666:// --no-full-saturate-quant-rd
6733
        assign_quantifiers_fullSaturateQuantRd(opts, option, false);
6734
      break;
6735
6
    case 667: // --global-negate
6736
6
        assign_quantifiers_globalNegate(opts, option, true);
6737
6
      break;
6738
    case 668:// --no-global-negate
6739
        assign_quantifiers_globalNegate(opts, option, false);
6740
      break;
6741
8
    case 669: // --ho-elim
6742
8
        assign_quantifiers_hoElim(opts, option, true);
6743
8
      break;
6744
    case 670:// --no-ho-elim
6745
        assign_quantifiers_hoElim(opts, option, false);
6746
      break;
6747
1
    case 671: // --ho-elim-store-ax
6748
1
        assign_quantifiers_hoElimStoreAx(opts, option, true);
6749
1
      break;
6750
    case 672:// --no-ho-elim-store-ax
6751
        assign_quantifiers_hoElimStoreAx(opts, option, false);
6752
      break;
6753
    case 673: // --ho-matching
6754
        assign_quantifiers_hoMatching(opts, option, true);
6755
      break;
6756
    case 674:// --no-ho-matching
6757
        assign_quantifiers_hoMatching(opts, option, false);
6758
      break;
6759
    case 675: // --ho-matching-var-priority
6760
        assign_quantifiers_hoMatchingVarArgPriority(opts, option, true);
6761
      break;
6762
    case 676:// --no-ho-matching-var-priority
6763
        assign_quantifiers_hoMatchingVarArgPriority(opts, option, false);
6764
      break;
6765
    case 677: // --ho-merge-term-db
6766
        assign_quantifiers_hoMergeTermDb(opts, option, true);
6767
      break;
6768
    case 678:// --no-ho-merge-term-db
6769
        assign_quantifiers_hoMergeTermDb(opts, option, false);
6770
      break;
6771
    case 679: // --increment-triggers
6772
        assign_quantifiers_incrementTriggers(opts, option, true);
6773
      break;
6774
    case 680:// --no-increment-triggers
6775
        assign_quantifiers_incrementTriggers(opts, option, false);
6776
      break;
6777
    case 681: // --inst-level-input-only
6778
        assign_quantifiers_instLevelInputOnly(opts, option, true);
6779
      break;
6780
    case 682:// --no-inst-level-input-only
6781
        assign_quantifiers_instLevelInputOnly(opts, option, false);
6782
      break;
6783
3
    case 683: // --inst-max-level=N
6784
3
        assign_quantifiers_instMaxLevel(opts, option, optionarg);
6785
3
      break;
6786
    case 684: // --inst-max-rounds=N
6787
        assign_quantifiers_instMaxRounds(opts, option, optionarg);
6788
      break;
6789
    case 685: // --inst-no-entail
6790
        assign_quantifiers_instNoEntail(opts, option, true);
6791
      break;
6792
    case 686:// --no-inst-no-entail
6793
        assign_quantifiers_instNoEntail(opts, option, false);
6794
      break;
6795
    case 687: // --inst-when-phase=N
6796
        assign_quantifiers_instWhenPhase(opts, option, optionarg);
6797
      break;
6798
    case 688: // --inst-when-strict-interleave
6799
        assign_quantifiers_instWhenStrictInterleave(opts, option, true);
6800
      break;
6801
    case 689:// --no-inst-when-strict-interleave
6802
        assign_quantifiers_instWhenStrictInterleave(opts, option, false);
6803
      break;
6804
    case 690: // --inst-when-tc-first
6805
        assign_quantifiers_instWhenTcFirst(opts, option, true);
6806
      break;
6807
    case 691:// --no-inst-when-tc-first
6808
        assign_quantifiers_instWhenTcFirst(opts, option, false);
6809
      break;
6810
3
    case 692: // --inst-when=MODE
6811
3
        assign_quantifiers_instWhenMode(opts, option, optionarg);
6812
3
      break;
6813
3
    case 693: // --int-wf-ind
6814
3
        assign_quantifiers_intWfInduction(opts, option, true);
6815
3
      break;
6816
    case 694:// --no-int-wf-ind
6817
        assign_quantifiers_intWfInduction(opts, option, false);
6818
      break;
6819
    case 695: // --ite-dtt-split-quant
6820
        assign_quantifiers_iteDtTesterSplitQuant(opts, option, true);
6821
      break;
6822
    case 696:// --no-ite-dtt-split-quant
6823
        assign_quantifiers_iteDtTesterSplitQuant(opts, option, false);
6824
      break;
6825
    case 697: // --ite-lift-quant=MODE
6826
        assign_quantifiers_iteLiftQuant(opts, option, optionarg);
6827
      break;
6828
    case 698: // --literal-matching=MODE
6829
        assign_quantifiers_literalMatchMode(opts, option, optionarg);
6830
      break;
6831
17
    case 699: // --macros-quant
6832
17
        assign_quantifiers_macrosQuant(opts, option, true);
6833
17
      break;
6834
    case 700:// --no-macros-quant
6835
        assign_quantifiers_macrosQuant(opts, option, false);
6836
      break;
6837
2
    case 701: // --macros-quant-mode=MODE
6838
2
        assign_quantifiers_macrosQuantMode(opts, option, optionarg);
6839
2
      break;
6840
    case 702: // --mbqi-interleave
6841
        assign_quantifiers_mbqiInterleave(opts, option, true);
6842
      break;
6843
    case 703:// --no-mbqi-interleave
6844
        assign_quantifiers_mbqiInterleave(opts, option, false);
6845
      break;
6846
    case 704: // --mbqi-one-inst-per-round
6847
        assign_quantifiers_fmfOneInstPerRound(opts, option, true);
6848
      break;
6849
    case 705:// --no-mbqi-one-inst-per-round
6850
        assign_quantifiers_fmfOneInstPerRound(opts, option, false);
6851
      break;
6852
    case 706: // --mbqi=MODE
6853
        assign_quantifiers_mbqiMode(opts, option, optionarg);
6854
      break;
6855
    case 707: // --miniscope-quant
6856
        assign_quantifiers_miniscopeQuant(opts, option, true);
6857
      break;
6858
    case 708:// --no-miniscope-quant
6859
        assign_quantifiers_miniscopeQuant(opts, option, false);
6860
      break;
6861
    case 709: // --miniscope-quant-fv
6862
        assign_quantifiers_miniscopeQuantFreeVar(opts, option, true);
6863
      break;
6864
    case 710:// --no-miniscope-quant-fv
6865
        assign_quantifiers_miniscopeQuantFreeVar(opts, option, false);
6866
      break;
6867
3
    case 711: // --multi-trigger-cache
6868
3
        assign_quantifiers_multiTriggerCache(opts, option, true);
6869
3
      break;
6870
    case 712:// --no-multi-trigger-cache
6871
        assign_quantifiers_multiTriggerCache(opts, option, false);
6872
      break;
6873
    case 713: // --multi-trigger-linear
6874
        assign_quantifiers_multiTriggerLinear(opts, option, true);
6875
      break;
6876
    case 714:// --no-multi-trigger-linear
6877
        assign_quantifiers_multiTriggerLinear(opts, option, false);
6878
      break;
6879
    case 715: // --multi-trigger-priority
6880
        assign_quantifiers_multiTriggerPriority(opts, option, true);
6881
      break;
6882
    case 716:// --no-multi-trigger-priority
6883
        assign_quantifiers_multiTriggerPriority(opts, option, false);
6884
      break;
6885
    case 717: // --multi-trigger-when-single
6886
        assign_quantifiers_multiTriggerWhenSingle(opts, option, true);
6887
      break;
6888
    case 718:// --no-multi-trigger-when-single
6889
        assign_quantifiers_multiTriggerWhenSingle(opts, option, false);
6890
      break;
6891
3
    case 719: // --partial-triggers
6892
3
        assign_quantifiers_partialTriggers(opts, option, true);
6893
3
      break;
6894
    case 720:// --no-partial-triggers
6895
        assign_quantifiers_partialTriggers(opts, option, false);
6896
      break;
6897
3
    case 721: // --pool-inst
6898
3
        assign_quantifiers_poolInst(opts, option, true);
6899
3
      break;
6900
    case 722:// --no-pool-inst
6901
        assign_quantifiers_poolInst(opts, option, false);
6902
      break;
6903
    case 723: // --pre-skolem-quant
6904
        assign_quantifiers_preSkolemQuant(opts, option, true);
6905
      break;
6906
    case 724:// --no-pre-skolem-quant
6907
        assign_quantifiers_preSkolemQuant(opts, option, false);
6908
      break;
6909
    case 725: // --pre-skolem-quant-agg
6910
        assign_quantifiers_preSkolemQuantAgg(opts, option, true);
6911
      break;
6912
    case 726:// --no-pre-skolem-quant-agg
6913
        assign_quantifiers_preSkolemQuantAgg(opts, option, false);
6914
      break;
6915
    case 727: // --pre-skolem-quant-nested
6916
        assign_quantifiers_preSkolemQuantNested(opts, option, true);
6917
      break;
6918
    case 728:// --no-pre-skolem-quant-nested
6919
        assign_quantifiers_preSkolemQuantNested(opts, option, false);
6920
      break;
6921
    case 729: // --prenex-quant-user
6922
        assign_quantifiers_prenexQuantUser(opts, option, true);
6923
      break;
6924
    case 730:// --no-prenex-quant-user
6925
        assign_quantifiers_prenexQuantUser(opts, option, false);
6926
      break;
6927
    case 731: // --prenex-quant=MODE
6928
        assign_quantifiers_prenexQuant(opts, option, optionarg);
6929
      break;
6930
3
    case 732: // --purify-triggers
6931
3
        assign_quantifiers_purifyTriggers(opts, option, true);
6932
3
      break;
6933
    case 733:// --no-purify-triggers
6934
        assign_quantifiers_purifyTriggers(opts, option, false);
6935
      break;
6936
    case 734: // --qcf-all-conflict
6937
        assign_quantifiers_qcfAllConflict(opts, option, true);
6938
      break;
6939
    case 735:// --no-qcf-all-conflict
6940
        assign_quantifiers_qcfAllConflict(opts, option, false);
6941
      break;
6942
    case 736: // --qcf-eager-check-rd
6943
        assign_quantifiers_qcfEagerCheckRd(opts, option, true);
6944
      break;
6945
    case 737:// --no-qcf-eager-check-rd
6946
        assign_quantifiers_qcfEagerCheckRd(opts, option, false);
6947
      break;
6948
    case 738: // --qcf-eager-test
6949
        assign_quantifiers_qcfEagerTest(opts, option, true);
6950
      break;
6951
    case 739:// --no-qcf-eager-test
6952
        assign_quantifiers_qcfEagerTest(opts, option, false);
6953
      break;
6954
    case 740: // --qcf-nested-conflict
6955
        assign_quantifiers_qcfNestedConflict(opts, option, true);
6956
      break;
6957
    case 741:// --no-qcf-nested-conflict
6958
        assign_quantifiers_qcfNestedConflict(opts, option, false);
6959
      break;
6960
    case 742: // --qcf-skip-rd
6961
        assign_quantifiers_qcfSkipRd(opts, option, true);
6962
      break;
6963
    case 743:// --no-qcf-skip-rd
6964
        assign_quantifiers_qcfSkipRd(opts, option, false);
6965
      break;
6966
6
    case 744: // --qcf-tconstraint
6967
6
        assign_quantifiers_qcfTConstraint(opts, option, true);
6968
6
      break;
6969
    case 745:// --no-qcf-tconstraint
6970
        assign_quantifiers_qcfTConstraint(opts, option, false);
6971
      break;
6972
    case 746: // --qcf-vo-exp
6973
        assign_quantifiers_qcfVoExp(opts, option, true);
6974
      break;
6975
    case 747:// --no-qcf-vo-exp
6976
        assign_quantifiers_qcfVoExp(opts, option, false);
6977
      break;
6978
    case 748: // --quant-alpha-equiv
6979
        assign_quantifiers_quantAlphaEquiv(opts, option, true);
6980
      break;
6981
    case 749:// --no-quant-alpha-equiv
6982
        assign_quantifiers_quantAlphaEquiv(opts, option, false);
6983
      break;
6984
    case 750: // --quant-cf
6985
        assign_quantifiers_quantConflictFind(opts, option, true);
6986
      break;
6987
    case 751:// --no-quant-cf
6988
        assign_quantifiers_quantConflictFind(opts, option, false);
6989
      break;
6990
    case 752: // --quant-cf-mode=MODE
6991
        assign_quantifiers_qcfMode(opts, option, optionarg);
6992
      break;
6993
    case 753: // --quant-cf-when=MODE
6994
        assign_quantifiers_qcfWhenMode(opts, option, optionarg);
6995
      break;
6996
    case 754: // --quant-dsplit-mode=MODE
6997
        assign_quantifiers_quantDynamicSplit(opts, option, optionarg);
6998
      break;
6999
    case 755: // --quant-fun-wd
7000
        assign_quantifiers_quantFunWellDefined(opts, option, true);
7001
      break;
7002
    case 756:// --no-quant-fun-wd
7003
        assign_quantifiers_quantFunWellDefined(opts, option, false);
7004
      break;
7005
6
    case 757: // --quant-ind
7006
6
        assign_quantifiers_quantInduction(opts, option, true);
7007
6
      break;
7008
    case 758:// --no-quant-ind
7009
        assign_quantifiers_quantInduction(opts, option, false);
7010
      break;
7011
    case 759: // --quant-rep-mode=MODE
7012
        assign_quantifiers_quantRepMode(opts, option, optionarg);
7013
      break;
7014
    case 760: // --quant-split
7015
        assign_quantifiers_quantSplit(opts, option, true);
7016
      break;
7017
    case 761:// --no-quant-split
7018
        assign_quantifiers_quantSplit(opts, option, false);
7019
      break;
7020
    case 762: // --register-quant-body-terms
7021
        assign_quantifiers_registerQuantBodyTerms(opts, option, true);
7022
      break;
7023
    case 763:// --no-register-quant-body-terms
7024
        assign_quantifiers_registerQuantBodyTerms(opts, option, false);
7025
      break;
7026
12
    case 764: // --relational-triggers
7027
12
        assign_quantifiers_relationalTriggers(opts, option, true);
7028
12
      break;
7029
3
    case 765:// --no-relational-triggers
7030
3
        assign_quantifiers_relationalTriggers(opts, option, false);
7031
3
      break;
7032
3
    case 766: // --relevant-triggers
7033
3
        assign_quantifiers_relevantTriggers(opts, option, true);
7034
3
      break;
7035
    case 767:// --no-relevant-triggers
7036
        assign_quantifiers_relevantTriggers(opts, option, false);
7037
      break;
7038
    case 768: // --strict-triggers
7039
        assign_quantifiers_strictTriggers(opts, option, true);
7040
      break;
7041
    case 769:// --no-strict-triggers
7042
        assign_quantifiers_strictTriggers(opts, option, false);
7043
      break;
7044
    case 770: // --sygus
7045
        assign_quantifiers_sygus(opts, option, true);
7046
      break;
7047
    case 771:// --no-sygus
7048
        assign_quantifiers_sygus(opts, option, false);
7049
      break;
7050
    case 772: // --sygus-active-gen-cfactor=N
7051
        assign_quantifiers_sygusActiveGenEnumConsts(opts, option, optionarg);
7052
      break;
7053
13
    case 773: // --sygus-active-gen=MODE
7054
13
        assign_quantifiers_sygusActiveGenMode(opts, option, optionarg);
7055
13
      break;
7056
1
    case 774: // --sygus-add-const-grammar
7057
1
        assign_quantifiers_sygusAddConstGrammar(opts, option, true);
7058
1
      break;
7059
1
    case 775:// --no-sygus-add-const-grammar
7060
1
        assign_quantifiers_sygusAddConstGrammar(opts, option, false);
7061
1
      break;
7062
3
    case 776: // --sygus-arg-relevant
7063
3
        assign_quantifiers_sygusArgRelevant(opts, option, true);
7064
3
      break;
7065
    case 777:// --no-sygus-arg-relevant
7066
        assign_quantifiers_sygusArgRelevant(opts, option, false);
7067
      break;
7068
    case 778: // --sygus-auto-unfold
7069
        assign_quantifiers_sygusInvAutoUnfold(opts, option, true);
7070
      break;
7071
    case 779:// --no-sygus-auto-unfold
7072
        assign_quantifiers_sygusInvAutoUnfold(opts, option, false);
7073
      break;
7074
1
    case 780: // --sygus-bool-ite-return-const
7075
1
        assign_quantifiers_sygusBoolIteReturnConst(opts, option, true);
7076
1
      break;
7077
    case 781:// --no-sygus-bool-ite-return-const
7078
        assign_quantifiers_sygusBoolIteReturnConst(opts, option, false);
7079
      break;
7080
5
    case 782: // --sygus-core-connective
7081
5
        assign_quantifiers_sygusCoreConnective(opts, option, true);
7082
5
      break;
7083
    case 783:// --no-sygus-core-connective
7084
        assign_quantifiers_sygusCoreConnective(opts, option, false);
7085
      break;
7086
    case 784: // --sygus-crepair-abort
7087
        assign_quantifiers_sygusConstRepairAbort(opts, option, true);
7088
      break;
7089
    case 785:// --no-sygus-crepair-abort
7090
        assign_quantifiers_sygusConstRepairAbort(opts, option, false);
7091
      break;
7092
    case 786: // --sygus-eval-opt
7093
        assign_quantifiers_sygusEvalOpt(opts, option, true);
7094
      break;
7095
    case 787:// --no-sygus-eval-opt
7096
        assign_quantifiers_sygusEvalOpt(opts, option, false);
7097
      break;
7098
    case 788: // --sygus-eval-unfold
7099
        assign_quantifiers_sygusEvalUnfold(opts, option, true);
7100
      break;
7101
    case 789:// --no-sygus-eval-unfold
7102
        assign_quantifiers_sygusEvalUnfold(opts, option, false);
7103
      break;
7104
    case 790: // --sygus-eval-unfold-bool
7105
        assign_quantifiers_sygusEvalUnfoldBool(opts, option, true);
7106
      break;
7107
    case 791:// --no-sygus-eval-unfold-bool
7108
        assign_quantifiers_sygusEvalUnfoldBool(opts, option, false);
7109
      break;
7110
    case 792: // --sygus-expr-miner-check-timeout=N
7111
        assign_quantifiers_sygusExprMinerCheckTimeout(opts, option, optionarg);
7112
      break;
7113
    case 793: // --sygus-ext-rew
7114
        assign_quantifiers_sygusExtRew(opts, option, true);
7115
      break;
7116
    case 794:// --no-sygus-ext-rew
7117
        assign_quantifiers_sygusExtRew(opts, option, false);
7118
      break;
7119
    case 795: // --sygus-filter-sol-rev
7120
        assign_quantifiers_sygusFilterSolRevSubsume(opts, option, true);
7121
      break;
7122
    case 796:// --no-sygus-filter-sol-rev
7123
        assign_quantifiers_sygusFilterSolRevSubsume(opts, option, false);
7124
      break;
7125
    case 797: // --sygus-filter-sol=MODE
7126
        assign_quantifiers_sygusFilterSolMode(opts, option, optionarg);
7127
      break;
7128
6
    case 798: // --sygus-grammar-cons=MODE
7129
6
        assign_quantifiers_sygusGrammarConsMode(opts, option, optionarg);
7130
6
      break;
7131
    case 799: // --sygus-grammar-norm
7132
        assign_quantifiers_sygusGrammarNorm(opts, option, true);
7133
      break;
7134
    case 800:// --no-sygus-grammar-norm
7135
        assign_quantifiers_sygusGrammarNorm(opts, option, false);
7136
      break;
7137
46
    case 801: // --sygus-inference
7138
46
        assign_quantifiers_sygusInference(opts, option, true);
7139
46
      break;
7140
    case 802:// --no-sygus-inference
7141
        assign_quantifiers_sygusInference(opts, option, false);
7142
      break;
7143
14
    case 803: // --sygus-inst
7144
14
        assign_quantifiers_sygusInst(opts, option, true);
7145
14
      break;
7146
    case 804:// --no-sygus-inst
7147
        assign_quantifiers_sygusInst(opts, option, false);
7148
      break;
7149
    case 805: // --sygus-inst-mode=MODE
7150
        assign_quantifiers_sygusInstMode(opts, option, optionarg);
7151
      break;
7152
    case 806: // --sygus-inst-scope=MODE
7153
        assign_quantifiers_sygusInstScope(opts, option, optionarg);
7154
      break;
7155
    case 807: // --sygus-inst-term-sel=MODE
7156
        assign_quantifiers_sygusInstTermSel(opts, option, optionarg);
7157
      break;
7158
    case 808: // --sygus-inv-templ-when-sg
7159
        assign_quantifiers_sygusInvTemplWhenSyntax(opts, option, true);
7160
      break;
7161
    case 809:// --no-sygus-inv-templ-when-sg
7162
        assign_quantifiers_sygusInvTemplWhenSyntax(opts, option, false);
7163
      break;
7164
3
    case 810: // --sygus-inv-templ=MODE
7165
3
        assign_quantifiers_sygusInvTemplMode(opts, option, optionarg);
7166
3
      break;
7167
    case 811: // --sygus-min-grammar
7168
        assign_quantifiers_sygusMinGrammar(opts, option, true);
7169
      break;
7170
    case 812:// --no-sygus-min-grammar
7171
        assign_quantifiers_sygusMinGrammar(opts, option, false);
7172
      break;
7173
    case 813: // --sygus-pbe
7174
        assign_quantifiers_sygusUnifPbe(opts, option, true);
7175
      break;
7176
6
    case 814:// --no-sygus-pbe
7177
6
        assign_quantifiers_sygusUnifPbe(opts, option, false);
7178
6
      break;
7179
    case 815: // --sygus-pbe-multi-fair
7180
        assign_quantifiers_sygusPbeMultiFair(opts, option, true);
7181
      break;
7182
    case 816:// --no-sygus-pbe-multi-fair
7183
        assign_quantifiers_sygusPbeMultiFair(opts, option, false);
7184
      break;
7185
    case 817: // --sygus-pbe-multi-fair-diff=N
7186
        assign_quantifiers_sygusPbeMultiFairDiff(opts, option, optionarg);
7187
      break;
7188
4
    case 818: // --sygus-qe-preproc
7189
4
        assign_quantifiers_sygusQePreproc(opts, option, true);
7190
4
      break;
7191
    case 819:// --no-sygus-qe-preproc
7192
        assign_quantifiers_sygusQePreproc(opts, option, false);
7193
      break;
7194
    case 820: // --sygus-query-gen
7195
        assign_quantifiers_sygusQueryGen(opts, option, true);
7196
      break;
7197
    case 821:// --no-sygus-query-gen
7198
        assign_quantifiers_sygusQueryGen(opts, option, false);
7199
      break;
7200
    case 822: // --sygus-query-gen-check
7201
        assign_quantifiers_sygusQueryGenCheck(opts, option, true);
7202
      break;
7203
    case 823:// --no-sygus-query-gen-check
7204
        assign_quantifiers_sygusQueryGenCheck(opts, option, false);
7205
      break;
7206
    case 824: // --sygus-query-gen-dump-files=MODE
7207
        assign_quantifiers_sygusQueryGenDumpFiles(opts, option, optionarg);
7208
      break;
7209
    case 825: // --sygus-query-gen-thresh=N
7210
        assign_quantifiers_sygusQueryGenThresh(opts, option, optionarg);
7211
      break;
7212
1
    case 826: // --sygus-rec-fun
7213
1
        assign_quantifiers_sygusRecFun(opts, option, true);
7214
1
      break;
7215
    case 827:// --no-sygus-rec-fun
7216
        assign_quantifiers_sygusRecFun(opts, option, false);
7217
      break;
7218
    case 828: // --sygus-rec-fun-eval-limit=N
7219
        assign_quantifiers_sygusRecFunEvalLimit(opts, option, optionarg);
7220
      break;
7221
5
    case 829: // --sygus-repair-const
7222
5
        assign_quantifiers_sygusRepairConst(opts, option, true);
7223
5
      break;
7224
3
    case 830:// --no-sygus-repair-const
7225
3
        assign_quantifiers_sygusRepairConst(opts, option, false);
7226
3
      break;
7227
    case 831: // --sygus-repair-const-timeout=N
7228
        assign_quantifiers_sygusRepairConstTimeout(opts, option, optionarg);
7229
      break;
7230
6
    case 832: // --sygus-rr
7231
6
        assign_quantifiers_sygusRew(opts, option, true);
7232
6
      break;
7233
    case 833:// --no-sygus-rr
7234
        assign_quantifiers_sygusRew(opts, option, false);
7235
      break;
7236
1
    case 834: // --sygus-rr-synth
7237
1
        assign_quantifiers_sygusRewSynth(opts, option, true);
7238
1
      break;
7239
    case 835:// --no-sygus-rr-synth
7240
        assign_quantifiers_sygusRewSynth(opts, option, false);
7241
      break;
7242
    case 836: // --sygus-rr-synth-accel
7243
        assign_quantifiers_sygusRewSynthAccel(opts, option, true);
7244
      break;
7245
    case 837:// --no-sygus-rr-synth-accel
7246
        assign_quantifiers_sygusRewSynthAccel(opts, option, false);
7247
      break;
7248
3
    case 838: // --sygus-rr-synth-check
7249
3
        assign_quantifiers_sygusRewSynthCheck(opts, option, true);
7250
3
      break;
7251
    case 839:// --no-sygus-rr-synth-check
7252
        assign_quantifiers_sygusRewSynthCheck(opts, option, false);
7253
      break;
7254
    case 840: // --sygus-rr-synth-filter-cong
7255
        assign_quantifiers_sygusRewSynthFilterCong(opts, option, true);
7256
      break;
7257
    case 841:// --no-sygus-rr-synth-filter-cong
7258
        assign_quantifiers_sygusRewSynthFilterCong(opts, option, false);
7259
      break;
7260
    case 842: // --sygus-rr-synth-filter-match
7261
        assign_quantifiers_sygusRewSynthFilterMatch(opts, option, true);
7262
      break;
7263
    case 843:// --no-sygus-rr-synth-filter-match
7264
        assign_quantifiers_sygusRewSynthFilterMatch(opts, option, false);
7265
      break;
7266
    case 844: // --sygus-rr-synth-filter-nl
7267
        assign_quantifiers_sygusRewSynthFilterNonLinear(opts, option, true);
7268
      break;
7269
    case 845:// --no-sygus-rr-synth-filter-nl
7270
        assign_quantifiers_sygusRewSynthFilterNonLinear(opts, option, false);
7271
      break;
7272
    case 846: // --sygus-rr-synth-filter-order
7273
        assign_quantifiers_sygusRewSynthFilterOrder(opts, option, true);
7274
      break;
7275
    case 847:// --no-sygus-rr-synth-filter-order
7276
        assign_quantifiers_sygusRewSynthFilterOrder(opts, option, false);
7277
      break;
7278
    case 848: // --sygus-rr-synth-input
7279
        assign_quantifiers_sygusRewSynthInput(opts, option, true);
7280
      break;
7281
    case 849:// --no-sygus-rr-synth-input
7282
        assign_quantifiers_sygusRewSynthInput(opts, option, false);
7283
      break;
7284
    case 850: // --sygus-rr-synth-input-nvars=N
7285
        assign_quantifiers_sygusRewSynthInputNVars(opts, option, optionarg);
7286
      break;
7287
    case 851: // --sygus-rr-synth-input-use-bool
7288
        assign_quantifiers_sygusRewSynthInputUseBool(opts, option, true);
7289
      break;
7290
    case 852:// --no-sygus-rr-synth-input-use-bool
7291
        assign_quantifiers_sygusRewSynthInputUseBool(opts, option, false);
7292
      break;
7293
    case 853: // --sygus-rr-synth-rec
7294
        assign_quantifiers_sygusRewSynthRec(opts, option, true);
7295
      break;
7296
    case 854:// --no-sygus-rr-synth-rec
7297
        assign_quantifiers_sygusRewSynthRec(opts, option, false);
7298
      break;
7299
    case 855: // --sygus-rr-verify
7300
        assign_quantifiers_sygusRewVerify(opts, option, true);
7301
      break;
7302
    case 856:// --no-sygus-rr-verify
7303
        assign_quantifiers_sygusRewVerify(opts, option, false);
7304
      break;
7305
7
    case 857: // --sygus-rr-verify-abort
7306
7
        assign_quantifiers_sygusRewVerifyAbort(opts, option, true);
7307
7
      break;
7308
    case 858:// --no-sygus-rr-verify-abort
7309
        assign_quantifiers_sygusRewVerifyAbort(opts, option, false);
7310
      break;
7311
    case 859: // --sygus-sample-fp-uniform
7312
        assign_quantifiers_sygusSampleFpUniform(opts, option, true);
7313
      break;
7314
    case 860:// --no-sygus-sample-fp-uniform
7315
        assign_quantifiers_sygusSampleFpUniform(opts, option, false);
7316
      break;
7317
    case 861: // --sygus-sample-grammar
7318
        assign_quantifiers_sygusSampleGrammar(opts, option, true);
7319
      break;
7320
    case 862:// --no-sygus-sample-grammar
7321
        assign_quantifiers_sygusSampleGrammar(opts, option, false);
7322
      break;
7323
7
    case 863: // --sygus-samples=N
7324
7
        assign_quantifiers_sygusSamples(opts, option, optionarg);
7325
7
      break;
7326
    case 864: // --sygus-si-abort
7327
        assign_quantifiers_cegqiSingleInvAbort(opts, option, true);
7328
      break;
7329
    case 865:// --no-sygus-si-abort
7330
        assign_quantifiers_cegqiSingleInvAbort(opts, option, false);
7331
      break;
7332
    case 866: // --sygus-si-partial
7333
        assign_quantifiers_cegqiSingleInvPartial(opts, option, true);
7334
      break;
7335
    case 867:// --no-sygus-si-partial
7336
        assign_quantifiers_cegqiSingleInvPartial(opts, option, false);
7337
      break;
7338
1
    case 868: // --sygus-si-rcons-limit=N
7339
1
        assign_quantifiers_cegqiSingleInvReconstructLimit(opts, option, optionarg);
7340
1
      break;
7341
    case 869: // --sygus-si-rcons=MODE
7342
        assign_quantifiers_cegqiSingleInvReconstruct(opts, option, optionarg);
7343
      break;
7344
    case 870: // --sygus-si-reconstruct-const
7345
        assign_quantifiers_cegqiSingleInvReconstructConst(opts, option, true);
7346
      break;
7347
    case 871:// --no-sygus-si-reconstruct-const
7348
        assign_quantifiers_cegqiSingleInvReconstructConst(opts, option, false);
7349
      break;
7350
47
    case 872: // --sygus-si=MODE
7351
47
        assign_quantifiers_cegqiSingleInvMode(opts, option, optionarg);
7352
47
      break;
7353
4
    case 873: // --sygus-stream
7354
4
        assign_quantifiers_sygusStream(opts, option, true);
7355
4
      break;
7356
    case 874:// --no-sygus-stream
7357
        assign_quantifiers_sygusStream(opts, option, false);
7358
      break;
7359
    case 875: // --sygus-templ-embed-grammar
7360
        assign_quantifiers_sygusTemplEmbedGrammar(opts, option, true);
7361
      break;
7362
    case 876:// --no-sygus-templ-embed-grammar
7363
        assign_quantifiers_sygusTemplEmbedGrammar(opts, option, false);
7364
      break;
7365
    case 877: // --sygus-unif-cond-independent-no-repeat-sol
7366
        assign_quantifiers_sygusUnifCondIndNoRepeatSol(opts, option, true);
7367
      break;
7368
    case 878:// --no-sygus-unif-cond-independent-no-repeat-sol
7369
        assign_quantifiers_sygusUnifCondIndNoRepeatSol(opts, option, false);
7370
      break;
7371
9
    case 879: // --sygus-unif-pi=MODE
7372
9
        assign_quantifiers_sygusUnifPi(opts, option, optionarg);
7373
9
      break;
7374
    case 880: // --sygus-unif-shuffle-cond
7375
        assign_quantifiers_sygusUnifShuffleCond(opts, option, true);
7376
      break;
7377
    case 881:// --no-sygus-unif-shuffle-cond
7378
        assign_quantifiers_sygusUnifShuffleCond(opts, option, false);
7379
      break;
7380
    case 882: // --sygus-verify-inst-max-rounds=N
7381
        assign_quantifiers_sygusVerifyInstMaxRounds(opts, option, optionarg);
7382
      break;
7383
    case 883: // --term-db-cd
7384
        assign_quantifiers_termDbCd(opts, option, true);
7385
      break;
7386
    case 884:// --no-term-db-cd
7387
        assign_quantifiers_termDbCd(opts, option, false);
7388
      break;
7389
    case 885: // --term-db-mode=MODE
7390
        assign_quantifiers_termDbMode(opts, option, optionarg);
7391
      break;
7392
    case 886: // --trigger-active-sel=MODE
7393
        assign_quantifiers_triggerActiveSelMode(opts, option, optionarg);
7394
      break;
7395
    case 887: // --trigger-sel=MODE
7396
        assign_quantifiers_triggerSelMode(opts, option, optionarg);
7397
      break;
7398
    case 888: // --user-pat=MODE
7399
        assign_quantifiers_userPatternsQuant(opts, option, optionarg);
7400
      break;
7401
    case 889: // --var-elim-quant
7402
        assign_quantifiers_varElimQuant(opts, option, true);
7403
      break;
7404
    case 890:// --no-var-elim-quant
7405
        assign_quantifiers_varElimQuant(opts, option, false);
7406
      break;
7407
2
    case 891: // --var-ineq-elim-quant
7408
2
        assign_quantifiers_varIneqElimQuant(opts, option, true);
7409
2
      break;
7410
    case 892:// --no-var-ineq-elim-quant
7411
        assign_quantifiers_varIneqElimQuant(opts, option, false);
7412
      break;
7413
    case 893: // --sep-check-neg
7414
        assign_sep_sepCheckNeg(opts, option, true);
7415
      break;
7416
    case 894:// --no-sep-check-neg
7417
        assign_sep_sepCheckNeg(opts, option, false);
7418
      break;
7419
    case 895: // --sep-child-refine
7420
        assign_sep_sepChildRefine(opts, option, true);
7421
      break;
7422
    case 896:// --no-sep-child-refine
7423
        assign_sep_sepChildRefine(opts, option, false);
7424
      break;
7425
    case 897: // --sep-deq-c
7426
        assign_sep_sepDisequalC(opts, option, true);
7427
      break;
7428
    case 898:// --no-sep-deq-c
7429
        assign_sep_sepDisequalC(opts, option, false);
7430
      break;
7431
    case 899: // --sep-exp
7432
        assign_sep_sepExp(opts, option, true);
7433
      break;
7434
    case 900:// --no-sep-exp
7435
        assign_sep_sepExp(opts, option, false);
7436
      break;
7437
    case 901: // --sep-min-refine
7438
        assign_sep_sepMinimalRefine(opts, option, true);
7439
      break;
7440
    case 902:// --no-sep-min-refine
7441
        assign_sep_sepMinimalRefine(opts, option, false);
7442
      break;
7443
1
    case 903: // --sep-pre-skolem-emp
7444
1
        assign_sep_sepPreSkolemEmp(opts, option, true);
7445
1
      break;
7446
    case 904:// --no-sep-pre-skolem-emp
7447
        assign_sep_sepPreSkolemEmp(opts, option, false);
7448
      break;
7449
32
    case 905: // --sets-ext
7450
32
        assign_sets_setsExt(opts, option, true);
7451
32
      break;
7452
    case 906:// --no-sets-ext
7453
        assign_sets_setsExt(opts, option, false);
7454
      break;
7455
2
    case 907: // --sets-infer-as-lemmas
7456
2
        assign_sets_setsInferAsLemmas(opts, option, true);
7457
2
      break;
7458
    case 908:// --no-sets-infer-as-lemmas
7459
        assign_sets_setsInferAsLemmas(opts, option, false);
7460
      break;
7461
    case 909: // --sets-proxy-lemmas
7462
        assign_sets_setsProxyLemmas(opts, option, true);
7463
      break;
7464
    case 910:// --no-sets-proxy-lemmas
7465
        assign_sets_setsProxyLemmas(opts, option, false);
7466
      break;
7467
4
    case 911: // --abstract-values
7468
4
        assign_smt_abstractValues(opts, option, true);
7469
4
      break;
7470
    case 912:// --no-abstract-values
7471
        assign_smt_abstractValues(opts, option, false);
7472
      break;
7473
31
    case 913: // --ackermann
7474
31
        assign_smt_ackermann(opts, option, true);
7475
31
      break;
7476
    case 914:// --no-ackermann
7477
        assign_smt_ackermann(opts, option, false);
7478
      break;
7479
7
    case 915: // --block-models=MODE
7480
7
        assign_smt_blockModelsMode(opts, option, optionarg);
7481
7
      break;
7482
78
    case 916: // --bvand-integer-granularity=N
7483
78
        assign_smt_BVAndIntegerGranularity(opts, option, optionarg);
7484
78
      break;
7485
13
    case 917: // --check-abducts
7486
13
        assign_smt_checkAbducts(opts, option, true);
7487
13
      break;
7488
    case 918:// --no-check-abducts
7489
        assign_smt_checkAbducts(opts, option, false);
7490
      break;
7491
8
    case 919: // --check-interpols
7492
8
        assign_smt_checkInterpols(opts, option, true);
7493
8
      break;
7494
    case 920:// --no-check-interpols
7495
        assign_smt_checkInterpols(opts, option, false);
7496
      break;
7497
22
    case 921: // --check-models
7498
22
        assign_smt_checkModels(opts, option, true);
7499
22
      break;
7500
85
    case 922:// --no-check-models
7501
85
        assign_smt_checkModels(opts, option, false);
7502
85
      break;
7503
1145
    case 923: // --check-proofs
7504
1145
        assign_smt_checkProofs(opts, option, true);
7505
1145
      break;
7506
13
    case 924:// --no-check-proofs
7507
13
        assign_smt_checkProofs(opts, option, false);
7508
13
      break;
7509
182
    case 925: // --check-synth-sol
7510
182
        assign_smt_checkSynthSol(opts, option, true);
7511
182
      break;
7512
6
    case 926:// --no-check-synth-sol
7513
6
        assign_smt_checkSynthSol(opts, option, false);
7514
6
      break;
7515
1132
    case 927: // --check-unsat-cores
7516
1132
        assign_smt_checkUnsatCores(opts, option, true);
7517
1132
      break;
7518
40
    case 928:// --no-check-unsat-cores
7519
40
        assign_smt_checkUnsatCores(opts, option, false);
7520
40
      break;
7521
1224
    case 929: // --debug-check-models
7522
1224
        assign_smt_debugCheckModels(opts, option, true);
7523
1224
      break;
7524
    case 930:// --no-debug-check-models
7525
        assign_smt_debugCheckModels(opts, option, false);
7526
      break;
7527
    case 931: // --diagnostic-output-channel=CHANNEL
7528
        assign_smt_diagnosticChannelName(opts, option, optionarg);
7529
      break;
7530
    case 932: // --dump-to=FILE
7531
        assign_smt_dumpToFileName(opts, option, optionarg);
7532
      break;
7533
3
    case 933: // --dump=MODE
7534
3
        assign_smt_dumpModeString(opts, option, optionarg);
7535
3
      break;
7536
    case 934: // --early-ite-removal
7537
        assign_smt_earlyIteRemoval(opts, option, true);
7538
      break;
7539
    case 935:// --no-early-ite-removal
7540
        assign_smt_earlyIteRemoval(opts, option, false);
7541
      break;
7542
    case 936: // --expand-definitions
7543
        assign_smt_expandDefinitions(opts, option, true);
7544
      break;
7545
    case 937:// --no-expand-definitions
7546
        assign_smt_expandDefinitions(opts, option, false);
7547
      break;
7548
17
    case 938: // --ext-rew-prep
7549
17
        assign_smt_extRewPrep(opts, option, true);
7550
17
      break;
7551
    case 939:// --no-ext-rew-prep
7552
        assign_smt_extRewPrep(opts, option, false);
7553
      break;
7554
7
    case 940: // --ext-rew-prep-agg
7555
7
        assign_smt_extRewPrepAgg(opts, option, true);
7556
7
      break;
7557
    case 941:// --no-ext-rew-prep-agg
7558
        assign_smt_extRewPrepAgg(opts, option, false);
7559
      break;
7560
2
    case 942: // --foreign-theory-rewrite
7561
2
        assign_smt_foreignTheoryRewrite(opts, option, true);
7562
2
      break;
7563
    case 943:// --no-foreign-theory-rewrite
7564
        assign_smt_foreignTheoryRewrite(opts, option, false);
7565
      break;
7566
68
    case 944: // --iand-mode=mode
7567
68
        assign_smt_iandMode(opts, option, optionarg);
7568
68
      break;
7569
    case 945: // --interactive-mode
7570
        assign_smt_interactiveMode(opts, option, true);
7571
      break;
7572
    case 946:// --no-interactive-mode
7573
        assign_smt_interactiveMode(opts, option, false);
7574
      break;
7575
    case 947: // --ite-simp
7576
        assign_smt_doITESimp(opts, option, true);
7577
      break;
7578
    case 948:// --no-ite-simp
7579
        assign_smt_doITESimp(opts, option, false);
7580
      break;
7581
2
    case 949: // --learned-rewrite
7582
2
        assign_smt_learnedRewrite(opts, option, true);
7583
2
      break;
7584
    case 950:// --no-learned-rewrite
7585
        assign_smt_learnedRewrite(opts, option, false);
7586
      break;
7587
3
    case 951: // --minimal-unsat-cores
7588
3
        assign_smt_minimalUnsatCores(opts, option, true);
7589
3
      break;
7590
    case 952:// --no-minimal-unsat-cores
7591
        assign_smt_minimalUnsatCores(opts, option, false);
7592
      break;
7593
6
    case 953: // --model-cores=MODE
7594
6
        assign_smt_modelCoresMode(opts, option, optionarg);
7595
6
      break;
7596
1
    case 954: // --model-u-print=MODE
7597
    case 955: // --model-uninterp-print
7598
1
        assign_smt_modelUninterpPrint(opts, option, optionarg);
7599
1
      break;
7600
1
    case 956: // --model-witness-value
7601
1
        assign_smt_modelWitnessValue(opts, option, true);
7602
1
      break;
7603
    case 957:// --no-model-witness-value
7604
        assign_smt_modelWitnessValue(opts, option, false);
7605
      break;
7606
    case 958: // --on-repeat-ite-simp
7607
        assign_smt_doITESimpOnRepeat(opts, option, true);
7608
      break;
7609
    case 959:// --no-on-repeat-ite-simp
7610
        assign_smt_doITESimpOnRepeat(opts, option, false);
7611
      break;
7612
12
    case 960: // --produce-abducts
7613
12
        assign_smt_produceAbducts(opts, option, true);
7614
12
      break;
7615
    case 961:// --no-produce-abducts
7616
        assign_smt_produceAbducts(opts, option, false);
7617
      break;
7618
    case 962: // --produce-assertions
7619
        assign_smt_produceAssertions(opts, option, true);
7620
      break;
7621
    case 963:// --no-produce-assertions
7622
        assign_smt_produceAssertions(opts, option, false);
7623
      break;
7624
    case 964: // --produce-assignments
7625
        assign_smt_produceAssignments(opts, option, true);
7626
      break;
7627
    case 965:// --no-produce-assignments
7628
        assign_smt_produceAssignments(opts, option, false);
7629
      break;
7630
8
    case 966: // --produce-interpols=MODE
7631
8
        assign_smt_produceInterpols(opts, option, optionarg);
7632
8
      break;
7633
37
    case 'm':
7634
    case 967: // --produce-models
7635
37
        assign_smt_produceModels(opts, option, true);
7636
37
      break;
7637
    case 968:// --no-produce-models
7638
        assign_smt_produceModels(opts, option, false);
7639
      break;
7640
7
    case 969: // --produce-proofs
7641
7
        assign_smt_produceProofs(opts, option, true);
7642
7
      break;
7643
18
    case 970:// --no-produce-proofs
7644
18
        assign_smt_produceProofs(opts, option, false);
7645
18
      break;
7646
    case 971: // --produce-unsat-assumptions
7647
        assign_smt_unsatAssumptions(opts, option, true);
7648
      break;
7649
    case 972:// --no-produce-unsat-assumptions
7650
        assign_smt_unsatAssumptions(opts, option, false);
7651
      break;
7652
4
    case 973: // --produce-unsat-cores
7653
4
        assign_smt_unsatCores(opts, option, true);
7654
4
      break;
7655
2
    case 974:// --no-produce-unsat-cores
7656
2
        assign_smt_unsatCores(opts, option, false);
7657
2
      break;
7658
    case 975: // --regular-output-channel=CHANNEL
7659
        assign_smt_regularChannelName(opts, option, optionarg);
7660
      break;
7661
2
    case 976: // --repeat-simp
7662
2
        assign_smt_repeatSimp(opts, option, true);
7663
2
      break;
7664
    case 977:// --no-repeat-simp
7665
        assign_smt_repeatSimp(opts, option, false);
7666
      break;
7667
    case 978: // --simp-ite-compress
7668
        assign_smt_compressItes(opts, option, true);
7669
      break;
7670
    case 979:// --no-simp-ite-compress
7671
        assign_smt_compressItes(opts, option, false);
7672
      break;
7673
    case 980: // --simp-ite-hunt-zombies=N
7674
        assign_smt_zombieHuntThreshold(opts, option, optionarg);
7675
      break;
7676
    case 981: // --simp-with-care
7677
        assign_smt_simplifyWithCareEnabled(opts, option, true);
7678
      break;
7679
    case 982:// --no-simp-with-care
7680
        assign_smt_simplifyWithCareEnabled(opts, option, false);
7681
      break;
7682
31
    case 983: // --simplification=MODE
7683
    case 984: // --simplification-mode
7684
31
        assign_smt_simplificationMode(opts, option, optionarg);
7685
31
      break;
7686
135
    case 985: // --solve-bv-as-int=MODE
7687
135
        assign_smt_solveBVAsInt(opts, option, optionarg);
7688
135
      break;
7689
11
    case 986: // --solve-int-as-bv=N
7690
11
        assign_smt_solveIntAsBV(opts, option, optionarg);
7691
11
      break;
7692
9
    case 987: // --solve-real-as-int
7693
9
        assign_smt_solveRealAsInt(opts, option, true);
7694
9
      break;
7695
    case 988:// --no-solve-real-as-int
7696
        assign_smt_solveRealAsInt(opts, option, false);
7697
      break;
7698
20
    case 989: // --sort-inference
7699
20
        assign_smt_sortInference(opts, option, true);
7700
20
      break;
7701
    case 990:// --no-sort-inference
7702
        assign_smt_sortInference(opts, option, false);
7703
      break;
7704
    case 991: // --static-learning
7705
        assign_smt_doStaticLearning(opts, option, true);
7706
      break;
7707
    case 992:// --no-static-learning
7708
        assign_smt_doStaticLearning(opts, option, false);
7709
      break;
7710
182
    case 993: // --sygus-out=MODE
7711
182
        assign_smt_sygusOut(opts, option, optionarg);
7712
182
      break;
7713
    case 994: // --sygus-print-callbacks
7714
        assign_smt_sygusPrintCallbacks(opts, option, true);
7715
      break;
7716
    case 995:// --no-sygus-print-callbacks
7717
        assign_smt_sygusPrintCallbacks(opts, option, false);
7718
      break;
7719
104
    case 996: // --unconstrained-simp
7720
104
        assign_smt_unconstrainedSimp(opts, option, true);
7721
104
      break;
7722
3
    case 997:// --no-unconstrained-simp
7723
3
        assign_smt_unconstrainedSimp(opts, option, false);
7724
3
      break;
7725
2
    case 998: // --unsat-cores-mode=MODE
7726
2
        assign_smt_unsatCoresMode(opts, option, optionarg);
7727
2
      break;
7728
25
    case 999: // --re-elim
7729
25
        assign_strings_regExpElim(opts, option, true);
7730
25
      break;
7731
10
    case 1000:// --no-re-elim
7732
10
        assign_strings_regExpElim(opts, option, false);
7733
10
      break;
7734
12
    case 1001: // --re-elim-agg
7735
12
        assign_strings_regExpElimAgg(opts, option, true);
7736
12
      break;
7737
    case 1002:// --no-re-elim-agg
7738
        assign_strings_regExpElimAgg(opts, option, false);
7739
      break;
7740
    case 1003: // --re-inter-mode=MODE
7741
        assign_strings_stringRegExpInterMode(opts, option, optionarg);
7742
      break;
7743
    case 1004: // --strings-check-entail-len
7744
        assign_strings_stringCheckEntailLen(opts, option, true);
7745
      break;
7746
    case 1005:// --no-strings-check-entail-len
7747
        assign_strings_stringCheckEntailLen(opts, option, false);
7748
      break;
7749
2
    case 1006: // --strings-eager
7750
2
        assign_strings_stringEager(opts, option, true);
7751
2
      break;
7752
    case 1007:// --no-strings-eager
7753
        assign_strings_stringEager(opts, option, false);
7754
      break;
7755
    case 1008: // --strings-eager-eval
7756
        assign_strings_stringEagerEval(opts, option, true);
7757
      break;
7758
    case 1009:// --no-strings-eager-eval
7759
        assign_strings_stringEagerEval(opts, option, false);
7760
      break;
7761
    case 1010: // --strings-eager-len
7762
        assign_strings_stringEagerLen(opts, option, true);
7763
      break;
7764
    case 1011:// --no-strings-eager-len
7765
        assign_strings_stringEagerLen(opts, option, false);
7766
      break;
7767
319
    case 1012: // --strings-exp
7768
319
        assign_strings_stringExp(opts, option, true);
7769
319
      break;
7770
    case 1013:// --no-strings-exp
7771
        assign_strings_stringExp(opts, option, false);
7772
      break;
7773
    case 1014: // --strings-ff
7774
        assign_strings_stringFlatForms(opts, option, true);
7775
      break;
7776
    case 1015:// --no-strings-ff
7777
        assign_strings_stringFlatForms(opts, option, false);
7778
      break;
7779
25
    case 1016: // --strings-fmf
7780
25
        assign_strings_stringFMF(opts, option, true);
7781
25
      break;
7782
    case 1017:// --no-strings-fmf
7783
        assign_strings_stringFMF(opts, option, false);
7784
      break;
7785
    case 1018: // --strings-guess-model
7786
        assign_strings_stringGuessModel(opts, option, true);
7787
      break;
7788
    case 1019:// --no-strings-guess-model
7789
        assign_strings_stringGuessModel(opts, option, false);
7790
      break;
7791
    case 1020: // --strings-infer-as-lemmas
7792
        assign_strings_stringInferAsLemmas(opts, option, true);
7793
      break;
7794
    case 1021:// --no-strings-infer-as-lemmas
7795
        assign_strings_stringInferAsLemmas(opts, option, false);
7796
      break;
7797
    case 1022: // --strings-infer-sym
7798
        assign_strings_stringInferSym(opts, option, true);
7799
      break;
7800
    case 1023:// --no-strings-infer-sym
7801
        assign_strings_stringInferSym(opts, option, false);
7802
      break;
7803
    case 1024: // --strings-lazy-pp
7804
        assign_strings_stringLazyPreproc(opts, option, true);
7805
      break;
7806
21
    case 1025:// --no-strings-lazy-pp
7807
21
        assign_strings_stringLazyPreproc(opts, option, false);
7808
21
      break;
7809
    case 1026: // --strings-len-norm
7810
        assign_strings_stringLenNorm(opts, option, true);
7811
      break;
7812
    case 1027:// --no-strings-len-norm
7813
        assign_strings_stringLenNorm(opts, option, false);
7814
      break;
7815
    case 1028: // --strings-lprop-csp
7816
        assign_strings_stringLenPropCsp(opts, option, true);
7817
      break;
7818
    case 1029:// --no-strings-lprop-csp
7819
        assign_strings_stringLenPropCsp(opts, option, false);
7820
      break;
7821
    case 1030: // --strings-min-prefix-explain
7822
        assign_strings_stringMinPrefixExplain(opts, option, true);
7823
      break;
7824
    case 1031:// --no-strings-min-prefix-explain
7825
        assign_strings_stringMinPrefixExplain(opts, option, false);
7826
      break;
7827
    case 1032: // --strings-process-loop-mode=MODE
7828
        assign_strings_stringProcessLoopMode(opts, option, optionarg);
7829
      break;
7830
    case 1033: // --strings-rexplain-lemmas
7831
        assign_strings_stringRExplainLemmas(opts, option, true);
7832
      break;
7833
    case 1034:// --no-strings-rexplain-lemmas
7834
        assign_strings_stringRExplainLemmas(opts, option, false);
7835
      break;
7836
    case 1035: // --strings-unified-vspt
7837
        assign_strings_stringUnifiedVSpt(opts, option, true);
7838
      break;
7839
    case 1036:// --no-strings-unified-vspt
7840
        assign_strings_stringUnifiedVSpt(opts, option, false);
7841
      break;
7842
    case 1037: // --assign-function-values
7843
        assign_theory_assignFunctionValues(opts, option, true);
7844
      break;
7845
    case 1038:// --no-assign-function-values
7846
        assign_theory_assignFunctionValues(opts, option, false);
7847
      break;
7848
    case 1039: // --condense-function-values
7849
        assign_theory_condenseFunctionValues(opts, option, true);
7850
      break;
7851
    case 1040:// --no-condense-function-values
7852
        assign_theory_condenseFunctionValues(opts, option, false);
7853
      break;
7854
56
    case 1041: // --ee-mode=MODE
7855
56
        assign_theory_eeMode(opts, option, optionarg);
7856
56
      break;
7857
    case 1042: // --relevance-filter
7858
        assign_theory_relevanceFilter(opts, option, true);
7859
      break;
7860
    case 1043:// --no-relevance-filter
7861
        assign_theory_relevanceFilter(opts, option, false);
7862
      break;
7863
    case 1044: // --tc-mode=MODE
7864
        assign_theory_tcMode(opts, option, optionarg);
7865
      break;
7866
5
    case 1045: // --theoryof-mode=MODE
7867
5
        assign_theory_theoryOfMode(opts, option, optionarg);
7868
5
      break;
7869
    case 1046: // --symmetry-breaker
7870
    case 1047: // --uf-symmetry-breaker
7871
        assign_uf_ufSymmetryBreaker(opts, option, true);
7872
      break;
7873
    case 1048:// --no-symmetry-breaker
7874
    case 1049:// --no-uf-symmetry-breaker
7875
        assign_uf_ufSymmetryBreaker(opts, option, false);
7876
      break;
7877
    case 1050: // --uf-ho
7878
        assign_uf_ufHo(opts, option, true);
7879
      break;
7880
    case 1051:// --no-uf-ho
7881
        assign_uf_ufHo(opts, option, false);
7882
      break;
7883
    case 1052: // --uf-ho-ext
7884
        assign_uf_ufHoExt(opts, option, true);
7885
      break;
7886
    case 1053:// --no-uf-ho-ext
7887
        assign_uf_ufHoExt(opts, option, false);
7888
      break;
7889
    case 1054: // --uf-ss-abort-card=N
7890
        assign_uf_ufssAbortCardinality(opts, option, optionarg);
7891
      break;
7892
    case 1055: // --uf-ss-fair
7893
        assign_uf_ufssFairness(opts, option, true);
7894
      break;
7895
    case 1056:// --no-uf-ss-fair
7896
        assign_uf_ufssFairness(opts, option, false);
7897
      break;
7898
4
    case 1057: // --uf-ss-fair-monotone
7899
4
        assign_uf_ufssFairnessMonotone(opts, option, true);
7900
4
      break;
7901
    case 1058:// --no-uf-ss-fair-monotone
7902
        assign_uf_ufssFairnessMonotone(opts, option, false);
7903
      break;
7904
    case 1059: // --uf-ss-totality-limited=N
7905
        assign_uf_ufssTotalityLimited(opts, option, optionarg);
7906
      break;
7907
    case 1060: // --uf-ss-totality-sym-break
7908
        assign_uf_ufssTotalitySymBreak(opts, option, true);
7909
      break;
7910
    case 1061:// --no-uf-ss-totality-sym-break
7911
        assign_uf_ufssTotalitySymBreak(opts, option, false);
7912
      break;
7913
7
    case 1062: // --uf-ss=MODE
7914
7
        assign_uf_ufssMode(opts, option, optionarg);
7915
7
      break;
7916
7917
      case ':' :
7918
      // This can be a long or short option, and the way to get at the
7919
      // name of it is different.
7920
      throw OptionException(std::string("option `") + option
7921
                            + "' missing its required argument");
7922
7923
      case '?':
7924
      default:
7925
        throw OptionException(std::string("can't understand option `") + option
7926
                              + "'" + suggestCommandLineOptions(option));
7927
    }
7928
15435
  }
7929
  // clang-format on
7930
7931
18552
  Debug("options") << "got " << nonoptions.size()
7932
6184
                   << " non-option arguments." << std::endl;
7933
6184
}
7934
7935
/**
7936
 * Parse argc/argv and put the result into a cvc5::Options.
7937
 * The return value is what's left of the command line (that is, the
7938
 * non-option arguments).
7939
 *
7940
 * Throws OptionException on failures.
7941
 */
7942
8783
std::vector<std::string> parse(
7943
    Options & opts, int argc, char* argv[], std::string& binaryName)
7944
{
7945
8783
  Assert(argv != nullptr);
7946
7947
8783
  Options* cur = &Options::current();
7948
14967
  OptionsGuard guard(&cur, &opts);
7949
7950
8783
  const char *progName = argv[0];
7951
7952
  // To debug options parsing, you may prefer to simply uncomment this
7953
  // and recompile. Debug flags have not been parsed yet so these have
7954
  // not been set.
7955
  //DebugChannel.on("options");
7956
7957
8783
  Debug("options") << "options::parse == " << &opts << std::endl;
7958
8783
  Debug("options") << "argv == " << argv << std::endl;
7959
7960
  // Find the base name of the program.
7961
8783
  const char *x = strrchr(progName, '/');
7962
8783
  if(x != nullptr) {
7963
8719
    progName = x + 1;
7964
  }
7965
8783
  binaryName = std::string(progName);
7966
7967
8783
  std::vector<std::string> nonoptions;
7968
8783
  parseInternal(opts, argc, argv, nonoptions);
7969
6184
  if (Debug.isOn("options")){
7970
    for(std::vector<std::string>::const_iterator i = nonoptions.begin(),
7971
          iend = nonoptions.end(); i != iend; ++i){
7972
      Debug("options") << "nonoptions " << *i << std::endl;
7973
    }
7974
  }
7975
7976
12368
  return nonoptions;
7977
}
7978
7979
59
std::string get(const Options& options, const std::string& key)
7980
{
7981
59
  Trace("options") << "Options::getOption(" << key << ")" << std::endl;
7982
59
  if (key == "approx-branch-depth") {
7983
return std::to_string(options.arith.maxApproxDepth);
7984
}
7985
59
if (key == "arith-brab") {
7986
return options.arith.brabTest ? "true" : "false";
7987
}
7988
59
if (key == "arith-cong-man") {
7989
return options.arith.arithCongMan ? "true" : "false";
7990
}
7991
59
if (key == "arith-eq-solver") {
7992
return options.arith.arithEqSolver ? "true" : "false";
7993
}
7994
59
if (key == "arith-no-partial-fun") {
7995
return options.arith.arithNoPartialFun ? "true" : "false";
7996
}
7997
59
if (key == "arith-prop-clauses") {
7998
return std::to_string(options.arith.arithPropAsLemmaLength);
7999
}
8000
59
if (key == "arith-prop") {
8001
std::stringstream ss;
8002
ss << options.arith.arithPropagationMode;
8003
return ss.str();
8004
}
8005
59
if (key == "arith-rewrite-equalities") {
8006
return options.arith.arithRewriteEq ? "true" : "false";
8007
}
8008
59
if (key == "collect-pivot-stats") {
8009
return options.arith.collectPivots ? "true" : "false";
8010
}
8011
59
if (key == "cut-all-bounded") {
8012
return options.arith.doCutAllBounded ? "true" : "false";
8013
}
8014
59
if (key == "dio-decomps") {
8015
return options.arith.exportDioDecompositions ? "true" : "false";
8016
}
8017
59
if (key == "dio-repeat") {
8018
return options.arith.dioRepeat ? "true" : "false";
8019
}
8020
59
if (key == "dio-solver") {
8021
return options.arith.arithDioSolver ? "true" : "false";
8022
}
8023
59
if (key == "dio-turns") {
8024
return std::to_string(options.arith.dioSolverTurns);
8025
}
8026
59
if (key == "error-selection-rule") {
8027
std::stringstream ss;
8028
ss << options.arith.arithErrorSelectionRule;
8029
return ss.str();
8030
}
8031
59
if (key == "fc-penalties") {
8032
return options.arith.havePenalties ? "true" : "false";
8033
}
8034
59
if (key == "heuristic-pivots") {
8035
return std::to_string(options.arith.arithHeuristicPivots);
8036
}
8037
59
if (key == "lemmas-on-replay-failure") {
8038
return options.arith.replayFailureLemma ? "true" : "false";
8039
}
8040
59
if (key == "maxCutsInContext") {
8041
return std::to_string(options.arith.maxCutsInContext);
8042
}
8043
59
if (key == "miplib-trick") {
8044
return options.arith.arithMLTrick ? "true" : "false";
8045
}
8046
59
if (key == "miplib-trick-subs") {
8047
return std::to_string(options.arith.arithMLTrickSubstitutions);
8048
}
8049
59
if (key == "new-prop") {
8050
return options.arith.newProp ? "true" : "false";
8051
}
8052
59
if (key == "nl-cad") {
8053
return options.arith.nlCad ? "true" : "false";
8054
}
8055
59
if (key == "nl-cad-initial") {
8056
return options.arith.nlCadUseInitial ? "true" : "false";
8057
}
8058
59
if (key == "nl-cad-lift") {
8059
std::stringstream ss;
8060
ss << options.arith.nlCadLifting;
8061
return ss.str();
8062
}
8063
59
if (key == "nl-cad-proj") {
8064
std::stringstream ss;
8065
ss << options.arith.nlCadProjection;
8066
return ss.str();
8067
}
8068
59
if (key == "nl-ext-ent-conf") {
8069
return options.arith.nlExtEntailConflicts ? "true" : "false";
8070
}
8071
59
if (key == "nl-ext-factor") {
8072
return options.arith.nlExtFactor ? "true" : "false";
8073
}
8074
59
if (key == "nl-ext-inc-prec") {
8075
return options.arith.nlExtIncPrecision ? "true" : "false";
8076
}
8077
59
if (key == "nl-ext-purify") {
8078
return options.arith.nlExtPurify ? "true" : "false";
8079
}
8080
59
if (key == "nl-ext-rbound") {
8081
return options.arith.nlExtResBound ? "true" : "false";
8082
}
8083
59
if (key == "nl-ext-rewrite") {
8084
return options.arith.nlExtRewrites ? "true" : "false";
8085
}
8086
59
if (key == "nl-ext-split-zero") {
8087
return options.arith.nlExtSplitZero ? "true" : "false";
8088
}
8089
59
if (key == "nl-ext-tf-taylor-deg") {
8090
return std::to_string(options.arith.nlExtTfTaylorDegree);
8091
}
8092
59
if (key == "nl-ext-tf-tplanes") {
8093
return options.arith.nlExtTfTangentPlanes ? "true" : "false";
8094
}
8095
59
if (key == "nl-ext-tplanes") {
8096
return options.arith.nlExtTangentPlanes ? "true" : "false";
8097
}
8098
59
if (key == "nl-ext-tplanes-interleave") {
8099
return options.arith.nlExtTangentPlanesInterleave ? "true" : "false";
8100
}
8101
59
if (key == "nl-ext") {
8102
std::stringstream ss;
8103
ss << options.arith.nlExt;
8104
return ss.str();
8105
}
8106
59
if (key == "nl-icp") {
8107
return options.arith.nlICP ? "true" : "false";
8108
}
8109
59
if (key == "nl-rlv") {
8110
std::stringstream ss;
8111
ss << options.arith.nlRlvMode;
8112
return ss.str();
8113
}
8114
59
if (key == "pb-rewrites") {
8115
return options.arith.pbRewrites ? "true" : "false";
8116
}
8117
59
if (key == "pivot-threshold") {
8118
return std::to_string(options.arith.arithPivotThreshold);
8119
}
8120
59
if (key == "pp-assert-max-sub-size") {
8121
return std::to_string(options.arith.ppAssertMaxSubSize);
8122
}
8123
59
if (key == "prop-row-length") {
8124
return std::to_string(options.arith.arithPropagateMaxLength);
8125
}
8126
59
if (key == "replay-early-close-depth") {
8127
return std::to_string(options.arith.replayEarlyCloseDepths);
8128
}
8129
59
if (key == "replay-failure-penalty") {
8130
return std::to_string(options.arith.replayFailurePenalty);
8131
}
8132
59
if (key == "replay-lemma-reject-cut") {
8133
return std::to_string(options.arith.lemmaRejectCutSize);
8134
}
8135
59
if (key == "replay-num-err-penalty") {
8136
return std::to_string(options.arith.replayNumericFailurePenalty);
8137
}
8138
59
if (key == "replay-reject-cut") {
8139
return std::to_string(options.arith.replayRejectCutSize);
8140
}
8141
59
if (key == "replay-soi-major-threshold-pen") {
8142
return std::to_string(options.arith.soiApproxMajorFailurePen);
8143
}
8144
59
if (key == "replay-soi-major-threshold") {
8145
return std::to_string(options.arith.soiApproxMajorFailure);
8146
}
8147
59
if (key == "replay-soi-minor-threshold-pen") {
8148
return std::to_string(options.arith.soiApproxMinorFailurePen);
8149
}
8150
59
if (key == "replay-soi-minor-threshold") {
8151
return std::to_string(options.arith.soiApproxMinorFailure);
8152
}
8153
59
if (key == "restrict-pivots") {
8154
return options.arith.restrictedPivots ? "true" : "false";
8155
}
8156
59
if (key == "revert-arith-models-on-unsat") {
8157
return options.arith.revertArithModels ? "true" : "false";
8158
}
8159
59
if (key == "rr-turns") {
8160
return std::to_string(options.arith.rrTurns);
8161
}
8162
59
if (key == "se-solve-int") {
8163
return options.arith.trySolveIntStandardEffort ? "true" : "false";
8164
}
8165
59
if (key == "simplex-check-period") {
8166
return std::to_string(options.arith.arithSimplexCheckPeriod);
8167
}
8168
59
if (key == "soi-qe") {
8169
return options.arith.soiQuickExplain ? "true" : "false";
8170
}
8171
59
if (key == "standard-effort-variable-order-pivots") {
8172
return std::to_string(options.arith.arithStandardCheckVarOrderPivots);
8173
}
8174
59
if (key == "unate-lemmas") {
8175
std::stringstream ss;
8176
ss << options.arith.arithUnateLemmaMode;
8177
return ss.str();
8178
}
8179
59
if (key == "use-approx") {
8180
return options.arith.useApprox ? "true" : "false";
8181
}
8182
59
if (key == "use-fcsimplex") {
8183
return options.arith.useFC ? "true" : "false";
8184
}
8185
59
if (key == "use-soi") {
8186
return options.arith.useSOI ? "true" : "false";
8187
}
8188
59
if (key == "arrays-config") {
8189
return std::to_string(options.arrays.arraysConfig);
8190
}
8191
59
if (key == "arrays-eager-index") {
8192
return options.arrays.arraysEagerIndexSplitting ? "true" : "false";
8193
}
8194
59
if (key == "arrays-eager-lemmas") {
8195
return options.arrays.arraysEagerLemmas ? "true" : "false";
8196
}
8197
59
if (key == "arrays-exp") {
8198
17
return options.arrays.arraysExp ? "true" : "false";
8199
}
8200
42
if (key == "arrays-model-based") {
8201
return options.arrays.arraysModelBased ? "true" : "false";
8202
}
8203
42
if (key == "arrays-optimize-linear") {
8204
return options.arrays.arraysOptimizeLinear ? "true" : "false";
8205
}
8206
42
if (key == "arrays-prop") {
8207
return std::to_string(options.arrays.arraysPropagate);
8208
}
8209
42
if (key == "arrays-reduce-sharing") {
8210
return options.arrays.arraysReduceSharing ? "true" : "false";
8211
}
8212
42
if (key == "arrays-weak-equiv") {
8213
return options.arrays.arraysWeakEquivalence ? "true" : "false";
8214
}
8215
42
if (key == "incremental") {
8216
2
return options.base.incrementalSolving ? "true" : "false";
8217
}
8218
40
if (key == "input-language" || key == "lang") {
8219
2
std::stringstream ss;
8220
1
ss << options.base.inputLanguage;
8221
1
return ss.str();
8222
}
8223
39
if (key == "output-lang" || key == "output-language") {
8224
std::stringstream ss;
8225
ss << options.base.outputLanguage;
8226
return ss.str();
8227
}
8228
39
if (key == "output") {
8229
std::stringstream ss;
8230
ss << options.base.outputTag;
8231
return ss.str();
8232
}
8233
39
if (key == "parse-only") {
8234
return options.base.parseOnly ? "true" : "false";
8235
}
8236
39
if (key == "preprocess-only") {
8237
return options.base.preprocessOnly ? "true" : "false";
8238
}
8239
39
if (key == "print-success") {
8240
return options.base.printSuccess ? "true" : "false";
8241
}
8242
39
if (key == "reproducible-resource-limit" || key == "rlimit-per") {
8243
return std::to_string(options.base.perCallResourceLimit);
8244
}
8245
39
if (key == "rlimit") {
8246
return std::to_string(options.base.cumulativeResourceLimit);
8247
}
8248
39
if (key == "stats") {
8249
5
return options.base.statistics ? "true" : "false";
8250
}
8251
34
if (key == "stats-all") {
8252
5
return options.base.statisticsAll ? "true" : "false";
8253
}
8254
29
if (key == "stats-every-query") {
8255
5
return options.base.statisticsEveryQuery ? "true" : "false";
8256
}
8257
24
if (key == "stats-expert") {
8258
5
return options.base.statisticsExpert ? "true" : "false";
8259
}
8260
19
if (key == "tlimit-per") {
8261
return std::to_string(options.base.perCallMillisecondLimit);
8262
}
8263
19
if (key == "tlimit") {
8264
return std::to_string(options.base.cumulativeMillisecondLimit);
8265
}
8266
19
if (key == "verbosity") {
8267
6
return std::to_string(options.base.verbosity);
8268
}
8269
13
if (key == "bitblast-aig") {
8270
return options.bv.bitvectorAig ? "true" : "false";
8271
}
8272
13
if (key == "bitblast") {
8273
std::stringstream ss;
8274
ss << options.bv.bitblastMode;
8275
return ss.str();
8276
}
8277
13
if (key == "bitwise-eq") {
8278
return options.bv.bitwiseEq ? "true" : "false";
8279
}
8280
13
if (key == "bool-to-bv") {
8281
std::stringstream ss;
8282
ss << options.bv.boolToBitvector;
8283
return ss.str();
8284
}
8285
13
if (key == "bv-abstraction") {
8286
return options.bv.bvAbstraction ? "true" : "false";
8287
}
8288
13
if (key == "bv-aig-simp") {
8289
return options.bv.bitvectorAigSimplifications;
8290
}
8291
13
if (key == "bv-alg-extf") {
8292
return options.bv.bvAlgExtf ? "true" : "false";
8293
}
8294
13
if (key == "bv-algebraic-budget") {
8295
return std::to_string(options.bv.bitvectorAlgebraicBudget);
8296
}
8297
13
if (key == "bv-algebraic-solver") {
8298
return options.bv.bitvectorAlgebraicSolver ? "true" : "false";
8299
}
8300
13
if (key == "bv-assert-input") {
8301
return options.bv.bvAssertInput ? "true" : "false";
8302
}
8303
13
if (key == "bv-eager-explanations") {
8304
return options.bv.bvEagerExplanations ? "true" : "false";
8305
}
8306
13
if (key == "bv-eq-solver") {
8307
return options.bv.bitvectorEqualitySolver ? "true" : "false";
8308
}
8309
13
if (key == "bv-extract-arith") {
8310
return options.bv.bvExtractArithRewrite ? "true" : "false";
8311
}
8312
13
if (key == "bv-gauss-elim") {
8313
return options.bv.bvGaussElim ? "true" : "false";
8314
}
8315
13
if (key == "bv-inequality-solver") {
8316
return options.bv.bitvectorInequalitySolver ? "true" : "false";
8317
}
8318
13
if (key == "bv-intro-pow2") {
8319
return options.bv.bvIntroducePow2 ? "true" : "false";
8320
}
8321
13
if (key == "bv-num-func") {
8322
return std::to_string(options.bv.bvNumFunc);
8323
}
8324
13
if (key == "bv-print-consts-as-indexed-symbols") {
8325
return options.bv.bvPrintConstsAsIndexedSymbols ? "true" : "false";
8326
}
8327
13
if (key == "bv-propagate") {
8328
return options.bv.bitvectorPropagate ? "true" : "false";
8329
}
8330
13
if (key == "bv-quick-xplain") {
8331
return options.bv.bitvectorQuickXplain ? "true" : "false";
8332
}
8333
13
if (key == "bv-sat-solver") {
8334
std::stringstream ss;
8335
ss << options.bv.bvSatSolver;
8336
return ss.str();
8337
}
8338
13
if (key == "bv-skolemize") {
8339
return options.bv.skolemizeArguments ? "true" : "false";
8340
}
8341
13
if (key == "bv-solver") {
8342
std::stringstream ss;
8343
ss << options.bv.bvSolver;
8344
return ss.str();
8345
}
8346
13
if (key == "bv-to-bool") {
8347
return options.bv.bitvectorToBool ? "true" : "false";
8348
}
8349
13
if (key == "cdt-bisimilar") {
8350
return options.datatypes.cdtBisimilar ? "true" : "false";
8351
}
8352
13
if (key == "dt-binary-split") {
8353
return options.datatypes.dtBinarySplit ? "true" : "false";
8354
}
8355
13
if (key == "dt-blast-splits") {
8356
return options.datatypes.dtBlastSplits ? "true" : "false";
8357
}
8358
13
if (key == "dt-cyclic") {
8359
return options.datatypes.dtCyclic ? "true" : "false";
8360
}
8361
13
if (key == "dt-force-assignment") {
8362
return options.datatypes.dtForceAssignment ? "true" : "false";
8363
}
8364
13
if (key == "dt-infer-as-lemmas") {
8365
return options.datatypes.dtInferAsLemmas ? "true" : "false";
8366
}
8367
13
if (key == "dt-nested-rec") {
8368
return options.datatypes.dtNestedRec ? "true" : "false";
8369
}
8370
13
if (key == "dt-polite-optimize") {
8371
return options.datatypes.dtPoliteOptimize ? "true" : "false";
8372
}
8373
13
if (key == "dt-rewrite-error-sel") {
8374
return options.datatypes.dtRewriteErrorSel ? "true" : "false";
8375
}
8376
13
if (key == "dt-share-sel") {
8377
return options.datatypes.dtSharedSelectors ? "true" : "false";
8378
}
8379
13
if (key == "sygus-abort-size") {
8380
return std::to_string(options.datatypes.sygusAbortSize);
8381
}
8382
13
if (key == "sygus-fair-max") {
8383
return options.datatypes.sygusFairMax ? "true" : "false";
8384
}
8385
13
if (key == "sygus-fair") {
8386
std::stringstream ss;
8387
ss << options.datatypes.sygusFair;
8388
return ss.str();
8389
}
8390
13
if (key == "sygus-sym-break") {
8391
return options.datatypes.sygusSymBreak ? "true" : "false";
8392
}
8393
13
if (key == "sygus-sym-break-agg") {
8394
return options.datatypes.sygusSymBreakAgg ? "true" : "false";
8395
}
8396
13
if (key == "sygus-sym-break-dynamic") {
8397
return options.datatypes.sygusSymBreakDynamic ? "true" : "false";
8398
}
8399
13
if (key == "sygus-sym-break-lazy") {
8400
return options.datatypes.sygusSymBreakLazy ? "true" : "false";
8401
}
8402
13
if (key == "sygus-sym-break-pbe") {
8403
return options.datatypes.sygusSymBreakPbe ? "true" : "false";
8404
}
8405
13
if (key == "sygus-sym-break-rlv") {
8406
return options.datatypes.sygusSymBreakRlv ? "true" : "false";
8407
}
8408
13
if (key == "decision-random-weight") {
8409
return std::to_string(options.decision.decisionRandomWeight);
8410
}
8411
13
if (key == "decision-threshold") {
8412
std::stringstream ss;
8413
ss << options.decision.decisionThreshold;
8414
return ss.str();
8415
}
8416
13
if (key == "decision-use-weight") {
8417
return options.decision.decisionUseWeight ? "true" : "false";
8418
}
8419
13
if (key == "decision-weight-internal") {
8420
std::stringstream ss;
8421
ss << options.decision.decisionWeightInternal;
8422
return ss.str();
8423
}
8424
13
if (key == "decision" || key == "decision-mode") {
8425
std::stringstream ss;
8426
ss << options.decision.decisionMode;
8427
return ss.str();
8428
}
8429
13
if (key == "jh-rlv-order") {
8430
return options.decision.jhRlvOrder ? "true" : "false";
8431
}
8432
13
if (key == "jh-skolem-rlv") {
8433
std::stringstream ss;
8434
ss << options.decision.jhSkolemRlvMode;
8435
return ss.str();
8436
}
8437
13
if (key == "jh-skolem") {
8438
std::stringstream ss;
8439
ss << options.decision.jhSkolemMode;
8440
return ss.str();
8441
}
8442
13
if (key == "dag-thresh") {
8443
1
return std::to_string(options.expr.defaultDagThresh);
8444
}
8445
12
if (key == "expr-depth") {
8446
return std::to_string(options.expr.defaultExprDepth);
8447
}
8448
12
if (key == "type-checking") {
8449
return options.expr.typeChecking ? "true" : "false";
8450
}
8451
12
if (key == "fp-exp") {
8452
return options.fp.fpExp ? "true" : "false";
8453
}
8454
12
if (key == "fp-lazy-wb") {
8455
return options.fp.fpLazyWb ? "true" : "false";
8456
}
8457
12
if (key == "dump-instantiations") {
8458
return options.driver.dumpInstantiations ? "true" : "false";
8459
}
8460
12
if (key == "dump-models") {
8461
return options.driver.dumpModels ? "true" : "false";
8462
}
8463
12
if (key == "dump-proofs") {
8464
return options.driver.dumpProofs ? "true" : "false";
8465
}
8466
12
if (key == "dump-unsat-cores") {
8467
return options.driver.dumpUnsatCores ? "true" : "false";
8468
}
8469
12
if (key == "dump-unsat-cores-full") {
8470
return options.driver.dumpUnsatCoresFull ? "true" : "false";
8471
}
8472
12
if (key == "early-exit") {
8473
return options.driver.earlyExit ? "true" : "false";
8474
}
8475
12
if (key == "force-no-limit-cpu-while-dump") {
8476
return options.driver.forceNoLimitCpuWhileDump ? "true" : "false";
8477
}
8478
12
if (key == "help") {
8479
return options.driver.help ? "true" : "false";
8480
}
8481
12
if (key == "interactive") {
8482
return options.driver.interactive ? "true" : "false";
8483
}
8484
12
if (key == "interactive-prompt") {
8485
return options.driver.interactivePrompt ? "true" : "false";
8486
}
8487
12
if (key == "seed") {
8488
return std::to_string(options.driver.seed);
8489
}
8490
12
if (key == "segv-spin") {
8491
return options.driver.segvSpin ? "true" : "false";
8492
}
8493
12
if (key == "version") {
8494
return options.driver.version ? "true" : "false";
8495
}
8496
12
if (key == "filesystem-access") {
8497
return options.parser.filesystemAccess ? "true" : "false";
8498
}
8499
12
if (key == "force-logic") {
8500
return options.parser.forceLogicString;
8501
}
8502
12
if (key == "global-declarations") {
8503
return options.parser.globalDeclarations ? "true" : "false";
8504
}
8505
12
if (key == "mmap") {
8506
return options.parser.memoryMap ? "true" : "false";
8507
}
8508
12
if (key == "semantic-checks") {
8509
return options.parser.semanticChecks ? "true" : "false";
8510
}
8511
12
if (key == "strict-parsing") {
8512
return options.parser.strictParsing ? "true" : "false";
8513
}
8514
12
if (key == "flatten-ho-chains") {
8515
return options.printer.flattenHOChains ? "true" : "false";
8516
}
8517
12
if (key == "inst-format") {
8518
std::stringstream ss;
8519
ss << options.printer.instFormatMode;
8520
return ss.str();
8521
}
8522
12
if (key == "model-format") {
8523
std::stringstream ss;
8524
ss << options.printer.modelFormatMode;
8525
return ss.str();
8526
}
8527
12
if (key == "print-inst-full") {
8528
return options.printer.printInstFull ? "true" : "false";
8529
}
8530
12
if (key == "print-inst") {
8531
std::stringstream ss;
8532
ss << options.printer.printInstMode;
8533
return ss.str();
8534
}
8535
12
if (key == "proof-eager-checking") {
8536
return options.proof.proofEagerChecking ? "true" : "false";
8537
}
8538
12
if (key == "proof-format-mode") {
8539
std::stringstream ss;
8540
ss << options.proof.proofFormatMode;
8541
return ss.str();
8542
}
8543
12
if (key == "proof-granularity") {
8544
std::stringstream ss;
8545
ss << options.proof.proofGranularityMode;
8546
return ss.str();
8547
}
8548
12
if (key == "proof-pedantic") {
8549
return std::to_string(options.proof.proofPedantic);
8550
}
8551
12
if (key == "proof-print-conclusion") {
8552
return options.proof.proofPrintConclusion ? "true" : "false";
8553
}
8554
12
if (key == "minisat-dump-dimacs") {
8555
return options.prop.minisatDumpDimacs ? "true" : "false";
8556
}
8557
12
if (key == "minisat-elimination") {
8558
return options.prop.minisatUseElim ? "true" : "false";
8559
}
8560
12
if (key == "random-freq" || key == "random-frequency") {
8561
return std::to_string(options.prop.satRandomFreq);
8562
}
8563
12
if (key == "random-seed") {
8564
4
return std::to_string(options.prop.satRandomSeed);
8565
}
8566
8
if (key == "refine-conflicts") {
8567
return options.prop.sat_refine_conflicts ? "true" : "false";
8568
}
8569
8
if (key == "restart-int-base") {
8570
return std::to_string(options.prop.satRestartFirst);
8571
}
8572
8
if (key == "restart-int-inc") {
8573
return std::to_string(options.prop.satRestartInc);
8574
}
8575
8
if (key == "ag-miniscope-quant") {
8576
return options.quantifiers.aggressiveMiniscopeQuant ? "true" : "false";
8577
}
8578
8
if (key == "cegis-sample") {
8579
std::stringstream ss;
8580
ss << options.quantifiers.cegisSample;
8581
return ss.str();
8582
}
8583
8
if (key == "cegqi") {
8584
return options.quantifiers.cegqi ? "true" : "false";
8585
}
8586
8
if (key == "cegqi-all") {
8587
return options.quantifiers.cegqiAll ? "true" : "false";
8588
}
8589
8
if (key == "cegqi-bv") {
8590
return options.quantifiers.cegqiBv ? "true" : "false";
8591
}
8592
8
if (key == "cegqi-bv-concat-inv") {
8593
return options.quantifiers.cegqiBvConcInv ? "true" : "false";
8594
}
8595
8
if (key == "cegqi-bv-ineq") {
8596
std::stringstream ss;
8597
ss << options.quantifiers.cegqiBvIneqMode;
8598
return ss.str();
8599
}
8600
8
if (key == "cegqi-bv-interleave-value") {
8601
return options.quantifiers.cegqiBvInterleaveValue ? "true" : "false";
8602
}
8603
8
if (key == "cegqi-bv-linear") {
8604
return options.quantifiers.cegqiBvLinearize ? "true" : "false";
8605
}
8606
8
if (key == "cegqi-bv-rm-extract") {
8607
return options.quantifiers.cegqiBvRmExtract ? "true" : "false";
8608
}
8609
8
if (key == "cegqi-bv-solve-nl") {
8610
return options.quantifiers.cegqiBvSolveNl ? "true" : "false";
8611
}
8612
8
if (key == "cegqi-full") {
8613
return options.quantifiers.cegqiFullEffort ? "true" : "false";
8614
}
8615
8
if (key == "cegqi-innermost") {
8616
return options.quantifiers.cegqiInnermost ? "true" : "false";
8617
}
8618
8
if (key == "cegqi-midpoint") {
8619
return options.quantifiers.cegqiMidpoint ? "true" : "false";
8620
}
8621
8
if (key == "cegqi-min-bounds") {
8622
return options.quantifiers.cegqiMinBounds ? "true" : "false";
8623
}
8624
8
if (key == "cegqi-model") {
8625
return options.quantifiers.cegqiModel ? "true" : "false";
8626
}
8627
8
if (key == "cegqi-multi-inst") {
8628
return options.quantifiers.cegqiMultiInst ? "true" : "false";
8629
}
8630
8
if (key == "cegqi-nested-qe") {
8631
return options.quantifiers.cegqiNestedQE ? "true" : "false";
8632
}
8633
8
if (key == "cegqi-nopt") {
8634
return options.quantifiers.cegqiNopt ? "true" : "false";
8635
}
8636
8
if (key == "cegqi-repeat-lit") {
8637
return options.quantifiers.cegqiRepeatLit ? "true" : "false";
8638
}
8639
8
if (key == "cegqi-round-up-lia") {
8640
return options.quantifiers.cegqiRoundUpLowerLia ? "true" : "false";
8641
}
8642
8
if (key == "cegqi-sat") {
8643
return options.quantifiers.cegqiSat ? "true" : "false";
8644
}
8645
8
if (key == "cegqi-use-inf-int") {
8646
return options.quantifiers.cegqiUseInfInt ? "true" : "false";
8647
}
8648
8
if (key == "cegqi-use-inf-real") {
8649
return options.quantifiers.cegqiUseInfReal ? "true" : "false";
8650
}
8651
8
if (key == "cond-var-split-agg-quant") {
8652
return options.quantifiers.condVarSplitQuantAgg ? "true" : "false";
8653
}
8654
8
if (key == "cond-var-split-quant") {
8655
return options.quantifiers.condVarSplitQuant ? "true" : "false";
8656
}
8657
8
if (key == "conjecture-filter-active-terms") {
8658
return options.quantifiers.conjectureFilterActiveTerms ? "true" : "false";
8659
}
8660
8
if (key == "conjecture-filter-canonical") {
8661
return options.quantifiers.conjectureFilterCanonical ? "true" : "false";
8662
}
8663
8
if (key == "conjecture-filter-model") {
8664
return options.quantifiers.conjectureFilterModel ? "true" : "false";
8665
}
8666
8
if (key == "conjecture-gen") {
8667
return options.quantifiers.conjectureGen ? "true" : "false";
8668
}
8669
8
if (key == "conjecture-gen-gt-enum") {
8670
return std::to_string(options.quantifiers.conjectureGenGtEnum);
8671
}
8672
8
if (key == "conjecture-gen-max-depth") {
8673
return std::to_string(options.quantifiers.conjectureGenMaxDepth);
8674
}
8675
8
if (key == "conjecture-gen-per-round") {
8676
return std::to_string(options.quantifiers.conjectureGenPerRound);
8677
}
8678
8
if (key == "conjecture-gen-uee-intro") {
8679
return options.quantifiers.conjectureUeeIntro ? "true" : "false";
8680
}
8681
8
if (key == "conjecture-no-filter") {
8682
return options.quantifiers.conjectureNoFilter ? "true" : "false";
8683
}
8684
8
if (key == "dt-stc-ind") {
8685
return options.quantifiers.dtStcInduction ? "true" : "false";
8686
}
8687
8
if (key == "dt-var-exp-quant") {
8688
return options.quantifiers.dtVarExpandQuant ? "true" : "false";
8689
}
8690
8
if (key == "e-matching") {
8691
return options.quantifiers.eMatching ? "true" : "false";
8692
}
8693
8
if (key == "elim-taut-quant") {
8694
return options.quantifiers.elimTautQuant ? "true" : "false";
8695
}
8696
8
if (key == "ext-rewrite-quant") {
8697
return options.quantifiers.extRewriteQuant ? "true" : "false";
8698
}
8699
8
if (key == "finite-model-find") {
8700
return options.quantifiers.finiteModelFind ? "true" : "false";
8701
}
8702
8
if (key == "fmf-bound") {
8703
return options.quantifiers.fmfBound ? "true" : "false";
8704
}
8705
8
if (key == "fmf-bound-int") {
8706
return options.quantifiers.fmfBoundInt ? "true" : "false";
8707
}
8708
8
if (key == "fmf-bound-lazy") {
8709
return options.quantifiers.fmfBoundLazy ? "true" : "false";
8710
}
8711
8
if (key == "fmf-fmc-simple") {
8712
return options.quantifiers.fmfFmcSimple ? "true" : "false";
8713
}
8714
8
if (key == "fmf-fresh-dc") {
8715
return options.quantifiers.fmfFreshDistConst ? "true" : "false";
8716
}
8717
8
if (key == "fmf-fun") {
8718
return options.quantifiers.fmfFunWellDefined ? "true" : "false";
8719
}
8720
8
if (key == "fmf-fun-rlv") {
8721
return options.quantifiers.fmfFunWellDefinedRelevant ? "true" : "false";
8722
}
8723
8
if (key == "fmf-inst-engine") {
8724
return options.quantifiers.fmfInstEngine ? "true" : "false";
8725
}
8726
8
if (key == "fmf-type-completion-thresh") {
8727
return std::to_string(options.quantifiers.fmfTypeCompletionThresh);
8728
}
8729
8
if (key == "fs-interleave") {
8730
return options.quantifiers.fullSaturateInterleave ? "true" : "false";
8731
}
8732
8
if (key == "fs-stratify") {
8733
return options.quantifiers.fullSaturateStratify ? "true" : "false";
8734
}
8735
8
if (key == "fs-sum") {
8736
return options.quantifiers.fullSaturateSum ? "true" : "false";
8737
}
8738
8
if (key == "full-saturate-quant") {
8739
return options.quantifiers.fullSaturateQuant ? "true" : "false";
8740
}
8741
8
if (key == "full-saturate-quant-limit") {
8742
return std::to_string(options.quantifiers.fullSaturateLimit);
8743
}
8744
8
if (key == "full-saturate-quant-rd") {
8745
return options.quantifiers.fullSaturateQuantRd ? "true" : "false";
8746
}
8747
8
if (key == "global-negate") {
8748
return options.quantifiers.globalNegate ? "true" : "false";
8749
}
8750
8
if (key == "ho-elim") {
8751
return options.quantifiers.hoElim ? "true" : "false";
8752
}
8753
8
if (key == "ho-elim-store-ax") {
8754
return options.quantifiers.hoElimStoreAx ? "true" : "false";
8755
}
8756
8
if (key == "ho-matching") {
8757
return options.quantifiers.hoMatching ? "true" : "false";
8758
}
8759
8
if (key == "ho-matching-var-priority") {
8760
return options.quantifiers.hoMatchingVarArgPriority ? "true" : "false";
8761
}
8762
8
if (key == "ho-merge-term-db") {
8763
return options.quantifiers.hoMergeTermDb ? "true" : "false";
8764
}
8765
8
if (key == "increment-triggers") {
8766
return options.quantifiers.incrementTriggers ? "true" : "false";
8767
}
8768
8
if (key == "inst-level-input-only") {
8769
return options.quantifiers.instLevelInputOnly ? "true" : "false";
8770
}
8771
8
if (key == "inst-max-level") {
8772
return std::to_string(options.quantifiers.instMaxLevel);
8773
}
8774
8
if (key == "inst-max-rounds") {
8775
return std::to_string(options.quantifiers.instMaxRounds);
8776
}
8777
8
if (key == "inst-no-entail") {
8778
return options.quantifiers.instNoEntail ? "true" : "false";
8779
}
8780
8
if (key == "inst-when-phase") {
8781
return std::to_string(options.quantifiers.instWhenPhase);
8782
}
8783
8
if (key == "inst-when-strict-interleave") {
8784
return options.quantifiers.instWhenStrictInterleave ? "true" : "false";
8785
}
8786
8
if (key == "inst-when-tc-first") {
8787
return options.quantifiers.instWhenTcFirst ? "true" : "false";
8788
}
8789
8
if (key == "inst-when") {
8790
std::stringstream ss;
8791
ss << options.quantifiers.instWhenMode;
8792
return ss.str();
8793
}
8794
8
if (key == "int-wf-ind") {
8795
return options.quantifiers.intWfInduction ? "true" : "false";
8796
}
8797
8
if (key == "ite-dtt-split-quant") {
8798
return options.quantifiers.iteDtTesterSplitQuant ? "true" : "false";
8799
}
8800
8
if (key == "ite-lift-quant") {
8801
std::stringstream ss;
8802
ss << options.quantifiers.iteLiftQuant;
8803
return ss.str();
8804
}
8805
8
if (key == "literal-matching") {
8806
std::stringstream ss;
8807
ss << options.quantifiers.literalMatchMode;
8808
return ss.str();
8809
}
8810
8
if (key == "macros-quant") {
8811
return options.quantifiers.macrosQuant ? "true" : "false";
8812
}
8813
8
if (key == "macros-quant-mode") {
8814
std::stringstream ss;
8815
ss << options.quantifiers.macrosQuantMode;
8816
return ss.str();
8817
}
8818
8
if (key == "mbqi-interleave") {
8819
return options.quantifiers.mbqiInterleave ? "true" : "false";
8820
}
8821
8
if (key == "mbqi-one-inst-per-round") {
8822
return options.quantifiers.fmfOneInstPerRound ? "true" : "false";
8823
}
8824
8
if (key == "mbqi") {
8825
std::stringstream ss;
8826
ss << options.quantifiers.mbqiMode;
8827
return ss.str();
8828
}
8829
8
if (key == "miniscope-quant") {
8830
return options.quantifiers.miniscopeQuant ? "true" : "false";
8831
}
8832
8
if (key == "miniscope-quant-fv") {
8833
return options.quantifiers.miniscopeQuantFreeVar ? "true" : "false";
8834
}
8835
8
if (key == "multi-trigger-cache") {
8836
return options.quantifiers.multiTriggerCache ? "true" : "false";
8837
}
8838
8
if (key == "multi-trigger-linear") {
8839
return options.quantifiers.multiTriggerLinear ? "true" : "false";
8840
}
8841
8
if (key == "multi-trigger-priority") {
8842
return options.quantifiers.multiTriggerPriority ? "true" : "false";
8843
}
8844
8
if (key == "multi-trigger-when-single") {
8845
return options.quantifiers.multiTriggerWhenSingle ? "true" : "false";
8846
}
8847
8
if (key == "partial-triggers") {
8848
return options.quantifiers.partialTriggers ? "true" : "false";
8849
}
8850
8
if (key == "pool-inst") {
8851
return options.quantifiers.poolInst ? "true" : "false";
8852
}
8853
8
if (key == "pre-skolem-quant") {
8854
return options.quantifiers.preSkolemQuant ? "true" : "false";
8855
}
8856
8
if (key == "pre-skolem-quant-agg") {
8857
return options.quantifiers.preSkolemQuantAgg ? "true" : "false";
8858
}
8859
8
if (key == "pre-skolem-quant-nested") {
8860
return options.quantifiers.preSkolemQuantNested ? "true" : "false";
8861
}
8862
8
if (key == "prenex-quant-user") {
8863
return options.quantifiers.prenexQuantUser ? "true" : "false";
8864
}
8865
8
if (key == "prenex-quant") {
8866
std::stringstream ss;
8867
ss << options.quantifiers.prenexQuant;
8868
return ss.str();
8869
}
8870
8
if (key == "purify-triggers") {
8871
return options.quantifiers.purifyTriggers ? "true" : "false";
8872
}
8873
8
if (key == "qcf-all-conflict") {
8874
return options.quantifiers.qcfAllConflict ? "true" : "false";
8875
}
8876
8
if (key == "qcf-eager-check-rd") {
8877
return options.quantifiers.qcfEagerCheckRd ? "true" : "false";
8878
}
8879
8
if (key == "qcf-eager-test") {
8880
return options.quantifiers.qcfEagerTest ? "true" : "false";
8881
}
8882
8
if (key == "qcf-nested-conflict") {
8883
return options.quantifiers.qcfNestedConflict ? "true" : "false";
8884
}
8885
8
if (key == "qcf-skip-rd") {
8886
return options.quantifiers.qcfSkipRd ? "true" : "false";
8887
}
8888
8
if (key == "qcf-tconstraint") {
8889
return options.quantifiers.qcfTConstraint ? "true" : "false";
8890
}
8891
8
if (key == "qcf-vo-exp") {
8892
return options.quantifiers.qcfVoExp ? "true" : "false";
8893
}
8894
8
if (key == "quant-alpha-equiv") {
8895
return options.quantifiers.quantAlphaEquiv ? "true" : "false";
8896
}
8897
8
if (key == "quant-cf") {
8898
return options.quantifiers.quantConflictFind ? "true" : "false";
8899
}
8900
8
if (key == "quant-cf-mode") {
8901
std::stringstream ss;
8902
ss << options.quantifiers.qcfMode;
8903
return ss.str();
8904
}
8905
8
if (key == "quant-cf-when") {
8906
std::stringstream ss;
8907
ss << options.quantifiers.qcfWhenMode;
8908
return ss.str();
8909
}
8910
8
if (key == "quant-dsplit-mode") {
8911
std::stringstream ss;
8912
ss << options.quantifiers.quantDynamicSplit;
8913
return ss.str();
8914
}
8915
8
if (key == "quant-fun-wd") {
8916
return options.quantifiers.quantFunWellDefined ? "true" : "false";
8917
}
8918
8
if (key == "quant-ind") {
8919
return options.quantifiers.quantInduction ? "true" : "false";
8920
}
8921
8
if (key == "quant-rep-mode") {
8922
std::stringstream ss;
8923
ss << options.quantifiers.quantRepMode;
8924
return ss.str();
8925
}
8926
8
if (key == "quant-split") {
8927
return options.quantifiers.quantSplit ? "true" : "false";
8928
}
8929
8
if (key == "register-quant-body-terms") {
8930
return options.quantifiers.registerQuantBodyTerms ? "true" : "false";
8931
}
8932
8
if (key == "relational-triggers") {
8933
return options.quantifiers.relationalTriggers ? "true" : "false";
8934
}
8935
8
if (key == "relevant-triggers") {
8936
return options.quantifiers.relevantTriggers ? "true" : "false";
8937
}
8938
8
if (key == "strict-triggers") {
8939
return options.quantifiers.strictTriggers ? "true" : "false";
8940
}
8941
8
if (key == "sygus") {
8942
return options.quantifiers.sygus ? "true" : "false";
8943
}
8944
8
if (key == "sygus-active-gen-cfactor") {
8945
return std::to_string(options.quantifiers.sygusActiveGenEnumConsts);
8946
}
8947
8
if (key == "sygus-active-gen") {
8948
std::stringstream ss;
8949
ss << options.quantifiers.sygusActiveGenMode;
8950
return ss.str();
8951
}
8952
8
if (key == "sygus-add-const-grammar") {
8953
return options.quantifiers.sygusAddConstGrammar ? "true" : "false";
8954
}
8955
8
if (key == "sygus-arg-relevant") {
8956
return options.quantifiers.sygusArgRelevant ? "true" : "false";
8957
}
8958
8
if (key == "sygus-auto-unfold") {
8959
return options.quantifiers.sygusInvAutoUnfold ? "true" : "false";
8960
}
8961
8
if (key == "sygus-bool-ite-return-const") {
8962
return options.quantifiers.sygusBoolIteReturnConst ? "true" : "false";
8963
}
8964
8
if (key == "sygus-core-connective") {
8965
return options.quantifiers.sygusCoreConnective ? "true" : "false";
8966
}
8967
8
if (key == "sygus-crepair-abort") {
8968
return options.quantifiers.sygusConstRepairAbort ? "true" : "false";
8969
}
8970
8
if (key == "sygus-eval-opt") {
8971
return options.quantifiers.sygusEvalOpt ? "true" : "false";
8972
}
8973
8
if (key == "sygus-eval-unfold") {
8974
return options.quantifiers.sygusEvalUnfold ? "true" : "false";
8975
}
8976
8
if (key == "sygus-eval-unfold-bool") {
8977
return options.quantifiers.sygusEvalUnfoldBool ? "true" : "false";
8978
}
8979
8
if (key == "sygus-expr-miner-check-timeout") {
8980
return std::to_string(options.quantifiers.sygusExprMinerCheckTimeout);
8981
}
8982
8
if (key == "sygus-ext-rew") {
8983
return options.quantifiers.sygusExtRew ? "true" : "false";
8984
}
8985
8
if (key == "sygus-filter-sol-rev") {
8986
return options.quantifiers.sygusFilterSolRevSubsume ? "true" : "false";
8987
}
8988
8
if (key == "sygus-filter-sol") {
8989
std::stringstream ss;
8990
ss << options.quantifiers.sygusFilterSolMode;
8991
return ss.str();
8992
}
8993
8
if (key == "sygus-grammar-cons") {
8994
std::stringstream ss;
8995
ss << options.quantifiers.sygusGrammarConsMode;
8996
return ss.str();
8997
}
8998
8
if (key == "sygus-grammar-norm") {
8999
return options.quantifiers.sygusGrammarNorm ? "true" : "false";
9000
}
9001
8
if (key == "sygus-inference") {
9002
return options.quantifiers.sygusInference ? "true" : "false";
9003
}
9004
8
if (key == "sygus-inst") {
9005
return options.quantifiers.sygusInst ? "true" : "false";
9006
}
9007
8
if (key == "sygus-inst-mode") {
9008
std::stringstream ss;
9009
ss << options.quantifiers.sygusInstMode;
9010
return ss.str();
9011
}
9012
8
if (key == "sygus-inst-scope") {
9013
std::stringstream ss;
9014
ss << options.quantifiers.sygusInstScope;
9015
return ss.str();
9016
}
9017
8
if (key == "sygus-inst-term-sel") {
9018
std::stringstream ss;
9019
ss << options.quantifiers.sygusInstTermSel;
9020
return ss.str();
9021
}
9022
8
if (key == "sygus-inv-templ-when-sg") {
9023
return options.quantifiers.sygusInvTemplWhenSyntax ? "true" : "false";
9024
}
9025
8
if (key == "sygus-inv-templ") {
9026
std::stringstream ss;
9027
ss << options.quantifiers.sygusInvTemplMode;
9028
return ss.str();
9029
}
9030
8
if (key == "sygus-min-grammar") {
9031
return options.quantifiers.sygusMinGrammar ? "true" : "false";
9032
}
9033
8
if (key == "sygus-pbe") {
9034
return options.quantifiers.sygusUnifPbe ? "true" : "false";
9035
}
9036
8
if (key == "sygus-pbe-multi-fair") {
9037
return options.quantifiers.sygusPbeMultiFair ? "true" : "false";
9038
}
9039
8
if (key == "sygus-pbe-multi-fair-diff") {
9040
return std::to_string(options.quantifiers.sygusPbeMultiFairDiff);
9041
}
9042
8
if (key == "sygus-qe-preproc") {
9043
return options.quantifiers.sygusQePreproc ? "true" : "false";
9044
}
9045
8
if (key == "sygus-query-gen") {
9046
return options.quantifiers.sygusQueryGen ? "true" : "false";
9047
}
9048
8
if (key == "sygus-query-gen-check") {
9049
return options.quantifiers.sygusQueryGenCheck ? "true" : "false";
9050
}
9051
8
if (key == "sygus-query-gen-dump-files") {
9052
std::stringstream ss;
9053
ss << options.quantifiers.sygusQueryGenDumpFiles;
9054
return ss.str();
9055
}
9056
8
if (key == "sygus-query-gen-thresh") {
9057
return std::to_string(options.quantifiers.sygusQueryGenThresh);
9058
}
9059
8
if (key == "sygus-rec-fun") {
9060
return options.quantifiers.sygusRecFun ? "true" : "false";
9061
}
9062
8
if (key == "sygus-rec-fun-eval-limit") {
9063
return std::to_string(options.quantifiers.sygusRecFunEvalLimit);
9064
}
9065
8
if (key == "sygus-repair-const") {
9066
return options.quantifiers.sygusRepairConst ? "true" : "false";
9067
}
9068
8
if (key == "sygus-repair-const-timeout") {
9069
return std::to_string(options.quantifiers.sygusRepairConstTimeout);
9070
}
9071
8
if (key == "sygus-rr") {
9072
return options.quantifiers.sygusRew ? "true" : "false";
9073
}
9074
8
if (key == "sygus-rr-synth") {
9075
return options.quantifiers.sygusRewSynth ? "true" : "false";
9076
}
9077
8
if (key == "sygus-rr-synth-accel") {
9078
return options.quantifiers.sygusRewSynthAccel ? "true" : "false";
9079
}
9080
8
if (key == "sygus-rr-synth-check") {
9081
return options.quantifiers.sygusRewSynthCheck ? "true" : "false";
9082
}
9083
8
if (key == "sygus-rr-synth-filter-cong") {
9084
return options.quantifiers.sygusRewSynthFilterCong ? "true" : "false";
9085
}
9086
8
if (key == "sygus-rr-synth-filter-match") {
9087
return options.quantifiers.sygusRewSynthFilterMatch ? "true" : "false";
9088
}
9089
8
if (key == "sygus-rr-synth-filter-nl") {
9090
return options.quantifiers.sygusRewSynthFilterNonLinear ? "true" : "false";
9091
}
9092
8
if (key == "sygus-rr-synth-filter-order") {
9093
return options.quantifiers.sygusRewSynthFilterOrder ? "true" : "false";
9094
}
9095
8
if (key == "sygus-rr-synth-input") {
9096
return options.quantifiers.sygusRewSynthInput ? "true" : "false";
9097
}
9098
8
if (key == "sygus-rr-synth-input-nvars") {
9099
return std::to_string(options.quantifiers.sygusRewSynthInputNVars);
9100
}
9101
8
if (key == "sygus-rr-synth-input-use-bool") {
9102
return options.quantifiers.sygusRewSynthInputUseBool ? "true" : "false";
9103
}
9104
8
if (key == "sygus-rr-synth-rec") {
9105
return options.quantifiers.sygusRewSynthRec ? "true" : "false";
9106
}
9107
8
if (key == "sygus-rr-verify") {
9108
return options.quantifiers.sygusRewVerify ? "true" : "false";
9109
}
9110
8
if (key == "sygus-rr-verify-abort") {
9111
return options.quantifiers.sygusRewVerifyAbort ? "true" : "false";
9112
}
9113
8
if (key == "sygus-sample-fp-uniform") {
9114
return options.quantifiers.sygusSampleFpUniform ? "true" : "false";
9115
}
9116
8
if (key == "sygus-sample-grammar") {
9117
return options.quantifiers.sygusSampleGrammar ? "true" : "false";
9118
}
9119
8
if (key == "sygus-samples") {
9120
return std::to_string(options.quantifiers.sygusSamples);
9121
}
9122
8
if (key == "sygus-si-abort") {
9123
return options.quantifiers.cegqiSingleInvAbort ? "true" : "false";
9124
}
9125
8
if (key == "sygus-si-partial") {
9126
return options.quantifiers.cegqiSingleInvPartial ? "true" : "false";
9127
}
9128
8
if (key == "sygus-si-rcons-limit") {
9129
return std::to_string(options.quantifiers.cegqiSingleInvReconstructLimit);
9130
}
9131
8
if (key == "sygus-si-rcons") {
9132
std::stringstream ss;
9133
ss << options.quantifiers.cegqiSingleInvReconstruct;
9134
return ss.str();
9135
}
9136
8
if (key == "sygus-si-reconstruct-const") {
9137
return options.quantifiers.cegqiSingleInvReconstructConst ? "true" : "false";
9138
}
9139
8
if (key == "sygus-si") {
9140
std::stringstream ss;
9141
ss << options.quantifiers.cegqiSingleInvMode;
9142
return ss.str();
9143
}
9144
8
if (key == "sygus-stream") {
9145
return options.quantifiers.sygusStream ? "true" : "false";
9146
}
9147
8
if (key == "sygus-templ-embed-grammar") {
9148
return options.quantifiers.sygusTemplEmbedGrammar ? "true" : "false";
9149
}
9150
8
if (key == "sygus-unif-cond-independent-no-repeat-sol") {
9151
return options.quantifiers.sygusUnifCondIndNoRepeatSol ? "true" : "false";
9152
}
9153
8
if (key == "sygus-unif-pi") {
9154
std::stringstream ss;
9155
ss << options.quantifiers.sygusUnifPi;
9156
return ss.str();
9157
}
9158
8
if (key == "sygus-unif-shuffle-cond") {
9159
return options.quantifiers.sygusUnifShuffleCond ? "true" : "false";
9160
}
9161
8
if (key == "sygus-verify-inst-max-rounds") {
9162
return std::to_string(options.quantifiers.sygusVerifyInstMaxRounds);
9163
}
9164
8
if (key == "term-db-cd") {
9165
return options.quantifiers.termDbCd ? "true" : "false";
9166
}
9167
8
if (key == "term-db-mode") {
9168
std::stringstream ss;
9169
ss << options.quantifiers.termDbMode;
9170
return ss.str();
9171
}
9172
8
if (key == "trigger-active-sel") {
9173
std::stringstream ss;
9174
ss << options.quantifiers.triggerActiveSelMode;
9175
return ss.str();
9176
}
9177
8
if (key == "trigger-sel") {
9178
std::stringstream ss;
9179
ss << options.quantifiers.triggerSelMode;
9180
return ss.str();
9181
}
9182
8
if (key == "user-pat") {
9183
std::stringstream ss;
9184
ss << options.quantifiers.userPatternsQuant;
9185
return ss.str();
9186
}
9187
8
if (key == "var-elim-quant") {
9188
return options.quantifiers.varElimQuant ? "true" : "false";
9189
}
9190
8
if (key == "var-ineq-elim-quant") {
9191
return options.quantifiers.varIneqElimQuant ? "true" : "false";
9192
}
9193
8
if (key == "sep-check-neg") {
9194
return options.sep.sepCheckNeg ? "true" : "false";
9195
}
9196
8
if (key == "sep-child-refine") {
9197
return options.sep.sepChildRefine ? "true" : "false";
9198
}
9199
8
if (key == "sep-deq-c") {
9200
return options.sep.sepDisequalC ? "true" : "false";
9201
}
9202
8
if (key == "sep-exp") {
9203
return options.sep.sepExp ? "true" : "false";
9204
}
9205
8
if (key == "sep-min-refine") {
9206
return options.sep.sepMinimalRefine ? "true" : "false";
9207
}
9208
8
if (key == "sep-pre-skolem-emp") {
9209
return options.sep.sepPreSkolemEmp ? "true" : "false";
9210
}
9211
8
if (key == "sets-ext") {
9212
return options.sets.setsExt ? "true" : "false";
9213
}
9214
8
if (key == "sets-infer-as-lemmas") {
9215
return options.sets.setsInferAsLemmas ? "true" : "false";
9216
}
9217
8
if (key == "sets-proxy-lemmas") {
9218
return options.sets.setsProxyLemmas ? "true" : "false";
9219
}
9220
8
if (key == "abstract-values") {
9221
return options.smt.abstractValues ? "true" : "false";
9222
}
9223
8
if (key == "ackermann") {
9224
return options.smt.ackermann ? "true" : "false";
9225
}
9226
8
if (key == "block-models") {
9227
std::stringstream ss;
9228
ss << options.smt.blockModelsMode;
9229
return ss.str();
9230
}
9231
8
if (key == "bvand-integer-granularity") {
9232
return std::to_string(options.smt.BVAndIntegerGranularity);
9233
}
9234
8
if (key == "check-abducts") {
9235
return options.smt.checkAbducts ? "true" : "false";
9236
}
9237
8
if (key == "check-interpols") {
9238
return options.smt.checkInterpols ? "true" : "false";
9239
}
9240
8
if (key == "check-models") {
9241
2
return options.smt.checkModels ? "true" : "false";
9242
}
9243
6
if (key == "check-proofs") {
9244
return options.smt.checkProofs ? "true" : "false";
9245
}
9246
6
if (key == "check-synth-sol") {
9247
return options.smt.checkSynthSol ? "true" : "false";
9248
}
9249
6
if (key == "check-unsat-cores") {
9250
return options.smt.checkUnsatCores ? "true" : "false";
9251
}
9252
6
if (key == "debug-check-models") {
9253
return options.smt.debugCheckModels ? "true" : "false";
9254
}
9255
6
if (key == "diagnostic-output-channel") {
9256
return options.smt.diagnosticChannelName;
9257
}
9258
6
if (key == "dump-to") {
9259
return options.smt.dumpToFileName;
9260
}
9261
6
if (key == "dump") {
9262
return options.smt.dumpModeString;
9263
}
9264
6
if (key == "early-ite-removal") {
9265
return options.smt.earlyIteRemoval ? "true" : "false";
9266
}
9267
6
if (key == "expand-definitions") {
9268
return options.smt.expandDefinitions ? "true" : "false";
9269
}
9270
6
if (key == "ext-rew-prep") {
9271
return options.smt.extRewPrep ? "true" : "false";
9272
}
9273
6
if (key == "ext-rew-prep-agg") {
9274
return options.smt.extRewPrepAgg ? "true" : "false";
9275
}
9276
6
if (key == "foreign-theory-rewrite") {
9277
return options.smt.foreignTheoryRewrite ? "true" : "false";
9278
}
9279
6
if (key == "iand-mode") {
9280
std::stringstream ss;
9281
ss << options.smt.iandMode;
9282
return ss.str();
9283
}
9284
6
if (key == "interactive-mode") {
9285
return options.smt.interactiveMode ? "true" : "false";
9286
}
9287
6
if (key == "ite-simp") {
9288
return options.smt.doITESimp ? "true" : "false";
9289
}
9290
6
if (key == "learned-rewrite") {
9291
return options.smt.learnedRewrite ? "true" : "false";
9292
}
9293
6
if (key == "minimal-unsat-cores") {
9294
return options.smt.minimalUnsatCores ? "true" : "false";
9295
}
9296
6
if (key == "model-cores") {
9297
std::stringstream ss;
9298
ss << options.smt.modelCoresMode;
9299
return ss.str();
9300
}
9301
6
if (key == "model-u-print" || key == "model-uninterp-print") {
9302
std::stringstream ss;
9303
ss << options.smt.modelUninterpPrint;
9304
return ss.str();
9305
}
9306
6
if (key == "model-witness-value") {
9307
return options.smt.modelWitnessValue ? "true" : "false";
9308
}
9309
6
if (key == "on-repeat-ite-simp") {
9310
return options.smt.doITESimpOnRepeat ? "true" : "false";
9311
}
9312
6
if (key == "produce-abducts") {
9313
return options.smt.produceAbducts ? "true" : "false";
9314
}
9315
6
if (key == "produce-assertions") {
9316
return options.smt.produceAssertions ? "true" : "false";
9317
}
9318
6
if (key == "produce-assignments") {
9319
return options.smt.produceAssignments ? "true" : "false";
9320
}
9321
6
if (key == "produce-interpols") {
9322
std::stringstream ss;
9323
ss << options.smt.produceInterpols;
9324
return ss.str();
9325
}
9326
6
if (key == "produce-models") {
9327
3
return options.smt.produceModels ? "true" : "false";
9328
}
9329
3
if (key == "produce-proofs") {
9330
return options.smt.produceProofs ? "true" : "false";
9331
}
9332
3
if (key == "produce-unsat-assumptions") {
9333
return options.smt.unsatAssumptions ? "true" : "false";
9334
}
9335
3
if (key == "produce-unsat-cores") {
9336
return options.smt.unsatCores ? "true" : "false";
9337
}
9338
3
if (key == "regular-output-channel") {
9339
return options.smt.regularChannelName;
9340
}
9341
3
if (key == "repeat-simp") {
9342
return options.smt.repeatSimp ? "true" : "false";
9343
}
9344
3
if (key == "simp-ite-compress") {
9345
return options.smt.compressItes ? "true" : "false";
9346
}
9347
3
if (key == "simp-ite-hunt-zombies") {
9348
return std::to_string(options.smt.zombieHuntThreshold);
9349
}
9350
3
if (key == "simp-with-care") {
9351
return options.smt.simplifyWithCareEnabled ? "true" : "false";
9352
}
9353
3
if (key == "simplification" || key == "simplification-mode") {
9354
2
std::stringstream ss;
9355
1
ss << options.smt.simplificationMode;
9356
1
return ss.str();
9357
}
9358
2
if (key == "solve-bv-as-int") {
9359
std::stringstream ss;
9360
ss << options.smt.solveBVAsInt;
9361
return ss.str();
9362
}
9363
2
if (key == "solve-int-as-bv") {
9364
return std::to_string(options.smt.solveIntAsBV);
9365
}
9366
2
if (key == "solve-real-as-int") {
9367
return options.smt.solveRealAsInt ? "true" : "false";
9368
}
9369
2
if (key == "sort-inference") {
9370
return options.smt.sortInference ? "true" : "false";
9371
}
9372
2
if (key == "static-learning") {
9373
return options.smt.doStaticLearning ? "true" : "false";
9374
}
9375
2
if (key == "sygus-out") {
9376
std::stringstream ss;
9377
ss << options.smt.sygusOut;
9378
return ss.str();
9379
}
9380
2
if (key == "sygus-print-callbacks") {
9381
return options.smt.sygusPrintCallbacks ? "true" : "false";
9382
}
9383
2
if (key == "unconstrained-simp") {
9384
return options.smt.unconstrainedSimp ? "true" : "false";
9385
}
9386
2
if (key == "unsat-cores-mode") {
9387
std::stringstream ss;
9388
ss << options.smt.unsatCoresMode;
9389
return ss.str();
9390
}
9391
2
if (key == "re-elim") {
9392
return options.strings.regExpElim ? "true" : "false";
9393
}
9394
2
if (key == "re-elim-agg") {
9395
return options.strings.regExpElimAgg ? "true" : "false";
9396
}
9397
2
if (key == "re-inter-mode") {
9398
std::stringstream ss;
9399
ss << options.strings.stringRegExpInterMode;
9400
return ss.str();
9401
}
9402
2
if (key == "strings-check-entail-len") {
9403
return options.strings.stringCheckEntailLen ? "true" : "false";
9404
}
9405
2
if (key == "strings-eager") {
9406
return options.strings.stringEager ? "true" : "false";
9407
}
9408
2
if (key == "strings-eager-eval") {
9409
return options.strings.stringEagerEval ? "true" : "false";
9410
}
9411
2
if (key == "strings-eager-len") {
9412
return options.strings.stringEagerLen ? "true" : "false";
9413
}
9414
2
if (key == "strings-exp") {
9415
return options.strings.stringExp ? "true" : "false";
9416
}
9417
2
if (key == "strings-ff") {
9418
return options.strings.stringFlatForms ? "true" : "false";
9419
}
9420
2
if (key == "strings-fmf") {
9421
return options.strings.stringFMF ? "true" : "false";
9422
}
9423
2
if (key == "strings-guess-model") {
9424
return options.strings.stringGuessModel ? "true" : "false";
9425
}
9426
2
if (key == "strings-infer-as-lemmas") {
9427
return options.strings.stringInferAsLemmas ? "true" : "false";
9428
}
9429
2
if (key == "strings-infer-sym") {
9430
return options.strings.stringInferSym ? "true" : "false";
9431
}
9432
2
if (key == "strings-lazy-pp") {
9433
return options.strings.stringLazyPreproc ? "true" : "false";
9434
}
9435
2
if (key == "strings-len-norm") {
9436
return options.strings.stringLenNorm ? "true" : "false";
9437
}
9438
2
if (key == "strings-lprop-csp") {
9439
return options.strings.stringLenPropCsp ? "true" : "false";
9440
}
9441
2
if (key == "strings-min-prefix-explain") {
9442
return options.strings.stringMinPrefixExplain ? "true" : "false";
9443
}
9444
2
if (key == "strings-process-loop-mode") {
9445
std::stringstream ss;
9446
ss << options.strings.stringProcessLoopMode;
9447
return ss.str();
9448
}
9449
2
if (key == "strings-rexplain-lemmas") {
9450
return options.strings.stringRExplainLemmas ? "true" : "false";
9451
}
9452
2
if (key == "strings-unified-vspt") {
9453
return options.strings.stringUnifiedVSpt ? "true" : "false";
9454
}
9455
2
if (key == "assign-function-values") {
9456
return options.theory.assignFunctionValues ? "true" : "false";
9457
}
9458
2
if (key == "condense-function-values") {
9459
return options.theory.condenseFunctionValues ? "true" : "false";
9460
}
9461
2
if (key == "ee-mode") {
9462
std::stringstream ss;
9463
ss << options.theory.eeMode;
9464
return ss.str();
9465
}
9466
2
if (key == "relevance-filter") {
9467
return options.theory.relevanceFilter ? "true" : "false";
9468
}
9469
2
if (key == "tc-mode") {
9470
std::stringstream ss;
9471
ss << options.theory.tcMode;
9472
return ss.str();
9473
}
9474
2
if (key == "theoryof-mode") {
9475
std::stringstream ss;
9476
ss << options.theory.theoryOfMode;
9477
return ss.str();
9478
}
9479
2
if (key == "symmetry-breaker" || key == "uf-symmetry-breaker") {
9480
return options.uf.ufSymmetryBreaker ? "true" : "false";
9481
}
9482
2
if (key == "uf-ho") {
9483
return options.uf.ufHo ? "true" : "false";
9484
}
9485
2
if (key == "uf-ho-ext") {
9486
return options.uf.ufHoExt ? "true" : "false";
9487
}
9488
2
if (key == "uf-ss-abort-card") {
9489
return std::to_string(options.uf.ufssAbortCardinality);
9490
}
9491
2
if (key == "uf-ss-fair") {
9492
return options.uf.ufssFairness ? "true" : "false";
9493
}
9494
2
if (key == "uf-ss-fair-monotone") {
9495
return options.uf.ufssFairnessMonotone ? "true" : "false";
9496
}
9497
2
if (key == "uf-ss-totality-limited") {
9498
return std::to_string(options.uf.ufssTotalityLimited);
9499
}
9500
2
if (key == "uf-ss-totality-sym-break") {
9501
return options.uf.ufssTotalitySymBreak ? "true" : "false";
9502
}
9503
2
if (key == "uf-ss") {
9504
std::stringstream ss;
9505
ss << options.uf.ufssMode;
9506
return ss.str();
9507
}
9508
9509
2
  throw UnrecognizedOptionException(key);
9510
}
9511
9512
9526
void setInternal(Options& opts, const std::string& key,
9513
                                const std::string& optionarg)
9514
                                {
9515
9526
    if (key == "approx-branch-depth") {
9516
    assign_arith_maxApproxDepth(opts, key, optionarg);
9517
    return;
9518
  }
9519
9526
  if (key == "arith-brab") {
9520
    assign_arith_brabTest(opts, key, optionarg == "true");
9521
    return;
9522
  }
9523
9526
  if (key == "arith-cong-man") {
9524
    assign_arith_arithCongMan(opts, key, optionarg == "true");
9525
    return;
9526
  }
9527
9526
  if (key == "arith-eq-solver") {
9528
    assign_arith_arithEqSolver(opts, key, optionarg == "true");
9529
    return;
9530
  }
9531
9526
  if (key == "arith-no-partial-fun") {
9532
3
    assign_arith_arithNoPartialFun(opts, key, optionarg == "true");
9533
3
    return;
9534
  }
9535
9523
  if (key == "arith-prop-clauses") {
9536
    assign_arith_arithPropAsLemmaLength(opts, key, optionarg);
9537
    return;
9538
  }
9539
9523
  if (key == "arith-prop") {
9540
    assign_arith_arithPropagationMode(opts, key, optionarg);
9541
    return;
9542
  }
9543
9523
  if (key == "arith-rewrite-equalities") {
9544
5
    assign_arith_arithRewriteEq(opts, key, optionarg == "true");
9545
5
    return;
9546
  }
9547
9518
  if (key == "collect-pivot-stats") {
9548
    assign_arith_collectPivots(opts, key, optionarg == "true");
9549
    return;
9550
  }
9551
9518
  if (key == "cut-all-bounded") {
9552
    assign_arith_doCutAllBounded(opts, key, optionarg == "true");
9553
    return;
9554
  }
9555
9518
  if (key == "dio-decomps") {
9556
    assign_arith_exportDioDecompositions(opts, key, optionarg == "true");
9557
    return;
9558
  }
9559
9518
  if (key == "dio-repeat") {
9560
    assign_arith_dioRepeat(opts, key, optionarg == "true");
9561
    return;
9562
  }
9563
9518
  if (key == "dio-solver") {
9564
    assign_arith_arithDioSolver(opts, key, optionarg == "true");
9565
    return;
9566
  }
9567
9518
  if (key == "dio-turns") {
9568
    assign_arith_dioSolverTurns(opts, key, optionarg);
9569
    return;
9570
  }
9571
9518
  if (key == "error-selection-rule") {
9572
    assign_arith_arithErrorSelectionRule(opts, key, optionarg);
9573
    return;
9574
  }
9575
9518
  if (key == "fc-penalties") {
9576
    assign_arith_havePenalties(opts, key, optionarg == "true");
9577
    return;
9578
  }
9579
9518
  if (key == "heuristic-pivots") {
9580
    assign_arith_arithHeuristicPivots(opts, key, optionarg);
9581
    return;
9582
  }
9583
9518
  if (key == "lemmas-on-replay-failure") {
9584
    assign_arith_replayFailureLemma(opts, key, optionarg == "true");
9585
    return;
9586
  }
9587
9518
  if (key == "maxCutsInContext") {
9588
    assign_arith_maxCutsInContext(opts, key, optionarg);
9589
    return;
9590
  }
9591
9518
  if (key == "miplib-trick") {
9592
    assign_arith_arithMLTrick(opts, key, optionarg == "true");
9593
    return;
9594
  }
9595
9518
  if (key == "miplib-trick-subs") {
9596
    assign_arith_arithMLTrickSubstitutions(opts, key, optionarg);
9597
    return;
9598
  }
9599
9518
  if (key == "new-prop") {
9600
    assign_arith_newProp(opts, key, optionarg == "true");
9601
    return;
9602
  }
9603
9518
  if (key == "nl-cad") {
9604
    assign_arith_nlCad(opts, key, optionarg == "true");
9605
    return;
9606
  }
9607
9518
  if (key == "nl-cad-initial") {
9608
    assign_arith_nlCadUseInitial(opts, key, optionarg == "true");
9609
    return;
9610
  }
9611
9518
  if (key == "nl-cad-lift") {
9612
    assign_arith_nlCadLifting(opts, key, optionarg);
9613
    return;
9614
  }
9615
9518
  if (key == "nl-cad-proj") {
9616
    assign_arith_nlCadProjection(opts, key, optionarg);
9617
    return;
9618
  }
9619
9518
  if (key == "nl-ext-ent-conf") {
9620
    assign_arith_nlExtEntailConflicts(opts, key, optionarg == "true");
9621
    return;
9622
  }
9623
9518
  if (key == "nl-ext-factor") {
9624
    assign_arith_nlExtFactor(opts, key, optionarg == "true");
9625
    return;
9626
  }
9627
9518
  if (key == "nl-ext-inc-prec") {
9628
    assign_arith_nlExtIncPrecision(opts, key, optionarg == "true");
9629
    return;
9630
  }
9631
9518
  if (key == "nl-ext-purify") {
9632
2
    assign_arith_nlExtPurify(opts, key, optionarg == "true");
9633
2
    return;
9634
  }
9635
9516
  if (key == "nl-ext-rbound") {
9636
    assign_arith_nlExtResBound(opts, key, optionarg == "true");
9637
    return;
9638
  }
9639
9516
  if (key == "nl-ext-rewrite") {
9640
    assign_arith_nlExtRewrites(opts, key, optionarg == "true");
9641
    return;
9642
  }
9643
9516
  if (key == "nl-ext-split-zero") {
9644
    assign_arith_nlExtSplitZero(opts, key, optionarg == "true");
9645
    return;
9646
  }
9647
9516
  if (key == "nl-ext-tf-taylor-deg") {
9648
    assign_arith_nlExtTfTaylorDegree(opts, key, optionarg);
9649
    return;
9650
  }
9651
9516
  if (key == "nl-ext-tf-tplanes") {
9652
    assign_arith_nlExtTfTangentPlanes(opts, key, optionarg == "true");
9653
    return;
9654
  }
9655
9516
  if (key == "nl-ext-tplanes") {
9656
    assign_arith_nlExtTangentPlanes(opts, key, optionarg == "true");
9657
    return;
9658
  }
9659
9516
  if (key == "nl-ext-tplanes-interleave") {
9660
    assign_arith_nlExtTangentPlanesInterleave(opts, key, optionarg == "true");
9661
    return;
9662
  }
9663
9516
  if (key == "nl-ext") {
9664
    assign_arith_nlExt(opts, key, optionarg);
9665
    return;
9666
  }
9667
9516
  if (key == "nl-icp") {
9668
    assign_arith_nlICP(opts, key, optionarg == "true");
9669
    return;
9670
  }
9671
9516
  if (key == "nl-rlv") {
9672
    assign_arith_nlRlvMode(opts, key, optionarg);
9673
    return;
9674
  }
9675
9516
  if (key == "pb-rewrites") {
9676
    assign_arith_pbRewrites(opts, key, optionarg == "true");
9677
    return;
9678
  }
9679
9516
  if (key == "pivot-threshold") {
9680
    assign_arith_arithPivotThreshold(opts, key, optionarg);
9681
    return;
9682
  }
9683
9516
  if (key == "pp-assert-max-sub-size") {
9684
    assign_arith_ppAssertMaxSubSize(opts, key, optionarg);
9685
    return;
9686
  }
9687
9516
  if (key == "prop-row-length") {
9688
    assign_arith_arithPropagateMaxLength(opts, key, optionarg);
9689
    return;
9690
  }
9691
9516
  if (key == "replay-early-close-depth") {
9692
    assign_arith_replayEarlyCloseDepths(opts, key, optionarg);
9693
    return;
9694
  }
9695
9516
  if (key == "replay-failure-penalty") {
9696
    assign_arith_replayFailurePenalty(opts, key, optionarg);
9697
    return;
9698
  }
9699
9516
  if (key == "replay-lemma-reject-cut") {
9700
    assign_arith_lemmaRejectCutSize(opts, key, optionarg);
9701
    return;
9702
  }
9703
9516
  if (key == "replay-num-err-penalty") {
9704
    assign_arith_replayNumericFailurePenalty(opts, key, optionarg);
9705
    return;
9706
  }
9707
9516
  if (key == "replay-reject-cut") {
9708
    assign_arith_replayRejectCutSize(opts, key, optionarg);
9709
    return;
9710
  }
9711
9516
  if (key == "replay-soi-major-threshold-pen") {
9712
    assign_arith_soiApproxMajorFailurePen(opts, key, optionarg);
9713
    return;
9714
  }
9715
9516
  if (key == "replay-soi-major-threshold") {
9716
    assign_arith_soiApproxMajorFailure(opts, key, optionarg);
9717
    return;
9718
  }
9719
9516
  if (key == "replay-soi-minor-threshold-pen") {
9720
    assign_arith_soiApproxMinorFailurePen(opts, key, optionarg);
9721
    return;
9722
  }
9723
9516
  if (key == "replay-soi-minor-threshold") {
9724
    assign_arith_soiApproxMinorFailure(opts, key, optionarg);
9725
    return;
9726
  }
9727
9516
  if (key == "restrict-pivots") {
9728
    assign_arith_restrictedPivots(opts, key, optionarg == "true");
9729
    return;
9730
  }
9731
9516
  if (key == "revert-arith-models-on-unsat") {
9732
    assign_arith_revertArithModels(opts, key, optionarg == "true");
9733
    return;
9734
  }
9735
9516
  if (key == "rr-turns") {
9736
    assign_arith_rrTurns(opts, key, optionarg);
9737
    return;
9738
  }
9739
9516
  if (key == "se-solve-int") {
9740
    assign_arith_trySolveIntStandardEffort(opts, key, optionarg == "true");
9741
    return;
9742
  }
9743
9516
  if (key == "simplex-check-period") {
9744
    assign_arith_arithSimplexCheckPeriod(opts, key, optionarg);
9745
    return;
9746
  }
9747
9516
  if (key == "soi-qe") {
9748
    assign_arith_soiQuickExplain(opts, key, optionarg == "true");
9749
    return;
9750
  }
9751
9516
  if (key == "standard-effort-variable-order-pivots") {
9752
    assign_arith_arithStandardCheckVarOrderPivots(opts, key, optionarg);
9753
    return;
9754
  }
9755
9516
  if (key == "unate-lemmas") {
9756
    assign_arith_arithUnateLemmaMode(opts, key, optionarg);
9757
    return;
9758
  }
9759
9516
  if (key == "use-approx") {
9760
    assign_arith_useApprox(opts, key, optionarg == "true");
9761
    return;
9762
  }
9763
9516
  if (key == "use-fcsimplex") {
9764
    assign_arith_useFC(opts, key, optionarg == "true");
9765
    return;
9766
  }
9767
9516
  if (key == "use-soi") {
9768
    assign_arith_useSOI(opts, key, optionarg == "true");
9769
    return;
9770
  }
9771
9516
  if (key == "arrays-config") {
9772
    assign_arrays_arraysConfig(opts, key, optionarg);
9773
    return;
9774
  }
9775
9516
  if (key == "arrays-eager-index") {
9776
    assign_arrays_arraysEagerIndexSplitting(opts, key, optionarg == "true");
9777
    return;
9778
  }
9779
9516
  if (key == "arrays-eager-lemmas") {
9780
    assign_arrays_arraysEagerLemmas(opts, key, optionarg == "true");
9781
    return;
9782
  }
9783
9516
  if (key == "arrays-exp") {
9784
7
    assign_arrays_arraysExp(opts, key, optionarg == "true");
9785
7
    return;
9786
  }
9787
9509
  if (key == "arrays-model-based") {
9788
    assign_arrays_arraysModelBased(opts, key, optionarg == "true");
9789
    return;
9790
  }
9791
9509
  if (key == "arrays-optimize-linear") {
9792
    assign_arrays_arraysOptimizeLinear(opts, key, optionarg == "true");
9793
    return;
9794
  }
9795
9509
  if (key == "arrays-prop") {
9796
    assign_arrays_arraysPropagate(opts, key, optionarg);
9797
    return;
9798
  }
9799
9509
  if (key == "arrays-reduce-sharing") {
9800
    assign_arrays_arraysReduceSharing(opts, key, optionarg == "true");
9801
    return;
9802
  }
9803
9509
  if (key == "arrays-weak-equiv") {
9804
    assign_arrays_arraysWeakEquivalence(opts, key, optionarg == "true");
9805
    return;
9806
  }
9807
9509
  if (key == "debug") {
9808
    opts.handler().enableDebugTag("debug", key, optionarg);
9809
    return;
9810
  }
9811
9509
  if (key == "incremental") {
9812
6609
    assign_base_incrementalSolving(opts, key, optionarg == "true");
9813
6609
    return;
9814
  }
9815
2900
  if (key == "input-language" || key == "lang") {
9816
285
    assign_base_inputLanguage(opts, key, optionarg);
9817
285
    return;
9818
  }
9819
2615
  if (key == "output-lang" || key == "output-language") {
9820
25
    assign_base_outputLanguage(opts, key, optionarg);
9821
25
    return;
9822
  }
9823
2590
  if (key == "output") {
9824
    opts.handler().enableOutputTag("output", key, optionarg);
9825
    return;
9826
  }
9827
2590
  if (key == "parse-only") {
9828
    assign_base_parseOnly(opts, key, optionarg == "true");
9829
    return;
9830
  }
9831
2590
  if (key == "preprocess-only") {
9832
    assign_base_preprocessOnly(opts, key, optionarg == "true");
9833
    return;
9834
  }
9835
2590
  if (key == "print-success") {
9836
28
    assign_base_printSuccess(opts, key, optionarg == "true");
9837
28
    return;
9838
  }
9839
2562
  if (key == "quiet") {
9840
4
    opts.handler().decreaseVerbosity("quiet", key);
9841
4
    return;
9842
  }
9843
2558
  if (key == "reproducible-resource-limit" || key == "rlimit-per") {
9844
    assign_base_perCallResourceLimit(opts, key, optionarg);
9845
    return;
9846
  }
9847
2558
  if (key == "rlimit") {
9848
    assign_base_cumulativeResourceLimit(opts, key, optionarg);
9849
    return;
9850
  }
9851
2558
  if (key == "rweight") {
9852
    opts.handler().setResourceWeight("rweight", key, optionarg);
9853
    return;
9854
  }
9855
2558
  if (key == "stats") {
9856
2
    assign_base_statistics(opts, key, optionarg == "true");
9857
2
    return;
9858
  }
9859
2556
  if (key == "stats-all") {
9860
1
    assign_base_statisticsAll(opts, key, optionarg == "true");
9861
1
    return;
9862
  }
9863
2555
  if (key == "stats-every-query") {
9864
    assign_base_statisticsEveryQuery(opts, key, optionarg == "true");
9865
    return;
9866
  }
9867
2555
  if (key == "stats-expert") {
9868
1
    assign_base_statisticsExpert(opts, key, optionarg == "true");
9869
1
    return;
9870
  }
9871
2554
  if (key == "tlimit-per") {
9872
    assign_base_perCallMillisecondLimit(opts, key, optionarg);
9873
    return;
9874
  }
9875
2554
  if (key == "tlimit") {
9876
    assign_base_cumulativeMillisecondLimit(opts, key, optionarg);
9877
    return;
9878
  }
9879
2554
  if (key == "trace") {
9880
    opts.handler().enableTraceTag("trace", key, optionarg);
9881
    return;
9882
  }
9883
2554
  if (key == "verbose") {
9884
    opts.handler().increaseVerbosity("verbose", key);
9885
    return;
9886
  }
9887
2554
  if (key == "verbosity") {
9888
6
    assign_base_verbosity(opts, key, optionarg);
9889
6
    return;
9890
  }
9891
2548
  if (key == "bitblast-aig") {
9892
    assign_bv_bitvectorAig(opts, key, optionarg == "true");
9893
    return;
9894
  }
9895
2548
  if (key == "bitblast") {
9896
2
    assign_bv_bitblastMode(opts, key, optionarg);
9897
2
    return;
9898
  }
9899
2546
  if (key == "bitwise-eq") {
9900
    assign_bv_bitwiseEq(opts, key, optionarg == "true");
9901
    return;
9902
  }
9903
2546
  if (key == "bool-to-bv") {
9904
    assign_bv_boolToBitvector(opts, key, optionarg);
9905
    return;
9906
  }
9907
2546
  if (key == "bv-abstraction") {
9908
    assign_bv_bvAbstraction(opts, key, optionarg == "true");
9909
    return;
9910
  }
9911
2546
  if (key == "bv-aig-simp") {
9912
    assign_bv_bitvectorAigSimplifications(opts, key, optionarg);
9913
    return;
9914
  }
9915
2546
  if (key == "bv-alg-extf") {
9916
    assign_bv_bvAlgExtf(opts, key, optionarg == "true");
9917
    return;
9918
  }
9919
2546
  if (key == "bv-algebraic-budget") {
9920
    assign_bv_bitvectorAlgebraicBudget(opts, key, optionarg);
9921
    return;
9922
  }
9923
2546
  if (key == "bv-algebraic-solver") {
9924
    assign_bv_bitvectorAlgebraicSolver(opts, key, optionarg == "true");
9925
    return;
9926
  }
9927
2546
  if (key == "bv-assert-input") {
9928
    assign_bv_bvAssertInput(opts, key, optionarg == "true");
9929
    return;
9930
  }
9931
2546
  if (key == "bv-eager-explanations") {
9932
    assign_bv_bvEagerExplanations(opts, key, optionarg == "true");
9933
    return;
9934
  }
9935
2546
  if (key == "bv-eq-solver") {
9936
    assign_bv_bitvectorEqualitySolver(opts, key, optionarg == "true");
9937
    return;
9938
  }
9939
2546
  if (key == "bv-extract-arith") {
9940
    assign_bv_bvExtractArithRewrite(opts, key, optionarg == "true");
9941
    return;
9942
  }
9943
2546
  if (key == "bv-gauss-elim") {
9944
    assign_bv_bvGaussElim(opts, key, optionarg == "true");
9945
    return;
9946
  }
9947
2546
  if (key == "bv-inequality-solver") {
9948
    assign_bv_bitvectorInequalitySolver(opts, key, optionarg == "true");
9949
    return;
9950
  }
9951
2546
  if (key == "bv-intro-pow2") {
9952
    assign_bv_bvIntroducePow2(opts, key, optionarg == "true");
9953
    return;
9954
  }
9955
2546
  if (key == "bv-num-func") {
9956
    assign_bv_bvNumFunc(opts, key, optionarg);
9957
    return;
9958
  }
9959
2546
  if (key == "bv-print-consts-as-indexed-symbols") {
9960
    assign_bv_bvPrintConstsAsIndexedSymbols(opts, key, optionarg == "true");
9961
    return;
9962
  }
9963
2546
  if (key == "bv-propagate") {
9964
    assign_bv_bitvectorPropagate(opts, key, optionarg == "true");
9965
    return;
9966
  }
9967
2546
  if (key == "bv-quick-xplain") {
9968
    assign_bv_bitvectorQuickXplain(opts, key, optionarg == "true");
9969
    return;
9970
  }
9971
2546
  if (key == "bv-sat-solver") {
9972
4
    assign_bv_bvSatSolver(opts, key, optionarg);
9973
2
    return;
9974
  }
9975
2542
  if (key == "bv-skolemize") {
9976
    assign_bv_skolemizeArguments(opts, key, optionarg == "true");
9977
    return;
9978
  }
9979
2542
  if (key == "bv-solver") {
9980
2
    assign_bv_bvSolver(opts, key, optionarg);
9981
2
    return;
9982
  }
9983
2540
  if (key == "bv-to-bool") {
9984
    assign_bv_bitvectorToBool(opts, key, optionarg == "true");
9985
    return;
9986
  }
9987
2540
  if (key == "cdt-bisimilar") {
9988
    assign_datatypes_cdtBisimilar(opts, key, optionarg == "true");
9989
    return;
9990
  }
9991
2540
  if (key == "dt-binary-split") {
9992
    assign_datatypes_dtBinarySplit(opts, key, optionarg == "true");
9993
    return;
9994
  }
9995
2540
  if (key == "dt-blast-splits") {
9996
    assign_datatypes_dtBlastSplits(opts, key, optionarg == "true");
9997
    return;
9998
  }
9999
2540
  if (key == "dt-cyclic") {
10000
    assign_datatypes_dtCyclic(opts, key, optionarg == "true");
10001
    return;
10002
  }
10003
2540
  if (key == "dt-force-assignment") {
10004
    assign_datatypes_dtForceAssignment(opts, key, optionarg == "true");
10005
    return;
10006
  }
10007
2540
  if (key == "dt-infer-as-lemmas") {
10008
    assign_datatypes_dtInferAsLemmas(opts, key, optionarg == "true");
10009
    return;
10010
  }
10011
2540
  if (key == "dt-nested-rec") {
10012
    assign_datatypes_dtNestedRec(opts, key, optionarg == "true");
10013
    return;
10014
  }
10015
2540
  if (key == "dt-polite-optimize") {
10016
    assign_datatypes_dtPoliteOptimize(opts, key, optionarg == "true");
10017
    return;
10018
  }
10019
2540
  if (key == "dt-rewrite-error-sel") {
10020
    assign_datatypes_dtRewriteErrorSel(opts, key, optionarg == "true");
10021
    return;
10022
  }
10023
2540
  if (key == "dt-share-sel") {
10024
    assign_datatypes_dtSharedSelectors(opts, key, optionarg == "true");
10025
    return;
10026
  }
10027
2540
  if (key == "sygus-abort-size") {
10028
    assign_datatypes_sygusAbortSize(opts, key, optionarg);
10029
    return;
10030
  }
10031
2540
  if (key == "sygus-fair-max") {
10032
    assign_datatypes_sygusFairMax(opts, key, optionarg == "true");
10033
    return;
10034
  }
10035
2540
  if (key == "sygus-fair") {
10036
    assign_datatypes_sygusFair(opts, key, optionarg);
10037
    return;
10038
  }
10039
2540
  if (key == "sygus-sym-break") {
10040
2
    assign_datatypes_sygusSymBreak(opts, key, optionarg == "true");
10041
2
    return;
10042
  }
10043
2538
  if (key == "sygus-sym-break-agg") {
10044
    assign_datatypes_sygusSymBreakAgg(opts, key, optionarg == "true");
10045
    return;
10046
  }
10047
2538
  if (key == "sygus-sym-break-dynamic") {
10048
    assign_datatypes_sygusSymBreakDynamic(opts, key, optionarg == "true");
10049
    return;
10050
  }
10051
2538
  if (key == "sygus-sym-break-lazy") {
10052
2
    assign_datatypes_sygusSymBreakLazy(opts, key, optionarg == "true");
10053
2
    return;
10054
  }
10055
2536
  if (key == "sygus-sym-break-pbe") {
10056
    assign_datatypes_sygusSymBreakPbe(opts, key, optionarg == "true");
10057
    return;
10058
  }
10059
2536
  if (key == "sygus-sym-break-rlv") {
10060
2
    assign_datatypes_sygusSymBreakRlv(opts, key, optionarg == "true");
10061
2
    return;
10062
  }
10063
2534
  if (key == "decision-random-weight") {
10064
    assign_decision_decisionRandomWeight(opts, key, optionarg);
10065
    return;
10066
  }
10067
2534
  if (key == "decision-threshold") {
10068
    assign_decision_decisionThreshold(opts, key, optionarg);
10069
    return;
10070
  }
10071
2534
  if (key == "decision-use-weight") {
10072
    assign_decision_decisionUseWeight(opts, key, optionarg == "true");
10073
    return;
10074
  }
10075
2534
  if (key == "decision-weight-internal") {
10076
    assign_decision_decisionWeightInternal(opts, key, optionarg);
10077
    return;
10078
  }
10079
2534
  if (key == "decision" || key == "decision-mode") {
10080
    assign_decision_decisionMode(opts, key, optionarg);
10081
    return;
10082
  }
10083
2534
  if (key == "jh-rlv-order") {
10084
    assign_decision_jhRlvOrder(opts, key, optionarg == "true");
10085
    return;
10086
  }
10087
2534
  if (key == "jh-skolem-rlv") {
10088
    assign_decision_jhSkolemRlvMode(opts, key, optionarg);
10089
    return;
10090
  }
10091
2534
  if (key == "jh-skolem") {
10092
    assign_decision_jhSkolemMode(opts, key, optionarg);
10093
    return;
10094
  }
10095
2534
  if (key == "dag-thresh") {
10096
1
    assign_expr_defaultDagThresh(opts, key, optionarg);
10097
1
    return;
10098
  }
10099
2533
  if (key == "expr-depth") {
10100
    assign_expr_defaultExprDepth(opts, key, optionarg);
10101
    return;
10102
  }
10103
2533
  if (key == "type-checking") {
10104
    assign_expr_typeChecking(opts, key, optionarg == "true");
10105
    return;
10106
  }
10107
2533
  if (key == "fp-exp") {
10108
    assign_fp_fpExp(opts, key, optionarg == "true");
10109
    return;
10110
  }
10111
2533
  if (key == "fp-lazy-wb") {
10112
    assign_fp_fpLazyWb(opts, key, optionarg == "true");
10113
    return;
10114
  }
10115
2533
  if (key == "copyright") {
10116
    opts.handler().copyright("copyright", key);
10117
    return;
10118
  }
10119
2533
  if (key == "dump-instantiations") {
10120
    assign_driver_dumpInstantiations(opts, key, optionarg == "true");
10121
    return;
10122
  }
10123
2533
  if (key == "dump-models") {
10124
    assign_driver_dumpModels(opts, key, optionarg == "true");
10125
    return;
10126
  }
10127
2533
  if (key == "dump-proofs") {
10128
    assign_driver_dumpProofs(opts, key, optionarg == "true");
10129
    return;
10130
  }
10131
2533
  if (key == "dump-unsat-cores") {
10132
    assign_driver_dumpUnsatCores(opts, key, optionarg == "true");
10133
    return;
10134
  }
10135
2533
  if (key == "dump-unsat-cores-full") {
10136
    assign_driver_dumpUnsatCoresFull(opts, key, optionarg == "true");
10137
    return;
10138
  }
10139
2533
  if (key == "early-exit") {
10140
    assign_driver_earlyExit(opts, key, optionarg == "true");
10141
    return;
10142
  }
10143
2533
  if (key == "force-no-limit-cpu-while-dump") {
10144
    assign_driver_forceNoLimitCpuWhileDump(opts, key, optionarg == "true");
10145
    return;
10146
  }
10147
2533
  if (key == "help") {
10148
    assign_driver_help(opts, key, optionarg == "true");
10149
    return;
10150
  }
10151
2533
  if (key == "interactive") {
10152
    assign_driver_interactive(opts, key, optionarg == "true");
10153
    return;
10154
  }
10155
2533
  if (key == "interactive-prompt") {
10156
    assign_driver_interactivePrompt(opts, key, optionarg == "true");
10157
    return;
10158
  }
10159
2533
  if (key == "seed") {
10160
    assign_driver_seed(opts, key, optionarg);
10161
    return;
10162
  }
10163
2533
  if (key == "segv-spin") {
10164
    assign_driver_segvSpin(opts, key, optionarg == "true");
10165
    return;
10166
  }
10167
2533
  if (key == "show-config") {
10168
    opts.handler().showConfiguration("show-config", key);
10169
    return;
10170
  }
10171
2533
  if (key == "show-debug-tags") {
10172
    opts.handler().showDebugTags("show-debug-tags", key);
10173
    return;
10174
  }
10175
2533
  if (key == "show-trace-tags") {
10176
    opts.handler().showTraceTags("show-trace-tags", key);
10177
    return;
10178
  }
10179
2533
  if (key == "version") {
10180
    assign_driver_version(opts, key, optionarg == "true");
10181
    return;
10182
  }
10183
2533
  if (key == "filesystem-access") {
10184
    assign_parser_filesystemAccess(opts, key, optionarg == "true");
10185
    return;
10186
  }
10187
2533
  if (key == "force-logic") {
10188
    assign_parser_forceLogicString(opts, key, optionarg);
10189
    return;
10190
  }
10191
2533
  if (key == "global-declarations") {
10192
19
    assign_parser_globalDeclarations(opts, key, optionarg == "true");
10193
19
    return;
10194
  }
10195
2514
  if (key == "mmap") {
10196
    assign_parser_memoryMap(opts, key, optionarg == "true");
10197
    return;
10198
  }
10199
2514
  if (key == "semantic-checks") {
10200
    assign_parser_semanticChecks(opts, key, optionarg == "true");
10201
    return;
10202
  }
10203
2514
  if (key == "strict-parsing") {
10204
    assign_parser_strictParsing(opts, key, optionarg == "true");
10205
    return;
10206
  }
10207
2514
  if (key == "flatten-ho-chains") {
10208
    assign_printer_flattenHOChains(opts, key, optionarg == "true");
10209
    return;
10210
  }
10211
2514
  if (key == "inst-format") {
10212
    assign_printer_instFormatMode(opts, key, optionarg);
10213
    return;
10214
  }
10215
2514
  if (key == "model-format") {
10216
    assign_printer_modelFormatMode(opts, key, optionarg);
10217
    return;
10218
  }
10219
2514
  if (key == "print-inst-full") {
10220
    assign_printer_printInstFull(opts, key, optionarg == "true");
10221
    return;
10222
  }
10223
2514
  if (key == "print-inst") {
10224
    assign_printer_printInstMode(opts, key, optionarg);
10225
    return;
10226
  }
10227
2514
  if (key == "proof-eager-checking") {
10228
    assign_proof_proofEagerChecking(opts, key, optionarg == "true");
10229
    return;
10230
  }
10231
2514
  if (key == "proof-format-mode") {
10232
    assign_proof_proofFormatMode(opts, key, optionarg);
10233
    return;
10234
  }
10235
2514
  if (key == "proof-granularity") {
10236
    assign_proof_proofGranularityMode(opts, key, optionarg);
10237
    return;
10238
  }
10239
2514
  if (key == "proof-pedantic") {
10240
    assign_proof_proofPedantic(opts, key, optionarg);
10241
    return;
10242
  }
10243
2514
  if (key == "proof-print-conclusion") {
10244
    assign_proof_proofPrintConclusion(opts, key, optionarg == "true");
10245
    return;
10246
  }
10247
2514
  if (key == "minisat-dump-dimacs") {
10248
    assign_prop_minisatDumpDimacs(opts, key, optionarg == "true");
10249
    return;
10250
  }
10251
2514
  if (key == "minisat-elimination") {
10252
    assign_prop_minisatUseElim(opts, key, optionarg == "true");
10253
    return;
10254
  }
10255
2514
  if (key == "random-freq" || key == "random-frequency") {
10256
    assign_prop_satRandomFreq(opts, key, optionarg);
10257
    return;
10258
  }
10259
2514
  if (key == "random-seed") {
10260
2
    assign_prop_satRandomSeed(opts, key, optionarg);
10261
2
    return;
10262
  }
10263
2512
  if (key == "refine-conflicts") {
10264
    assign_prop_sat_refine_conflicts(opts, key, optionarg == "true");
10265
    return;
10266
  }
10267
2512
  if (key == "restart-int-base") {
10268
    assign_prop_satRestartFirst(opts, key, optionarg);
10269
    return;
10270
  }
10271
2512
  if (key == "restart-int-inc") {
10272
    assign_prop_satRestartInc(opts, key, optionarg);
10273
    return;
10274
  }
10275
2512
  if (key == "ag-miniscope-quant") {
10276
4
    assign_quantifiers_aggressiveMiniscopeQuant(opts, key, optionarg == "true");
10277
4
    return;
10278
  }
10279
2508
  if (key == "cegis-sample") {
10280
    assign_quantifiers_cegisSample(opts, key, optionarg);
10281
    return;
10282
  }
10283
2508
  if (key == "cegqi") {
10284
    assign_quantifiers_cegqi(opts, key, optionarg == "true");
10285
    return;
10286
  }
10287
2508
  if (key == "cegqi-all") {
10288
3
    assign_quantifiers_cegqiAll(opts, key, optionarg == "true");
10289
3
    return;
10290
  }
10291
2505
  if (key == "cegqi-bv") {
10292
    assign_quantifiers_cegqiBv(opts, key, optionarg == "true");
10293
    return;
10294
  }
10295
2505
  if (key == "cegqi-bv-concat-inv") {
10296
    assign_quantifiers_cegqiBvConcInv(opts, key, optionarg == "true");
10297
    return;
10298
  }
10299
2505
  if (key == "cegqi-bv-ineq") {
10300
    assign_quantifiers_cegqiBvIneqMode(opts, key, optionarg);
10301
    return;
10302
  }
10303
2505
  if (key == "cegqi-bv-interleave-value") {
10304
    assign_quantifiers_cegqiBvInterleaveValue(opts, key, optionarg == "true");
10305
    return;
10306
  }
10307
2505
  if (key == "cegqi-bv-linear") {
10308
    assign_quantifiers_cegqiBvLinearize(opts, key, optionarg == "true");
10309
    return;
10310
  }
10311
2505
  if (key == "cegqi-bv-rm-extract") {
10312
    assign_quantifiers_cegqiBvRmExtract(opts, key, optionarg == "true");
10313
    return;
10314
  }
10315
2505
  if (key == "cegqi-bv-solve-nl") {
10316
    assign_quantifiers_cegqiBvSolveNl(opts, key, optionarg == "true");
10317
    return;
10318
  }
10319
2505
  if (key == "cegqi-full") {
10320
512
    assign_quantifiers_cegqiFullEffort(opts, key, optionarg == "true");
10321
512
    return;
10322
  }
10323
1993
  if (key == "cegqi-innermost") {
10324
    assign_quantifiers_cegqiInnermost(opts, key, optionarg == "true");
10325
    return;
10326
  }
10327
1993
  if (key == "cegqi-midpoint") {
10328
    assign_quantifiers_cegqiMidpoint(opts, key, optionarg == "true");
10329
    return;
10330
  }
10331
1993
  if (key == "cegqi-min-bounds") {
10332
    assign_quantifiers_cegqiMinBounds(opts, key, optionarg == "true");
10333
    return;
10334
  }
10335
1993
  if (key == "cegqi-model") {
10336
    assign_quantifiers_cegqiModel(opts, key, optionarg == "true");
10337
    return;
10338
  }
10339
1993
  if (key == "cegqi-multi-inst") {
10340
    assign_quantifiers_cegqiMultiInst(opts, key, optionarg == "true");
10341
    return;
10342
  }
10343
1993
  if (key == "cegqi-nested-qe") {
10344
12
    assign_quantifiers_cegqiNestedQE(opts, key, optionarg == "true");
10345
12
    return;
10346
  }
10347
1981
  if (key == "cegqi-nopt") {
10348
    assign_quantifiers_cegqiNopt(opts, key, optionarg == "true");
10349
    return;
10350
  }
10351
1981
  if (key == "cegqi-repeat-lit") {
10352
    assign_quantifiers_cegqiRepeatLit(opts, key, optionarg == "true");
10353
    return;
10354
  }
10355
1981
  if (key == "cegqi-round-up-lia") {
10356
    assign_quantifiers_cegqiRoundUpLowerLia(opts, key, optionarg == "true");
10357
    return;
10358
  }
10359
1981
  if (key == "cegqi-sat") {
10360
    assign_quantifiers_cegqiSat(opts, key, optionarg == "true");
10361
    return;
10362
  }
10363
1981
  if (key == "cegqi-use-inf-int") {
10364
3
    assign_quantifiers_cegqiUseInfInt(opts, key, optionarg == "true");
10365
3
    return;
10366
  }
10367
1978
  if (key == "cegqi-use-inf-real") {
10368
3
    assign_quantifiers_cegqiUseInfReal(opts, key, optionarg == "true");
10369
3
    return;
10370
  }
10371
1975
  if (key == "cond-var-split-agg-quant") {
10372
    assign_quantifiers_condVarSplitQuantAgg(opts, key, optionarg == "true");
10373
    return;
10374
  }
10375
1975
  if (key == "cond-var-split-quant") {
10376
    assign_quantifiers_condVarSplitQuant(opts, key, optionarg == "true");
10377
    return;
10378
  }
10379
1975
  if (key == "conjecture-filter-active-terms") {
10380
    assign_quantifiers_conjectureFilterActiveTerms(opts, key, optionarg == "true");
10381
    return;
10382
  }
10383
1975
  if (key == "conjecture-filter-canonical") {
10384
    assign_quantifiers_conjectureFilterCanonical(opts, key, optionarg == "true");
10385
    return;
10386
  }
10387
1975
  if (key == "conjecture-filter-model") {
10388
2
    assign_quantifiers_conjectureFilterModel(opts, key, optionarg == "true");
10389
2
    return;
10390
  }
10391
1973
  if (key == "conjecture-gen") {
10392
4
    assign_quantifiers_conjectureGen(opts, key, optionarg == "true");
10393
4
    return;
10394
  }
10395
1969
  if (key == "conjecture-gen-gt-enum") {
10396
    assign_quantifiers_conjectureGenGtEnum(opts, key, optionarg);
10397
    return;
10398
  }
10399
1969
  if (key == "conjecture-gen-max-depth") {
10400
    assign_quantifiers_conjectureGenMaxDepth(opts, key, optionarg);
10401
    return;
10402
  }
10403
1969
  if (key == "conjecture-gen-per-round") {
10404
    assign_quantifiers_conjectureGenPerRound(opts, key, optionarg);
10405
    return;
10406
  }
10407
1969
  if (key == "conjecture-gen-uee-intro") {
10408
    assign_quantifiers_conjectureUeeIntro(opts, key, optionarg == "true");
10409
    return;
10410
  }
10411
1969
  if (key == "conjecture-no-filter") {
10412
2
    assign_quantifiers_conjectureNoFilter(opts, key, optionarg == "true");
10413
2
    return;
10414
  }
10415
1967
  if (key == "dt-stc-ind") {
10416
    assign_quantifiers_dtStcInduction(opts, key, optionarg == "true");
10417
    return;
10418
  }
10419
1967
  if (key == "dt-var-exp-quant") {
10420
    assign_quantifiers_dtVarExpandQuant(opts, key, optionarg == "true");
10421
    return;
10422
  }
10423
1967
  if (key == "e-matching") {
10424
1
    assign_quantifiers_eMatching(opts, key, optionarg == "true");
10425
1
    return;
10426
  }
10427
1966
  if (key == "elim-taut-quant") {
10428
    assign_quantifiers_elimTautQuant(opts, key, optionarg == "true");
10429
    return;
10430
  }
10431
1966
  if (key == "ext-rewrite-quant") {
10432
2
    assign_quantifiers_extRewriteQuant(opts, key, optionarg == "true");
10433
2
    return;
10434
  }
10435
1964
  if (key == "finite-model-find") {
10436
16
    assign_quantifiers_finiteModelFind(opts, key, optionarg == "true");
10437
16
    return;
10438
  }
10439
1948
  if (key == "fmf-bound") {
10440
14
    assign_quantifiers_fmfBound(opts, key, optionarg == "true");
10441
14
    return;
10442
  }
10443
1934
  if (key == "fmf-bound-int") {
10444
6
    assign_quantifiers_fmfBoundInt(opts, key, optionarg == "true");
10445
6
    return;
10446
  }
10447
1928
  if (key == "fmf-bound-lazy") {
10448
    assign_quantifiers_fmfBoundLazy(opts, key, optionarg == "true");
10449
    return;
10450
  }
10451
1928
  if (key == "fmf-fmc-simple") {
10452
    assign_quantifiers_fmfFmcSimple(opts, key, optionarg == "true");
10453
    return;
10454
  }
10455
1928
  if (key == "fmf-fresh-dc") {
10456
    assign_quantifiers_fmfFreshDistConst(opts, key, optionarg == "true");
10457
    return;
10458
  }
10459
1928
  if (key == "fmf-fun") {
10460
14
    assign_quantifiers_fmfFunWellDefined(opts, key, optionarg == "true");
10461
14
    return;
10462
  }
10463
1914
  if (key == "fmf-fun-rlv") {
10464
    assign_quantifiers_fmfFunWellDefinedRelevant(opts, key, optionarg == "true");
10465
    return;
10466
  }
10467
1914
  if (key == "fmf-inst-engine") {
10468
    assign_quantifiers_fmfInstEngine(opts, key, optionarg == "true");
10469
    return;
10470
  }
10471
1914
  if (key == "fmf-type-completion-thresh") {
10472
    assign_quantifiers_fmfTypeCompletionThresh(opts, key, optionarg);
10473
    return;
10474
  }
10475
1914
  if (key == "fs-interleave") {
10476
    assign_quantifiers_fullSaturateInterleave(opts, key, optionarg == "true");
10477
    return;
10478
  }
10479
1914
  if (key == "fs-stratify") {
10480
    assign_quantifiers_fullSaturateStratify(opts, key, optionarg == "true");
10481
    return;
10482
  }
10483
1914
  if (key == "fs-sum") {
10484
    assign_quantifiers_fullSaturateSum(opts, key, optionarg == "true");
10485
    return;
10486
  }
10487
1914
  if (key == "full-saturate-quant") {
10488
    assign_quantifiers_fullSaturateQuant(opts, key, optionarg == "true");
10489
    return;
10490
  }
10491
1914
  if (key == "full-saturate-quant-limit") {
10492
    assign_quantifiers_fullSaturateLimit(opts, key, optionarg);
10493
    return;
10494
  }
10495
1914
  if (key == "full-saturate-quant-rd") {
10496
    assign_quantifiers_fullSaturateQuantRd(opts, key, optionarg == "true");
10497
    return;
10498
  }
10499
1914
  if (key == "global-negate") {
10500
2
    assign_quantifiers_globalNegate(opts, key, optionarg == "true");
10501
2
    return;
10502
  }
10503
1912
  if (key == "ho-elim") {
10504
    assign_quantifiers_hoElim(opts, key, optionarg == "true");
10505
    return;
10506
  }
10507
1912
  if (key == "ho-elim-store-ax") {
10508
    assign_quantifiers_hoElimStoreAx(opts, key, optionarg == "true");
10509
    return;
10510
  }
10511
1912
  if (key == "ho-matching") {
10512
    assign_quantifiers_hoMatching(opts, key, optionarg == "true");
10513
    return;
10514
  }
10515
1912
  if (key == "ho-matching-var-priority") {
10516
    assign_quantifiers_hoMatchingVarArgPriority(opts, key, optionarg == "true");
10517
    return;
10518
  }
10519
1912
  if (key == "ho-merge-term-db") {
10520
    assign_quantifiers_hoMergeTermDb(opts, key, optionarg == "true");
10521
    return;
10522
  }
10523
1912
  if (key == "increment-triggers") {
10524
    assign_quantifiers_incrementTriggers(opts, key, optionarg == "true");
10525
    return;
10526
  }
10527
1912
  if (key == "inst-level-input-only") {
10528
    assign_quantifiers_instLevelInputOnly(opts, key, optionarg == "true");
10529
    return;
10530
  }
10531
1912
  if (key == "inst-max-level") {
10532
    assign_quantifiers_instMaxLevel(opts, key, optionarg);
10533
    return;
10534
  }
10535
1912
  if (key == "inst-max-rounds") {
10536
    assign_quantifiers_instMaxRounds(opts, key, optionarg);
10537
    return;
10538
  }
10539
1912
  if (key == "inst-no-entail") {
10540
    assign_quantifiers_instNoEntail(opts, key, optionarg == "true");
10541
    return;
10542
  }
10543
1912
  if (key == "inst-when-phase") {
10544
    assign_quantifiers_instWhenPhase(opts, key, optionarg);
10545
    return;
10546
  }
10547
1912
  if (key == "inst-when-strict-interleave") {
10548
    assign_quantifiers_instWhenStrictInterleave(opts, key, optionarg == "true");
10549
    return;
10550
  }
10551
1912
  if (key == "inst-when-tc-first") {
10552
    assign_quantifiers_instWhenTcFirst(opts, key, optionarg == "true");
10553
    return;
10554
  }
10555
1912
  if (key == "inst-when") {
10556
    assign_quantifiers_instWhenMode(opts, key, optionarg);
10557
    return;
10558
  }
10559
1912
  if (key == "int-wf-ind") {
10560
2
    assign_quantifiers_intWfInduction(opts, key, optionarg == "true");
10561
2
    return;
10562
  }
10563
1910
  if (key == "ite-dtt-split-quant") {
10564
    assign_quantifiers_iteDtTesterSplitQuant(opts, key, optionarg == "true");
10565
    return;
10566
  }
10567
1910
  if (key == "ite-lift-quant") {
10568
    assign_quantifiers_iteLiftQuant(opts, key, optionarg);
10569
    return;
10570
  }
10571
1910
  if (key == "literal-matching") {
10572
    assign_quantifiers_literalMatchMode(opts, key, optionarg);
10573
    return;
10574
  }
10575
1910
  if (key == "macros-quant") {
10576
    assign_quantifiers_macrosQuant(opts, key, optionarg == "true");
10577
    return;
10578
  }
10579
1910
  if (key == "macros-quant-mode") {
10580
    assign_quantifiers_macrosQuantMode(opts, key, optionarg);
10581
    return;
10582
  }
10583
1910
  if (key == "mbqi-interleave") {
10584
    assign_quantifiers_mbqiInterleave(opts, key, optionarg == "true");
10585
    return;
10586
  }
10587
1910
  if (key == "mbqi-one-inst-per-round") {
10588
    assign_quantifiers_fmfOneInstPerRound(opts, key, optionarg == "true");
10589
    return;
10590
  }
10591
1910
  if (key == "mbqi") {
10592
    assign_quantifiers_mbqiMode(opts, key, optionarg);
10593
    return;
10594
  }
10595
1910
  if (key == "miniscope-quant") {
10596
116
    assign_quantifiers_miniscopeQuant(opts, key, optionarg == "true");
10597
116
    return;
10598
  }
10599
1794
  if (key == "miniscope-quant-fv") {
10600
114
    assign_quantifiers_miniscopeQuantFreeVar(opts, key, optionarg == "true");
10601
114
    return;
10602
  }
10603
1680
  if (key == "multi-trigger-cache") {
10604
    assign_quantifiers_multiTriggerCache(opts, key, optionarg == "true");
10605
    return;
10606
  }
10607
1680
  if (key == "multi-trigger-linear") {
10608
    assign_quantifiers_multiTriggerLinear(opts, key, optionarg == "true");
10609
    return;
10610
  }
10611
1680
  if (key == "multi-trigger-priority") {
10612
    assign_quantifiers_multiTriggerPriority(opts, key, optionarg == "true");
10613
    return;
10614
  }
10615
1680
  if (key == "multi-trigger-when-single") {
10616
    assign_quantifiers_multiTriggerWhenSingle(opts, key, optionarg == "true");
10617
    return;
10618
  }
10619
1680
  if (key == "partial-triggers") {
10620
    assign_quantifiers_partialTriggers(opts, key, optionarg == "true");
10621
    return;
10622
  }
10623
1680
  if (key == "pool-inst") {
10624
    assign_quantifiers_poolInst(opts, key, optionarg == "true");
10625
    return;
10626
  }
10627
1680
  if (key == "pre-skolem-quant") {
10628
2
    assign_quantifiers_preSkolemQuant(opts, key, optionarg == "true");
10629
2
    return;
10630
  }
10631
1678
  if (key == "pre-skolem-quant-agg") {
10632
    assign_quantifiers_preSkolemQuantAgg(opts, key, optionarg == "true");
10633
    return;
10634
  }
10635
1678
  if (key == "pre-skolem-quant-nested") {
10636
2
    assign_quantifiers_preSkolemQuantNested(opts, key, optionarg == "true");
10637
2
    return;
10638
  }
10639
1676
  if (key == "prenex-quant-user") {
10640
    assign_quantifiers_prenexQuantUser(opts, key, optionarg == "true");
10641
    return;
10642
  }
10643
1676
  if (key == "prenex-quant") {
10644
    assign_quantifiers_prenexQuant(opts, key, optionarg);
10645
    return;
10646
  }
10647
1676
  if (key == "purify-triggers") {
10648
    assign_quantifiers_purifyTriggers(opts, key, optionarg == "true");
10649
    return;
10650
  }
10651
1676
  if (key == "qcf-all-conflict") {
10652
    assign_quantifiers_qcfAllConflict(opts, key, optionarg == "true");
10653
    return;
10654
  }
10655
1676
  if (key == "qcf-eager-check-rd") {
10656
    assign_quantifiers_qcfEagerCheckRd(opts, key, optionarg == "true");
10657
    return;
10658
  }
10659
1676
  if (key == "qcf-eager-test") {
10660
    assign_quantifiers_qcfEagerTest(opts, key, optionarg == "true");
10661
    return;
10662
  }
10663
1676
  if (key == "qcf-nested-conflict") {
10664
    assign_quantifiers_qcfNestedConflict(opts, key, optionarg == "true");
10665
    return;
10666
  }
10667
1676
  if (key == "qcf-skip-rd") {
10668
    assign_quantifiers_qcfSkipRd(opts, key, optionarg == "true");
10669
    return;
10670
  }
10671
1676
  if (key == "qcf-tconstraint") {
10672
    assign_quantifiers_qcfTConstraint(opts, key, optionarg == "true");
10673
    return;
10674
  }
10675
1676
  if (key == "qcf-vo-exp") {
10676
    assign_quantifiers_qcfVoExp(opts, key, optionarg == "true");
10677
    return;
10678
  }
10679
1676
  if (key == "quant-alpha-equiv") {
10680
    assign_quantifiers_quantAlphaEquiv(opts, key, optionarg == "true");
10681
    return;
10682
  }
10683
1676
  if (key == "quant-cf") {
10684
    assign_quantifiers_quantConflictFind(opts, key, optionarg == "true");
10685
    return;
10686
  }
10687
1676
  if (key == "quant-cf-mode") {
10688
    assign_quantifiers_qcfMode(opts, key, optionarg);
10689
    return;
10690
  }
10691
1676
  if (key == "quant-cf-when") {
10692
    assign_quantifiers_qcfWhenMode(opts, key, optionarg);
10693
    return;
10694
  }
10695
1676
  if (key == "quant-dsplit-mode") {
10696
    assign_quantifiers_quantDynamicSplit(opts, key, optionarg);
10697
    return;
10698
  }
10699
1676
  if (key == "quant-fun-wd") {
10700
    assign_quantifiers_quantFunWellDefined(opts, key, optionarg == "true");
10701
    return;
10702
  }
10703
1676
  if (key == "quant-ind") {
10704
2
    assign_quantifiers_quantInduction(opts, key, optionarg == "true");
10705
2
    return;
10706
  }
10707
1674
  if (key == "quant-rep-mode") {
10708
    assign_quantifiers_quantRepMode(opts, key, optionarg);
10709
    return;
10710
  }
10711
1674
  if (key == "quant-split") {
10712
114
    assign_quantifiers_quantSplit(opts, key, optionarg == "true");
10713
114
    return;
10714
  }
10715
1560
  if (key == "register-quant-body-terms") {
10716
    assign_quantifiers_registerQuantBodyTerms(opts, key, optionarg == "true");
10717
    return;
10718
  }
10719
1560
  if (key == "relational-triggers") {
10720
    assign_quantifiers_relationalTriggers(opts, key, optionarg == "true");
10721
    return;
10722
  }
10723
1560
  if (key == "relevant-triggers") {
10724
    assign_quantifiers_relevantTriggers(opts, key, optionarg == "true");
10725
    return;
10726
  }
10727
1560
  if (key == "strict-triggers") {
10728
    assign_quantifiers_strictTriggers(opts, key, optionarg == "true");
10729
    return;
10730
  }
10731
1560
  if (key == "sygus") {
10732
    assign_quantifiers_sygus(opts, key, optionarg == "true");
10733
    return;
10734
  }
10735
1560
  if (key == "sygus-active-gen-cfactor") {
10736
    assign_quantifiers_sygusActiveGenEnumConsts(opts, key, optionarg);
10737
    return;
10738
  }
10739
1560
  if (key == "sygus-active-gen") {
10740
1
    assign_quantifiers_sygusActiveGenMode(opts, key, optionarg);
10741
1
    return;
10742
  }
10743
1559
  if (key == "sygus-add-const-grammar") {
10744
    assign_quantifiers_sygusAddConstGrammar(opts, key, optionarg == "true");
10745
    return;
10746
  }
10747
1559
  if (key == "sygus-arg-relevant") {
10748
    assign_quantifiers_sygusArgRelevant(opts, key, optionarg == "true");
10749
    return;
10750
  }
10751
1559
  if (key == "sygus-auto-unfold") {
10752
    assign_quantifiers_sygusInvAutoUnfold(opts, key, optionarg == "true");
10753
    return;
10754
  }
10755
1559
  if (key == "sygus-bool-ite-return-const") {
10756
    assign_quantifiers_sygusBoolIteReturnConst(opts, key, optionarg == "true");
10757
    return;
10758
  }
10759
1559
  if (key == "sygus-core-connective") {
10760
    assign_quantifiers_sygusCoreConnective(opts, key, optionarg == "true");
10761
    return;
10762
  }
10763
1559
  if (key == "sygus-crepair-abort") {
10764
    assign_quantifiers_sygusConstRepairAbort(opts, key, optionarg == "true");
10765
    return;
10766
  }
10767
1559
  if (key == "sygus-eval-opt") {
10768
    assign_quantifiers_sygusEvalOpt(opts, key, optionarg == "true");
10769
    return;
10770
  }
10771
1559
  if (key == "sygus-eval-unfold") {
10772
    assign_quantifiers_sygusEvalUnfold(opts, key, optionarg == "true");
10773
    return;
10774
  }
10775
1559
  if (key == "sygus-eval-unfold-bool") {
10776
    assign_quantifiers_sygusEvalUnfoldBool(opts, key, optionarg == "true");
10777
    return;
10778
  }
10779
1559
  if (key == "sygus-expr-miner-check-timeout") {
10780
    assign_quantifiers_sygusExprMinerCheckTimeout(opts, key, optionarg);
10781
    return;
10782
  }
10783
1559
  if (key == "sygus-ext-rew") {
10784
2
    assign_quantifiers_sygusExtRew(opts, key, optionarg == "true");
10785
2
    return;
10786
  }
10787
1557
  if (key == "sygus-filter-sol-rev") {
10788
    assign_quantifiers_sygusFilterSolRevSubsume(opts, key, optionarg == "true");
10789
    return;
10790
  }
10791
1557
  if (key == "sygus-filter-sol") {
10792
    assign_quantifiers_sygusFilterSolMode(opts, key, optionarg);
10793
    return;
10794
  }
10795
1557
  if (key == "sygus-grammar-cons") {
10796
    assign_quantifiers_sygusGrammarConsMode(opts, key, optionarg);
10797
    return;
10798
  }
10799
1557
  if (key == "sygus-grammar-norm") {
10800
    assign_quantifiers_sygusGrammarNorm(opts, key, optionarg == "true");
10801
    return;
10802
  }
10803
1557
  if (key == "sygus-inference") {
10804
14
    assign_quantifiers_sygusInference(opts, key, optionarg == "true");
10805
14
    return;
10806
  }
10807
1543
  if (key == "sygus-inst") {
10808
4
    assign_quantifiers_sygusInst(opts, key, optionarg == "true");
10809
4
    return;
10810
  }
10811
1539
  if (key == "sygus-inst-mode") {
10812
    assign_quantifiers_sygusInstMode(opts, key, optionarg);
10813
    return;
10814
  }
10815
1539
  if (key == "sygus-inst-scope") {
10816
    assign_quantifiers_sygusInstScope(opts, key, optionarg);
10817
    return;
10818
  }
10819
1539
  if (key == "sygus-inst-term-sel") {
10820
    assign_quantifiers_sygusInstTermSel(opts, key, optionarg);
10821
    return;
10822
  }
10823
1539
  if (key == "sygus-inv-templ-when-sg") {
10824
    assign_quantifiers_sygusInvTemplWhenSyntax(opts, key, optionarg == "true");
10825
    return;
10826
  }
10827
1539
  if (key == "sygus-inv-templ") {
10828
    assign_quantifiers_sygusInvTemplMode(opts, key, optionarg);
10829
    return;
10830
  }
10831
1539
  if (key == "sygus-min-grammar") {
10832
    assign_quantifiers_sygusMinGrammar(opts, key, optionarg == "true");
10833
    return;
10834
  }
10835
1539
  if (key == "sygus-pbe") {
10836
    assign_quantifiers_sygusUnifPbe(opts, key, optionarg == "true");
10837
    return;
10838
  }
10839
1539
  if (key == "sygus-pbe-multi-fair") {
10840
    assign_quantifiers_sygusPbeMultiFair(opts, key, optionarg == "true");
10841
    return;
10842
  }
10843
1539
  if (key == "sygus-pbe-multi-fair-diff") {
10844
    assign_quantifiers_sygusPbeMultiFairDiff(opts, key, optionarg);
10845
    return;
10846
  }
10847
1539
  if (key == "sygus-qe-preproc") {
10848
    assign_quantifiers_sygusQePreproc(opts, key, optionarg == "true");
10849
    return;
10850
  }
10851
1539
  if (key == "sygus-query-gen") {
10852
    assign_quantifiers_sygusQueryGen(opts, key, optionarg == "true");
10853
    return;
10854
  }
10855
1539
  if (key == "sygus-query-gen-check") {
10856
    assign_quantifiers_sygusQueryGenCheck(opts, key, optionarg == "true");
10857
    return;
10858
  }
10859
1539
  if (key == "sygus-query-gen-dump-files") {
10860
    assign_quantifiers_sygusQueryGenDumpFiles(opts, key, optionarg);
10861
    return;
10862
  }
10863
1539
  if (key == "sygus-query-gen-thresh") {
10864
    assign_quantifiers_sygusQueryGenThresh(opts, key, optionarg);
10865
    return;
10866
  }
10867
1539
  if (key == "sygus-rec-fun") {
10868
2
    assign_quantifiers_sygusRecFun(opts, key, optionarg == "true");
10869
2
    return;
10870
  }
10871
1537
  if (key == "sygus-rec-fun-eval-limit") {
10872
    assign_quantifiers_sygusRecFunEvalLimit(opts, key, optionarg);
10873
    return;
10874
  }
10875
1537
  if (key == "sygus-repair-const") {
10876
    assign_quantifiers_sygusRepairConst(opts, key, optionarg == "true");
10877
    return;
10878
  }
10879
1537
  if (key == "sygus-repair-const-timeout") {
10880
    assign_quantifiers_sygusRepairConstTimeout(opts, key, optionarg);
10881
    return;
10882
  }
10883
1537
  if (key == "sygus-rr") {
10884
    assign_quantifiers_sygusRew(opts, key, optionarg == "true");
10885
    return;
10886
  }
10887
1537
  if (key == "sygus-rr-synth") {
10888
    assign_quantifiers_sygusRewSynth(opts, key, optionarg == "true");
10889
    return;
10890
  }
10891
1537
  if (key == "sygus-rr-synth-accel") {
10892
    assign_quantifiers_sygusRewSynthAccel(opts, key, optionarg == "true");
10893
    return;
10894
  }
10895
1537
  if (key == "sygus-rr-synth-check") {
10896
2
    assign_quantifiers_sygusRewSynthCheck(opts, key, optionarg == "true");
10897
2
    return;
10898
  }
10899
1535
  if (key == "sygus-rr-synth-filter-cong") {
10900
    assign_quantifiers_sygusRewSynthFilterCong(opts, key, optionarg == "true");
10901
    return;
10902
  }
10903
1535
  if (key == "sygus-rr-synth-filter-match") {
10904
    assign_quantifiers_sygusRewSynthFilterMatch(opts, key, optionarg == "true");
10905
    return;
10906
  }
10907
1535
  if (key == "sygus-rr-synth-filter-nl") {
10908
    assign_quantifiers_sygusRewSynthFilterNonLinear(opts, key, optionarg == "true");
10909
    return;
10910
  }
10911
1535
  if (key == "sygus-rr-synth-filter-order") {
10912
    assign_quantifiers_sygusRewSynthFilterOrder(opts, key, optionarg == "true");
10913
    return;
10914
  }
10915
1535
  if (key == "sygus-rr-synth-input") {
10916
256
    assign_quantifiers_sygusRewSynthInput(opts, key, optionarg == "true");
10917
256
    return;
10918
  }
10919
1279
  if (key == "sygus-rr-synth-input-nvars") {
10920
    assign_quantifiers_sygusRewSynthInputNVars(opts, key, optionarg);
10921
    return;
10922
  }
10923
1279
  if (key == "sygus-rr-synth-input-use-bool") {
10924
    assign_quantifiers_sygusRewSynthInputUseBool(opts, key, optionarg == "true");
10925
    return;
10926
  }
10927
1279
  if (key == "sygus-rr-synth-rec") {
10928
    assign_quantifiers_sygusRewSynthRec(opts, key, optionarg == "true");
10929
    return;
10930
  }
10931
1279
  if (key == "sygus-rr-verify") {
10932
    assign_quantifiers_sygusRewVerify(opts, key, optionarg == "true");
10933
    return;
10934
  }
10935
1279
  if (key == "sygus-rr-verify-abort") {
10936
    assign_quantifiers_sygusRewVerifyAbort(opts, key, optionarg == "true");
10937
    return;
10938
  }
10939
1279
  if (key == "sygus-sample-fp-uniform") {
10940
    assign_quantifiers_sygusSampleFpUniform(opts, key, optionarg == "true");
10941
    return;
10942
  }
10943
1279
  if (key == "sygus-sample-grammar") {
10944
    assign_quantifiers_sygusSampleGrammar(opts, key, optionarg == "true");
10945
    return;
10946
  }
10947
1279
  if (key == "sygus-samples") {
10948
    assign_quantifiers_sygusSamples(opts, key, optionarg);
10949
    return;
10950
  }
10951
1279
  if (key == "sygus-si-abort") {
10952
    assign_quantifiers_cegqiSingleInvAbort(opts, key, optionarg == "true");
10953
    return;
10954
  }
10955
1279
  if (key == "sygus-si-partial") {
10956
    assign_quantifiers_cegqiSingleInvPartial(opts, key, optionarg == "true");
10957
    return;
10958
  }
10959
1279
  if (key == "sygus-si-rcons-limit") {
10960
    assign_quantifiers_cegqiSingleInvReconstructLimit(opts, key, optionarg);
10961
    return;
10962
  }
10963
1279
  if (key == "sygus-si-rcons") {
10964
    assign_quantifiers_cegqiSingleInvReconstruct(opts, key, optionarg);
10965
    return;
10966
  }
10967
1279
  if (key == "sygus-si-reconstruct-const") {
10968
    assign_quantifiers_cegqiSingleInvReconstructConst(opts, key, optionarg == "true");
10969
    return;
10970
  }
10971
1279
  if (key == "sygus-si") {
10972
    assign_quantifiers_cegqiSingleInvMode(opts, key, optionarg);
10973
    return;
10974
  }
10975
1279
  if (key == "sygus-stream") {
10976
    assign_quantifiers_sygusStream(opts, key, optionarg == "true");
10977
    return;
10978
  }
10979
1279
  if (key == "sygus-templ-embed-grammar") {
10980
    assign_quantifiers_sygusTemplEmbedGrammar(opts, key, optionarg == "true");
10981
    return;
10982
  }
10983
1279
  if (key == "sygus-unif-cond-independent-no-repeat-sol") {
10984
    assign_quantifiers_sygusUnifCondIndNoRepeatSol(opts, key, optionarg == "true");
10985
    return;
10986
  }
10987
1279
  if (key == "sygus-unif-pi") {
10988
    assign_quantifiers_sygusUnifPi(opts, key, optionarg);
10989
    return;
10990
  }
10991
1279
  if (key == "sygus-unif-shuffle-cond") {
10992
    assign_quantifiers_sygusUnifShuffleCond(opts, key, optionarg == "true");
10993
    return;
10994
  }
10995
1279
  if (key == "sygus-verify-inst-max-rounds") {
10996
    assign_quantifiers_sygusVerifyInstMaxRounds(opts, key, optionarg);
10997
    return;
10998
  }
10999
1279
  if (key == "term-db-cd") {
11000
    assign_quantifiers_termDbCd(opts, key, optionarg == "true");
11001
    return;
11002
  }
11003
1279
  if (key == "term-db-mode") {
11004
    assign_quantifiers_termDbMode(opts, key, optionarg);
11005
    return;
11006
  }
11007
1279
  if (key == "trigger-active-sel") {
11008
    assign_quantifiers_triggerActiveSelMode(opts, key, optionarg);
11009
    return;
11010
  }
11011
1279
  if (key == "trigger-sel") {
11012
    assign_quantifiers_triggerSelMode(opts, key, optionarg);
11013
    return;
11014
  }
11015
1279
  if (key == "user-pat") {
11016
    assign_quantifiers_userPatternsQuant(opts, key, optionarg);
11017
    return;
11018
  }
11019
1279
  if (key == "var-elim-quant") {
11020
    assign_quantifiers_varElimQuant(opts, key, optionarg == "true");
11021
    return;
11022
  }
11023
1279
  if (key == "var-ineq-elim-quant") {
11024
5
    assign_quantifiers_varIneqElimQuant(opts, key, optionarg == "true");
11025
5
    return;
11026
  }
11027
1274
  if (key == "sep-check-neg") {
11028
    assign_sep_sepCheckNeg(opts, key, optionarg == "true");
11029
    return;
11030
  }
11031
1274
  if (key == "sep-child-refine") {
11032
    assign_sep_sepChildRefine(opts, key, optionarg == "true");
11033
    return;
11034
  }
11035
1274
  if (key == "sep-deq-c") {
11036
    assign_sep_sepDisequalC(opts, key, optionarg == "true");
11037
    return;
11038
  }
11039
1274
  if (key == "sep-exp") {
11040
    assign_sep_sepExp(opts, key, optionarg == "true");
11041
    return;
11042
  }
11043
1274
  if (key == "sep-min-refine") {
11044
    assign_sep_sepMinimalRefine(opts, key, optionarg == "true");
11045
    return;
11046
  }
11047
1274
  if (key == "sep-pre-skolem-emp") {
11048
    assign_sep_sepPreSkolemEmp(opts, key, optionarg == "true");
11049
    return;
11050
  }
11051
1274
  if (key == "sets-ext") {
11052
84
    assign_sets_setsExt(opts, key, optionarg == "true");
11053
84
    return;
11054
  }
11055
1190
  if (key == "sets-infer-as-lemmas") {
11056
    assign_sets_setsInferAsLemmas(opts, key, optionarg == "true");
11057
    return;
11058
  }
11059
1190
  if (key == "sets-proxy-lemmas") {
11060
    assign_sets_setsProxyLemmas(opts, key, optionarg == "true");
11061
    return;
11062
  }
11063
1190
  if (key == "abstract-values") {
11064
    assign_smt_abstractValues(opts, key, optionarg == "true");
11065
    return;
11066
  }
11067
1190
  if (key == "ackermann") {
11068
    assign_smt_ackermann(opts, key, optionarg == "true");
11069
    return;
11070
  }
11071
1190
  if (key == "block-models") {
11072
14
    assign_smt_blockModelsMode(opts, key, optionarg);
11073
14
    return;
11074
  }
11075
1176
  if (key == "bvand-integer-granularity") {
11076
    assign_smt_BVAndIntegerGranularity(opts, key, optionarg);
11077
    return;
11078
  }
11079
1176
  if (key == "check-abducts") {
11080
    assign_smt_checkAbducts(opts, key, optionarg == "true");
11081
    return;
11082
  }
11083
1176
  if (key == "check-interpols") {
11084
    assign_smt_checkInterpols(opts, key, optionarg == "true");
11085
    return;
11086
  }
11087
1176
  if (key == "check-models") {
11088
9
    assign_smt_checkModels(opts, key, optionarg == "true");
11089
9
    return;
11090
  }
11091
1167
  if (key == "check-proofs") {
11092
    assign_smt_checkProofs(opts, key, optionarg == "true");
11093
    return;
11094
  }
11095
1167
  if (key == "check-synth-sol") {
11096
    assign_smt_checkSynthSol(opts, key, optionarg == "true");
11097
    return;
11098
  }
11099
1167
  if (key == "check-unsat-cores") {
11100
8
    assign_smt_checkUnsatCores(opts, key, optionarg == "true");
11101
8
    return;
11102
  }
11103
1159
  if (key == "debug-check-models") {
11104
    assign_smt_debugCheckModels(opts, key, optionarg == "true");
11105
    return;
11106
  }
11107
1159
  if (key == "diagnostic-output-channel") {
11108
    assign_smt_diagnosticChannelName(opts, key, optionarg);
11109
    return;
11110
  }
11111
1159
  if (key == "dump-to") {
11112
    assign_smt_dumpToFileName(opts, key, optionarg);
11113
    return;
11114
  }
11115
1159
  if (key == "dump") {
11116
    assign_smt_dumpModeString(opts, key, optionarg);
11117
    return;
11118
  }
11119
1159
  if (key == "early-ite-removal") {
11120
    assign_smt_earlyIteRemoval(opts, key, optionarg == "true");
11121
    return;
11122
  }
11123
1159
  if (key == "expand-definitions") {
11124
    assign_smt_expandDefinitions(opts, key, optionarg == "true");
11125
    return;
11126
  }
11127
1159
  if (key == "ext-rew-prep") {
11128
2
    assign_smt_extRewPrep(opts, key, optionarg == "true");
11129
2
    return;
11130
  }
11131
1157
  if (key == "ext-rew-prep-agg") {
11132
    assign_smt_extRewPrepAgg(opts, key, optionarg == "true");
11133
    return;
11134
  }
11135
1157
  if (key == "foreign-theory-rewrite") {
11136
    assign_smt_foreignTheoryRewrite(opts, key, optionarg == "true");
11137
    return;
11138
  }
11139
1157
  if (key == "iand-mode") {
11140
    assign_smt_iandMode(opts, key, optionarg);
11141
    return;
11142
  }
11143
1157
  if (key == "interactive-mode") {
11144
2
    assign_smt_interactiveMode(opts, key, optionarg == "true");
11145
2
    return;
11146
  }
11147
1155
  if (key == "ite-simp") {
11148
3
    assign_smt_doITESimp(opts, key, optionarg == "true");
11149
3
    return;
11150
  }
11151
1152
  if (key == "learned-rewrite") {
11152
    assign_smt_learnedRewrite(opts, key, optionarg == "true");
11153
    return;
11154
  }
11155
1152
  if (key == "minimal-unsat-cores") {
11156
    assign_smt_minimalUnsatCores(opts, key, optionarg == "true");
11157
    return;
11158
  }
11159
1152
  if (key == "model-cores") {
11160
    assign_smt_modelCoresMode(opts, key, optionarg);
11161
    return;
11162
  }
11163
1152
  if (key == "model-u-print" || key == "model-uninterp-print") {
11164
    assign_smt_modelUninterpPrint(opts, key, optionarg);
11165
    return;
11166
  }
11167
1152
  if (key == "model-witness-value") {
11168
    assign_smt_modelWitnessValue(opts, key, optionarg == "true");
11169
    return;
11170
  }
11171
1152
  if (key == "on-repeat-ite-simp") {
11172
    assign_smt_doITESimpOnRepeat(opts, key, optionarg == "true");
11173
    return;
11174
  }
11175
1152
  if (key == "produce-abducts") {
11176
9
    assign_smt_produceAbducts(opts, key, optionarg == "true");
11177
9
    return;
11178
  }
11179
1143
  if (key == "produce-assertions") {
11180
26
    assign_smt_produceAssertions(opts, key, optionarg == "true");
11181
26
    return;
11182
  }
11183
1117
  if (key == "produce-assignments") {
11184
4
    assign_smt_produceAssignments(opts, key, optionarg == "true");
11185
4
    return;
11186
  }
11187
1113
  if (key == "produce-interpols") {
11188
3
    assign_smt_produceInterpols(opts, key, optionarg);
11189
3
    return;
11190
  }
11191
1110
  if (key == "produce-models") {
11192
759
    assign_smt_produceModels(opts, key, optionarg == "true");
11193
759
    return;
11194
  }
11195
351
  if (key == "produce-proofs") {
11196
4
    assign_smt_produceProofs(opts, key, optionarg == "true");
11197
4
    return;
11198
  }
11199
347
  if (key == "produce-unsat-assumptions") {
11200
15
    assign_smt_unsatAssumptions(opts, key, optionarg == "true");
11201
15
    return;
11202
  }
11203
332
  if (key == "produce-unsat-cores") {
11204
15
    assign_smt_unsatCores(opts, key, optionarg == "true");
11205
15
    return;
11206
  }
11207
317
  if (key == "regular-output-channel") {
11208
    assign_smt_regularChannelName(opts, key, optionarg);
11209
    return;
11210
  }
11211
317
  if (key == "repeat-simp") {
11212
2
    assign_smt_repeatSimp(opts, key, optionarg == "true");
11213
2
    return;
11214
  }
11215
315
  if (key == "simp-ite-compress") {
11216
3
    assign_smt_compressItes(opts, key, optionarg == "true");
11217
3
    return;
11218
  }
11219
312
  if (key == "simp-ite-hunt-zombies") {
11220
    assign_smt_zombieHuntThreshold(opts, key, optionarg);
11221
    return;
11222
  }
11223
312
  if (key == "simp-with-care") {
11224
    assign_smt_simplifyWithCareEnabled(opts, key, optionarg == "true");
11225
    return;
11226
  }
11227
312
  if (key == "simplification" || key == "simplification-mode") {
11228
1
    assign_smt_simplificationMode(opts, key, optionarg);
11229
1
    return;
11230
  }
11231
311
  if (key == "solve-bv-as-int") {
11232
14
    assign_smt_solveBVAsInt(opts, key, optionarg);
11233
14
    return;
11234
  }
11235
297
  if (key == "solve-int-as-bv") {
11236
4
    assign_smt_solveIntAsBV(opts, key, optionarg);
11237
4
    return;
11238
  }
11239
293
  if (key == "solve-real-as-int") {
11240
    assign_smt_solveRealAsInt(opts, key, optionarg == "true");
11241
    return;
11242
  }
11243
293
  if (key == "sort-inference") {
11244
6
    assign_smt_sortInference(opts, key, optionarg == "true");
11245
6
    return;
11246
  }
11247
287
  if (key == "static-learning") {
11248
    assign_smt_doStaticLearning(opts, key, optionarg == "true");
11249
    return;
11250
  }
11251
287
  if (key == "sygus-out") {
11252
    assign_smt_sygusOut(opts, key, optionarg);
11253
    return;
11254
  }
11255
287
  if (key == "sygus-print-callbacks") {
11256
    assign_smt_sygusPrintCallbacks(opts, key, optionarg == "true");
11257
    return;
11258
  }
11259
287
  if (key == "unconstrained-simp") {
11260
    assign_smt_unconstrainedSimp(opts, key, optionarg == "true");
11261
    return;
11262
  }
11263
287
  if (key == "unsat-cores-mode") {
11264
    assign_smt_unsatCoresMode(opts, key, optionarg);
11265
    return;
11266
  }
11267
287
  if (key == "re-elim") {
11268
16
    assign_strings_regExpElim(opts, key, optionarg == "true");
11269
16
    return;
11270
  }
11271
271
  if (key == "re-elim-agg") {
11272
8
    assign_strings_regExpElimAgg(opts, key, optionarg == "true");
11273
8
    return;
11274
  }
11275
263
  if (key == "re-inter-mode") {
11276
    assign_strings_stringRegExpInterMode(opts, key, optionarg);
11277
    return;
11278
  }
11279
263
  if (key == "strings-check-entail-len") {
11280
    assign_strings_stringCheckEntailLen(opts, key, optionarg == "true");
11281
    return;
11282
  }
11283
263
  if (key == "strings-eager") {
11284
    assign_strings_stringEager(opts, key, optionarg == "true");
11285
    return;
11286
  }
11287
263
  if (key == "strings-eager-eval") {
11288
    assign_strings_stringEagerEval(opts, key, optionarg == "true");
11289
    return;
11290
  }
11291
263
  if (key == "strings-eager-len") {
11292
    assign_strings_stringEagerLen(opts, key, optionarg == "true");
11293
    return;
11294
  }
11295
263
  if (key == "strings-exp") {
11296
224
    assign_strings_stringExp(opts, key, optionarg == "true");
11297
224
    return;
11298
  }
11299
39
  if (key == "strings-ff") {
11300
    assign_strings_stringFlatForms(opts, key, optionarg == "true");
11301
    return;
11302
  }
11303
39
  if (key == "strings-fmf") {
11304
26
    assign_strings_stringFMF(opts, key, optionarg == "true");
11305
26
    return;
11306
  }
11307
13
  if (key == "strings-guess-model") {
11308
    assign_strings_stringGuessModel(opts, key, optionarg == "true");
11309
    return;
11310
  }
11311
13
  if (key == "strings-infer-as-lemmas") {
11312
    assign_strings_stringInferAsLemmas(opts, key, optionarg == "true");
11313
    return;
11314
  }
11315
13
  if (key == "strings-infer-sym") {
11316
    assign_strings_stringInferSym(opts, key, optionarg == "true");
11317
    return;
11318
  }
11319
13
  if (key == "strings-lazy-pp") {
11320
11
    assign_strings_stringLazyPreproc(opts, key, optionarg == "true");
11321
11
    return;
11322
  }
11323
2
  if (key == "strings-len-norm") {
11324
    assign_strings_stringLenNorm(opts, key, optionarg == "true");
11325
    return;
11326
  }
11327
2
  if (key == "strings-lprop-csp") {
11328
    assign_strings_stringLenPropCsp(opts, key, optionarg == "true");
11329
    return;
11330
  }
11331
2
  if (key == "strings-min-prefix-explain") {
11332
    assign_strings_stringMinPrefixExplain(opts, key, optionarg == "true");
11333
    return;
11334
  }
11335
2
  if (key == "strings-process-loop-mode") {
11336
    assign_strings_stringProcessLoopMode(opts, key, optionarg);
11337
    return;
11338
  }
11339
2
  if (key == "strings-rexplain-lemmas") {
11340
    assign_strings_stringRExplainLemmas(opts, key, optionarg == "true");
11341
    return;
11342
  }
11343
2
  if (key == "strings-unified-vspt") {
11344
    assign_strings_stringUnifiedVSpt(opts, key, optionarg == "true");
11345
    return;
11346
  }
11347
2
  if (key == "assign-function-values") {
11348
2
    assign_theory_assignFunctionValues(opts, key, optionarg == "true");
11349
2
    return;
11350
  }
11351
  if (key == "condense-function-values") {
11352
    assign_theory_condenseFunctionValues(opts, key, optionarg == "true");
11353
    return;
11354
  }
11355
  if (key == "ee-mode") {
11356
    assign_theory_eeMode(opts, key, optionarg);
11357
    return;
11358
  }
11359
  if (key == "relevance-filter") {
11360
    assign_theory_relevanceFilter(opts, key, optionarg == "true");
11361
    return;
11362
  }
11363
  if (key == "tc-mode") {
11364
    assign_theory_tcMode(opts, key, optionarg);
11365
    return;
11366
  }
11367
  if (key == "theoryof-mode") {
11368
    assign_theory_theoryOfMode(opts, key, optionarg);
11369
    return;
11370
  }
11371
  if (key == "symmetry-breaker" || key == "uf-symmetry-breaker") {
11372
    assign_uf_ufSymmetryBreaker(opts, key, optionarg == "true");
11373
    return;
11374
  }
11375
  if (key == "uf-ho") {
11376
    assign_uf_ufHo(opts, key, optionarg == "true");
11377
    return;
11378
  }
11379
  if (key == "uf-ho-ext") {
11380
    assign_uf_ufHoExt(opts, key, optionarg == "true");
11381
    return;
11382
  }
11383
  if (key == "uf-ss-abort-card") {
11384
    assign_uf_ufssAbortCardinality(opts, key, optionarg);
11385
    return;
11386
  }
11387
  if (key == "uf-ss-fair") {
11388
    assign_uf_ufssFairness(opts, key, optionarg == "true");
11389
    return;
11390
  }
11391
  if (key == "uf-ss-fair-monotone") {
11392
    assign_uf_ufssFairnessMonotone(opts, key, optionarg == "true");
11393
    return;
11394
  }
11395
  if (key == "uf-ss-totality-limited") {
11396
    assign_uf_ufssTotalityLimited(opts, key, optionarg);
11397
    return;
11398
  }
11399
  if (key == "uf-ss-totality-sym-break") {
11400
    assign_uf_ufssTotalitySymBreak(opts, key, optionarg == "true");
11401
    return;
11402
  }
11403
  if (key == "uf-ss") {
11404
    assign_uf_ufssMode(opts, key, optionarg);
11405
    return;
11406
  }
11407
  throw UnrecognizedOptionException(key);
11408
}
11409
11410
9526
void set(Options& opts, const std::string& key, const std::string& optionarg)
11411
{
11412
11413
19052
  Trace("options") << "setOption(" << key << ", " << optionarg << ")"
11414
9526
                   << std::endl;
11415
  // first update this object
11416
9526
  setInternal(opts, key, optionarg);
11417
  // then, notify the provided listener
11418
9524
  opts.notifyListener(key);
11419
9524
}
11420
11421
std::vector<std::vector<std::string> > getAll(const Options& opts)
11422
{
11423
  std::vector<std::vector<std::string>> res;
11424
11425
res.push_back({"approx-branch-depth", std::to_string(opts.arith.maxApproxDepth)});
11426
  res.push_back({"arith-brab", opts.arith.brabTest ? "true" : "false"});
11427
  res.push_back({"arith-cong-man", opts.arith.arithCongMan ? "true" : "false"});
11428
  res.push_back({"arith-eq-solver", opts.arith.arithEqSolver ? "true" : "false"});
11429
  res.push_back({"arith-no-partial-fun", opts.arith.arithNoPartialFun ? "true" : "false"});
11430
  res.push_back({"arith-prop-clauses", std::to_string(opts.arith.arithPropAsLemmaLength)});
11431
  { std::stringstream ss; ss << opts.arith.arithPropagationMode; res.push_back({"arith-prop", ss.str()}); }
11432
  res.push_back({"arith-rewrite-equalities", opts.arith.arithRewriteEq ? "true" : "false"});
11433
  res.push_back({"collect-pivot-stats", opts.arith.collectPivots ? "true" : "false"});
11434
  res.push_back({"cut-all-bounded", opts.arith.doCutAllBounded ? "true" : "false"});
11435
  res.push_back({"dio-decomps", opts.arith.exportDioDecompositions ? "true" : "false"});
11436
  res.push_back({"dio-repeat", opts.arith.dioRepeat ? "true" : "false"});
11437
  res.push_back({"dio-solver", opts.arith.arithDioSolver ? "true" : "false"});
11438
  res.push_back({"dio-turns", std::to_string(opts.arith.dioSolverTurns)});
11439
  { std::stringstream ss; ss << opts.arith.arithErrorSelectionRule; res.push_back({"error-selection-rule", ss.str()}); }
11440
  res.push_back({"fc-penalties", opts.arith.havePenalties ? "true" : "false"});
11441
  res.push_back({"heuristic-pivots", std::to_string(opts.arith.arithHeuristicPivots)});
11442
  res.push_back({"lemmas-on-replay-failure", opts.arith.replayFailureLemma ? "true" : "false"});
11443
  res.push_back({"maxCutsInContext", std::to_string(opts.arith.maxCutsInContext)});
11444
  res.push_back({"miplib-trick", opts.arith.arithMLTrick ? "true" : "false"});
11445
  res.push_back({"miplib-trick-subs", std::to_string(opts.arith.arithMLTrickSubstitutions)});
11446
  res.push_back({"new-prop", opts.arith.newProp ? "true" : "false"});
11447
  res.push_back({"nl-cad", opts.arith.nlCad ? "true" : "false"});
11448
  res.push_back({"nl-cad-initial", opts.arith.nlCadUseInitial ? "true" : "false"});
11449
  { std::stringstream ss; ss << opts.arith.nlCadLifting; res.push_back({"nl-cad-lift", ss.str()}); }
11450
  { std::stringstream ss; ss << opts.arith.nlCadProjection; res.push_back({"nl-cad-proj", ss.str()}); }
11451
  res.push_back({"nl-ext-ent-conf", opts.arith.nlExtEntailConflicts ? "true" : "false"});
11452
  res.push_back({"nl-ext-factor", opts.arith.nlExtFactor ? "true" : "false"});
11453
  res.push_back({"nl-ext-inc-prec", opts.arith.nlExtIncPrecision ? "true" : "false"});
11454
  res.push_back({"nl-ext-purify", opts.arith.nlExtPurify ? "true" : "false"});
11455
  res.push_back({"nl-ext-rbound", opts.arith.nlExtResBound ? "true" : "false"});
11456
  res.push_back({"nl-ext-rewrite", opts.arith.nlExtRewrites ? "true" : "false"});
11457
  res.push_back({"nl-ext-split-zero", opts.arith.nlExtSplitZero ? "true" : "false"});
11458
  res.push_back({"nl-ext-tf-taylor-deg", std::to_string(opts.arith.nlExtTfTaylorDegree)});
11459
  res.push_back({"nl-ext-tf-tplanes", opts.arith.nlExtTfTangentPlanes ? "true" : "false"});
11460
  res.push_back({"nl-ext-tplanes", opts.arith.nlExtTangentPlanes ? "true" : "false"});
11461
  res.push_back({"nl-ext-tplanes-interleave", opts.arith.nlExtTangentPlanesInterleave ? "true" : "false"});
11462
  { std::stringstream ss; ss << opts.arith.nlExt; res.push_back({"nl-ext", ss.str()}); }
11463
  res.push_back({"nl-icp", opts.arith.nlICP ? "true" : "false"});
11464
  { std::stringstream ss; ss << opts.arith.nlRlvMode; res.push_back({"nl-rlv", ss.str()}); }
11465
  res.push_back({"pb-rewrites", opts.arith.pbRewrites ? "true" : "false"});
11466
  res.push_back({"pivot-threshold", std::to_string(opts.arith.arithPivotThreshold)});
11467
  res.push_back({"pp-assert-max-sub-size", std::to_string(opts.arith.ppAssertMaxSubSize)});
11468
  res.push_back({"prop-row-length", std::to_string(opts.arith.arithPropagateMaxLength)});
11469
  res.push_back({"replay-early-close-depth", std::to_string(opts.arith.replayEarlyCloseDepths)});
11470
  res.push_back({"replay-failure-penalty", std::to_string(opts.arith.replayFailurePenalty)});
11471
  res.push_back({"replay-lemma-reject-cut", std::to_string(opts.arith.lemmaRejectCutSize)});
11472
  res.push_back({"replay-num-err-penalty", std::to_string(opts.arith.replayNumericFailurePenalty)});
11473
  res.push_back({"replay-reject-cut", std::to_string(opts.arith.replayRejectCutSize)});
11474
  res.push_back({"replay-soi-major-threshold-pen", std::to_string(opts.arith.soiApproxMajorFailurePen)});
11475
  res.push_back({"replay-soi-major-threshold", std::to_string(opts.arith.soiApproxMajorFailure)});
11476
  res.push_back({"replay-soi-minor-threshold-pen", std::to_string(opts.arith.soiApproxMinorFailurePen)});
11477
  res.push_back({"replay-soi-minor-threshold", std::to_string(opts.arith.soiApproxMinorFailure)});
11478
  res.push_back({"restrict-pivots", opts.arith.restrictedPivots ? "true" : "false"});
11479
  res.push_back({"revert-arith-models-on-unsat", opts.arith.revertArithModels ? "true" : "false"});
11480
  res.push_back({"rr-turns", std::to_string(opts.arith.rrTurns)});
11481
  res.push_back({"se-solve-int", opts.arith.trySolveIntStandardEffort ? "true" : "false"});
11482
  res.push_back({"simplex-check-period", std::to_string(opts.arith.arithSimplexCheckPeriod)});
11483
  res.push_back({"soi-qe", opts.arith.soiQuickExplain ? "true" : "false"});
11484
  res.push_back({"standard-effort-variable-order-pivots", std::to_string(opts.arith.arithStandardCheckVarOrderPivots)});
11485
  { std::stringstream ss; ss << opts.arith.arithUnateLemmaMode; res.push_back({"unate-lemmas", ss.str()}); }
11486
  res.push_back({"use-approx", opts.arith.useApprox ? "true" : "false"});
11487
  res.push_back({"use-fcsimplex", opts.arith.useFC ? "true" : "false"});
11488
  res.push_back({"use-soi", opts.arith.useSOI ? "true" : "false"});
11489
  res.push_back({"arrays-config", std::to_string(opts.arrays.arraysConfig)});
11490
  res.push_back({"arrays-eager-index", opts.arrays.arraysEagerIndexSplitting ? "true" : "false"});
11491
  res.push_back({"arrays-eager-lemmas", opts.arrays.arraysEagerLemmas ? "true" : "false"});
11492
  res.push_back({"arrays-exp", opts.arrays.arraysExp ? "true" : "false"});
11493
  res.push_back({"arrays-model-based", opts.arrays.arraysModelBased ? "true" : "false"});
11494
  res.push_back({"arrays-optimize-linear", opts.arrays.arraysOptimizeLinear ? "true" : "false"});
11495
  res.push_back({"arrays-prop", std::to_string(opts.arrays.arraysPropagate)});
11496
  res.push_back({"arrays-reduce-sharing", opts.arrays.arraysReduceSharing ? "true" : "false"});
11497
  res.push_back({"arrays-weak-equiv", opts.arrays.arraysWeakEquivalence ? "true" : "false"});
11498
  res.push_back({"incremental", opts.base.incrementalSolving ? "true" : "false"});
11499
  { std::stringstream ss; ss << opts.base.inputLanguage; res.push_back({"lang", ss.str()}); }
11500
  { std::stringstream ss; ss << opts.base.outputLanguage; res.push_back({"output-lang", ss.str()}); }
11501
  { std::stringstream ss; ss << opts.base.outputTag; res.push_back({"output", ss.str()}); }
11502
  res.push_back({"parse-only", opts.base.parseOnly ? "true" : "false"});
11503
  res.push_back({"preprocess-only", opts.base.preprocessOnly ? "true" : "false"});
11504
  res.push_back({"print-success", opts.base.printSuccess ? "true" : "false"});
11505
  res.push_back({"rlimit-per", std::to_string(opts.base.perCallResourceLimit)});
11506
  res.push_back({"rlimit", std::to_string(opts.base.cumulativeResourceLimit)});
11507
  res.push_back({"stats", opts.base.statistics ? "true" : "false"});
11508
  res.push_back({"stats-all", opts.base.statisticsAll ? "true" : "false"});
11509
  res.push_back({"stats-every-query", opts.base.statisticsEveryQuery ? "true" : "false"});
11510
  res.push_back({"stats-expert", opts.base.statisticsExpert ? "true" : "false"});
11511
  res.push_back({"tlimit-per", std::to_string(opts.base.perCallMillisecondLimit)});
11512
  res.push_back({"tlimit", std::to_string(opts.base.cumulativeMillisecondLimit)});
11513
  res.push_back({"verbosity", std::to_string(opts.base.verbosity)});
11514
  res.push_back({"bitblast-aig", opts.bv.bitvectorAig ? "true" : "false"});
11515
  { std::stringstream ss; ss << opts.bv.bitblastMode; res.push_back({"bitblast", ss.str()}); }
11516
  res.push_back({"bitwise-eq", opts.bv.bitwiseEq ? "true" : "false"});
11517
  { std::stringstream ss; ss << opts.bv.boolToBitvector; res.push_back({"bool-to-bv", ss.str()}); }
11518
  res.push_back({"bv-abstraction", opts.bv.bvAbstraction ? "true" : "false"});
11519
  { std::stringstream ss; ss << opts.bv.bitvectorAigSimplifications; res.push_back({"bv-aig-simp", ss.str()}); }
11520
  res.push_back({"bv-alg-extf", opts.bv.bvAlgExtf ? "true" : "false"});
11521
  res.push_back({"bv-algebraic-budget", std::to_string(opts.bv.bitvectorAlgebraicBudget)});
11522
  res.push_back({"bv-algebraic-solver", opts.bv.bitvectorAlgebraicSolver ? "true" : "false"});
11523
  res.push_back({"bv-assert-input", opts.bv.bvAssertInput ? "true" : "false"});
11524
  res.push_back({"bv-eager-explanations", opts.bv.bvEagerExplanations ? "true" : "false"});
11525
  res.push_back({"bv-eq-solver", opts.bv.bitvectorEqualitySolver ? "true" : "false"});
11526
  res.push_back({"bv-extract-arith", opts.bv.bvExtractArithRewrite ? "true" : "false"});
11527
  res.push_back({"bv-gauss-elim", opts.bv.bvGaussElim ? "true" : "false"});
11528
  res.push_back({"bv-inequality-solver", opts.bv.bitvectorInequalitySolver ? "true" : "false"});
11529
  res.push_back({"bv-intro-pow2", opts.bv.bvIntroducePow2 ? "true" : "false"});
11530
  res.push_back({"bv-num-func", std::to_string(opts.bv.bvNumFunc)});
11531
  res.push_back({"bv-print-consts-as-indexed-symbols", opts.bv.bvPrintConstsAsIndexedSymbols ? "true" : "false"});
11532
  res.push_back({"bv-propagate", opts.bv.bitvectorPropagate ? "true" : "false"});
11533
  res.push_back({"bv-quick-xplain", opts.bv.bitvectorQuickXplain ? "true" : "false"});
11534
  { std::stringstream ss; ss << opts.bv.bvSatSolver; res.push_back({"bv-sat-solver", ss.str()}); }
11535
  res.push_back({"bv-skolemize", opts.bv.skolemizeArguments ? "true" : "false"});
11536
  { std::stringstream ss; ss << opts.bv.bvSolver; res.push_back({"bv-solver", ss.str()}); }
11537
  res.push_back({"bv-to-bool", opts.bv.bitvectorToBool ? "true" : "false"});
11538
  res.push_back({"cdt-bisimilar", opts.datatypes.cdtBisimilar ? "true" : "false"});
11539
  res.push_back({"dt-binary-split", opts.datatypes.dtBinarySplit ? "true" : "false"});
11540
  res.push_back({"dt-blast-splits", opts.datatypes.dtBlastSplits ? "true" : "false"});
11541
  res.push_back({"dt-cyclic", opts.datatypes.dtCyclic ? "true" : "false"});
11542
  res.push_back({"dt-force-assignment", opts.datatypes.dtForceAssignment ? "true" : "false"});
11543
  res.push_back({"dt-infer-as-lemmas", opts.datatypes.dtInferAsLemmas ? "true" : "false"});
11544
  res.push_back({"dt-nested-rec", opts.datatypes.dtNestedRec ? "true" : "false"});
11545
  res.push_back({"dt-polite-optimize", opts.datatypes.dtPoliteOptimize ? "true" : "false"});
11546
  res.push_back({"dt-rewrite-error-sel", opts.datatypes.dtRewriteErrorSel ? "true" : "false"});
11547
  res.push_back({"dt-share-sel", opts.datatypes.dtSharedSelectors ? "true" : "false"});
11548
  res.push_back({"sygus-abort-size", std::to_string(opts.datatypes.sygusAbortSize)});
11549
  res.push_back({"sygus-fair-max", opts.datatypes.sygusFairMax ? "true" : "false"});
11550
  { std::stringstream ss; ss << opts.datatypes.sygusFair; res.push_back({"sygus-fair", ss.str()}); }
11551
  res.push_back({"sygus-sym-break", opts.datatypes.sygusSymBreak ? "true" : "false"});
11552
  res.push_back({"sygus-sym-break-agg", opts.datatypes.sygusSymBreakAgg ? "true" : "false"});
11553
  res.push_back({"sygus-sym-break-dynamic", opts.datatypes.sygusSymBreakDynamic ? "true" : "false"});
11554
  res.push_back({"sygus-sym-break-lazy", opts.datatypes.sygusSymBreakLazy ? "true" : "false"});
11555
  res.push_back({"sygus-sym-break-pbe", opts.datatypes.sygusSymBreakPbe ? "true" : "false"});
11556
  res.push_back({"sygus-sym-break-rlv", opts.datatypes.sygusSymBreakRlv ? "true" : "false"});
11557
  res.push_back({"decision-random-weight", std::to_string(opts.decision.decisionRandomWeight)});
11558
  { std::stringstream ss; ss << opts.decision.decisionThreshold; res.push_back({"decision-threshold", ss.str()}); }
11559
  res.push_back({"decision-use-weight", opts.decision.decisionUseWeight ? "true" : "false"});
11560
  { std::stringstream ss; ss << opts.decision.decisionWeightInternal; res.push_back({"decision-weight-internal", ss.str()}); }
11561
  { std::stringstream ss; ss << opts.decision.decisionMode; res.push_back({"decision", ss.str()}); }
11562
  res.push_back({"jh-rlv-order", opts.decision.jhRlvOrder ? "true" : "false"});
11563
  { std::stringstream ss; ss << opts.decision.jhSkolemRlvMode; res.push_back({"jh-skolem-rlv", ss.str()}); }
11564
  { std::stringstream ss; ss << opts.decision.jhSkolemMode; res.push_back({"jh-skolem", ss.str()}); }
11565
  res.push_back({"dag-thresh", std::to_string(opts.expr.defaultDagThresh)});
11566
  res.push_back({"expr-depth", std::to_string(opts.expr.defaultExprDepth)});
11567
  res.push_back({"type-checking", opts.expr.typeChecking ? "true" : "false"});
11568
  res.push_back({"fp-exp", opts.fp.fpExp ? "true" : "false"});
11569
  res.push_back({"fp-lazy-wb", opts.fp.fpLazyWb ? "true" : "false"});
11570
  res.push_back({"dump-instantiations", opts.driver.dumpInstantiations ? "true" : "false"});
11571
  res.push_back({"dump-models", opts.driver.dumpModels ? "true" : "false"});
11572
  res.push_back({"dump-proofs", opts.driver.dumpProofs ? "true" : "false"});
11573
  res.push_back({"dump-unsat-cores", opts.driver.dumpUnsatCores ? "true" : "false"});
11574
  res.push_back({"dump-unsat-cores-full", opts.driver.dumpUnsatCoresFull ? "true" : "false"});
11575
  res.push_back({"early-exit", opts.driver.earlyExit ? "true" : "false"});
11576
  res.push_back({"force-no-limit-cpu-while-dump", opts.driver.forceNoLimitCpuWhileDump ? "true" : "false"});
11577
  res.push_back({"help", opts.driver.help ? "true" : "false"});
11578
  res.push_back({"interactive", opts.driver.interactive ? "true" : "false"});
11579
  res.push_back({"interactive-prompt", opts.driver.interactivePrompt ? "true" : "false"});
11580
  res.push_back({"seed", std::to_string(opts.driver.seed)});
11581
  res.push_back({"segv-spin", opts.driver.segvSpin ? "true" : "false"});
11582
  res.push_back({"version", opts.driver.version ? "true" : "false"});
11583
  res.push_back({"filesystem-access", opts.parser.filesystemAccess ? "true" : "false"});
11584
  { std::stringstream ss; ss << opts.parser.forceLogicString; res.push_back({"force-logic", ss.str()}); }
11585
  res.push_back({"global-declarations", opts.parser.globalDeclarations ? "true" : "false"});
11586
  res.push_back({"mmap", opts.parser.memoryMap ? "true" : "false"});
11587
  res.push_back({"semantic-checks", opts.parser.semanticChecks ? "true" : "false"});
11588
  res.push_back({"strict-parsing", opts.parser.strictParsing ? "true" : "false"});
11589
  res.push_back({"flatten-ho-chains", opts.printer.flattenHOChains ? "true" : "false"});
11590
  { std::stringstream ss; ss << opts.printer.instFormatMode; res.push_back({"inst-format", ss.str()}); }
11591
  { std::stringstream ss; ss << opts.printer.modelFormatMode; res.push_back({"model-format", ss.str()}); }
11592
  res.push_back({"print-inst-full", opts.printer.printInstFull ? "true" : "false"});
11593
  { std::stringstream ss; ss << opts.printer.printInstMode; res.push_back({"print-inst", ss.str()}); }
11594
  res.push_back({"proof-eager-checking", opts.proof.proofEagerChecking ? "true" : "false"});
11595
  { std::stringstream ss; ss << opts.proof.proofFormatMode; res.push_back({"proof-format-mode", ss.str()}); }
11596
  { std::stringstream ss; ss << opts.proof.proofGranularityMode; res.push_back({"proof-granularity", ss.str()}); }
11597
  res.push_back({"proof-pedantic", std::to_string(opts.proof.proofPedantic)});
11598
  res.push_back({"proof-print-conclusion", opts.proof.proofPrintConclusion ? "true" : "false"});
11599
  res.push_back({"minisat-dump-dimacs", opts.prop.minisatDumpDimacs ? "true" : "false"});
11600
  res.push_back({"minisat-elimination", opts.prop.minisatUseElim ? "true" : "false"});
11601
  res.push_back({"random-freq", std::to_string(opts.prop.satRandomFreq)});
11602
  res.push_back({"random-seed", std::to_string(opts.prop.satRandomSeed)});
11603
  res.push_back({"refine-conflicts", opts.prop.sat_refine_conflicts ? "true" : "false"});
11604
  res.push_back({"restart-int-base", std::to_string(opts.prop.satRestartFirst)});
11605
  res.push_back({"restart-int-inc", std::to_string(opts.prop.satRestartInc)});
11606
  res.push_back({"ag-miniscope-quant", opts.quantifiers.aggressiveMiniscopeQuant ? "true" : "false"});
11607
  { std::stringstream ss; ss << opts.quantifiers.cegisSample; res.push_back({"cegis-sample", ss.str()}); }
11608
  res.push_back({"cegqi", opts.quantifiers.cegqi ? "true" : "false"});
11609
  res.push_back({"cegqi-all", opts.quantifiers.cegqiAll ? "true" : "false"});
11610
  res.push_back({"cegqi-bv", opts.quantifiers.cegqiBv ? "true" : "false"});
11611
  res.push_back({"cegqi-bv-concat-inv", opts.quantifiers.cegqiBvConcInv ? "true" : "false"});
11612
  { std::stringstream ss; ss << opts.quantifiers.cegqiBvIneqMode; res.push_back({"cegqi-bv-ineq", ss.str()}); }
11613
  res.push_back({"cegqi-bv-interleave-value", opts.quantifiers.cegqiBvInterleaveValue ? "true" : "false"});
11614
  res.push_back({"cegqi-bv-linear", opts.quantifiers.cegqiBvLinearize ? "true" : "false"});
11615
  res.push_back({"cegqi-bv-rm-extract", opts.quantifiers.cegqiBvRmExtract ? "true" : "false"});
11616
  res.push_back({"cegqi-bv-solve-nl", opts.quantifiers.cegqiBvSolveNl ? "true" : "false"});
11617
  res.push_back({"cegqi-full", opts.quantifiers.cegqiFullEffort ? "true" : "false"});
11618
  res.push_back({"cegqi-innermost", opts.quantifiers.cegqiInnermost ? "true" : "false"});
11619
  res.push_back({"cegqi-midpoint", opts.quantifiers.cegqiMidpoint ? "true" : "false"});
11620
  res.push_back({"cegqi-min-bounds", opts.quantifiers.cegqiMinBounds ? "true" : "false"});
11621
  res.push_back({"cegqi-model", opts.quantifiers.cegqiModel ? "true" : "false"});
11622
  res.push_back({"cegqi-multi-inst", opts.quantifiers.cegqiMultiInst ? "true" : "false"});
11623
  res.push_back({"cegqi-nested-qe", opts.quantifiers.cegqiNestedQE ? "true" : "false"});
11624
  res.push_back({"cegqi-nopt", opts.quantifiers.cegqiNopt ? "true" : "false"});
11625
  res.push_back({"cegqi-repeat-lit", opts.quantifiers.cegqiRepeatLit ? "true" : "false"});
11626
  res.push_back({"cegqi-round-up-lia", opts.quantifiers.cegqiRoundUpLowerLia ? "true" : "false"});
11627
  res.push_back({"cegqi-sat", opts.quantifiers.cegqiSat ? "true" : "false"});
11628
  res.push_back({"cegqi-use-inf-int", opts.quantifiers.cegqiUseInfInt ? "true" : "false"});
11629
  res.push_back({"cegqi-use-inf-real", opts.quantifiers.cegqiUseInfReal ? "true" : "false"});
11630
  res.push_back({"cond-var-split-agg-quant", opts.quantifiers.condVarSplitQuantAgg ? "true" : "false"});
11631
  res.push_back({"cond-var-split-quant", opts.quantifiers.condVarSplitQuant ? "true" : "false"});
11632
  res.push_back({"conjecture-filter-active-terms", opts.quantifiers.conjectureFilterActiveTerms ? "true" : "false"});
11633
  res.push_back({"conjecture-filter-canonical", opts.quantifiers.conjectureFilterCanonical ? "true" : "false"});
11634
  res.push_back({"conjecture-filter-model", opts.quantifiers.conjectureFilterModel ? "true" : "false"});
11635
  res.push_back({"conjecture-gen", opts.quantifiers.conjectureGen ? "true" : "false"});
11636
  res.push_back({"conjecture-gen-gt-enum", std::to_string(opts.quantifiers.conjectureGenGtEnum)});
11637
  res.push_back({"conjecture-gen-max-depth", std::to_string(opts.quantifiers.conjectureGenMaxDepth)});
11638
  res.push_back({"conjecture-gen-per-round", std::to_string(opts.quantifiers.conjectureGenPerRound)});
11639
  res.push_back({"conjecture-gen-uee-intro", opts.quantifiers.conjectureUeeIntro ? "true" : "false"});
11640
  res.push_back({"conjecture-no-filter", opts.quantifiers.conjectureNoFilter ? "true" : "false"});
11641
  res.push_back({"dt-stc-ind", opts.quantifiers.dtStcInduction ? "true" : "false"});
11642
  res.push_back({"dt-var-exp-quant", opts.quantifiers.dtVarExpandQuant ? "true" : "false"});
11643
  res.push_back({"e-matching", opts.quantifiers.eMatching ? "true" : "false"});
11644
  res.push_back({"elim-taut-quant", opts.quantifiers.elimTautQuant ? "true" : "false"});
11645
  res.push_back({"ext-rewrite-quant", opts.quantifiers.extRewriteQuant ? "true" : "false"});
11646
  res.push_back({"finite-model-find", opts.quantifiers.finiteModelFind ? "true" : "false"});
11647
  res.push_back({"fmf-bound", opts.quantifiers.fmfBound ? "true" : "false"});
11648
  res.push_back({"fmf-bound-int", opts.quantifiers.fmfBoundInt ? "true" : "false"});
11649
  res.push_back({"fmf-bound-lazy", opts.quantifiers.fmfBoundLazy ? "true" : "false"});
11650
  res.push_back({"fmf-fmc-simple", opts.quantifiers.fmfFmcSimple ? "true" : "false"});
11651
  res.push_back({"fmf-fresh-dc", opts.quantifiers.fmfFreshDistConst ? "true" : "false"});
11652
  res.push_back({"fmf-fun", opts.quantifiers.fmfFunWellDefined ? "true" : "false"});
11653
  res.push_back({"fmf-fun-rlv", opts.quantifiers.fmfFunWellDefinedRelevant ? "true" : "false"});
11654
  res.push_back({"fmf-inst-engine", opts.quantifiers.fmfInstEngine ? "true" : "false"});
11655
  res.push_back({"fmf-type-completion-thresh", std::to_string(opts.quantifiers.fmfTypeCompletionThresh)});
11656
  res.push_back({"fs-interleave", opts.quantifiers.fullSaturateInterleave ? "true" : "false"});
11657
  res.push_back({"fs-stratify", opts.quantifiers.fullSaturateStratify ? "true" : "false"});
11658
  res.push_back({"fs-sum", opts.quantifiers.fullSaturateSum ? "true" : "false"});
11659
  res.push_back({"full-saturate-quant", opts.quantifiers.fullSaturateQuant ? "true" : "false"});
11660
  res.push_back({"full-saturate-quant-limit", std::to_string(opts.quantifiers.fullSaturateLimit)});
11661
  res.push_back({"full-saturate-quant-rd", opts.quantifiers.fullSaturateQuantRd ? "true" : "false"});
11662
  res.push_back({"global-negate", opts.quantifiers.globalNegate ? "true" : "false"});
11663
  res.push_back({"ho-elim", opts.quantifiers.hoElim ? "true" : "false"});
11664
  res.push_back({"ho-elim-store-ax", opts.quantifiers.hoElimStoreAx ? "true" : "false"});
11665
  res.push_back({"ho-matching", opts.quantifiers.hoMatching ? "true" : "false"});
11666
  res.push_back({"ho-matching-var-priority", opts.quantifiers.hoMatchingVarArgPriority ? "true" : "false"});
11667
  res.push_back({"ho-merge-term-db", opts.quantifiers.hoMergeTermDb ? "true" : "false"});
11668
  res.push_back({"increment-triggers", opts.quantifiers.incrementTriggers ? "true" : "false"});
11669
  res.push_back({"inst-level-input-only", opts.quantifiers.instLevelInputOnly ? "true" : "false"});
11670
  res.push_back({"inst-max-level", std::to_string(opts.quantifiers.instMaxLevel)});
11671
  res.push_back({"inst-max-rounds", std::to_string(opts.quantifiers.instMaxRounds)});
11672
  res.push_back({"inst-no-entail", opts.quantifiers.instNoEntail ? "true" : "false"});
11673
  res.push_back({"inst-when-phase", std::to_string(opts.quantifiers.instWhenPhase)});
11674
  res.push_back({"inst-when-strict-interleave", opts.quantifiers.instWhenStrictInterleave ? "true" : "false"});
11675
  res.push_back({"inst-when-tc-first", opts.quantifiers.instWhenTcFirst ? "true" : "false"});
11676
  { std::stringstream ss; ss << opts.quantifiers.instWhenMode; res.push_back({"inst-when", ss.str()}); }
11677
  res.push_back({"int-wf-ind", opts.quantifiers.intWfInduction ? "true" : "false"});
11678
  res.push_back({"ite-dtt-split-quant", opts.quantifiers.iteDtTesterSplitQuant ? "true" : "false"});
11679
  { std::stringstream ss; ss << opts.quantifiers.iteLiftQuant; res.push_back({"ite-lift-quant", ss.str()}); }
11680
  { std::stringstream ss; ss << opts.quantifiers.literalMatchMode; res.push_back({"literal-matching", ss.str()}); }
11681
  res.push_back({"macros-quant", opts.quantifiers.macrosQuant ? "true" : "false"});
11682
  { std::stringstream ss; ss << opts.quantifiers.macrosQuantMode; res.push_back({"macros-quant-mode", ss.str()}); }
11683
  res.push_back({"mbqi-interleave", opts.quantifiers.mbqiInterleave ? "true" : "false"});
11684
  res.push_back({"mbqi-one-inst-per-round", opts.quantifiers.fmfOneInstPerRound ? "true" : "false"});
11685
  { std::stringstream ss; ss << opts.quantifiers.mbqiMode; res.push_back({"mbqi", ss.str()}); }
11686
  res.push_back({"miniscope-quant", opts.quantifiers.miniscopeQuant ? "true" : "false"});
11687
  res.push_back({"miniscope-quant-fv", opts.quantifiers.miniscopeQuantFreeVar ? "true" : "false"});
11688
  res.push_back({"multi-trigger-cache", opts.quantifiers.multiTriggerCache ? "true" : "false"});
11689
  res.push_back({"multi-trigger-linear", opts.quantifiers.multiTriggerLinear ? "true" : "false"});
11690
  res.push_back({"multi-trigger-priority", opts.quantifiers.multiTriggerPriority ? "true" : "false"});
11691
  res.push_back({"multi-trigger-when-single", opts.quantifiers.multiTriggerWhenSingle ? "true" : "false"});
11692
  res.push_back({"partial-triggers", opts.quantifiers.partialTriggers ? "true" : "false"});
11693
  res.push_back({"pool-inst", opts.quantifiers.poolInst ? "true" : "false"});
11694
  res.push_back({"pre-skolem-quant", opts.quantifiers.preSkolemQuant ? "true" : "false"});
11695
  res.push_back({"pre-skolem-quant-agg", opts.quantifiers.preSkolemQuantAgg ? "true" : "false"});
11696
  res.push_back({"pre-skolem-quant-nested", opts.quantifiers.preSkolemQuantNested ? "true" : "false"});
11697
  res.push_back({"prenex-quant-user", opts.quantifiers.prenexQuantUser ? "true" : "false"});
11698
  { std::stringstream ss; ss << opts.quantifiers.prenexQuant; res.push_back({"prenex-quant", ss.str()}); }
11699
  res.push_back({"purify-triggers", opts.quantifiers.purifyTriggers ? "true" : "false"});
11700
  res.push_back({"qcf-all-conflict", opts.quantifiers.qcfAllConflict ? "true" : "false"});
11701
  res.push_back({"qcf-eager-check-rd", opts.quantifiers.qcfEagerCheckRd ? "true" : "false"});
11702
  res.push_back({"qcf-eager-test", opts.quantifiers.qcfEagerTest ? "true" : "false"});
11703
  res.push_back({"qcf-nested-conflict", opts.quantifiers.qcfNestedConflict ? "true" : "false"});
11704
  res.push_back({"qcf-skip-rd", opts.quantifiers.qcfSkipRd ? "true" : "false"});
11705
  res.push_back({"qcf-tconstraint", opts.quantifiers.qcfTConstraint ? "true" : "false"});
11706
  res.push_back({"qcf-vo-exp", opts.quantifiers.qcfVoExp ? "true" : "false"});
11707
  res.push_back({"quant-alpha-equiv", opts.quantifiers.quantAlphaEquiv ? "true" : "false"});
11708
  res.push_back({"quant-cf", opts.quantifiers.quantConflictFind ? "true" : "false"});
11709
  { std::stringstream ss; ss << opts.quantifiers.qcfMode; res.push_back({"quant-cf-mode", ss.str()}); }
11710
  { std::stringstream ss; ss << opts.quantifiers.qcfWhenMode; res.push_back({"quant-cf-when", ss.str()}); }
11711
  { std::stringstream ss; ss << opts.quantifiers.quantDynamicSplit; res.push_back({"quant-dsplit-mode", ss.str()}); }
11712
  res.push_back({"quant-fun-wd", opts.quantifiers.quantFunWellDefined ? "true" : "false"});
11713
  res.push_back({"quant-ind", opts.quantifiers.quantInduction ? "true" : "false"});
11714
  { std::stringstream ss; ss << opts.quantifiers.quantRepMode; res.push_back({"quant-rep-mode", ss.str()}); }
11715
  res.push_back({"quant-split", opts.quantifiers.quantSplit ? "true" : "false"});
11716
  res.push_back({"register-quant-body-terms", opts.quantifiers.registerQuantBodyTerms ? "true" : "false"});
11717
  res.push_back({"relational-triggers", opts.quantifiers.relationalTriggers ? "true" : "false"});
11718
  res.push_back({"relevant-triggers", opts.quantifiers.relevantTriggers ? "true" : "false"});
11719
  res.push_back({"strict-triggers", opts.quantifiers.strictTriggers ? "true" : "false"});
11720
  res.push_back({"sygus", opts.quantifiers.sygus ? "true" : "false"});
11721
  res.push_back({"sygus-active-gen-cfactor", std::to_string(opts.quantifiers.sygusActiveGenEnumConsts)});
11722
  { std::stringstream ss; ss << opts.quantifiers.sygusActiveGenMode; res.push_back({"sygus-active-gen", ss.str()}); }
11723
  res.push_back({"sygus-add-const-grammar", opts.quantifiers.sygusAddConstGrammar ? "true" : "false"});
11724
  res.push_back({"sygus-arg-relevant", opts.quantifiers.sygusArgRelevant ? "true" : "false"});
11725
  res.push_back({"sygus-auto-unfold", opts.quantifiers.sygusInvAutoUnfold ? "true" : "false"});
11726
  res.push_back({"sygus-bool-ite-return-const", opts.quantifiers.sygusBoolIteReturnConst ? "true" : "false"});
11727
  res.push_back({"sygus-core-connective", opts.quantifiers.sygusCoreConnective ? "true" : "false"});
11728
  res.push_back({"sygus-crepair-abort", opts.quantifiers.sygusConstRepairAbort ? "true" : "false"});
11729
  res.push_back({"sygus-eval-opt", opts.quantifiers.sygusEvalOpt ? "true" : "false"});
11730
  res.push_back({"sygus-eval-unfold", opts.quantifiers.sygusEvalUnfold ? "true" : "false"});
11731
  res.push_back({"sygus-eval-unfold-bool", opts.quantifiers.sygusEvalUnfoldBool ? "true" : "false"});
11732
  res.push_back({"sygus-expr-miner-check-timeout", std::to_string(opts.quantifiers.sygusExprMinerCheckTimeout)});
11733
  res.push_back({"sygus-ext-rew", opts.quantifiers.sygusExtRew ? "true" : "false"});
11734
  res.push_back({"sygus-filter-sol-rev", opts.quantifiers.sygusFilterSolRevSubsume ? "true" : "false"});
11735
  { std::stringstream ss; ss << opts.quantifiers.sygusFilterSolMode; res.push_back({"sygus-filter-sol", ss.str()}); }
11736
  { std::stringstream ss; ss << opts.quantifiers.sygusGrammarConsMode; res.push_back({"sygus-grammar-cons", ss.str()}); }
11737
  res.push_back({"sygus-grammar-norm", opts.quantifiers.sygusGrammarNorm ? "true" : "false"});
11738
  res.push_back({"sygus-inference", opts.quantifiers.sygusInference ? "true" : "false"});
11739
  res.push_back({"sygus-inst", opts.quantifiers.sygusInst ? "true" : "false"});
11740
  { std::stringstream ss; ss << opts.quantifiers.sygusInstMode; res.push_back({"sygus-inst-mode", ss.str()}); }
11741
  { std::stringstream ss; ss << opts.quantifiers.sygusInstScope; res.push_back({"sygus-inst-scope", ss.str()}); }
11742
  { std::stringstream ss; ss << opts.quantifiers.sygusInstTermSel; res.push_back({"sygus-inst-term-sel", ss.str()}); }
11743
  res.push_back({"sygus-inv-templ-when-sg", opts.quantifiers.sygusInvTemplWhenSyntax ? "true" : "false"});
11744
  { std::stringstream ss; ss << opts.quantifiers.sygusInvTemplMode; res.push_back({"sygus-inv-templ", ss.str()}); }
11745
  res.push_back({"sygus-min-grammar", opts.quantifiers.sygusMinGrammar ? "true" : "false"});
11746
  res.push_back({"sygus-pbe", opts.quantifiers.sygusUnifPbe ? "true" : "false"});
11747
  res.push_back({"sygus-pbe-multi-fair", opts.quantifiers.sygusPbeMultiFair ? "true" : "false"});
11748
  res.push_back({"sygus-pbe-multi-fair-diff", std::to_string(opts.quantifiers.sygusPbeMultiFairDiff)});
11749
  res.push_back({"sygus-qe-preproc", opts.quantifiers.sygusQePreproc ? "true" : "false"});
11750
  res.push_back({"sygus-query-gen", opts.quantifiers.sygusQueryGen ? "true" : "false"});
11751
  res.push_back({"sygus-query-gen-check", opts.quantifiers.sygusQueryGenCheck ? "true" : "false"});
11752
  { std::stringstream ss; ss << opts.quantifiers.sygusQueryGenDumpFiles; res.push_back({"sygus-query-gen-dump-files", ss.str()}); }
11753
  res.push_back({"sygus-query-gen-thresh", std::to_string(opts.quantifiers.sygusQueryGenThresh)});
11754
  res.push_back({"sygus-rec-fun", opts.quantifiers.sygusRecFun ? "true" : "false"});
11755
  res.push_back({"sygus-rec-fun-eval-limit", std::to_string(opts.quantifiers.sygusRecFunEvalLimit)});
11756
  res.push_back({"sygus-repair-const", opts.quantifiers.sygusRepairConst ? "true" : "false"});
11757
  res.push_back({"sygus-repair-const-timeout", std::to_string(opts.quantifiers.sygusRepairConstTimeout)});
11758
  res.push_back({"sygus-rr", opts.quantifiers.sygusRew ? "true" : "false"});
11759
  res.push_back({"sygus-rr-synth", opts.quantifiers.sygusRewSynth ? "true" : "false"});
11760
  res.push_back({"sygus-rr-synth-accel", opts.quantifiers.sygusRewSynthAccel ? "true" : "false"});
11761
  res.push_back({"sygus-rr-synth-check", opts.quantifiers.sygusRewSynthCheck ? "true" : "false"});
11762
  res.push_back({"sygus-rr-synth-filter-cong", opts.quantifiers.sygusRewSynthFilterCong ? "true" : "false"});
11763
  res.push_back({"sygus-rr-synth-filter-match", opts.quantifiers.sygusRewSynthFilterMatch ? "true" : "false"});
11764
  res.push_back({"sygus-rr-synth-filter-nl", opts.quantifiers.sygusRewSynthFilterNonLinear ? "true" : "false"});
11765
  res.push_back({"sygus-rr-synth-filter-order", opts.quantifiers.sygusRewSynthFilterOrder ? "true" : "false"});
11766
  res.push_back({"sygus-rr-synth-input", opts.quantifiers.sygusRewSynthInput ? "true" : "false"});
11767
  res.push_back({"sygus-rr-synth-input-nvars", std::to_string(opts.quantifiers.sygusRewSynthInputNVars)});
11768
  res.push_back({"sygus-rr-synth-input-use-bool", opts.quantifiers.sygusRewSynthInputUseBool ? "true" : "false"});
11769
  res.push_back({"sygus-rr-synth-rec", opts.quantifiers.sygusRewSynthRec ? "true" : "false"});
11770
  res.push_back({"sygus-rr-verify", opts.quantifiers.sygusRewVerify ? "true" : "false"});
11771
  res.push_back({"sygus-rr-verify-abort", opts.quantifiers.sygusRewVerifyAbort ? "true" : "false"});
11772
  res.push_back({"sygus-sample-fp-uniform", opts.quantifiers.sygusSampleFpUniform ? "true" : "false"});
11773
  res.push_back({"sygus-sample-grammar", opts.quantifiers.sygusSampleGrammar ? "true" : "false"});
11774
  res.push_back({"sygus-samples", std::to_string(opts.quantifiers.sygusSamples)});
11775
  res.push_back({"sygus-si-abort", opts.quantifiers.cegqiSingleInvAbort ? "true" : "false"});
11776
  res.push_back({"sygus-si-partial", opts.quantifiers.cegqiSingleInvPartial ? "true" : "false"});
11777
  res.push_back({"sygus-si-rcons-limit", std::to_string(opts.quantifiers.cegqiSingleInvReconstructLimit)});
11778
  { std::stringstream ss; ss << opts.quantifiers.cegqiSingleInvReconstruct; res.push_back({"sygus-si-rcons", ss.str()}); }
11779
  res.push_back({"sygus-si-reconstruct-const", opts.quantifiers.cegqiSingleInvReconstructConst ? "true" : "false"});
11780
  { std::stringstream ss; ss << opts.quantifiers.cegqiSingleInvMode; res.push_back({"sygus-si", ss.str()}); }
11781
  res.push_back({"sygus-stream", opts.quantifiers.sygusStream ? "true" : "false"});
11782
  res.push_back({"sygus-templ-embed-grammar", opts.quantifiers.sygusTemplEmbedGrammar ? "true" : "false"});
11783
  res.push_back({"sygus-unif-cond-independent-no-repeat-sol", opts.quantifiers.sygusUnifCondIndNoRepeatSol ? "true" : "false"});
11784
  { std::stringstream ss; ss << opts.quantifiers.sygusUnifPi; res.push_back({"sygus-unif-pi", ss.str()}); }
11785
  res.push_back({"sygus-unif-shuffle-cond", opts.quantifiers.sygusUnifShuffleCond ? "true" : "false"});
11786
  res.push_back({"sygus-verify-inst-max-rounds", std::to_string(opts.quantifiers.sygusVerifyInstMaxRounds)});
11787
  res.push_back({"term-db-cd", opts.quantifiers.termDbCd ? "true" : "false"});
11788
  { std::stringstream ss; ss << opts.quantifiers.termDbMode; res.push_back({"term-db-mode", ss.str()}); }
11789
  { std::stringstream ss; ss << opts.quantifiers.triggerActiveSelMode; res.push_back({"trigger-active-sel", ss.str()}); }
11790
  { std::stringstream ss; ss << opts.quantifiers.triggerSelMode; res.push_back({"trigger-sel", ss.str()}); }
11791
  { std::stringstream ss; ss << opts.quantifiers.userPatternsQuant; res.push_back({"user-pat", ss.str()}); }
11792
  res.push_back({"var-elim-quant", opts.quantifiers.varElimQuant ? "true" : "false"});
11793
  res.push_back({"var-ineq-elim-quant", opts.quantifiers.varIneqElimQuant ? "true" : "false"});
11794
  res.push_back({"sep-check-neg", opts.sep.sepCheckNeg ? "true" : "false"});
11795
  res.push_back({"sep-child-refine", opts.sep.sepChildRefine ? "true" : "false"});
11796
  res.push_back({"sep-deq-c", opts.sep.sepDisequalC ? "true" : "false"});
11797
  res.push_back({"sep-exp", opts.sep.sepExp ? "true" : "false"});
11798
  res.push_back({"sep-min-refine", opts.sep.sepMinimalRefine ? "true" : "false"});
11799
  res.push_back({"sep-pre-skolem-emp", opts.sep.sepPreSkolemEmp ? "true" : "false"});
11800
  res.push_back({"sets-ext", opts.sets.setsExt ? "true" : "false"});
11801
  res.push_back({"sets-infer-as-lemmas", opts.sets.setsInferAsLemmas ? "true" : "false"});
11802
  res.push_back({"sets-proxy-lemmas", opts.sets.setsProxyLemmas ? "true" : "false"});
11803
  res.push_back({"abstract-values", opts.smt.abstractValues ? "true" : "false"});
11804
  res.push_back({"ackermann", opts.smt.ackermann ? "true" : "false"});
11805
  { std::stringstream ss; ss << opts.smt.blockModelsMode; res.push_back({"block-models", ss.str()}); }
11806
  res.push_back({"bvand-integer-granularity", std::to_string(opts.smt.BVAndIntegerGranularity)});
11807
  res.push_back({"check-abducts", opts.smt.checkAbducts ? "true" : "false"});
11808
  res.push_back({"check-interpols", opts.smt.checkInterpols ? "true" : "false"});
11809
  res.push_back({"check-models", opts.smt.checkModels ? "true" : "false"});
11810
  res.push_back({"check-proofs", opts.smt.checkProofs ? "true" : "false"});
11811
  res.push_back({"check-synth-sol", opts.smt.checkSynthSol ? "true" : "false"});
11812
  res.push_back({"check-unsat-cores", opts.smt.checkUnsatCores ? "true" : "false"});
11813
  res.push_back({"debug-check-models", opts.smt.debugCheckModels ? "true" : "false"});
11814
  { std::stringstream ss; ss << opts.smt.diagnosticChannelName; res.push_back({"diagnostic-output-channel", ss.str()}); }
11815
  { std::stringstream ss; ss << opts.smt.dumpToFileName; res.push_back({"dump-to", ss.str()}); }
11816
  { std::stringstream ss; ss << opts.smt.dumpModeString; res.push_back({"dump", ss.str()}); }
11817
  res.push_back({"early-ite-removal", opts.smt.earlyIteRemoval ? "true" : "false"});
11818
  res.push_back({"expand-definitions", opts.smt.expandDefinitions ? "true" : "false"});
11819
  res.push_back({"ext-rew-prep", opts.smt.extRewPrep ? "true" : "false"});
11820
  res.push_back({"ext-rew-prep-agg", opts.smt.extRewPrepAgg ? "true" : "false"});
11821
  res.push_back({"foreign-theory-rewrite", opts.smt.foreignTheoryRewrite ? "true" : "false"});
11822
  { std::stringstream ss; ss << opts.smt.iandMode; res.push_back({"iand-mode", ss.str()}); }
11823
  res.push_back({"interactive-mode", opts.smt.interactiveMode ? "true" : "false"});
11824
  res.push_back({"ite-simp", opts.smt.doITESimp ? "true" : "false"});
11825
  res.push_back({"learned-rewrite", opts.smt.learnedRewrite ? "true" : "false"});
11826
  res.push_back({"minimal-unsat-cores", opts.smt.minimalUnsatCores ? "true" : "false"});
11827
  { std::stringstream ss; ss << opts.smt.modelCoresMode; res.push_back({"model-cores", ss.str()}); }
11828
  { std::stringstream ss; ss << opts.smt.modelUninterpPrint; res.push_back({"model-u-print", ss.str()}); }
11829
  res.push_back({"model-witness-value", opts.smt.modelWitnessValue ? "true" : "false"});
11830
  res.push_back({"on-repeat-ite-simp", opts.smt.doITESimpOnRepeat ? "true" : "false"});
11831
  res.push_back({"produce-abducts", opts.smt.produceAbducts ? "true" : "false"});
11832
  res.push_back({"produce-assertions", opts.smt.produceAssertions ? "true" : "false"});
11833
  res.push_back({"produce-assignments", opts.smt.produceAssignments ? "true" : "false"});
11834
  { std::stringstream ss; ss << opts.smt.produceInterpols; res.push_back({"produce-interpols", ss.str()}); }
11835
  res.push_back({"produce-models", opts.smt.produceModels ? "true" : "false"});
11836
  res.push_back({"produce-proofs", opts.smt.produceProofs ? "true" : "false"});
11837
  res.push_back({"produce-unsat-assumptions", opts.smt.unsatAssumptions ? "true" : "false"});
11838
  res.push_back({"produce-unsat-cores", opts.smt.unsatCores ? "true" : "false"});
11839
  { std::stringstream ss; ss << opts.smt.regularChannelName; res.push_back({"regular-output-channel", ss.str()}); }
11840
  res.push_back({"repeat-simp", opts.smt.repeatSimp ? "true" : "false"});
11841
  res.push_back({"simp-ite-compress", opts.smt.compressItes ? "true" : "false"});
11842
  res.push_back({"simp-ite-hunt-zombies", std::to_string(opts.smt.zombieHuntThreshold)});
11843
  res.push_back({"simp-with-care", opts.smt.simplifyWithCareEnabled ? "true" : "false"});
11844
  { std::stringstream ss; ss << opts.smt.simplificationMode; res.push_back({"simplification", ss.str()}); }
11845
  { std::stringstream ss; ss << opts.smt.solveBVAsInt; res.push_back({"solve-bv-as-int", ss.str()}); }
11846
  res.push_back({"solve-int-as-bv", std::to_string(opts.smt.solveIntAsBV)});
11847
  res.push_back({"solve-real-as-int", opts.smt.solveRealAsInt ? "true" : "false"});
11848
  res.push_back({"sort-inference", opts.smt.sortInference ? "true" : "false"});
11849
  res.push_back({"static-learning", opts.smt.doStaticLearning ? "true" : "false"});
11850
  { std::stringstream ss; ss << opts.smt.sygusOut; res.push_back({"sygus-out", ss.str()}); }
11851
  res.push_back({"sygus-print-callbacks", opts.smt.sygusPrintCallbacks ? "true" : "false"});
11852
  res.push_back({"unconstrained-simp", opts.smt.unconstrainedSimp ? "true" : "false"});
11853
  { std::stringstream ss; ss << opts.smt.unsatCoresMode; res.push_back({"unsat-cores-mode", ss.str()}); }
11854
  res.push_back({"re-elim", opts.strings.regExpElim ? "true" : "false"});
11855
  res.push_back({"re-elim-agg", opts.strings.regExpElimAgg ? "true" : "false"});
11856
  { std::stringstream ss; ss << opts.strings.stringRegExpInterMode; res.push_back({"re-inter-mode", ss.str()}); }
11857
  res.push_back({"strings-check-entail-len", opts.strings.stringCheckEntailLen ? "true" : "false"});
11858
  res.push_back({"strings-eager", opts.strings.stringEager ? "true" : "false"});
11859
  res.push_back({"strings-eager-eval", opts.strings.stringEagerEval ? "true" : "false"});
11860
  res.push_back({"strings-eager-len", opts.strings.stringEagerLen ? "true" : "false"});
11861
  res.push_back({"strings-exp", opts.strings.stringExp ? "true" : "false"});
11862
  res.push_back({"strings-ff", opts.strings.stringFlatForms ? "true" : "false"});
11863
  res.push_back({"strings-fmf", opts.strings.stringFMF ? "true" : "false"});
11864
  res.push_back({"strings-guess-model", opts.strings.stringGuessModel ? "true" : "false"});
11865
  res.push_back({"strings-infer-as-lemmas", opts.strings.stringInferAsLemmas ? "true" : "false"});
11866
  res.push_back({"strings-infer-sym", opts.strings.stringInferSym ? "true" : "false"});
11867
  res.push_back({"strings-lazy-pp", opts.strings.stringLazyPreproc ? "true" : "false"});
11868
  res.push_back({"strings-len-norm", opts.strings.stringLenNorm ? "true" : "false"});
11869
  res.push_back({"strings-lprop-csp", opts.strings.stringLenPropCsp ? "true" : "false"});
11870
  res.push_back({"strings-min-prefix-explain", opts.strings.stringMinPrefixExplain ? "true" : "false"});
11871
  { std::stringstream ss; ss << opts.strings.stringProcessLoopMode; res.push_back({"strings-process-loop-mode", ss.str()}); }
11872
  res.push_back({"strings-rexplain-lemmas", opts.strings.stringRExplainLemmas ? "true" : "false"});
11873
  res.push_back({"strings-unified-vspt", opts.strings.stringUnifiedVSpt ? "true" : "false"});
11874
  res.push_back({"assign-function-values", opts.theory.assignFunctionValues ? "true" : "false"});
11875
  res.push_back({"condense-function-values", opts.theory.condenseFunctionValues ? "true" : "false"});
11876
  { std::stringstream ss; ss << opts.theory.eeMode; res.push_back({"ee-mode", ss.str()}); }
11877
  res.push_back({"relevance-filter", opts.theory.relevanceFilter ? "true" : "false"});
11878
  { std::stringstream ss; ss << opts.theory.tcMode; res.push_back({"tc-mode", ss.str()}); }
11879
  { std::stringstream ss; ss << opts.theory.theoryOfMode; res.push_back({"theoryof-mode", ss.str()}); }
11880
  res.push_back({"symmetry-breaker", opts.uf.ufSymmetryBreaker ? "true" : "false"});
11881
  res.push_back({"uf-ho", opts.uf.ufHo ? "true" : "false"});
11882
  res.push_back({"uf-ho-ext", opts.uf.ufHoExt ? "true" : "false"});
11883
  res.push_back({"uf-ss-abort-card", std::to_string(opts.uf.ufssAbortCardinality)});
11884
  res.push_back({"uf-ss-fair", opts.uf.ufssFairness ? "true" : "false"});
11885
  res.push_back({"uf-ss-fair-monotone", opts.uf.ufssFairnessMonotone ? "true" : "false"});
11886
  res.push_back({"uf-ss-totality-limited", std::to_string(opts.uf.ufssTotalityLimited)});
11887
  res.push_back({"uf-ss-totality-sym-break", opts.uf.ufssTotalitySymBreak ? "true" : "false"});
11888
  { std::stringstream ss; ss << opts.uf.ufssMode; res.push_back({"uf-ss", ss.str()}); }
11889
11890
  return res;
11891
}
11892
11893
29280
}  // namespace cvc5::options