GCC Code Coverage Report
Directory: . Exec Total Coverage
File: build-coverage/src/options/options_public.cpp Lines: 1872 2492 75.1 %
Date: 2021-09-15 Branches: 2681 9904 27.1 %

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 "base/check.h"
17
#include "base/output.h"
18
#include "options/options.h"
19
#include "options/options_handler.h"
20
#include "options/options_listener.h"
21
#include "options/options_public.h"
22
#include "options/uf_options.h"
23
24
// clang-format off
25
#include "options/arith_options.h"
26
#include "options/arrays_options.h"
27
#include "options/base_options.h"
28
#include "options/booleans_options.h"
29
#include "options/builtin_options.h"
30
#include "options/bv_options.h"
31
#include "options/datatypes_options.h"
32
#include "options/decision_options.h"
33
#include "options/expr_options.h"
34
#include "options/fp_options.h"
35
#include "options/main_options.h"
36
#include "options/parser_options.h"
37
#include "options/printer_options.h"
38
#include "options/proof_options.h"
39
#include "options/prop_options.h"
40
#include "options/quantifiers_options.h"
41
#include "options/sep_options.h"
42
#include "options/sets_options.h"
43
#include "options/smt_options.h"
44
#include "options/strings_options.h"
45
#include "options/theory_options.h"
46
#include "options/uf_options.h"
47
#include "options/decision_weight.h"
48
#include "options/managed_streams.h"
49
#include <iostream>
50
#include "options/language.h"
51
#include <bitset>
52
// clang-format on
53
54
#include <cstring>
55
#include <iostream>
56
#include <limits>
57
58
namespace cvc5::options
59
{
60
  // Contains the default option handlers (i.e. parsers)
61
  namespace handlers {
62
63
  /**
64
   * Utility function for handling numeric options. Takes care of checking for
65
   * unsignedness, parsing and handling parsing exceptions. Expects `conv` to be
66
   * a conversion function like `std::stod`, accepting a `std::string` and a
67
   * `size_t*`. The argument `type` is only used to generate proper error
68
   * messages and should be the string representation of `T`. If `T` is
69
   * unsigned, checks that `optionarg` contains no minus. Then `conv` is called
70
   * and the error conditions are handled: `conv` may throw an exception or
71
   * `pos` may be smaller than the size of `optionarg`, indicating that not the
72
   * entirety of `optionarg` was parsed.
73
   */
74
  template <typename T, typename FF>
75
136
  T parseNumber(const std::string& flag,
76
                const std::string& optionarg,
77
                FF&& conv,
78
                const std::string& type)
79
  {
80
103
    if (!std::numeric_limits<T>::is_signed
81
103
        && (optionarg.find('-') != std::string::npos))
82
    {
83
      std::stringstream ss;
84
      ss << "Argument '" << optionarg << "' for " << type << " option " << flag
85
         << " is negative";
86
      throw OptionException(ss.str());
87
    }
88
136
    size_t pos = 0;
89
    T res;
90
    try
91
    {
92
136
      res = conv(optionarg, &pos);
93
    }
94
    catch (const std::exception& e)
95
    {
96
      std::stringstream ss;
97
      ss << "Argument '" << optionarg << "' for " << type << " option " << flag
98
         << " did not parse as " << type;
99
      throw OptionException(ss.str());
100
    }
101
136
    if (pos < optionarg.size())
102
    {
103
      std::stringstream ss;
104
      ss << "Argument '" << optionarg << "' for " << type << " option " << flag
105
         << " did parse only partially as " << type << ", leaving '"
106
         << optionarg.substr(pos) << "'";
107
      throw OptionException(ss.str());
108
    }
109
136
    return res;
110
  }
111
112
  /** Default handler that triggers a compiler error */
113
  template <typename T>
114
  T handleOption(const std::string& option,
115
                 const std::string& flag,
116
                 const std::string& optionarg)
117
  {
118
    T::unsupported_handleOption_specialization;
119
    return *static_cast<T*>(nullptr);
120
  }
121
122
  /** Handle a string option by returning it as is. */
123
  template <>
124
11
  std::string handleOption<std::string>(const std::string& option,
125
                                        const std::string& flag,
126
                                        const std::string& optionarg)
127
  {
128
11
    return optionarg;
129
  }
130
  /** Handle a bool option, recognizing "true" or "false". */
131
  template <>
132
21958
  bool handleOption<bool>(const std::string& option,
133
                          const std::string& flag,
134
                          const std::string& optionarg)
135
  {
136
21958
    if (optionarg == "true")
137
    {
138
8547
      return true;
139
    }
140
13411
    if (optionarg == "false")
141
    {
142
13411
      return false;
143
    }
144
    throw OptionException("Argument '" + optionarg + "' for bool option " + flag
145
                          + " is not a bool constant");
146
  }
147
148
  /** Handle a double option, using `parseNumber` with `std::stod`. */
149
  template <>
150
  double handleOption<double>(const std::string& option,
151
                              const std::string& flag,
152
                              const std::string& optionarg)
153
  {
154
    return parseNumber<double>(
155
        flag,
156
        optionarg,
157
        [](const auto& s, auto p) { return std::stod(s, p); },
158
        "double");
159
  }
160
161
  /** Handle a int64_t option, using `parseNumber` with `std::stoll`. */
162
  template <>
163
33
  int64_t handleOption<int64_t>(const std::string& option,
164
                                const std::string& flag,
165
                                const std::string& optionarg)
166
  {
167
66
    return parseNumber<int64_t>(
168
        flag,
169
        optionarg,
170
33
        [](const auto& s, auto p) { return std::stoll(s, p); },
171
66
        "int64_t");
172
  }
173
174
  /** Handle a uint64_t option, using `parseNumber` with `std::stoull`. */
175
  template <>
176
103
  uint64_t handleOption<uint64_t>(const std::string& option,
177
                                  const std::string& flag,
178
                                  const std::string& optionarg)
179
  {
180
206
    return parseNumber<uint64_t>(
181
        flag,
182
        optionarg,
183
103
        [](const auto& s, auto p) { return std::stoull(s, p); },
184
206
        "uint64_t");
185
  }
186
187
  /** Handle a ManagedIn option. */
188
  template <>
189
  ManagedIn handleOption<ManagedIn>(const std::string& option,
190
                                    const std::string& flag,
191
                                    const std::string& optionarg)
192
  {
193
    ManagedIn res;
194
    res.open(optionarg);
195
    return res;
196
  }
197
198
  /** Handle a ManagedErr option. */
199
  template <>
200
  ManagedErr handleOption<ManagedErr>(const std::string& option,
201
                                      const std::string& flag,
202
                                      const std::string& optionarg)
203
  {
204
    ManagedErr res;
205
    res.open(optionarg);
206
    return res;
207
  }
208
209
  /** Handle a ManagedOut option. */
210
  template <>
211
  ManagedOut handleOption<ManagedOut>(const std::string& option,
212
                                      const std::string& flag,
213
                                      const std::string& optionarg)
214
  {
215
    ManagedOut res;
216
    res.open(optionarg);
217
    return res;
218
  }
219
  }
220
221
2
  std::vector<std::string> getNames()
222
  {
223
    return {
224
        // clang-format off
225
    "abstract-values", "ackermann", "ag-miniscope-quant", "approx-branch-depth",
226
    "arith-brab", "arith-cong-man", "arith-eq-solver", "arith-no-partial-fun",
227
    "arith-prop", "arith-prop-clauses", "arith-rewrite-equalities",
228
    "arrays-config", "arrays-eager-index", "arrays-eager-lemmas", "arrays-exp",
229
    "arrays-model-based", "arrays-optimize-linear", "arrays-prop",
230
    "arrays-reduce-sharing", "arrays-weak-equiv", "assign-function-values",
231
    "bitblast", "bitblast-aig", "bitwise-eq", "block-models", "bool-to-bv",
232
    "bv-abstraction", "bv-aig-simp", "bv-alg-extf", "bv-algebraic-budget",
233
    "bv-algebraic-solver", "bv-assert-input", "bv-eager-explanations",
234
    "bv-eq-solver", "bv-extract-arith", "bv-gauss-elim", "bv-inequality-solver",
235
    "bv-intro-pow2", "bv-num-func", "bv-print-consts-as-indexed-symbols",
236
    "bv-propagate", "bv-quick-xplain", "bv-sat-solver", "bv-skolemize",
237
    "bv-solver", "bv-to-bool", "bvand-integer-granularity", "cdt-bisimilar",
238
    "cegis-sample", "cegqi", "cegqi-all", "cegqi-bv", "cegqi-bv-concat-inv",
239
    "cegqi-bv-ineq", "cegqi-bv-interleave-value", "cegqi-bv-linear",
240
    "cegqi-bv-rm-extract", "cegqi-bv-solve-nl", "cegqi-full", "cegqi-innermost",
241
    "cegqi-midpoint", "cegqi-min-bounds", "cegqi-model", "cegqi-multi-inst",
242
    "cegqi-nested-qe", "cegqi-nopt", "cegqi-repeat-lit", "cegqi-round-up-lia",
243
    "cegqi-sat", "cegqi-use-inf-int", "cegqi-use-inf-real", "check-abducts",
244
    "check-interpols", "check-models", "check-proofs", "check-synth-sol",
245
    "check-unsat-cores", "collect-pivot-stats", "cond-var-split-agg-quant",
246
    "cond-var-split-quant", "condense-function-values",
247
    "conjecture-filter-active-terms", "conjecture-filter-canonical",
248
    "conjecture-filter-model", "conjecture-gen", "conjecture-gen-gt-enum",
249
    "conjecture-gen-max-depth", "conjecture-gen-per-round",
250
    "conjecture-gen-uee-intro", "conjecture-no-filter", "copyright",
251
    "cut-all-bounded", "dag-thresh", "debug", "debug-check-models", "decision",
252
    "decision-mode", "decision-random-weight", "decision-threshold",
253
    "decision-use-weight", "decision-weight-internal",
254
    "diagnostic-output-channel", "difficulty-mode", "dio-decomps", "dio-repeat",
255
    "dio-solver", "dio-turns", "dt-binary-split", "dt-blast-splits",
256
    "dt-cyclic", "dt-force-assignment", "dt-infer-as-lemmas", "dt-nested-rec",
257
    "dt-polite-optimize", "dt-rewrite-error-sel", "dt-share-sel", "dt-stc-ind",
258
    "dt-var-exp-quant", "dump", "dump-difficulty", "dump-instantiations",
259
    "dump-instantiations-debug", "dump-models", "dump-proofs", "dump-to",
260
    "dump-unsat-cores", "dump-unsat-cores-full", "e-matching", "early-exit",
261
    "early-ite-removal", "ee-mode", "elim-taut-quant", "err",
262
    "error-selection-rule", "expand-definitions", "expr-depth", "ext-rew-prep",
263
    "ext-rew-prep-agg", "ext-rewrite-quant", "fc-penalties", "filename",
264
    "filesystem-access", "finite-model-find", "flatten-ho-chains", "fmf-bound",
265
    "fmf-bound-int", "fmf-bound-lazy", "fmf-fmc-simple", "fmf-fresh-dc",
266
    "fmf-fun", "fmf-fun-rlv", "fmf-inst-engine", "fmf-type-completion-thresh",
267
    "force-logic", "force-no-limit-cpu-while-dump", "foreign-theory-rewrite",
268
    "fp-exp", "fp-lazy-wb", "fs-interleave", "fs-stratify", "fs-sum",
269
    "full-saturate-quant", "full-saturate-quant-limit",
270
    "full-saturate-quant-rd", "global-declarations", "global-negate", "help",
271
    "heuristic-pivots", "ho-elim", "ho-elim-store-ax", "ho-matching",
272
    "ho-matching-var-priority", "ho-merge-term-db", "iand-mode", "in",
273
    "increment-triggers", "incremental", "input-language",
274
    "inst-level-input-only", "inst-max-level", "inst-max-rounds",
275
    "inst-no-entail", "inst-when", "inst-when-phase",
276
    "inst-when-strict-interleave", "inst-when-tc-first", "int-wf-ind",
277
    "interactive", "interactive-mode", "ite-dtt-split-quant", "ite-lift-quant",
278
    "ite-simp", "jh-rlv-order", "jh-skolem", "jh-skolem-rlv", "lang",
279
    "language-help", "learned-rewrite", "lemmas-on-replay-failure",
280
    "literal-matching", "macros-quant", "macros-quant-mode", "maxCutsInContext",
281
    "mbqi", "mbqi-interleave", "mbqi-one-inst-per-round", "minimal-unsat-cores",
282
    "minisat-dump-dimacs", "minisat-elimination", "miniscope-quant",
283
    "miniscope-quant-fv", "miplib-trick", "miplib-trick-subs", "mmap",
284
    "model-cores", "model-format", "model-u-print", "model-uninterp-print",
285
    "model-witness-value", "multi-trigger-cache", "multi-trigger-linear",
286
    "multi-trigger-priority", "multi-trigger-when-single", "new-prop", "nl-cad",
287
    "nl-cad-initial", "nl-cad-lift", "nl-cad-proj", "nl-ext", "nl-ext-ent-conf",
288
    "nl-ext-factor", "nl-ext-inc-prec", "nl-ext-purify", "nl-ext-rbound",
289
    "nl-ext-rewrite", "nl-ext-split-zero", "nl-ext-tf-taylor-deg",
290
    "nl-ext-tf-tplanes", "nl-ext-tplanes", "nl-ext-tplanes-interleave",
291
    "nl-icp", "nl-rlv", "nl-rlv-assert-bounds", "on-repeat-ite-simp", "out",
292
    "output", "output-lang", "output-language", "parse-only",
293
    "partial-triggers", "pb-rewrites", "pivot-threshold", "pool-inst",
294
    "pp-assert-max-sub-size", "pre-skolem-quant", "pre-skolem-quant-agg",
295
    "pre-skolem-quant-nested", "prenex-quant", "prenex-quant-user",
296
    "preprocess-only", "print-inst", "print-inst-full", "print-success",
297
    "produce-abducts", "produce-assertions", "produce-assignments",
298
    "produce-difficulty", "produce-interpols", "produce-models",
299
    "produce-proofs", "produce-unsat-assumptions", "produce-unsat-cores",
300
    "proof-check", "proof-format-mode", "proof-granularity", "proof-pedantic",
301
    "proof-pp-merge", "proof-print-conclusion", "prop-row-length",
302
    "purify-triggers", "qcf-all-conflict", "qcf-eager-check-rd",
303
    "qcf-eager-test", "qcf-nested-conflict", "qcf-skip-rd", "qcf-tconstraint",
304
    "qcf-vo-exp", "quant-alpha-equiv", "quant-cf", "quant-cf-mode",
305
    "quant-cf-when", "quant-dsplit-mode", "quant-fun-wd", "quant-ind",
306
    "quant-rep-mode", "quant-split", "quiet", "random-freq", "random-frequency",
307
    "random-seed", "re-elim", "re-elim-agg", "re-inter-mode",
308
    "refine-conflicts", "register-quant-body-terms", "regular-output-channel",
309
    "relational-triggers", "relevance-filter", "relevant-triggers",
310
    "repeat-simp", "replay-early-close-depth", "replay-failure-penalty",
311
    "replay-lemma-reject-cut", "replay-num-err-penalty", "replay-reject-cut",
312
    "replay-soi-major-threshold", "replay-soi-major-threshold-pen",
313
    "replay-soi-minor-threshold", "replay-soi-minor-threshold-pen",
314
    "reproducible-resource-limit", "restart-int-base", "restart-int-inc",
315
    "restrict-pivots", "revert-arith-models-on-unsat", "rlimit", "rlimit-per",
316
    "rr-turns", "rweight", "se-solve-int", "seed", "segv-spin",
317
    "semantic-checks", "sep-check-neg", "sep-child-refine", "sep-deq-c",
318
    "sep-exp", "sep-min-refine", "sep-pre-skolem-emp", "sets-ext",
319
    "sets-infer-as-lemmas", "sets-proxy-lemmas", "show-config",
320
    "show-debug-tags", "show-trace-tags", "simp-ite-compress",
321
    "simp-ite-hunt-zombies", "simp-with-care", "simplex-check-period",
322
    "simplification", "simplification-mode", "soi-qe", "solve-bv-as-int",
323
    "solve-int-as-bv", "solve-real-as-int", "sort-inference",
324
    "standard-effort-variable-order-pivots", "static-learning", "stats",
325
    "stats-all", "stats-every-query", "stats-expert", "strict-parsing",
326
    "strings-check-entail-len", "strings-eager", "strings-eager-eval",
327
    "strings-eager-len", "strings-exp", "strings-ff", "strings-fmf",
328
    "strings-guess-model", "strings-infer-as-lemmas", "strings-infer-sym",
329
    "strings-lazy-pp", "strings-len-norm", "strings-lprop-csp",
330
    "strings-min-prefix-explain", "strings-process-loop-mode",
331
    "strings-rexplain-lemmas", "strings-unified-vspt", "sygus",
332
    "sygus-abort-size", "sygus-active-gen", "sygus-active-gen-cfactor",
333
    "sygus-add-const-grammar", "sygus-arg-relevant", "sygus-auto-unfold",
334
    "sygus-bool-ite-return-const", "sygus-core-connective",
335
    "sygus-crepair-abort", "sygus-eval-opt", "sygus-eval-unfold",
336
    "sygus-eval-unfold-bool", "sygus-expr-miner-check-timeout", "sygus-ext-rew",
337
    "sygus-fair", "sygus-fair-max", "sygus-filter-sol", "sygus-filter-sol-rev",
338
    "sygus-grammar-cons", "sygus-grammar-norm", "sygus-inference", "sygus-inst",
339
    "sygus-inst-mode", "sygus-inst-scope", "sygus-inst-term-sel",
340
    "sygus-inv-templ", "sygus-inv-templ-when-sg", "sygus-min-grammar",
341
    "sygus-out", "sygus-pbe", "sygus-pbe-multi-fair",
342
    "sygus-pbe-multi-fair-diff", "sygus-print-callbacks", "sygus-qe-preproc",
343
    "sygus-query-gen", "sygus-query-gen-check", "sygus-query-gen-dump-files",
344
    "sygus-query-gen-thresh", "sygus-rec-fun", "sygus-rec-fun-eval-limit",
345
    "sygus-repair-const", "sygus-repair-const-timeout", "sygus-rr",
346
    "sygus-rr-synth", "sygus-rr-synth-accel", "sygus-rr-synth-check",
347
    "sygus-rr-synth-filter-cong", "sygus-rr-synth-filter-match",
348
    "sygus-rr-synth-filter-nl", "sygus-rr-synth-filter-order",
349
    "sygus-rr-synth-input", "sygus-rr-synth-input-nvars",
350
    "sygus-rr-synth-input-use-bool", "sygus-rr-synth-rec", "sygus-rr-verify",
351
    "sygus-rr-verify-abort", "sygus-sample-fp-uniform", "sygus-sample-grammar",
352
    "sygus-samples", "sygus-si", "sygus-si-abort", "sygus-si-partial",
353
    "sygus-si-rcons", "sygus-si-rcons-limit", "sygus-si-reconstruct-const",
354
    "sygus-stream", "sygus-sym-break", "sygus-sym-break-agg",
355
    "sygus-sym-break-dynamic", "sygus-sym-break-lazy", "sygus-sym-break-pbe",
356
    "sygus-sym-break-rlv", "sygus-templ-embed-grammar",
357
    "sygus-unif-cond-independent-no-repeat-sol", "sygus-unif-pi",
358
    "sygus-unif-shuffle-cond", "sygus-verify-inst-max-rounds",
359
    "symmetry-breaker", "tc-mode", "term-db-cd", "term-db-mode",
360
    "theoryof-mode", "tlimit", "tlimit-per", "trace", "trigger-active-sel",
361
    "trigger-sel", "type-checking", "uf-ho", "uf-ho-ext", "uf-ss",
362
    "uf-ss-abort-card", "uf-ss-fair", "uf-ss-fair-monotone",
363
    "uf-ss-totality-limited", "uf-ss-totality-sym-break", "uf-symmetry-breaker",
364
    "unate-lemmas", "unconstrained-simp", "unsat-cores-mode", "use-approx",
365
    "use-fcsimplex", "use-soi", "user-pat", "var-elim-quant",
366
    "var-ineq-elim-quant", "verbose", "verbosity", "version"
367
        // clang-format on
368
2
    };
369
  }
370
371
821829
  std::string get(const Options& options, const std::string& name)
372
  {
373
821829
    Trace("options") << "Options::getOption(" << name << ")" << std::endl;
374
    // clang-format off
375
821829
  if (name == "abstract-values") return options.smt.abstractValues ? "true" : "false";
376
821829
  if (name == "ackermann") return options.smt.ackermann ? "true" : "false";
377
821829
  if (name == "ag-miniscope-quant") return options.quantifiers.aggressiveMiniscopeQuant ? "true" : "false";
378
821829
  if (name == "approx-branch-depth") return std::to_string(options.arith.maxApproxDepth);
379
821829
  if (name == "arith-brab") return options.arith.brabTest ? "true" : "false";
380
821829
  if (name == "arith-cong-man") return options.arith.arithCongMan ? "true" : "false";
381
821829
  if (name == "arith-eq-solver") return options.arith.arithEqSolver ? "true" : "false";
382
821829
  if (name == "arith-no-partial-fun") return options.arith.arithNoPartialFun ? "true" : "false";
383
821829
  if (name == "arith-prop") { std::stringstream s; s << options.arith.arithPropagationMode; return s.str(); }
384
821829
  if (name == "arith-prop-clauses") return std::to_string(options.arith.arithPropAsLemmaLength);
385
821829
  if (name == "arith-rewrite-equalities") return options.arith.arithRewriteEq ? "true" : "false";
386
821829
  if (name == "arrays-config") return std::to_string(options.arrays.arraysConfig);
387
821829
  if (name == "arrays-eager-index") return options.arrays.arraysEagerIndexSplitting ? "true" : "false";
388
821829
  if (name == "arrays-eager-lemmas") return options.arrays.arraysEagerLemmas ? "true" : "false";
389
821829
  if (name == "arrays-exp") return options.arrays.arraysExp ? "true" : "false";
390
821812
  if (name == "arrays-model-based") return options.arrays.arraysModelBased ? "true" : "false";
391
821812
  if (name == "arrays-optimize-linear") return options.arrays.arraysOptimizeLinear ? "true" : "false";
392
821812
  if (name == "arrays-prop") return std::to_string(options.arrays.arraysPropagate);
393
821812
  if (name == "arrays-reduce-sharing") return options.arrays.arraysReduceSharing ? "true" : "false";
394
821812
  if (name == "arrays-weak-equiv") return options.arrays.arraysWeakEquivalence ? "true" : "false";
395
821812
  if (name == "assign-function-values") return options.theory.assignFunctionValues ? "true" : "false";
396
821812
  if (name == "bitblast") { std::stringstream s; s << options.bv.bitblastMode; return s.str(); }
397
821812
  if (name == "bitblast-aig") return options.bv.bitvectorAig ? "true" : "false";
398
821812
  if (name == "bitwise-eq") return options.bv.bitwiseEq ? "true" : "false";
399
821812
  if (name == "block-models") { std::stringstream s; s << options.smt.blockModelsMode; return s.str(); }
400
821812
  if (name == "bool-to-bv") { std::stringstream s; s << options.bv.boolToBitvector; return s.str(); }
401
821812
  if (name == "bv-abstraction") return options.bv.bvAbstraction ? "true" : "false";
402
821812
  if (name == "bv-aig-simp") return options.bv.bitvectorAigSimplifications;
403
821812
  if (name == "bv-alg-extf") return options.bv.bvAlgExtf ? "true" : "false";
404
821812
  if (name == "bv-algebraic-budget") return std::to_string(options.bv.bitvectorAlgebraicBudget);
405
821812
  if (name == "bv-algebraic-solver") return options.bv.bitvectorAlgebraicSolver ? "true" : "false";
406
821812
  if (name == "bv-assert-input") return options.bv.bvAssertInput ? "true" : "false";
407
821812
  if (name == "bv-eager-explanations") return options.bv.bvEagerExplanations ? "true" : "false";
408
821812
  if (name == "bv-eq-solver") return options.bv.bitvectorEqualitySolver ? "true" : "false";
409
821812
  if (name == "bv-extract-arith") return options.bv.bvExtractArithRewrite ? "true" : "false";
410
821812
  if (name == "bv-gauss-elim") return options.bv.bvGaussElim ? "true" : "false";
411
821812
  if (name == "bv-inequality-solver") return options.bv.bitvectorInequalitySolver ? "true" : "false";
412
821812
  if (name == "bv-intro-pow2") return options.bv.bvIntroducePow2 ? "true" : "false";
413
821812
  if (name == "bv-num-func") return std::to_string(options.bv.bvNumFunc);
414
821812
  if (name == "bv-print-consts-as-indexed-symbols") return options.bv.bvPrintConstsAsIndexedSymbols ? "true" : "false";
415
821812
  if (name == "bv-propagate") return options.bv.bitvectorPropagate ? "true" : "false";
416
821812
  if (name == "bv-quick-xplain") return options.bv.bitvectorQuickXplain ? "true" : "false";
417
821812
  if (name == "bv-sat-solver") { std::stringstream s; s << options.bv.bvSatSolver; return s.str(); }
418
821812
  if (name == "bv-skolemize") return options.bv.skolemizeArguments ? "true" : "false";
419
821812
  if (name == "bv-solver") { std::stringstream s; s << options.bv.bvSolver; return s.str(); }
420
821812
  if (name == "bv-to-bool") return options.bv.bitvectorToBool ? "true" : "false";
421
821812
  if (name == "bvand-integer-granularity") return std::to_string(options.smt.BVAndIntegerGranularity);
422
821812
  if (name == "cdt-bisimilar") return options.datatypes.cdtBisimilar ? "true" : "false";
423
821812
  if (name == "cegis-sample") { std::stringstream s; s << options.quantifiers.cegisSample; return s.str(); }
424
821812
  if (name == "cegqi") return options.quantifiers.cegqi ? "true" : "false";
425
821812
  if (name == "cegqi-all") return options.quantifiers.cegqiAll ? "true" : "false";
426
821812
  if (name == "cegqi-bv") return options.quantifiers.cegqiBv ? "true" : "false";
427
821812
  if (name == "cegqi-bv-concat-inv") return options.quantifiers.cegqiBvConcInv ? "true" : "false";
428
821812
  if (name == "cegqi-bv-ineq") { std::stringstream s; s << options.quantifiers.cegqiBvIneqMode; return s.str(); }
429
821812
  if (name == "cegqi-bv-interleave-value") return options.quantifiers.cegqiBvInterleaveValue ? "true" : "false";
430
821812
  if (name == "cegqi-bv-linear") return options.quantifiers.cegqiBvLinearize ? "true" : "false";
431
821812
  if (name == "cegqi-bv-rm-extract") return options.quantifiers.cegqiBvRmExtract ? "true" : "false";
432
821812
  if (name == "cegqi-bv-solve-nl") return options.quantifiers.cegqiBvSolveNl ? "true" : "false";
433
821812
  if (name == "cegqi-full") return options.quantifiers.cegqiFullEffort ? "true" : "false";
434
821812
  if (name == "cegqi-innermost") return options.quantifiers.cegqiInnermost ? "true" : "false";
435
821812
  if (name == "cegqi-midpoint") return options.quantifiers.cegqiMidpoint ? "true" : "false";
436
821812
  if (name == "cegqi-min-bounds") return options.quantifiers.cegqiMinBounds ? "true" : "false";
437
821812
  if (name == "cegqi-model") return options.quantifiers.cegqiModel ? "true" : "false";
438
821812
  if (name == "cegqi-multi-inst") return options.quantifiers.cegqiMultiInst ? "true" : "false";
439
821812
  if (name == "cegqi-nested-qe") return options.quantifiers.cegqiNestedQE ? "true" : "false";
440
821812
  if (name == "cegqi-nopt") return options.quantifiers.cegqiNopt ? "true" : "false";
441
821812
  if (name == "cegqi-repeat-lit") return options.quantifiers.cegqiRepeatLit ? "true" : "false";
442
821812
  if (name == "cegqi-round-up-lia") return options.quantifiers.cegqiRoundUpLowerLia ? "true" : "false";
443
821812
  if (name == "cegqi-sat") return options.quantifiers.cegqiSat ? "true" : "false";
444
821812
  if (name == "cegqi-use-inf-int") return options.quantifiers.cegqiUseInfInt ? "true" : "false";
445
821812
  if (name == "cegqi-use-inf-real") return options.quantifiers.cegqiUseInfReal ? "true" : "false";
446
821812
  if (name == "check-abducts") return options.smt.checkAbducts ? "true" : "false";
447
821812
  if (name == "check-interpols") return options.smt.checkInterpols ? "true" : "false";
448
821812
  if (name == "check-models") return options.smt.checkModels ? "true" : "false";
449
821810
  if (name == "check-proofs") return options.smt.checkProofs ? "true" : "false";
450
821810
  if (name == "check-synth-sol") return options.smt.checkSynthSol ? "true" : "false";
451
821810
  if (name == "check-unsat-cores") return options.smt.checkUnsatCores ? "true" : "false";
452
821810
  if (name == "collect-pivot-stats") return options.arith.collectPivots ? "true" : "false";
453
821810
  if (name == "cond-var-split-agg-quant") return options.quantifiers.condVarSplitQuantAgg ? "true" : "false";
454
821810
  if (name == "cond-var-split-quant") return options.quantifiers.condVarSplitQuant ? "true" : "false";
455
821810
  if (name == "condense-function-values") return options.theory.condenseFunctionValues ? "true" : "false";
456
821810
  if (name == "conjecture-filter-active-terms") return options.quantifiers.conjectureFilterActiveTerms ? "true" : "false";
457
821810
  if (name == "conjecture-filter-canonical") return options.quantifiers.conjectureFilterCanonical ? "true" : "false";
458
821810
  if (name == "conjecture-filter-model") return options.quantifiers.conjectureFilterModel ? "true" : "false";
459
821810
  if (name == "conjecture-gen") return options.quantifiers.conjectureGen ? "true" : "false";
460
821810
  if (name == "conjecture-gen-gt-enum") return std::to_string(options.quantifiers.conjectureGenGtEnum);
461
821810
  if (name == "conjecture-gen-max-depth") return std::to_string(options.quantifiers.conjectureGenMaxDepth);
462
821810
  if (name == "conjecture-gen-per-round") return std::to_string(options.quantifiers.conjectureGenPerRound);
463
821810
  if (name == "conjecture-gen-uee-intro") return options.quantifiers.conjectureUeeIntro ? "true" : "false";
464
821810
  if (name == "conjecture-no-filter") return options.quantifiers.conjectureNoFilter ? "true" : "false";
465
821810
  if (name == "cut-all-bounded") return options.arith.doCutAllBounded ? "true" : "false";
466
821810
  if (name == "dag-thresh") return std::to_string(options.expr.defaultDagThresh);
467
821809
  if (name == "debug-check-models") return options.smt.debugCheckModels ? "true" : "false";
468
821809
  if (name == "decision-mode" || name == "decision") { std::stringstream s; s << options.decision.decisionMode; return s.str(); }
469
821809
  if (name == "decision-random-weight") return std::to_string(options.decision.decisionRandomWeight);
470
821809
  if (name == "decision-threshold") { std::stringstream s; s << options.decision.decisionThreshold; return s.str(); }
471
821809
  if (name == "decision-use-weight") return options.decision.decisionUseWeight ? "true" : "false";
472
821809
  if (name == "decision-weight-internal") { std::stringstream s; s << options.decision.decisionWeightInternal; return s.str(); }
473
821809
  if (name == "difficulty-mode") { std::stringstream s; s << options.smt.difficultyMode; return s.str(); }
474
821809
  if (name == "dio-decomps") return options.arith.exportDioDecompositions ? "true" : "false";
475
821809
  if (name == "dio-repeat") return options.arith.dioRepeat ? "true" : "false";
476
821809
  if (name == "dio-solver") return options.arith.arithDioSolver ? "true" : "false";
477
821809
  if (name == "dio-turns") return std::to_string(options.arith.dioSolverTurns);
478
821809
  if (name == "dt-binary-split") return options.datatypes.dtBinarySplit ? "true" : "false";
479
821809
  if (name == "dt-blast-splits") return options.datatypes.dtBlastSplits ? "true" : "false";
480
821809
  if (name == "dt-cyclic") return options.datatypes.dtCyclic ? "true" : "false";
481
821809
  if (name == "dt-force-assignment") return options.datatypes.dtForceAssignment ? "true" : "false";
482
821809
  if (name == "dt-infer-as-lemmas") return options.datatypes.dtInferAsLemmas ? "true" : "false";
483
821809
  if (name == "dt-nested-rec") return options.datatypes.dtNestedRec ? "true" : "false";
484
821809
  if (name == "dt-polite-optimize") return options.datatypes.dtPoliteOptimize ? "true" : "false";
485
821809
  if (name == "dt-rewrite-error-sel") return options.datatypes.dtRewriteErrorSel ? "true" : "false";
486
821809
  if (name == "dt-share-sel") return options.datatypes.dtSharedSelectors ? "true" : "false";
487
821809
  if (name == "dt-stc-ind") return options.quantifiers.dtStcInduction ? "true" : "false";
488
821809
  if (name == "dt-var-exp-quant") return options.quantifiers.dtVarExpandQuant ? "true" : "false";
489
821809
  if (name == "dump") return options.smt.dumpModeString;
490
821809
  if (name == "dump-difficulty") return options.driver.dumpDifficulty ? "true" : "false";
491
821809
  if (name == "dump-instantiations") return options.driver.dumpInstantiations ? "true" : "false";
492
821809
  if (name == "dump-instantiations-debug") return options.driver.dumpInstantiationsDebug ? "true" : "false";
493
821809
  if (name == "dump-models") return options.driver.dumpModels ? "true" : "false";
494
821809
  if (name == "dump-proofs") return options.driver.dumpProofs ? "true" : "false";
495
821809
  if (name == "dump-to") { std::stringstream s; s << options.smt.dumpToFileName; return s.str(); }
496
821809
  if (name == "dump-unsat-cores") return options.driver.dumpUnsatCores ? "true" : "false";
497
821809
  if (name == "dump-unsat-cores-full") return options.driver.dumpUnsatCoresFull ? "true" : "false";
498
821809
  if (name == "e-matching") return options.quantifiers.eMatching ? "true" : "false";
499
821809
  if (name == "early-exit") return options.driver.earlyExit ? "true" : "false";
500
821809
  if (name == "early-ite-removal") return options.smt.earlyIteRemoval ? "true" : "false";
501
821809
  if (name == "ee-mode") { std::stringstream s; s << options.theory.eeMode; return s.str(); }
502
821809
  if (name == "elim-taut-quant") return options.quantifiers.elimTautQuant ? "true" : "false";
503
821809
  if (name == "diagnostic-output-channel" || name == "err") { std::stringstream s; s << options.base.err; return s.str(); }
504
821809
  if (name == "error-selection-rule") { std::stringstream s; s << options.arith.arithErrorSelectionRule; return s.str(); }
505
821809
  if (name == "expand-definitions") return options.smt.expandDefinitions ? "true" : "false";
506
821809
  if (name == "expr-depth") return std::to_string(options.expr.defaultExprDepth);
507
821809
  if (name == "ext-rew-prep") return options.smt.extRewPrep ? "true" : "false";
508
821809
  if (name == "ext-rew-prep-agg") return options.smt.extRewPrepAgg ? "true" : "false";
509
821809
  if (name == "ext-rewrite-quant") return options.quantifiers.extRewriteQuant ? "true" : "false";
510
821809
  if (name == "fc-penalties") return options.arith.havePenalties ? "true" : "false";
511
821809
  if (name == "filename") return options.driver.filename;
512
821809
  if (name == "filesystem-access") return options.parser.filesystemAccess ? "true" : "false";
513
821809
  if (name == "finite-model-find") return options.quantifiers.finiteModelFind ? "true" : "false";
514
821809
  if (name == "flatten-ho-chains") return options.printer.flattenHOChains ? "true" : "false";
515
821809
  if (name == "fmf-bound") return options.quantifiers.fmfBound ? "true" : "false";
516
821809
  if (name == "fmf-bound-int") return options.quantifiers.fmfBoundInt ? "true" : "false";
517
821809
  if (name == "fmf-bound-lazy") return options.quantifiers.fmfBoundLazy ? "true" : "false";
518
821809
  if (name == "fmf-fmc-simple") return options.quantifiers.fmfFmcSimple ? "true" : "false";
519
821809
  if (name == "fmf-fresh-dc") return options.quantifiers.fmfFreshDistConst ? "true" : "false";
520
821809
  if (name == "fmf-fun") return options.quantifiers.fmfFunWellDefined ? "true" : "false";
521
821809
  if (name == "fmf-fun-rlv") return options.quantifiers.fmfFunWellDefinedRelevant ? "true" : "false";
522
821809
  if (name == "fmf-inst-engine") return options.quantifiers.fmfInstEngine ? "true" : "false";
523
821809
  if (name == "fmf-type-completion-thresh") return std::to_string(options.quantifiers.fmfTypeCompletionThresh);
524
821809
  if (name == "force-logic") return options.parser.forceLogicString;
525
821809
  if (name == "force-no-limit-cpu-while-dump") return options.driver.forceNoLimitCpuWhileDump ? "true" : "false";
526
821809
  if (name == "foreign-theory-rewrite") return options.smt.foreignTheoryRewrite ? "true" : "false";
527
821809
  if (name == "fp-exp") return options.fp.fpExp ? "true" : "false";
528
821809
  if (name == "fp-lazy-wb") return options.fp.fpLazyWb ? "true" : "false";
529
821809
  if (name == "fs-interleave") return options.quantifiers.fullSaturateInterleave ? "true" : "false";
530
821809
  if (name == "fs-stratify") return options.quantifiers.fullSaturateStratify ? "true" : "false";
531
821809
  if (name == "fs-sum") return options.quantifiers.fullSaturateSum ? "true" : "false";
532
821809
  if (name == "full-saturate-quant") return options.quantifiers.fullSaturateQuant ? "true" : "false";
533
821809
  if (name == "full-saturate-quant-limit") return std::to_string(options.quantifiers.fullSaturateLimit);
534
821809
  if (name == "full-saturate-quant-rd") return options.quantifiers.fullSaturateQuantRd ? "true" : "false";
535
821809
  if (name == "global-declarations") return options.parser.globalDeclarations ? "true" : "false";
536
821809
  if (name == "global-negate") return options.quantifiers.globalNegate ? "true" : "false";
537
821809
  if (name == "help") return options.driver.help ? "true" : "false";
538
821809
  if (name == "heuristic-pivots") return std::to_string(options.arith.arithHeuristicPivots);
539
821809
  if (name == "ho-elim") return options.quantifiers.hoElim ? "true" : "false";
540
821809
  if (name == "ho-elim-store-ax") return options.quantifiers.hoElimStoreAx ? "true" : "false";
541
821809
  if (name == "ho-matching") return options.quantifiers.hoMatching ? "true" : "false";
542
821809
  if (name == "ho-matching-var-priority") return options.quantifiers.hoMatchingVarArgPriority ? "true" : "false";
543
821809
  if (name == "ho-merge-term-db") return options.quantifiers.hoMergeTermDb ? "true" : "false";
544
821809
  if (name == "iand-mode") { std::stringstream s; s << options.smt.iandMode; return s.str(); }
545
821809
  if (name == "in") { std::stringstream s; s << options.base.in; return s.str(); }
546
821809
  if (name == "increment-triggers") return options.quantifiers.incrementTriggers ? "true" : "false";
547
821809
  if (name == "incremental") return options.base.incrementalSolving ? "true" : "false";
548
821807
  if (name == "inst-level-input-only") return options.quantifiers.instLevelInputOnly ? "true" : "false";
549
821807
  if (name == "inst-max-level") return std::to_string(options.quantifiers.instMaxLevel);
550
821807
  if (name == "inst-max-rounds") return std::to_string(options.quantifiers.instMaxRounds);
551
821807
  if (name == "inst-no-entail") return options.quantifiers.instNoEntail ? "true" : "false";
552
821807
  if (name == "inst-when") { std::stringstream s; s << options.quantifiers.instWhenMode; return s.str(); }
553
821807
  if (name == "inst-when-phase") return std::to_string(options.quantifiers.instWhenPhase);
554
821807
  if (name == "inst-when-strict-interleave") return options.quantifiers.instWhenStrictInterleave ? "true" : "false";
555
821807
  if (name == "inst-when-tc-first") return options.quantifiers.instWhenTcFirst ? "true" : "false";
556
821807
  if (name == "int-wf-ind") return options.quantifiers.intWfInduction ? "true" : "false";
557
821807
  if (name == "interactive") return options.driver.interactive ? "true" : "false";
558
821807
  if (name == "interactive-mode") return options.smt.interactiveMode ? "true" : "false";
559
821807
  if (name == "ite-dtt-split-quant") return options.quantifiers.iteDtTesterSplitQuant ? "true" : "false";
560
821807
  if (name == "ite-lift-quant") { std::stringstream s; s << options.quantifiers.iteLiftQuant; return s.str(); }
561
821807
  if (name == "ite-simp") return options.smt.doITESimp ? "true" : "false";
562
821807
  if (name == "jh-rlv-order") return options.decision.jhRlvOrder ? "true" : "false";
563
821807
  if (name == "jh-skolem") { std::stringstream s; s << options.decision.jhSkolemMode; return s.str(); }
564
821807
  if (name == "jh-skolem-rlv") { std::stringstream s; s << options.decision.jhSkolemRlvMode; return s.str(); }
565
821807
  if (name == "input-language" || name == "lang") { std::stringstream s; s << options.base.inputLanguage; return s.str(); }
566
6227
  if (name == "language-help") return options.base.languageHelp ? "true" : "false";
567
6227
  if (name == "learned-rewrite") return options.smt.learnedRewrite ? "true" : "false";
568
6227
  if (name == "lemmas-on-replay-failure") return options.arith.replayFailureLemma ? "true" : "false";
569
6227
  if (name == "literal-matching") { std::stringstream s; s << options.quantifiers.literalMatchMode; return s.str(); }
570
6227
  if (name == "macros-quant") return options.quantifiers.macrosQuant ? "true" : "false";
571
6227
  if (name == "macros-quant-mode") { std::stringstream s; s << options.quantifiers.macrosQuantMode; return s.str(); }
572
6227
  if (name == "maxCutsInContext") return std::to_string(options.arith.maxCutsInContext);
573
6227
  if (name == "mbqi") { std::stringstream s; s << options.quantifiers.mbqiMode; return s.str(); }
574
6227
  if (name == "mbqi-interleave") return options.quantifiers.mbqiInterleave ? "true" : "false";
575
6227
  if (name == "mbqi-one-inst-per-round") return options.quantifiers.fmfOneInstPerRound ? "true" : "false";
576
6227
  if (name == "minimal-unsat-cores") return options.smt.minimalUnsatCores ? "true" : "false";
577
6227
  if (name == "minisat-dump-dimacs") return options.prop.minisatDumpDimacs ? "true" : "false";
578
6227
  if (name == "minisat-elimination") return options.prop.minisatUseElim ? "true" : "false";
579
6227
  if (name == "miniscope-quant") return options.quantifiers.miniscopeQuant ? "true" : "false";
580
6227
  if (name == "miniscope-quant-fv") return options.quantifiers.miniscopeQuantFreeVar ? "true" : "false";
581
6227
  if (name == "miplib-trick") return options.arith.arithMLTrick ? "true" : "false";
582
6227
  if (name == "miplib-trick-subs") return std::to_string(options.arith.arithMLTrickSubstitutions);
583
6227
  if (name == "mmap") return options.parser.memoryMap ? "true" : "false";
584
6227
  if (name == "model-cores") { std::stringstream s; s << options.smt.modelCoresMode; return s.str(); }
585
6227
  if (name == "model-format") { std::stringstream s; s << options.printer.modelFormatMode; return s.str(); }
586
6227
  if (name == "model-uninterp-print" || name == "model-u-print") { std::stringstream s; s << options.smt.modelUninterpPrint; return s.str(); }
587
6227
  if (name == "model-witness-value") return options.smt.modelWitnessValue ? "true" : "false";
588
6227
  if (name == "multi-trigger-cache") return options.quantifiers.multiTriggerCache ? "true" : "false";
589
6227
  if (name == "multi-trigger-linear") return options.quantifiers.multiTriggerLinear ? "true" : "false";
590
6227
  if (name == "multi-trigger-priority") return options.quantifiers.multiTriggerPriority ? "true" : "false";
591
6227
  if (name == "multi-trigger-when-single") return options.quantifiers.multiTriggerWhenSingle ? "true" : "false";
592
6227
  if (name == "new-prop") return options.arith.newProp ? "true" : "false";
593
6227
  if (name == "nl-cad") return options.arith.nlCad ? "true" : "false";
594
6227
  if (name == "nl-cad-initial") return options.arith.nlCadUseInitial ? "true" : "false";
595
6227
  if (name == "nl-cad-lift") { std::stringstream s; s << options.arith.nlCadLifting; return s.str(); }
596
6227
  if (name == "nl-cad-proj") { std::stringstream s; s << options.arith.nlCadProjection; return s.str(); }
597
6227
  if (name == "nl-ext") { std::stringstream s; s << options.arith.nlExt; return s.str(); }
598
6227
  if (name == "nl-ext-ent-conf") return options.arith.nlExtEntailConflicts ? "true" : "false";
599
6227
  if (name == "nl-ext-factor") return options.arith.nlExtFactor ? "true" : "false";
600
6227
  if (name == "nl-ext-inc-prec") return options.arith.nlExtIncPrecision ? "true" : "false";
601
6227
  if (name == "nl-ext-purify") return options.arith.nlExtPurify ? "true" : "false";
602
6227
  if (name == "nl-ext-rbound") return options.arith.nlExtResBound ? "true" : "false";
603
6227
  if (name == "nl-ext-rewrite") return options.arith.nlExtRewrites ? "true" : "false";
604
6227
  if (name == "nl-ext-split-zero") return options.arith.nlExtSplitZero ? "true" : "false";
605
6227
  if (name == "nl-ext-tf-taylor-deg") return std::to_string(options.arith.nlExtTfTaylorDegree);
606
6227
  if (name == "nl-ext-tf-tplanes") return options.arith.nlExtTfTangentPlanes ? "true" : "false";
607
6227
  if (name == "nl-ext-tplanes") return options.arith.nlExtTangentPlanes ? "true" : "false";
608
6227
  if (name == "nl-ext-tplanes-interleave") return options.arith.nlExtTangentPlanesInterleave ? "true" : "false";
609
6227
  if (name == "nl-icp") return options.arith.nlICP ? "true" : "false";
610
6227
  if (name == "nl-rlv") { std::stringstream s; s << options.arith.nlRlvMode; return s.str(); }
611
6227
  if (name == "nl-rlv-assert-bounds") return options.arith.nlRlvAssertBounds ? "true" : "false";
612
6227
  if (name == "on-repeat-ite-simp") return options.smt.doITESimpOnRepeat ? "true" : "false";
613
6227
  if (name == "regular-output-channel" || name == "out") { std::stringstream s; s << options.base.out; return s.str(); }
614
6227
  if (name == "output") { std::stringstream s; s << options.base.outputTag; return s.str(); }
615
6227
  if (name == "output-lang" || name == "output-language") { std::stringstream s; s << options.base.outputLanguage; return s.str(); }
616
36
  if (name == "parse-only") return options.base.parseOnly ? "true" : "false";
617
36
  if (name == "partial-triggers") return options.quantifiers.partialTriggers ? "true" : "false";
618
36
  if (name == "pb-rewrites") return options.arith.pbRewrites ? "true" : "false";
619
36
  if (name == "pivot-threshold") return std::to_string(options.arith.arithPivotThreshold);
620
36
  if (name == "pool-inst") return options.quantifiers.poolInst ? "true" : "false";
621
36
  if (name == "pp-assert-max-sub-size") return std::to_string(options.arith.ppAssertMaxSubSize);
622
36
  if (name == "pre-skolem-quant") return options.quantifiers.preSkolemQuant ? "true" : "false";
623
36
  if (name == "pre-skolem-quant-agg") return options.quantifiers.preSkolemQuantAgg ? "true" : "false";
624
36
  if (name == "pre-skolem-quant-nested") return options.quantifiers.preSkolemQuantNested ? "true" : "false";
625
36
  if (name == "prenex-quant") { std::stringstream s; s << options.quantifiers.prenexQuant; return s.str(); }
626
36
  if (name == "prenex-quant-user") return options.quantifiers.prenexQuantUser ? "true" : "false";
627
36
  if (name == "preprocess-only") return options.base.preprocessOnly ? "true" : "false";
628
36
  if (name == "print-inst") { std::stringstream s; s << options.printer.printInstMode; return s.str(); }
629
36
  if (name == "print-inst-full") return options.printer.printInstFull ? "true" : "false";
630
36
  if (name == "print-success") return options.base.printSuccess ? "true" : "false";
631
36
  if (name == "produce-abducts") return options.smt.produceAbducts ? "true" : "false";
632
36
  if (name == "produce-assertions") return options.smt.produceAssertions ? "true" : "false";
633
36
  if (name == "produce-assignments") return options.smt.produceAssignments ? "true" : "false";
634
36
  if (name == "produce-difficulty") return options.smt.produceDifficulty ? "true" : "false";
635
36
  if (name == "produce-interpols") { std::stringstream s; s << options.smt.produceInterpols; return s.str(); }
636
36
  if (name == "produce-models") return options.smt.produceModels ? "true" : "false";
637
33
  if (name == "produce-proofs") return options.smt.produceProofs ? "true" : "false";
638
33
  if (name == "produce-unsat-assumptions") return options.smt.unsatAssumptions ? "true" : "false";
639
33
  if (name == "produce-unsat-cores") return options.smt.unsatCores ? "true" : "false";
640
33
  if (name == "proof-check") { std::stringstream s; s << options.proof.proofCheck; return s.str(); }
641
33
  if (name == "proof-format-mode") { std::stringstream s; s << options.proof.proofFormatMode; return s.str(); }
642
33
  if (name == "proof-granularity") { std::stringstream s; s << options.proof.proofGranularityMode; return s.str(); }
643
33
  if (name == "proof-pedantic") return std::to_string(options.proof.proofPedantic);
644
33
  if (name == "proof-pp-merge") return options.proof.proofPpMerge ? "true" : "false";
645
33
  if (name == "proof-print-conclusion") return options.proof.proofPrintConclusion ? "true" : "false";
646
33
  if (name == "prop-row-length") return std::to_string(options.arith.arithPropagateMaxLength);
647
33
  if (name == "purify-triggers") return options.quantifiers.purifyTriggers ? "true" : "false";
648
33
  if (name == "qcf-all-conflict") return options.quantifiers.qcfAllConflict ? "true" : "false";
649
33
  if (name == "qcf-eager-check-rd") return options.quantifiers.qcfEagerCheckRd ? "true" : "false";
650
33
  if (name == "qcf-eager-test") return options.quantifiers.qcfEagerTest ? "true" : "false";
651
33
  if (name == "qcf-nested-conflict") return options.quantifiers.qcfNestedConflict ? "true" : "false";
652
33
  if (name == "qcf-skip-rd") return options.quantifiers.qcfSkipRd ? "true" : "false";
653
33
  if (name == "qcf-tconstraint") return options.quantifiers.qcfTConstraint ? "true" : "false";
654
33
  if (name == "qcf-vo-exp") return options.quantifiers.qcfVoExp ? "true" : "false";
655
33
  if (name == "quant-alpha-equiv") return options.quantifiers.quantAlphaEquiv ? "true" : "false";
656
33
  if (name == "quant-cf") return options.quantifiers.quantConflictFind ? "true" : "false";
657
33
  if (name == "quant-cf-mode") { std::stringstream s; s << options.quantifiers.qcfMode; return s.str(); }
658
33
  if (name == "quant-cf-when") { std::stringstream s; s << options.quantifiers.qcfWhenMode; return s.str(); }
659
33
  if (name == "quant-dsplit-mode") { std::stringstream s; s << options.quantifiers.quantDynamicSplit; return s.str(); }
660
33
  if (name == "quant-fun-wd") return options.quantifiers.quantFunWellDefined ? "true" : "false";
661
33
  if (name == "quant-ind") return options.quantifiers.quantInduction ? "true" : "false";
662
33
  if (name == "quant-rep-mode") { std::stringstream s; s << options.quantifiers.quantRepMode; return s.str(); }
663
33
  if (name == "quant-split") return options.quantifiers.quantSplit ? "true" : "false";
664
33
  if (name == "random-frequency" || name == "random-freq") return std::to_string(options.prop.satRandomFreq);
665
33
  if (name == "random-seed") return std::to_string(options.prop.satRandomSeed);
666
29
  if (name == "re-elim") return options.strings.regExpElim ? "true" : "false";
667
29
  if (name == "re-elim-agg") return options.strings.regExpElimAgg ? "true" : "false";
668
29
  if (name == "re-inter-mode") { std::stringstream s; s << options.strings.stringRegExpInterMode; return s.str(); }
669
29
  if (name == "refine-conflicts") return options.prop.sat_refine_conflicts ? "true" : "false";
670
29
  if (name == "register-quant-body-terms") return options.quantifiers.registerQuantBodyTerms ? "true" : "false";
671
29
  if (name == "relational-triggers") return options.quantifiers.relationalTriggers ? "true" : "false";
672
29
  if (name == "relevance-filter") return options.theory.relevanceFilter ? "true" : "false";
673
29
  if (name == "relevant-triggers") return options.quantifiers.relevantTriggers ? "true" : "false";
674
29
  if (name == "repeat-simp") return options.smt.repeatSimp ? "true" : "false";
675
29
  if (name == "replay-early-close-depth") return std::to_string(options.arith.replayEarlyCloseDepths);
676
29
  if (name == "replay-failure-penalty") return std::to_string(options.arith.replayFailurePenalty);
677
29
  if (name == "replay-lemma-reject-cut") return std::to_string(options.arith.lemmaRejectCutSize);
678
29
  if (name == "replay-num-err-penalty") return std::to_string(options.arith.replayNumericFailurePenalty);
679
29
  if (name == "replay-reject-cut") return std::to_string(options.arith.replayRejectCutSize);
680
29
  if (name == "replay-soi-major-threshold") return std::to_string(options.arith.soiApproxMajorFailure);
681
29
  if (name == "replay-soi-major-threshold-pen") return std::to_string(options.arith.soiApproxMajorFailurePen);
682
29
  if (name == "replay-soi-minor-threshold") return std::to_string(options.arith.soiApproxMinorFailure);
683
29
  if (name == "replay-soi-minor-threshold-pen") return std::to_string(options.arith.soiApproxMinorFailurePen);
684
29
  if (name == "restart-int-base") return std::to_string(options.prop.satRestartFirst);
685
29
  if (name == "restart-int-inc") return std::to_string(options.prop.satRestartInc);
686
29
  if (name == "restrict-pivots") return options.arith.restrictedPivots ? "true" : "false";
687
29
  if (name == "revert-arith-models-on-unsat") return options.arith.revertArithModels ? "true" : "false";
688
29
  if (name == "rlimit") return std::to_string(options.base.cumulativeResourceLimit);
689
29
  if (name == "reproducible-resource-limit" || name == "rlimit-per") return std::to_string(options.base.perCallResourceLimit);
690
29
  if (name == "rr-turns") return std::to_string(options.arith.rrTurns);
691
29
  if (name == "se-solve-int") return options.arith.trySolveIntStandardEffort ? "true" : "false";
692
29
  if (name == "seed") return std::to_string(options.driver.seed);
693
29
  if (name == "segv-spin") return options.driver.segvSpin ? "true" : "false";
694
29
  if (name == "semantic-checks") return options.parser.semanticChecks ? "true" : "false";
695
29
  if (name == "sep-check-neg") return options.sep.sepCheckNeg ? "true" : "false";
696
29
  if (name == "sep-child-refine") return options.sep.sepChildRefine ? "true" : "false";
697
29
  if (name == "sep-deq-c") return options.sep.sepDisequalC ? "true" : "false";
698
29
  if (name == "sep-exp") return options.sep.sepExp ? "true" : "false";
699
29
  if (name == "sep-min-refine") return options.sep.sepMinimalRefine ? "true" : "false";
700
29
  if (name == "sep-pre-skolem-emp") return options.sep.sepPreSkolemEmp ? "true" : "false";
701
29
  if (name == "sets-ext") return options.sets.setsExt ? "true" : "false";
702
29
  if (name == "sets-infer-as-lemmas") return options.sets.setsInferAsLemmas ? "true" : "false";
703
29
  if (name == "sets-proxy-lemmas") return options.sets.setsProxyLemmas ? "true" : "false";
704
29
  if (name == "simp-ite-compress") return options.smt.compressItes ? "true" : "false";
705
29
  if (name == "simp-ite-hunt-zombies") return std::to_string(options.smt.zombieHuntThreshold);
706
29
  if (name == "simp-with-care") return options.smt.simplifyWithCareEnabled ? "true" : "false";
707
29
  if (name == "simplex-check-period") return std::to_string(options.arith.arithSimplexCheckPeriod);
708
29
  if (name == "simplification" || name == "simplification-mode") { std::stringstream s; s << options.smt.simplificationMode; return s.str(); }
709
28
  if (name == "soi-qe") return options.arith.soiQuickExplain ? "true" : "false";
710
28
  if (name == "solve-bv-as-int") { std::stringstream s; s << options.smt.solveBVAsInt; return s.str(); }
711
28
  if (name == "solve-int-as-bv") return std::to_string(options.smt.solveIntAsBV);
712
28
  if (name == "solve-real-as-int") return options.smt.solveRealAsInt ? "true" : "false";
713
28
  if (name == "sort-inference") return options.smt.sortInference ? "true" : "false";
714
28
  if (name == "standard-effort-variable-order-pivots") return std::to_string(options.arith.arithStandardCheckVarOrderPivots);
715
28
  if (name == "static-learning") return options.smt.doStaticLearning ? "true" : "false";
716
28
  if (name == "stats") return options.base.statistics ? "true" : "false";
717
23
  if (name == "stats-all") return options.base.statisticsAll ? "true" : "false";
718
18
  if (name == "stats-every-query") return options.base.statisticsEveryQuery ? "true" : "false";
719
13
  if (name == "stats-expert") return options.base.statisticsExpert ? "true" : "false";
720
8
  if (name == "strict-parsing") return options.parser.strictParsing ? "true" : "false";
721
8
  if (name == "strings-check-entail-len") return options.strings.stringCheckEntailLen ? "true" : "false";
722
8
  if (name == "strings-eager") return options.strings.stringEager ? "true" : "false";
723
8
  if (name == "strings-eager-eval") return options.strings.stringEagerEval ? "true" : "false";
724
8
  if (name == "strings-eager-len") return options.strings.stringEagerLen ? "true" : "false";
725
8
  if (name == "strings-exp") return options.strings.stringExp ? "true" : "false";
726
8
  if (name == "strings-ff") return options.strings.stringFlatForms ? "true" : "false";
727
8
  if (name == "strings-fmf") return options.strings.stringFMF ? "true" : "false";
728
8
  if (name == "strings-guess-model") return options.strings.stringGuessModel ? "true" : "false";
729
8
  if (name == "strings-infer-as-lemmas") return options.strings.stringInferAsLemmas ? "true" : "false";
730
8
  if (name == "strings-infer-sym") return options.strings.stringInferSym ? "true" : "false";
731
8
  if (name == "strings-lazy-pp") return options.strings.stringLazyPreproc ? "true" : "false";
732
8
  if (name == "strings-len-norm") return options.strings.stringLenNorm ? "true" : "false";
733
8
  if (name == "strings-lprop-csp") return options.strings.stringLenPropCsp ? "true" : "false";
734
8
  if (name == "strings-min-prefix-explain") return options.strings.stringMinPrefixExplain ? "true" : "false";
735
8
  if (name == "strings-process-loop-mode") { std::stringstream s; s << options.strings.stringProcessLoopMode; return s.str(); }
736
8
  if (name == "strings-rexplain-lemmas") return options.strings.stringRExplainLemmas ? "true" : "false";
737
8
  if (name == "strings-unified-vspt") return options.strings.stringUnifiedVSpt ? "true" : "false";
738
8
  if (name == "sygus") return options.quantifiers.sygus ? "true" : "false";
739
8
  if (name == "sygus-abort-size") return std::to_string(options.datatypes.sygusAbortSize);
740
8
  if (name == "sygus-active-gen") { std::stringstream s; s << options.quantifiers.sygusActiveGenMode; return s.str(); }
741
8
  if (name == "sygus-active-gen-cfactor") return std::to_string(options.quantifiers.sygusActiveGenEnumConsts);
742
8
  if (name == "sygus-add-const-grammar") return options.quantifiers.sygusAddConstGrammar ? "true" : "false";
743
8
  if (name == "sygus-arg-relevant") return options.quantifiers.sygusArgRelevant ? "true" : "false";
744
8
  if (name == "sygus-auto-unfold") return options.quantifiers.sygusInvAutoUnfold ? "true" : "false";
745
8
  if (name == "sygus-bool-ite-return-const") return options.quantifiers.sygusBoolIteReturnConst ? "true" : "false";
746
8
  if (name == "sygus-core-connective") return options.quantifiers.sygusCoreConnective ? "true" : "false";
747
8
  if (name == "sygus-crepair-abort") return options.quantifiers.sygusConstRepairAbort ? "true" : "false";
748
8
  if (name == "sygus-eval-opt") return options.quantifiers.sygusEvalOpt ? "true" : "false";
749
8
  if (name == "sygus-eval-unfold") return options.quantifiers.sygusEvalUnfold ? "true" : "false";
750
8
  if (name == "sygus-eval-unfold-bool") return options.quantifiers.sygusEvalUnfoldBool ? "true" : "false";
751
8
  if (name == "sygus-expr-miner-check-timeout") return std::to_string(options.quantifiers.sygusExprMinerCheckTimeout);
752
8
  if (name == "sygus-ext-rew") return options.quantifiers.sygusExtRew ? "true" : "false";
753
8
  if (name == "sygus-fair") { std::stringstream s; s << options.datatypes.sygusFair; return s.str(); }
754
8
  if (name == "sygus-fair-max") return options.datatypes.sygusFairMax ? "true" : "false";
755
8
  if (name == "sygus-filter-sol") { std::stringstream s; s << options.quantifiers.sygusFilterSolMode; return s.str(); }
756
8
  if (name == "sygus-filter-sol-rev") return options.quantifiers.sygusFilterSolRevSubsume ? "true" : "false";
757
8
  if (name == "sygus-grammar-cons") { std::stringstream s; s << options.quantifiers.sygusGrammarConsMode; return s.str(); }
758
8
  if (name == "sygus-grammar-norm") return options.quantifiers.sygusGrammarNorm ? "true" : "false";
759
8
  if (name == "sygus-inference") return options.quantifiers.sygusInference ? "true" : "false";
760
8
  if (name == "sygus-inst") return options.quantifiers.sygusInst ? "true" : "false";
761
8
  if (name == "sygus-inst-mode") { std::stringstream s; s << options.quantifiers.sygusInstMode; return s.str(); }
762
8
  if (name == "sygus-inst-scope") { std::stringstream s; s << options.quantifiers.sygusInstScope; return s.str(); }
763
8
  if (name == "sygus-inst-term-sel") { std::stringstream s; s << options.quantifiers.sygusInstTermSel; return s.str(); }
764
8
  if (name == "sygus-inv-templ") { std::stringstream s; s << options.quantifiers.sygusInvTemplMode; return s.str(); }
765
8
  if (name == "sygus-inv-templ-when-sg") return options.quantifiers.sygusInvTemplWhenSyntax ? "true" : "false";
766
8
  if (name == "sygus-min-grammar") return options.quantifiers.sygusMinGrammar ? "true" : "false";
767
8
  if (name == "sygus-out") { std::stringstream s; s << options.smt.sygusOut; return s.str(); }
768
8
  if (name == "sygus-pbe") return options.quantifiers.sygusUnifPbe ? "true" : "false";
769
8
  if (name == "sygus-pbe-multi-fair") return options.quantifiers.sygusPbeMultiFair ? "true" : "false";
770
8
  if (name == "sygus-pbe-multi-fair-diff") return std::to_string(options.quantifiers.sygusPbeMultiFairDiff);
771
8
  if (name == "sygus-print-callbacks") return options.smt.sygusPrintCallbacks ? "true" : "false";
772
8
  if (name == "sygus-qe-preproc") return options.quantifiers.sygusQePreproc ? "true" : "false";
773
8
  if (name == "sygus-query-gen") return options.quantifiers.sygusQueryGen ? "true" : "false";
774
8
  if (name == "sygus-query-gen-check") return options.quantifiers.sygusQueryGenCheck ? "true" : "false";
775
8
  if (name == "sygus-query-gen-dump-files") { std::stringstream s; s << options.quantifiers.sygusQueryGenDumpFiles; return s.str(); }
776
8
  if (name == "sygus-query-gen-thresh") return std::to_string(options.quantifiers.sygusQueryGenThresh);
777
8
  if (name == "sygus-rec-fun") return options.quantifiers.sygusRecFun ? "true" : "false";
778
8
  if (name == "sygus-rec-fun-eval-limit") return std::to_string(options.quantifiers.sygusRecFunEvalLimit);
779
8
  if (name == "sygus-repair-const") return options.quantifiers.sygusRepairConst ? "true" : "false";
780
8
  if (name == "sygus-repair-const-timeout") return std::to_string(options.quantifiers.sygusRepairConstTimeout);
781
8
  if (name == "sygus-rr") return options.quantifiers.sygusRew ? "true" : "false";
782
8
  if (name == "sygus-rr-synth") return options.quantifiers.sygusRewSynth ? "true" : "false";
783
8
  if (name == "sygus-rr-synth-accel") return options.quantifiers.sygusRewSynthAccel ? "true" : "false";
784
8
  if (name == "sygus-rr-synth-check") return options.quantifiers.sygusRewSynthCheck ? "true" : "false";
785
8
  if (name == "sygus-rr-synth-filter-cong") return options.quantifiers.sygusRewSynthFilterCong ? "true" : "false";
786
8
  if (name == "sygus-rr-synth-filter-match") return options.quantifiers.sygusRewSynthFilterMatch ? "true" : "false";
787
8
  if (name == "sygus-rr-synth-filter-nl") return options.quantifiers.sygusRewSynthFilterNonLinear ? "true" : "false";
788
8
  if (name == "sygus-rr-synth-filter-order") return options.quantifiers.sygusRewSynthFilterOrder ? "true" : "false";
789
8
  if (name == "sygus-rr-synth-input") return options.quantifiers.sygusRewSynthInput ? "true" : "false";
790
8
  if (name == "sygus-rr-synth-input-nvars") return std::to_string(options.quantifiers.sygusRewSynthInputNVars);
791
8
  if (name == "sygus-rr-synth-input-use-bool") return options.quantifiers.sygusRewSynthInputUseBool ? "true" : "false";
792
8
  if (name == "sygus-rr-synth-rec") return options.quantifiers.sygusRewSynthRec ? "true" : "false";
793
8
  if (name == "sygus-rr-verify") return options.quantifiers.sygusRewVerify ? "true" : "false";
794
8
  if (name == "sygus-rr-verify-abort") return options.quantifiers.sygusRewVerifyAbort ? "true" : "false";
795
8
  if (name == "sygus-sample-fp-uniform") return options.quantifiers.sygusSampleFpUniform ? "true" : "false";
796
8
  if (name == "sygus-sample-grammar") return options.quantifiers.sygusSampleGrammar ? "true" : "false";
797
8
  if (name == "sygus-samples") return std::to_string(options.quantifiers.sygusSamples);
798
8
  if (name == "sygus-si") { std::stringstream s; s << options.quantifiers.cegqiSingleInvMode; return s.str(); }
799
8
  if (name == "sygus-si-abort") return options.quantifiers.cegqiSingleInvAbort ? "true" : "false";
800
8
  if (name == "sygus-si-partial") return options.quantifiers.cegqiSingleInvPartial ? "true" : "false";
801
8
  if (name == "sygus-si-rcons") { std::stringstream s; s << options.quantifiers.cegqiSingleInvReconstruct; return s.str(); }
802
8
  if (name == "sygus-si-rcons-limit") return std::to_string(options.quantifiers.cegqiSingleInvReconstructLimit);
803
8
  if (name == "sygus-si-reconstruct-const") return options.quantifiers.cegqiSingleInvReconstructConst ? "true" : "false";
804
8
  if (name == "sygus-stream") return options.quantifiers.sygusStream ? "true" : "false";
805
8
  if (name == "sygus-sym-break") return options.datatypes.sygusSymBreak ? "true" : "false";
806
8
  if (name == "sygus-sym-break-agg") return options.datatypes.sygusSymBreakAgg ? "true" : "false";
807
8
  if (name == "sygus-sym-break-dynamic") return options.datatypes.sygusSymBreakDynamic ? "true" : "false";
808
8
  if (name == "sygus-sym-break-lazy") return options.datatypes.sygusSymBreakLazy ? "true" : "false";
809
8
  if (name == "sygus-sym-break-pbe") return options.datatypes.sygusSymBreakPbe ? "true" : "false";
810
8
  if (name == "sygus-sym-break-rlv") return options.datatypes.sygusSymBreakRlv ? "true" : "false";
811
8
  if (name == "sygus-templ-embed-grammar") return options.quantifiers.sygusTemplEmbedGrammar ? "true" : "false";
812
8
  if (name == "sygus-unif-cond-independent-no-repeat-sol") return options.quantifiers.sygusUnifCondIndNoRepeatSol ? "true" : "false";
813
8
  if (name == "sygus-unif-pi") { std::stringstream s; s << options.quantifiers.sygusUnifPi; return s.str(); }
814
8
  if (name == "sygus-unif-shuffle-cond") return options.quantifiers.sygusUnifShuffleCond ? "true" : "false";
815
8
  if (name == "sygus-verify-inst-max-rounds") return std::to_string(options.quantifiers.sygusVerifyInstMaxRounds);
816
8
  if (name == "symmetry-breaker" || name == "uf-symmetry-breaker") return options.uf.ufSymmetryBreaker ? "true" : "false";
817
8
  if (name == "tc-mode") { std::stringstream s; s << options.theory.tcMode; return s.str(); }
818
8
  if (name == "term-db-cd") return options.quantifiers.termDbCd ? "true" : "false";
819
8
  if (name == "term-db-mode") { std::stringstream s; s << options.quantifiers.termDbMode; return s.str(); }
820
8
  if (name == "theoryof-mode") { std::stringstream s; s << options.theory.theoryOfMode; return s.str(); }
821
8
  if (name == "tlimit") return std::to_string(options.base.cumulativeMillisecondLimit);
822
8
  if (name == "tlimit-per") return std::to_string(options.base.perCallMillisecondLimit);
823
8
  if (name == "trigger-active-sel") { std::stringstream s; s << options.quantifiers.triggerActiveSelMode; return s.str(); }
824
8
  if (name == "trigger-sel") { std::stringstream s; s << options.quantifiers.triggerSelMode; return s.str(); }
825
8
  if (name == "type-checking") return options.expr.typeChecking ? "true" : "false";
826
8
  if (name == "uf-ho") return options.uf.ufHo ? "true" : "false";
827
8
  if (name == "uf-ho-ext") return options.uf.ufHoExt ? "true" : "false";
828
8
  if (name == "uf-ss") { std::stringstream s; s << options.uf.ufssMode; return s.str(); }
829
8
  if (name == "uf-ss-abort-card") return std::to_string(options.uf.ufssAbortCardinality);
830
8
  if (name == "uf-ss-fair") return options.uf.ufssFairness ? "true" : "false";
831
8
  if (name == "uf-ss-fair-monotone") return options.uf.ufssFairnessMonotone ? "true" : "false";
832
8
  if (name == "uf-ss-totality-limited") return std::to_string(options.uf.ufssTotalityLimited);
833
8
  if (name == "uf-ss-totality-sym-break") return options.uf.ufssTotalitySymBreak ? "true" : "false";
834
8
  if (name == "unate-lemmas") { std::stringstream s; s << options.arith.arithUnateLemmaMode; return s.str(); }
835
8
  if (name == "unconstrained-simp") return options.smt.unconstrainedSimp ? "true" : "false";
836
8
  if (name == "unsat-cores-mode") { std::stringstream s; s << options.smt.unsatCoresMode; return s.str(); }
837
8
  if (name == "use-approx") return options.arith.useApprox ? "true" : "false";
838
8
  if (name == "use-fcsimplex") return options.arith.useFC ? "true" : "false";
839
8
  if (name == "use-soi") return options.arith.useSOI ? "true" : "false";
840
8
  if (name == "user-pat") { std::stringstream s; s << options.quantifiers.userPatternsQuant; return s.str(); }
841
8
  if (name == "var-elim-quant") return options.quantifiers.varElimQuant ? "true" : "false";
842
8
  if (name == "var-ineq-elim-quant") return options.quantifiers.varIneqElimQuant ? "true" : "false";
843
8
  if (name == "verbosity") return std::to_string(options.base.verbosity);
844
2
  if (name == "version") return options.driver.version ? "true" : "false";
845
    // clang-format on
846
2
    throw OptionException("Unrecognized option key or setting: " + name);
847
  }
848
849
38667
  void set(
850
      Options & opts, const std::string& name, const std::string& optionarg)
851
  {
852
77334
    Trace("options") << "set option " << name << " = " << optionarg
853
38667
                     << std::endl;
854
    // clang-format off
855
38667
  if (name == "abstract-values") {
856
4
    opts.smt.abstractValues = handlers::handleOption<bool>("abstract-values", name, optionarg);
857
4
    opts.smt.abstractValuesWasSetByUser = true;
858
38663
  } else if (name == "ackermann") {
859
31
    opts.smt.ackermann = handlers::handleOption<bool>("ackermann", name, optionarg);
860
31
    opts.smt.ackermannWasSetByUser = true;
861
38632
  } else if (name == "ag-miniscope-quant") {
862
4
    opts.quantifiers.aggressiveMiniscopeQuant = handlers::handleOption<bool>("ag-miniscope-quant", name, optionarg);
863
4
    opts.quantifiers.aggressiveMiniscopeQuantWasSetByUser = true;
864
38628
  } else if (name == "approx-branch-depth") {
865
    opts.arith.maxApproxDepth = handlers::handleOption<int64_t>("approx-branch-depth", name, optionarg);
866
    opts.arith.maxApproxDepthWasSetByUser = true;
867
38628
  } else if (name == "arith-brab") {
868
4
    opts.arith.brabTest = handlers::handleOption<bool>("arith-brab", name, optionarg);
869
4
    opts.arith.brabTestWasSetByUser = true;
870
38624
  } else if (name == "arith-cong-man") {
871
    opts.arith.arithCongMan = handlers::handleOption<bool>("arith-cong-man", name, optionarg);
872
    opts.arith.arithCongManWasSetByUser = true;
873
38624
  } else if (name == "arith-eq-solver") {
874
6
    opts.arith.arithEqSolver = handlers::handleOption<bool>("arith-eq-solver", name, optionarg);
875
6
    opts.arith.arithEqSolverWasSetByUser = true;
876
38618
  } else if (name == "arith-no-partial-fun") {
877
3
    opts.arith.arithNoPartialFun = handlers::handleOption<bool>("arith-no-partial-fun", name, optionarg);
878
3
    opts.arith.arithNoPartialFunWasSetByUser = true;
879
38615
  } else if (name == "arith-prop") {
880
    opts.arith.arithPropagationMode = stringToArithPropagationMode(optionarg);
881
    opts.arith.arithPropagationModeWasSetByUser = true;
882
38615
  } else if (name == "arith-prop-clauses") {
883
    opts.arith.arithPropAsLemmaLength = handlers::handleOption<uint64_t>("arith-prop-clauses", name, optionarg);
884
    opts.arith.arithPropAsLemmaLengthWasSetByUser = true;
885
38615
  } else if (name == "arith-rewrite-equalities") {
886
9
    opts.arith.arithRewriteEq = handlers::handleOption<bool>("arith-rewrite-equalities", name, optionarg);
887
9
    opts.arith.arithRewriteEqWasSetByUser = true;
888
38606
  } else if (name == "arrays-config") {
889
    opts.arrays.arraysConfig = handlers::handleOption<int64_t>("arrays-config", name, optionarg);
890
    opts.arrays.arraysConfigWasSetByUser = true;
891
38606
  } else if (name == "arrays-eager-index") {
892
    opts.arrays.arraysEagerIndexSplitting = handlers::handleOption<bool>("arrays-eager-index", name, optionarg);
893
    opts.arrays.arraysEagerIndexSplittingWasSetByUser = true;
894
38606
  } else if (name == "arrays-eager-lemmas") {
895
    opts.arrays.arraysEagerLemmas = handlers::handleOption<bool>("arrays-eager-lemmas", name, optionarg);
896
    opts.arrays.arraysEagerLemmasWasSetByUser = true;
897
38606
  } else if (name == "arrays-exp") {
898
10
    opts.arrays.arraysExp = handlers::handleOption<bool>("arrays-exp", name, optionarg);
899
10
    opts.arrays.arraysExpWasSetByUser = true;
900
38596
  } else if (name == "arrays-model-based") {
901
    opts.arrays.arraysModelBased = handlers::handleOption<bool>("arrays-model-based", name, optionarg);
902
    opts.arrays.arraysModelBasedWasSetByUser = true;
903
38596
  } else if (name == "arrays-optimize-linear") {
904
    opts.arrays.arraysOptimizeLinear = handlers::handleOption<bool>("arrays-optimize-linear", name, optionarg);
905
    opts.arrays.arraysOptimizeLinearWasSetByUser = true;
906
38596
  } else if (name == "arrays-prop") {
907
    opts.arrays.arraysPropagate = handlers::handleOption<int64_t>("arrays-prop", name, optionarg);
908
    opts.arrays.arraysPropagateWasSetByUser = true;
909
38596
  } else if (name == "arrays-reduce-sharing") {
910
    opts.arrays.arraysReduceSharing = handlers::handleOption<bool>("arrays-reduce-sharing", name, optionarg);
911
    opts.arrays.arraysReduceSharingWasSetByUser = true;
912
38596
  } else if (name == "arrays-weak-equiv") {
913
    opts.arrays.arraysWeakEquivalence = handlers::handleOption<bool>("arrays-weak-equiv", name, optionarg);
914
    opts.arrays.arraysWeakEquivalenceWasSetByUser = true;
915
38596
  } else if (name == "assign-function-values") {
916
2
    opts.theory.assignFunctionValues = handlers::handleOption<bool>("assign-function-values", name, optionarg);
917
2
    opts.theory.assignFunctionValuesWasSetByUser = true;
918
38594
  } else if (name == "bitblast") {
919
43
    opts.bv.bitblastMode = stringToBitblastMode(optionarg);
920
43
    opts.bv.bitblastModeWasSetByUser = true;
921
38551
  } else if (name == "bitblast-aig") {
922
    auto value = handlers::handleOption<bool>("bitblast-aig", name, optionarg);
923
    opts.handler().abcEnabledBuild("bitblast-aig", name, value);
924
    opts.handler().setBitblastAig("bitblast-aig", name, value);
925
    opts.bv.bitvectorAig = value;
926
    opts.bv.bitvectorAigWasSetByUser = true;
927
38551
  } else if (name == "bitwise-eq") {
928
    opts.bv.bitwiseEq = handlers::handleOption<bool>("bitwise-eq", name, optionarg);
929
    opts.bv.bitwiseEqWasSetByUser = true;
930
38551
  } else if (name == "block-models") {
931
21
    opts.smt.blockModelsMode = stringToBlockModelsMode(optionarg);
932
21
    opts.smt.blockModelsModeWasSetByUser = true;
933
38530
  } else if (name == "bool-to-bv") {
934
12
    opts.bv.boolToBitvector = stringToBoolToBVMode(optionarg);
935
12
    opts.bv.boolToBitvectorWasSetByUser = true;
936
38518
  } else if (name == "bv-abstraction") {
937
4
    opts.bv.bvAbstraction = handlers::handleOption<bool>("bv-abstraction", name, optionarg);
938
4
    opts.bv.bvAbstractionWasSetByUser = true;
939
38514
  } else if (name == "bv-aig-simp") {
940
    auto value = handlers::handleOption<std::string>("bv-aig-simp", name, optionarg);
941
    opts.handler().abcEnabledBuild("bv-aig-simp", name, value);
942
    opts.bv.bitvectorAigSimplifications = value;
943
    opts.bv.bitvectorAigSimplificationsWasSetByUser = true;
944
38514
  } else if (name == "bv-alg-extf") {
945
    opts.bv.bvAlgExtf = handlers::handleOption<bool>("bv-alg-extf", name, optionarg);
946
    opts.bv.bvAlgExtfWasSetByUser = true;
947
38514
  } else if (name == "bv-algebraic-budget") {
948
    opts.bv.bitvectorAlgebraicBudget = handlers::handleOption<uint64_t>("bv-algebraic-budget", name, optionarg);
949
    opts.bv.bitvectorAlgebraicBudgetWasSetByUser = true;
950
38514
  } else if (name == "bv-algebraic-solver") {
951
    opts.bv.bitvectorAlgebraicSolver = handlers::handleOption<bool>("bv-algebraic-solver", name, optionarg);
952
    opts.bv.bitvectorAlgebraicSolverWasSetByUser = true;
953
38514
  } else if (name == "bv-assert-input") {
954
6
    opts.bv.bvAssertInput = handlers::handleOption<bool>("bv-assert-input", name, optionarg);
955
6
    opts.bv.bvAssertInputWasSetByUser = true;
956
38508
  } else if (name == "bv-eager-explanations") {
957
    opts.bv.bvEagerExplanations = handlers::handleOption<bool>("bv-eager-explanations", name, optionarg);
958
    opts.bv.bvEagerExplanationsWasSetByUser = true;
959
38508
  } else if (name == "bv-eq-solver") {
960
2
    opts.bv.bitvectorEqualitySolver = handlers::handleOption<bool>("bv-eq-solver", name, optionarg);
961
2
    opts.bv.bitvectorEqualitySolverWasSetByUser = true;
962
38506
  } else if (name == "bv-extract-arith") {
963
    opts.bv.bvExtractArithRewrite = handlers::handleOption<bool>("bv-extract-arith", name, optionarg);
964
    opts.bv.bvExtractArithRewriteWasSetByUser = true;
965
38506
  } else if (name == "bv-gauss-elim") {
966
    opts.bv.bvGaussElim = handlers::handleOption<bool>("bv-gauss-elim", name, optionarg);
967
    opts.bv.bvGaussElimWasSetByUser = true;
968
38506
  } else if (name == "bv-inequality-solver") {
969
    opts.bv.bitvectorInequalitySolver = handlers::handleOption<bool>("bv-inequality-solver", name, optionarg);
970
    opts.bv.bitvectorInequalitySolverWasSetByUser = true;
971
38506
  } else if (name == "bv-intro-pow2") {
972
2
    opts.bv.bvIntroducePow2 = handlers::handleOption<bool>("bv-intro-pow2", name, optionarg);
973
2
    opts.bv.bvIntroducePow2WasSetByUser = true;
974
38504
  } else if (name == "bv-num-func") {
975
    opts.bv.bvNumFunc = handlers::handleOption<uint64_t>("bv-num-func", name, optionarg);
976
    opts.bv.bvNumFuncWasSetByUser = true;
977
38504
  } else if (name == "bv-print-consts-as-indexed-symbols") {
978
2
    opts.bv.bvPrintConstsAsIndexedSymbols = handlers::handleOption<bool>("bv-print-consts-as-indexed-symbols", name, optionarg);
979
2
    opts.bv.bvPrintConstsAsIndexedSymbolsWasSetByUser = true;
980
38502
  } else if (name == "bv-propagate") {
981
    opts.bv.bitvectorPropagate = handlers::handleOption<bool>("bv-propagate", name, optionarg);
982
    opts.bv.bitvectorPropagateWasSetByUser = true;
983
38502
  } else if (name == "bv-quick-xplain") {
984
    opts.bv.bitvectorQuickXplain = handlers::handleOption<bool>("bv-quick-xplain", name, optionarg);
985
    opts.bv.bitvectorQuickXplainWasSetByUser = true;
986
38502
  } else if (name == "bv-sat-solver") {
987
18
    auto value = stringToSatSolverMode(optionarg);
988
16
    opts.handler().checkBvSatSolver("bv-sat-solver", name, value);
989
16
    opts.bv.bvSatSolver = value;
990
16
    opts.bv.bvSatSolverWasSetByUser = true;
991
38484
  } else if (name == "bv-skolemize") {
992
    opts.bv.skolemizeArguments = handlers::handleOption<bool>("bv-skolemize", name, optionarg);
993
    opts.bv.skolemizeArgumentsWasSetByUser = true;
994
38484
  } else if (name == "bv-solver") {
995
48
    opts.bv.bvSolver = stringToBVSolver(optionarg);
996
48
    opts.bv.bvSolverWasSetByUser = true;
997
38436
  } else if (name == "bv-to-bool") {
998
10
    opts.bv.bitvectorToBool = handlers::handleOption<bool>("bv-to-bool", name, optionarg);
999
10
    opts.bv.bitvectorToBoolWasSetByUser = true;
1000
38426
  } else if (name == "bvand-integer-granularity") {
1001
78
    opts.smt.BVAndIntegerGranularity = handlers::handleOption<uint64_t>("bvand-integer-granularity", name, optionarg);
1002
78
    opts.smt.BVAndIntegerGranularityWasSetByUser = true;
1003
38348
  } else if (name == "cdt-bisimilar") {
1004
    opts.datatypes.cdtBisimilar = handlers::handleOption<bool>("cdt-bisimilar", name, optionarg);
1005
    opts.datatypes.cdtBisimilarWasSetByUser = true;
1006
38348
  } else if (name == "cegis-sample") {
1007
3
    opts.quantifiers.cegisSample = stringToCegisSampleMode(optionarg);
1008
3
    opts.quantifiers.cegisSampleWasSetByUser = true;
1009
38345
  } else if (name == "cegqi") {
1010
19
    opts.quantifiers.cegqi = handlers::handleOption<bool>("cegqi", name, optionarg);
1011
19
    opts.quantifiers.cegqiWasSetByUser = true;
1012
38326
  } else if (name == "cegqi-all") {
1013
18
    opts.quantifiers.cegqiAll = handlers::handleOption<bool>("cegqi-all", name, optionarg);
1014
18
    opts.quantifiers.cegqiAllWasSetByUser = true;
1015
38308
  } else if (name == "cegqi-bv") {
1016
106
    opts.quantifiers.cegqiBv = handlers::handleOption<bool>("cegqi-bv", name, optionarg);
1017
106
    opts.quantifiers.cegqiBvWasSetByUser = true;
1018
38202
  } else if (name == "cegqi-bv-concat-inv") {
1019
    opts.quantifiers.cegqiBvConcInv = handlers::handleOption<bool>("cegqi-bv-concat-inv", name, optionarg);
1020
    opts.quantifiers.cegqiBvConcInvWasSetByUser = true;
1021
38202
  } else if (name == "cegqi-bv-ineq") {
1022
82
    opts.quantifiers.cegqiBvIneqMode = stringToCegqiBvIneqMode(optionarg);
1023
82
    opts.quantifiers.cegqiBvIneqModeWasSetByUser = true;
1024
38120
  } else if (name == "cegqi-bv-interleave-value") {
1025
    opts.quantifiers.cegqiBvInterleaveValue = handlers::handleOption<bool>("cegqi-bv-interleave-value", name, optionarg);
1026
    opts.quantifiers.cegqiBvInterleaveValueWasSetByUser = true;
1027
38120
  } else if (name == "cegqi-bv-linear") {
1028
    opts.quantifiers.cegqiBvLinearize = handlers::handleOption<bool>("cegqi-bv-linear", name, optionarg);
1029
    opts.quantifiers.cegqiBvLinearizeWasSetByUser = true;
1030
38120
  } else if (name == "cegqi-bv-rm-extract") {
1031
2
    opts.quantifiers.cegqiBvRmExtract = handlers::handleOption<bool>("cegqi-bv-rm-extract", name, optionarg);
1032
2
    opts.quantifiers.cegqiBvRmExtractWasSetByUser = true;
1033
38118
  } else if (name == "cegqi-bv-solve-nl") {
1034
    opts.quantifiers.cegqiBvSolveNl = handlers::handleOption<bool>("cegqi-bv-solve-nl", name, optionarg);
1035
    opts.quantifiers.cegqiBvSolveNlWasSetByUser = true;
1036
38118
  } else if (name == "cegqi-full") {
1037
599
    opts.quantifiers.cegqiFullEffort = handlers::handleOption<bool>("cegqi-full", name, optionarg);
1038
599
    opts.quantifiers.cegqiFullEffortWasSetByUser = true;
1039
37519
  } else if (name == "cegqi-innermost") {
1040
    opts.quantifiers.cegqiInnermost = handlers::handleOption<bool>("cegqi-innermost", name, optionarg);
1041
    opts.quantifiers.cegqiInnermostWasSetByUser = true;
1042
37519
  } else if (name == "cegqi-midpoint") {
1043
    opts.quantifiers.cegqiMidpoint = handlers::handleOption<bool>("cegqi-midpoint", name, optionarg);
1044
    opts.quantifiers.cegqiMidpointWasSetByUser = true;
1045
37519
  } else if (name == "cegqi-min-bounds") {
1046
    opts.quantifiers.cegqiMinBounds = handlers::handleOption<bool>("cegqi-min-bounds", name, optionarg);
1047
    opts.quantifiers.cegqiMinBoundsWasSetByUser = true;
1048
37519
  } else if (name == "cegqi-model") {
1049
    opts.quantifiers.cegqiModel = handlers::handleOption<bool>("cegqi-model", name, optionarg);
1050
    opts.quantifiers.cegqiModelWasSetByUser = true;
1051
37519
  } else if (name == "cegqi-multi-inst") {
1052
3
    opts.quantifiers.cegqiMultiInst = handlers::handleOption<bool>("cegqi-multi-inst", name, optionarg);
1053
3
    opts.quantifiers.cegqiMultiInstWasSetByUser = true;
1054
37516
  } else if (name == "cegqi-nested-qe") {
1055
19
    opts.quantifiers.cegqiNestedQE = handlers::handleOption<bool>("cegqi-nested-qe", name, optionarg);
1056
19
    opts.quantifiers.cegqiNestedQEWasSetByUser = true;
1057
37497
  } else if (name == "cegqi-nopt") {
1058
    opts.quantifiers.cegqiNopt = handlers::handleOption<bool>("cegqi-nopt", name, optionarg);
1059
    opts.quantifiers.cegqiNoptWasSetByUser = true;
1060
37497
  } else if (name == "cegqi-repeat-lit") {
1061
    opts.quantifiers.cegqiRepeatLit = handlers::handleOption<bool>("cegqi-repeat-lit", name, optionarg);
1062
    opts.quantifiers.cegqiRepeatLitWasSetByUser = true;
1063
37497
  } else if (name == "cegqi-round-up-lia") {
1064
    opts.quantifiers.cegqiRoundUpLowerLia = handlers::handleOption<bool>("cegqi-round-up-lia", name, optionarg);
1065
    opts.quantifiers.cegqiRoundUpLowerLiaWasSetByUser = true;
1066
37497
  } else if (name == "cegqi-sat") {
1067
    opts.quantifiers.cegqiSat = handlers::handleOption<bool>("cegqi-sat", name, optionarg);
1068
    opts.quantifiers.cegqiSatWasSetByUser = true;
1069
37497
  } else if (name == "cegqi-use-inf-int") {
1070
6
    opts.quantifiers.cegqiUseInfInt = handlers::handleOption<bool>("cegqi-use-inf-int", name, optionarg);
1071
6
    opts.quantifiers.cegqiUseInfIntWasSetByUser = true;
1072
37491
  } else if (name == "cegqi-use-inf-real") {
1073
6
    opts.quantifiers.cegqiUseInfReal = handlers::handleOption<bool>("cegqi-use-inf-real", name, optionarg);
1074
6
    opts.quantifiers.cegqiUseInfRealWasSetByUser = true;
1075
37485
  } else if (name == "check-abducts") {
1076
13
    opts.smt.checkAbducts = handlers::handleOption<bool>("check-abducts", name, optionarg);
1077
13
    opts.smt.checkAbductsWasSetByUser = true;
1078
37472
  } else if (name == "check-interpols") {
1079
8
    opts.smt.checkInterpols = handlers::handleOption<bool>("check-interpols", name, optionarg);
1080
8
    opts.smt.checkInterpolsWasSetByUser = true;
1081
37464
  } else if (name == "check-models") {
1082
121
    opts.smt.checkModels = handlers::handleOption<bool>("check-models", name, optionarg);
1083
121
    opts.smt.checkModelsWasSetByUser = true;
1084
37343
  } else if (name == "check-proofs") {
1085
1169
    opts.smt.checkProofs = handlers::handleOption<bool>("check-proofs", name, optionarg);
1086
1169
    opts.smt.checkProofsWasSetByUser = true;
1087
36174
  } else if (name == "check-synth-sol") {
1088
192
    opts.smt.checkSynthSol = handlers::handleOption<bool>("check-synth-sol", name, optionarg);
1089
192
    opts.smt.checkSynthSolWasSetByUser = true;
1090
35982
  } else if (name == "check-unsat-cores") {
1091
1195
    opts.smt.checkUnsatCores = handlers::handleOption<bool>("check-unsat-cores", name, optionarg);
1092
1195
    opts.smt.checkUnsatCoresWasSetByUser = true;
1093
34787
  } else if (name == "collect-pivot-stats") {
1094
    opts.arith.collectPivots = handlers::handleOption<bool>("collect-pivot-stats", name, optionarg);
1095
    opts.arith.collectPivotsWasSetByUser = true;
1096
34787
  } else if (name == "cond-var-split-agg-quant") {
1097
    opts.quantifiers.condVarSplitQuantAgg = handlers::handleOption<bool>("cond-var-split-agg-quant", name, optionarg);
1098
    opts.quantifiers.condVarSplitQuantAggWasSetByUser = true;
1099
34787
  } else if (name == "cond-var-split-quant") {
1100
    opts.quantifiers.condVarSplitQuant = handlers::handleOption<bool>("cond-var-split-quant", name, optionarg);
1101
    opts.quantifiers.condVarSplitQuantWasSetByUser = true;
1102
34787
  } else if (name == "condense-function-values") {
1103
    opts.theory.condenseFunctionValues = handlers::handleOption<bool>("condense-function-values", name, optionarg);
1104
    opts.theory.condenseFunctionValuesWasSetByUser = true;
1105
34787
  } else if (name == "conjecture-filter-active-terms") {
1106
    opts.quantifiers.conjectureFilterActiveTerms = handlers::handleOption<bool>("conjecture-filter-active-terms", name, optionarg);
1107
    opts.quantifiers.conjectureFilterActiveTermsWasSetByUser = true;
1108
34787
  } else if (name == "conjecture-filter-canonical") {
1109
    opts.quantifiers.conjectureFilterCanonical = handlers::handleOption<bool>("conjecture-filter-canonical", name, optionarg);
1110
    opts.quantifiers.conjectureFilterCanonicalWasSetByUser = true;
1111
34787
  } else if (name == "conjecture-filter-model") {
1112
2
    opts.quantifiers.conjectureFilterModel = handlers::handleOption<bool>("conjecture-filter-model", name, optionarg);
1113
2
    opts.quantifiers.conjectureFilterModelWasSetByUser = true;
1114
34785
  } else if (name == "conjecture-gen") {
1115
7
    opts.quantifiers.conjectureGen = handlers::handleOption<bool>("conjecture-gen", name, optionarg);
1116
7
    opts.quantifiers.conjectureGenWasSetByUser = true;
1117
34778
  } else if (name == "conjecture-gen-gt-enum") {
1118
    opts.quantifiers.conjectureGenGtEnum = handlers::handleOption<int64_t>("conjecture-gen-gt-enum", name, optionarg);
1119
    opts.quantifiers.conjectureGenGtEnumWasSetByUser = true;
1120
34778
  } else if (name == "conjecture-gen-max-depth") {
1121
    opts.quantifiers.conjectureGenMaxDepth = handlers::handleOption<int64_t>("conjecture-gen-max-depth", name, optionarg);
1122
    opts.quantifiers.conjectureGenMaxDepthWasSetByUser = true;
1123
34778
  } else if (name == "conjecture-gen-per-round") {
1124
    opts.quantifiers.conjectureGenPerRound = handlers::handleOption<int64_t>("conjecture-gen-per-round", name, optionarg);
1125
    opts.quantifiers.conjectureGenPerRoundWasSetByUser = true;
1126
34778
  } else if (name == "conjecture-gen-uee-intro") {
1127
    opts.quantifiers.conjectureUeeIntro = handlers::handleOption<bool>("conjecture-gen-uee-intro", name, optionarg);
1128
    opts.quantifiers.conjectureUeeIntroWasSetByUser = true;
1129
34778
  } else if (name == "conjecture-no-filter") {
1130
2
    opts.quantifiers.conjectureNoFilter = handlers::handleOption<bool>("conjecture-no-filter", name, optionarg);
1131
2
    opts.quantifiers.conjectureNoFilterWasSetByUser = true;
1132
34776
  } else if (name == "copyright") {
1133
  opts.handler().copyright("copyright", name);
1134
34776
  } else if (name == "cut-all-bounded") {
1135
    opts.arith.doCutAllBounded = handlers::handleOption<bool>("cut-all-bounded", name, optionarg);
1136
    opts.arith.doCutAllBoundedWasSetByUser = true;
1137
34776
  } else if (name == "dag-thresh") {
1138
2
    auto value = handlers::handleOption<int64_t>("dag-thresh", name, optionarg);
1139
2
    opts.handler().checkMinimum("dag-thresh", name, value, static_cast<int64_t>(0));
1140
2
    opts.handler().setDefaultDagThresh("dag-thresh", name, value);
1141
2
    opts.expr.defaultDagThresh = value;
1142
2
    opts.expr.defaultDagThreshWasSetByUser = true;
1143
34774
  } else if (name == "debug") {
1144
  opts.handler().enableDebugTag("debug", name, optionarg);
1145
34774
  } else if (name == "debug-check-models") {
1146
1229
    opts.smt.debugCheckModels = handlers::handleOption<bool>("debug-check-models", name, optionarg);
1147
1229
    opts.smt.debugCheckModelsWasSetByUser = true;
1148
33545
  } else if (name == "decision-mode" || name == "decision") {
1149
94
    opts.decision.decisionMode = stringToDecisionMode(optionarg);
1150
94
    opts.decision.decisionModeWasSetByUser = true;
1151
33451
  } else if (name == "decision-random-weight") {
1152
    opts.decision.decisionRandomWeight = handlers::handleOption<int64_t>("decision-random-weight", name, optionarg);
1153
    opts.decision.decisionRandomWeightWasSetByUser = true;
1154
33451
  } else if (name == "decision-threshold") {
1155
    opts.decision.decisionThreshold = handlers::handleOption<cvc5::decision::DecisionWeight>("decision-threshold", name, optionarg);
1156
    opts.decision.decisionThresholdWasSetByUser = true;
1157
33451
  } else if (name == "decision-use-weight") {
1158
    opts.decision.decisionUseWeight = handlers::handleOption<bool>("decision-use-weight", name, optionarg);
1159
    opts.decision.decisionUseWeightWasSetByUser = true;
1160
33451
  } else if (name == "decision-weight-internal") {
1161
    opts.decision.decisionWeightInternal = stringToDecisionWeightInternal(optionarg);
1162
    opts.decision.decisionWeightInternalWasSetByUser = true;
1163
33451
  } else if (name == "difficulty-mode") {
1164
    opts.smt.difficultyMode = stringToDifficultyMode(optionarg);
1165
    opts.smt.difficultyModeWasSetByUser = true;
1166
33451
  } else if (name == "dio-decomps") {
1167
    opts.arith.exportDioDecompositions = handlers::handleOption<bool>("dio-decomps", name, optionarg);
1168
    opts.arith.exportDioDecompositionsWasSetByUser = true;
1169
33451
  } else if (name == "dio-repeat") {
1170
    opts.arith.dioRepeat = handlers::handleOption<bool>("dio-repeat", name, optionarg);
1171
    opts.arith.dioRepeatWasSetByUser = true;
1172
33451
  } else if (name == "dio-solver") {
1173
    opts.arith.arithDioSolver = handlers::handleOption<bool>("dio-solver", name, optionarg);
1174
    opts.arith.arithDioSolverWasSetByUser = true;
1175
33451
  } else if (name == "dio-turns") {
1176
    opts.arith.dioSolverTurns = handlers::handleOption<int64_t>("dio-turns", name, optionarg);
1177
    opts.arith.dioSolverTurnsWasSetByUser = true;
1178
33451
  } else if (name == "dt-binary-split") {
1179
    opts.datatypes.dtBinarySplit = handlers::handleOption<bool>("dt-binary-split", name, optionarg);
1180
    opts.datatypes.dtBinarySplitWasSetByUser = true;
1181
33451
  } else if (name == "dt-blast-splits") {
1182
    opts.datatypes.dtBlastSplits = handlers::handleOption<bool>("dt-blast-splits", name, optionarg);
1183
    opts.datatypes.dtBlastSplitsWasSetByUser = true;
1184
33451
  } else if (name == "dt-cyclic") {
1185
    opts.datatypes.dtCyclic = handlers::handleOption<bool>("dt-cyclic", name, optionarg);
1186
    opts.datatypes.dtCyclicWasSetByUser = true;
1187
33451
  } else if (name == "dt-force-assignment") {
1188
    opts.datatypes.dtForceAssignment = handlers::handleOption<bool>("dt-force-assignment", name, optionarg);
1189
    opts.datatypes.dtForceAssignmentWasSetByUser = true;
1190
33451
  } else if (name == "dt-infer-as-lemmas") {
1191
    opts.datatypes.dtInferAsLemmas = handlers::handleOption<bool>("dt-infer-as-lemmas", name, optionarg);
1192
    opts.datatypes.dtInferAsLemmasWasSetByUser = true;
1193
33451
  } else if (name == "dt-nested-rec") {
1194
10
    opts.datatypes.dtNestedRec = handlers::handleOption<bool>("dt-nested-rec", name, optionarg);
1195
10
    opts.datatypes.dtNestedRecWasSetByUser = true;
1196
33441
  } else if (name == "dt-polite-optimize") {
1197
    opts.datatypes.dtPoliteOptimize = handlers::handleOption<bool>("dt-polite-optimize", name, optionarg);
1198
    opts.datatypes.dtPoliteOptimizeWasSetByUser = true;
1199
33441
  } else if (name == "dt-rewrite-error-sel") {
1200
5
    opts.datatypes.dtRewriteErrorSel = handlers::handleOption<bool>("dt-rewrite-error-sel", name, optionarg);
1201
5
    opts.datatypes.dtRewriteErrorSelWasSetByUser = true;
1202
33436
  } else if (name == "dt-share-sel") {
1203
56
    opts.datatypes.dtSharedSelectors = handlers::handleOption<bool>("dt-share-sel", name, optionarg);
1204
56
    opts.datatypes.dtSharedSelectorsWasSetByUser = true;
1205
33380
  } else if (name == "dt-stc-ind") {
1206
    opts.quantifiers.dtStcInduction = handlers::handleOption<bool>("dt-stc-ind", name, optionarg);
1207
    opts.quantifiers.dtStcInductionWasSetByUser = true;
1208
33380
  } else if (name == "dt-var-exp-quant") {
1209
    opts.quantifiers.dtVarExpandQuant = handlers::handleOption<bool>("dt-var-exp-quant", name, optionarg);
1210
    opts.quantifiers.dtVarExpandQuantWasSetByUser = true;
1211
33380
  } else if (name == "dump") {
1212
4
    auto value = handlers::handleOption<std::string>("dump", name, optionarg);
1213
3
    opts.handler().setDumpMode("dump", name, value);
1214
1
    opts.smt.dumpModeString = value;
1215
1
    opts.smt.dumpModeStringWasSetByUser = true;
1216
33378
  } else if (name == "dump-difficulty") {
1217
    opts.driver.dumpDifficulty = handlers::handleOption<bool>("dump-difficulty", name, optionarg);
1218
    opts.driver.dumpDifficultyWasSetByUser = true;
1219
33378
  } else if (name == "dump-instantiations") {
1220
12
    opts.driver.dumpInstantiations = handlers::handleOption<bool>("dump-instantiations", name, optionarg);
1221
12
    opts.driver.dumpInstantiationsWasSetByUser = true;
1222
33366
  } else if (name == "dump-instantiations-debug") {
1223
    opts.driver.dumpInstantiationsDebug = handlers::handleOption<bool>("dump-instantiations-debug", name, optionarg);
1224
    opts.driver.dumpInstantiationsDebugWasSetByUser = true;
1225
33366
  } else if (name == "dump-models") {
1226
6
    opts.driver.dumpModels = handlers::handleOption<bool>("dump-models", name, optionarg);
1227
6
    opts.driver.dumpModelsWasSetByUser = true;
1228
33360
  } else if (name == "dump-proofs") {
1229
    opts.driver.dumpProofs = handlers::handleOption<bool>("dump-proofs", name, optionarg);
1230
    opts.driver.dumpProofsWasSetByUser = true;
1231
33360
  } else if (name == "dump-to") {
1232
    auto value = handlers::handleOption<ManagedOut>("dump-to", name, optionarg);
1233
    opts.handler().setDumpStream("dump-to", name, value);
1234
    opts.smt.dumpToFileName = value;
1235
    opts.smt.dumpToFileNameWasSetByUser = true;
1236
33360
  } else if (name == "dump-unsat-cores") {
1237
    opts.driver.dumpUnsatCores = handlers::handleOption<bool>("dump-unsat-cores", name, optionarg);
1238
    opts.driver.dumpUnsatCoresWasSetByUser = true;
1239
33360
  } else if (name == "dump-unsat-cores-full") {
1240
3
    opts.driver.dumpUnsatCoresFull = handlers::handleOption<bool>("dump-unsat-cores-full", name, optionarg);
1241
3
    opts.driver.dumpUnsatCoresFullWasSetByUser = true;
1242
33357
  } else if (name == "e-matching") {
1243
1
    opts.quantifiers.eMatching = handlers::handleOption<bool>("e-matching", name, optionarg);
1244
1
    opts.quantifiers.eMatchingWasSetByUser = true;
1245
33356
  } else if (name == "early-exit") {
1246
    opts.driver.earlyExit = handlers::handleOption<bool>("early-exit", name, optionarg);
1247
    opts.driver.earlyExitWasSetByUser = true;
1248
33356
  } else if (name == "early-ite-removal") {
1249
    opts.smt.earlyIteRemoval = handlers::handleOption<bool>("early-ite-removal", name, optionarg);
1250
    opts.smt.earlyIteRemovalWasSetByUser = true;
1251
33356
  } else if (name == "ee-mode") {
1252
56
    opts.theory.eeMode = stringToEqEngineMode(optionarg);
1253
56
    opts.theory.eeModeWasSetByUser = true;
1254
33300
  } else if (name == "elim-taut-quant") {
1255
    opts.quantifiers.elimTautQuant = handlers::handleOption<bool>("elim-taut-quant", name, optionarg);
1256
    opts.quantifiers.elimTautQuantWasSetByUser = true;
1257
33300
  } else if (name == "diagnostic-output-channel" || name == "err") {
1258
    auto value = handlers::handleOption<ManagedErr>("err", name, optionarg);
1259
    opts.handler().setErrStream("err", name, value);
1260
    opts.base.err = value;
1261
    opts.base.errWasSetByUser = true;
1262
33300
  } else if (name == "error-selection-rule") {
1263
    opts.arith.arithErrorSelectionRule = stringToErrorSelectionRule(optionarg);
1264
    opts.arith.arithErrorSelectionRuleWasSetByUser = true;
1265
33300
  } else if (name == "expand-definitions") {
1266
    opts.smt.expandDefinitions = handlers::handleOption<bool>("expand-definitions", name, optionarg);
1267
    opts.smt.expandDefinitionsWasSetByUser = true;
1268
33300
  } else if (name == "expr-depth") {
1269
    auto value = handlers::handleOption<int64_t>("expr-depth", name, optionarg);
1270
    opts.handler().checkMinimum("expr-depth", name, value, static_cast<int64_t>(-1));
1271
    opts.handler().setDefaultExprDepth("expr-depth", name, value);
1272
    opts.expr.defaultExprDepth = value;
1273
    opts.expr.defaultExprDepthWasSetByUser = true;
1274
33300
  } else if (name == "ext-rew-prep") {
1275
19
    opts.smt.extRewPrep = handlers::handleOption<bool>("ext-rew-prep", name, optionarg);
1276
19
    opts.smt.extRewPrepWasSetByUser = true;
1277
33281
  } else if (name == "ext-rew-prep-agg") {
1278
7
    opts.smt.extRewPrepAgg = handlers::handleOption<bool>("ext-rew-prep-agg", name, optionarg);
1279
7
    opts.smt.extRewPrepAggWasSetByUser = true;
1280
33274
  } else if (name == "ext-rewrite-quant") {
1281
10
    opts.quantifiers.extRewriteQuant = handlers::handleOption<bool>("ext-rewrite-quant", name, optionarg);
1282
10
    opts.quantifiers.extRewriteQuantWasSetByUser = true;
1283
33264
  } else if (name == "fc-penalties") {
1284
    opts.arith.havePenalties = handlers::handleOption<bool>("fc-penalties", name, optionarg);
1285
    opts.arith.havePenaltiesWasSetByUser = true;
1286
33264
  } else if (name == "filename") {
1287
    opts.driver.filename = handlers::handleOption<std::string>("filename", name, optionarg);
1288
    opts.driver.filenameWasSetByUser = true;
1289
33264
  } else if (name == "filesystem-access") {
1290
    opts.parser.filesystemAccess = handlers::handleOption<bool>("filesystem-access", name, optionarg);
1291
    opts.parser.filesystemAccessWasSetByUser = true;
1292
33264
  } else if (name == "finite-model-find") {
1293
178
    opts.quantifiers.finiteModelFind = handlers::handleOption<bool>("finite-model-find", name, optionarg);
1294
178
    opts.quantifiers.finiteModelFindWasSetByUser = true;
1295
33086
  } else if (name == "flatten-ho-chains") {
1296
    opts.printer.flattenHOChains = handlers::handleOption<bool>("flatten-ho-chains", name, optionarg);
1297
    opts.printer.flattenHOChainsWasSetByUser = true;
1298
33086
  } else if (name == "fmf-bound") {
1299
44
    opts.quantifiers.fmfBound = handlers::handleOption<bool>("fmf-bound", name, optionarg);
1300
44
    opts.quantifiers.fmfBoundWasSetByUser = true;
1301
33042
  } else if (name == "fmf-bound-int") {
1302
12
    opts.quantifiers.fmfBoundInt = handlers::handleOption<bool>("fmf-bound-int", name, optionarg);
1303
12
    opts.quantifiers.fmfBoundIntWasSetByUser = true;
1304
33030
  } else if (name == "fmf-bound-lazy") {
1305
3
    opts.quantifiers.fmfBoundLazy = handlers::handleOption<bool>("fmf-bound-lazy", name, optionarg);
1306
3
    opts.quantifiers.fmfBoundLazyWasSetByUser = true;
1307
33027
  } else if (name == "fmf-fmc-simple") {
1308
    opts.quantifiers.fmfFmcSimple = handlers::handleOption<bool>("fmf-fmc-simple", name, optionarg);
1309
    opts.quantifiers.fmfFmcSimpleWasSetByUser = true;
1310
33027
  } else if (name == "fmf-fresh-dc") {
1311
    opts.quantifiers.fmfFreshDistConst = handlers::handleOption<bool>("fmf-fresh-dc", name, optionarg);
1312
    opts.quantifiers.fmfFreshDistConstWasSetByUser = true;
1313
33027
  } else if (name == "fmf-fun") {
1314
51
    opts.quantifiers.fmfFunWellDefined = handlers::handleOption<bool>("fmf-fun", name, optionarg);
1315
51
    opts.quantifiers.fmfFunWellDefinedWasSetByUser = true;
1316
32976
  } else if (name == "fmf-fun-rlv") {
1317
10
    opts.quantifiers.fmfFunWellDefinedRelevant = handlers::handleOption<bool>("fmf-fun-rlv", name, optionarg);
1318
10
    opts.quantifiers.fmfFunWellDefinedRelevantWasSetByUser = true;
1319
32966
  } else if (name == "fmf-inst-engine") {
1320
7
    opts.quantifiers.fmfInstEngine = handlers::handleOption<bool>("fmf-inst-engine", name, optionarg);
1321
7
    opts.quantifiers.fmfInstEngineWasSetByUser = true;
1322
32959
  } else if (name == "fmf-type-completion-thresh") {
1323
    opts.quantifiers.fmfTypeCompletionThresh = handlers::handleOption<int64_t>("fmf-type-completion-thresh", name, optionarg);
1324
    opts.quantifiers.fmfTypeCompletionThreshWasSetByUser = true;
1325
32959
  } else if (name == "force-logic") {
1326
9
    opts.parser.forceLogicString = handlers::handleOption<std::string>("force-logic", name, optionarg);
1327
9
    opts.parser.forceLogicStringWasSetByUser = true;
1328
32950
  } else if (name == "force-no-limit-cpu-while-dump") {
1329
    opts.driver.forceNoLimitCpuWhileDump = handlers::handleOption<bool>("force-no-limit-cpu-while-dump", name, optionarg);
1330
    opts.driver.forceNoLimitCpuWhileDumpWasSetByUser = true;
1331
32950
  } else if (name == "foreign-theory-rewrite") {
1332
2
    opts.smt.foreignTheoryRewrite = handlers::handleOption<bool>("foreign-theory-rewrite", name, optionarg);
1333
2
    opts.smt.foreignTheoryRewriteWasSetByUser = true;
1334
32948
  } else if (name == "fp-exp") {
1335
22
    opts.fp.fpExp = handlers::handleOption<bool>("fp-exp", name, optionarg);
1336
22
    opts.fp.fpExpWasSetByUser = true;
1337
32926
  } else if (name == "fp-lazy-wb") {
1338
3
    opts.fp.fpLazyWb = handlers::handleOption<bool>("fp-lazy-wb", name, optionarg);
1339
3
    opts.fp.fpLazyWbWasSetByUser = true;
1340
32923
  } else if (name == "fs-interleave") {
1341
    opts.quantifiers.fullSaturateInterleave = handlers::handleOption<bool>("fs-interleave", name, optionarg);
1342
    opts.quantifiers.fullSaturateInterleaveWasSetByUser = true;
1343
32923
  } else if (name == "fs-stratify") {
1344
3
    opts.quantifiers.fullSaturateStratify = handlers::handleOption<bool>("fs-stratify", name, optionarg);
1345
3
    opts.quantifiers.fullSaturateStratifyWasSetByUser = true;
1346
32920
  } else if (name == "fs-sum") {
1347
    opts.quantifiers.fullSaturateSum = handlers::handleOption<bool>("fs-sum", name, optionarg);
1348
    opts.quantifiers.fullSaturateSumWasSetByUser = true;
1349
32920
  } else if (name == "full-saturate-quant") {
1350
76
    opts.quantifiers.fullSaturateQuant = handlers::handleOption<bool>("full-saturate-quant", name, optionarg);
1351
76
    opts.quantifiers.fullSaturateQuantWasSetByUser = true;
1352
32844
  } else if (name == "full-saturate-quant-limit") {
1353
3
    opts.quantifiers.fullSaturateLimit = handlers::handleOption<int64_t>("full-saturate-quant-limit", name, optionarg);
1354
3
    opts.quantifiers.fullSaturateLimitWasSetByUser = true;
1355
32841
  } else if (name == "full-saturate-quant-rd") {
1356
    opts.quantifiers.fullSaturateQuantRd = handlers::handleOption<bool>("full-saturate-quant-rd", name, optionarg);
1357
    opts.quantifiers.fullSaturateQuantRdWasSetByUser = true;
1358
32841
  } else if (name == "global-declarations") {
1359
19
    opts.parser.globalDeclarations = handlers::handleOption<bool>("global-declarations", name, optionarg);
1360
19
    opts.parser.globalDeclarationsWasSetByUser = true;
1361
32822
  } else if (name == "global-negate") {
1362
8
    opts.quantifiers.globalNegate = handlers::handleOption<bool>("global-negate", name, optionarg);
1363
8
    opts.quantifiers.globalNegateWasSetByUser = true;
1364
32814
  } else if (name == "help") {
1365
    opts.driver.help = handlers::handleOption<bool>("help", name, optionarg);
1366
    opts.driver.helpWasSetByUser = true;
1367
32814
  } else if (name == "heuristic-pivots") {
1368
    opts.arith.arithHeuristicPivots = handlers::handleOption<int64_t>("heuristic-pivots", name, optionarg);
1369
    opts.arith.arithHeuristicPivotsWasSetByUser = true;
1370
32814
  } else if (name == "ho-elim") {
1371
8
    opts.quantifiers.hoElim = handlers::handleOption<bool>("ho-elim", name, optionarg);
1372
8
    opts.quantifiers.hoElimWasSetByUser = true;
1373
32806
  } else if (name == "ho-elim-store-ax") {
1374
1
    opts.quantifiers.hoElimStoreAx = handlers::handleOption<bool>("ho-elim-store-ax", name, optionarg);
1375
1
    opts.quantifiers.hoElimStoreAxWasSetByUser = true;
1376
32805
  } else if (name == "ho-matching") {
1377
    opts.quantifiers.hoMatching = handlers::handleOption<bool>("ho-matching", name, optionarg);
1378
    opts.quantifiers.hoMatchingWasSetByUser = true;
1379
32805
  } else if (name == "ho-matching-var-priority") {
1380
    opts.quantifiers.hoMatchingVarArgPriority = handlers::handleOption<bool>("ho-matching-var-priority", name, optionarg);
1381
    opts.quantifiers.hoMatchingVarArgPriorityWasSetByUser = true;
1382
32805
  } else if (name == "ho-merge-term-db") {
1383
    opts.quantifiers.hoMergeTermDb = handlers::handleOption<bool>("ho-merge-term-db", name, optionarg);
1384
    opts.quantifiers.hoMergeTermDbWasSetByUser = true;
1385
32805
  } else if (name == "iand-mode") {
1386
67
    opts.smt.iandMode = stringToIandMode(optionarg);
1387
67
    opts.smt.iandModeWasSetByUser = true;
1388
32738
  } else if (name == "in") {
1389
    auto value = handlers::handleOption<ManagedIn>("in", name, optionarg);
1390
    opts.handler().setInStream("in", name, value);
1391
    opts.base.in = value;
1392
    opts.base.inWasSetByUser = true;
1393
32738
  } else if (name == "increment-triggers") {
1394
    opts.quantifiers.incrementTriggers = handlers::handleOption<bool>("increment-triggers", name, optionarg);
1395
    opts.quantifiers.incrementTriggersWasSetByUser = true;
1396
32738
  } else if (name == "incremental") {
1397
7326
    opts.base.incrementalSolving = handlers::handleOption<bool>("incremental", name, optionarg);
1398
7326
    opts.base.incrementalSolvingWasSetByUser = true;
1399
25412
  } else if (name == "inst-level-input-only") {
1400
    opts.quantifiers.instLevelInputOnly = handlers::handleOption<bool>("inst-level-input-only", name, optionarg);
1401
    opts.quantifiers.instLevelInputOnlyWasSetByUser = true;
1402
25412
  } else if (name == "inst-max-level") {
1403
3
    opts.quantifiers.instMaxLevel = handlers::handleOption<int64_t>("inst-max-level", name, optionarg);
1404
3
    opts.quantifiers.instMaxLevelWasSetByUser = true;
1405
25409
  } else if (name == "inst-max-rounds") {
1406
    opts.quantifiers.instMaxRounds = handlers::handleOption<int64_t>("inst-max-rounds", name, optionarg);
1407
    opts.quantifiers.instMaxRoundsWasSetByUser = true;
1408
25409
  } else if (name == "inst-no-entail") {
1409
    opts.quantifiers.instNoEntail = handlers::handleOption<bool>("inst-no-entail", name, optionarg);
1410
    opts.quantifiers.instNoEntailWasSetByUser = true;
1411
25409
  } else if (name == "inst-when") {
1412
3
    auto value = stringToInstWhenMode(optionarg);
1413
3
    opts.handler().checkInstWhenMode("inst-when", name, value);
1414
3
    opts.quantifiers.instWhenMode = value;
1415
3
    opts.quantifiers.instWhenModeWasSetByUser = true;
1416
25406
  } else if (name == "inst-when-phase") {
1417
    opts.quantifiers.instWhenPhase = handlers::handleOption<int64_t>("inst-when-phase", name, optionarg);
1418
    opts.quantifiers.instWhenPhaseWasSetByUser = true;
1419
25406
  } else if (name == "inst-when-strict-interleave") {
1420
    opts.quantifiers.instWhenStrictInterleave = handlers::handleOption<bool>("inst-when-strict-interleave", name, optionarg);
1421
    opts.quantifiers.instWhenStrictInterleaveWasSetByUser = true;
1422
25406
  } else if (name == "inst-when-tc-first") {
1423
    opts.quantifiers.instWhenTcFirst = handlers::handleOption<bool>("inst-when-tc-first", name, optionarg);
1424
    opts.quantifiers.instWhenTcFirstWasSetByUser = true;
1425
25406
  } else if (name == "int-wf-ind") {
1426
5
    opts.quantifiers.intWfInduction = handlers::handleOption<bool>("int-wf-ind", name, optionarg);
1427
5
    opts.quantifiers.intWfInductionWasSetByUser = true;
1428
25401
  } else if (name == "interactive") {
1429
6171
    opts.driver.interactive = handlers::handleOption<bool>("interactive", name, optionarg);
1430
6171
    opts.driver.interactiveWasSetByUser = true;
1431
19230
  } else if (name == "interactive-mode") {
1432
2
    auto value = handlers::handleOption<bool>("interactive-mode", name, optionarg);
1433
2
    opts.handler().setProduceAssertions("interactive-mode", name, value);
1434
2
    opts.smt.interactiveMode = value;
1435
2
    opts.smt.interactiveModeWasSetByUser = true;
1436
19228
  } else if (name == "ite-dtt-split-quant") {
1437
    opts.quantifiers.iteDtTesterSplitQuant = handlers::handleOption<bool>("ite-dtt-split-quant", name, optionarg);
1438
    opts.quantifiers.iteDtTesterSplitQuantWasSetByUser = true;
1439
19228
  } else if (name == "ite-lift-quant") {
1440
    opts.quantifiers.iteLiftQuant = stringToIteLiftQuantMode(optionarg);
1441
    opts.quantifiers.iteLiftQuantWasSetByUser = true;
1442
19228
  } else if (name == "ite-simp") {
1443
2
    opts.smt.doITESimp = handlers::handleOption<bool>("ite-simp", name, optionarg);
1444
2
    opts.smt.doITESimpWasSetByUser = true;
1445
19226
  } else if (name == "jh-rlv-order") {
1446
10
    opts.decision.jhRlvOrder = handlers::handleOption<bool>("jh-rlv-order", name, optionarg);
1447
10
    opts.decision.jhRlvOrderWasSetByUser = true;
1448
19216
  } else if (name == "jh-skolem") {
1449
    opts.decision.jhSkolemMode = stringToJutificationSkolemMode(optionarg);
1450
    opts.decision.jhSkolemModeWasSetByUser = true;
1451
19216
  } else if (name == "jh-skolem-rlv") {
1452
    opts.decision.jhSkolemRlvMode = stringToJutificationSkolemRlvMode(optionarg);
1453
    opts.decision.jhSkolemRlvModeWasSetByUser = true;
1454
19216
  } else if (name == "input-language" || name == "lang") {
1455
6468
    auto value = opts.handler().stringToLanguage("lang", name, optionarg);
1456
6468
    opts.handler().languageIsNotAST("lang", name, value);
1457
6468
    opts.base.inputLanguage = value;
1458
6468
    opts.base.inputLanguageWasSetByUser = true;
1459
12748
  } else if (name == "language-help") {
1460
    opts.base.languageHelp = handlers::handleOption<bool>("language-help", name, optionarg);
1461
    opts.base.languageHelpWasSetByUser = true;
1462
12748
  } else if (name == "learned-rewrite") {
1463
2
    opts.smt.learnedRewrite = handlers::handleOption<bool>("learned-rewrite", name, optionarg);
1464
2
    opts.smt.learnedRewriteWasSetByUser = true;
1465
12746
  } else if (name == "lemmas-on-replay-failure") {
1466
    opts.arith.replayFailureLemma = handlers::handleOption<bool>("lemmas-on-replay-failure", name, optionarg);
1467
    opts.arith.replayFailureLemmaWasSetByUser = true;
1468
12746
  } else if (name == "literal-matching") {
1469
    opts.quantifiers.literalMatchMode = stringToLiteralMatchMode(optionarg);
1470
    opts.quantifiers.literalMatchModeWasSetByUser = true;
1471
12746
  } else if (name == "macros-quant") {
1472
17
    opts.quantifiers.macrosQuant = handlers::handleOption<bool>("macros-quant", name, optionarg);
1473
17
    opts.quantifiers.macrosQuantWasSetByUser = true;
1474
12729
  } else if (name == "macros-quant-mode") {
1475
2
    opts.quantifiers.macrosQuantMode = stringToMacrosQuantMode(optionarg);
1476
2
    opts.quantifiers.macrosQuantModeWasSetByUser = true;
1477
12727
  } else if (name == "maxCutsInContext") {
1478
    opts.arith.maxCutsInContext = handlers::handleOption<uint64_t>("maxCutsInContext", name, optionarg);
1479
    opts.arith.maxCutsInContextWasSetByUser = true;
1480
12727
  } else if (name == "mbqi") {
1481
    opts.quantifiers.mbqiMode = stringToMbqiMode(optionarg);
1482
    opts.quantifiers.mbqiModeWasSetByUser = true;
1483
12727
  } else if (name == "mbqi-interleave") {
1484
    opts.quantifiers.mbqiInterleave = handlers::handleOption<bool>("mbqi-interleave", name, optionarg);
1485
    opts.quantifiers.mbqiInterleaveWasSetByUser = true;
1486
12727
  } else if (name == "mbqi-one-inst-per-round") {
1487
    opts.quantifiers.fmfOneInstPerRound = handlers::handleOption<bool>("mbqi-one-inst-per-round", name, optionarg);
1488
    opts.quantifiers.fmfOneInstPerRoundWasSetByUser = true;
1489
12727
  } else if (name == "minimal-unsat-cores") {
1490
3
    opts.smt.minimalUnsatCores = handlers::handleOption<bool>("minimal-unsat-cores", name, optionarg);
1491
3
    opts.smt.minimalUnsatCoresWasSetByUser = true;
1492
12724
  } else if (name == "minisat-dump-dimacs") {
1493
    opts.prop.minisatDumpDimacs = handlers::handleOption<bool>("minisat-dump-dimacs", name, optionarg);
1494
    opts.prop.minisatDumpDimacsWasSetByUser = true;
1495
12724
  } else if (name == "minisat-elimination") {
1496
    opts.prop.minisatUseElim = handlers::handleOption<bool>("minisat-elimination", name, optionarg);
1497
    opts.prop.minisatUseElimWasSetByUser = true;
1498
12724
  } else if (name == "miniscope-quant") {
1499
152
    opts.quantifiers.miniscopeQuant = handlers::handleOption<bool>("miniscope-quant", name, optionarg);
1500
152
    opts.quantifiers.miniscopeQuantWasSetByUser = true;
1501
12572
  } else if (name == "miniscope-quant-fv") {
1502
150
    opts.quantifiers.miniscopeQuantFreeVar = handlers::handleOption<bool>("miniscope-quant-fv", name, optionarg);
1503
150
    opts.quantifiers.miniscopeQuantFreeVarWasSetByUser = true;
1504
12422
  } else if (name == "miplib-trick") {
1505
8
    opts.arith.arithMLTrick = handlers::handleOption<bool>("miplib-trick", name, optionarg);
1506
8
    opts.arith.arithMLTrickWasSetByUser = true;
1507
12414
  } else if (name == "miplib-trick-subs") {
1508
    opts.arith.arithMLTrickSubstitutions = handlers::handleOption<uint64_t>("miplib-trick-subs", name, optionarg);
1509
    opts.arith.arithMLTrickSubstitutionsWasSetByUser = true;
1510
12414
  } else if (name == "mmap") {
1511
    opts.parser.memoryMap = handlers::handleOption<bool>("mmap", name, optionarg);
1512
    opts.parser.memoryMapWasSetByUser = true;
1513
12414
  } else if (name == "model-cores") {
1514
8
    opts.smt.modelCoresMode = stringToModelCoresMode(optionarg);
1515
8
    opts.smt.modelCoresModeWasSetByUser = true;
1516
12406
  } else if (name == "model-format") {
1517
    opts.printer.modelFormatMode = stringToModelFormatMode(optionarg);
1518
    opts.printer.modelFormatModeWasSetByUser = true;
1519
12406
  } else if (name == "model-uninterp-print" || name == "model-u-print") {
1520
1
    opts.smt.modelUninterpPrint = stringToModelUninterpPrintMode(optionarg);
1521
1
    opts.smt.modelUninterpPrintWasSetByUser = true;
1522
12405
  } else if (name == "model-witness-value") {
1523
1
    opts.smt.modelWitnessValue = handlers::handleOption<bool>("model-witness-value", name, optionarg);
1524
1
    opts.smt.modelWitnessValueWasSetByUser = true;
1525
12404
  } else if (name == "multi-trigger-cache") {
1526
3
    opts.quantifiers.multiTriggerCache = handlers::handleOption<bool>("multi-trigger-cache", name, optionarg);
1527
3
    opts.quantifiers.multiTriggerCacheWasSetByUser = true;
1528
12401
  } else if (name == "multi-trigger-linear") {
1529
    opts.quantifiers.multiTriggerLinear = handlers::handleOption<bool>("multi-trigger-linear", name, optionarg);
1530
    opts.quantifiers.multiTriggerLinearWasSetByUser = true;
1531
12401
  } else if (name == "multi-trigger-priority") {
1532
    opts.quantifiers.multiTriggerPriority = handlers::handleOption<bool>("multi-trigger-priority", name, optionarg);
1533
    opts.quantifiers.multiTriggerPriorityWasSetByUser = true;
1534
12401
  } else if (name == "multi-trigger-when-single") {
1535
    opts.quantifiers.multiTriggerWhenSingle = handlers::handleOption<bool>("multi-trigger-when-single", name, optionarg);
1536
    opts.quantifiers.multiTriggerWhenSingleWasSetByUser = true;
1537
12401
  } else if (name == "new-prop") {
1538
8
    opts.arith.newProp = handlers::handleOption<bool>("new-prop", name, optionarg);
1539
8
    opts.arith.newPropWasSetByUser = true;
1540
12393
  } else if (name == "nl-cad") {
1541
5
    opts.arith.nlCad = handlers::handleOption<bool>("nl-cad", name, optionarg);
1542
5
    opts.arith.nlCadWasSetByUser = true;
1543
12388
  } else if (name == "nl-cad-initial") {
1544
    opts.arith.nlCadUseInitial = handlers::handleOption<bool>("nl-cad-initial", name, optionarg);
1545
    opts.arith.nlCadUseInitialWasSetByUser = true;
1546
12388
  } else if (name == "nl-cad-lift") {
1547
    opts.arith.nlCadLifting = stringToNlCadLiftingMode(optionarg);
1548
    opts.arith.nlCadLiftingWasSetByUser = true;
1549
12388
  } else if (name == "nl-cad-proj") {
1550
    opts.arith.nlCadProjection = stringToNlCadProjectionMode(optionarg);
1551
    opts.arith.nlCadProjectionWasSetByUser = true;
1552
12388
  } else if (name == "nl-ext") {
1553
126
    opts.arith.nlExt = stringToNlExtMode(optionarg);
1554
126
    opts.arith.nlExtWasSetByUser = true;
1555
12262
  } else if (name == "nl-ext-ent-conf") {
1556
    opts.arith.nlExtEntailConflicts = handlers::handleOption<bool>("nl-ext-ent-conf", name, optionarg);
1557
    opts.arith.nlExtEntailConflictsWasSetByUser = true;
1558
12262
  } else if (name == "nl-ext-factor") {
1559
    opts.arith.nlExtFactor = handlers::handleOption<bool>("nl-ext-factor", name, optionarg);
1560
    opts.arith.nlExtFactorWasSetByUser = true;
1561
12262
  } else if (name == "nl-ext-inc-prec") {
1562
2
    opts.arith.nlExtIncPrecision = handlers::handleOption<bool>("nl-ext-inc-prec", name, optionarg);
1563
2
    opts.arith.nlExtIncPrecisionWasSetByUser = true;
1564
12260
  } else if (name == "nl-ext-purify") {
1565
4
    opts.arith.nlExtPurify = handlers::handleOption<bool>("nl-ext-purify", name, optionarg);
1566
4
    opts.arith.nlExtPurifyWasSetByUser = true;
1567
12256
  } else if (name == "nl-ext-rbound") {
1568
    opts.arith.nlExtResBound = handlers::handleOption<bool>("nl-ext-rbound", name, optionarg);
1569
    opts.arith.nlExtResBoundWasSetByUser = true;
1570
12256
  } else if (name == "nl-ext-rewrite") {
1571
    opts.arith.nlExtRewrites = handlers::handleOption<bool>("nl-ext-rewrite", name, optionarg);
1572
    opts.arith.nlExtRewritesWasSetByUser = true;
1573
12256
  } else if (name == "nl-ext-split-zero") {
1574
    opts.arith.nlExtSplitZero = handlers::handleOption<bool>("nl-ext-split-zero", name, optionarg);
1575
    opts.arith.nlExtSplitZeroWasSetByUser = true;
1576
12256
  } else if (name == "nl-ext-tf-taylor-deg") {
1577
    opts.arith.nlExtTfTaylorDegree = handlers::handleOption<int64_t>("nl-ext-tf-taylor-deg", name, optionarg);
1578
    opts.arith.nlExtTfTaylorDegreeWasSetByUser = true;
1579
12256
  } else if (name == "nl-ext-tf-tplanes") {
1580
41
    opts.arith.nlExtTfTangentPlanes = handlers::handleOption<bool>("nl-ext-tf-tplanes", name, optionarg);
1581
41
    opts.arith.nlExtTfTangentPlanesWasSetByUser = true;
1582
12215
  } else if (name == "nl-ext-tplanes") {
1583
42
    opts.arith.nlExtTangentPlanes = handlers::handleOption<bool>("nl-ext-tplanes", name, optionarg);
1584
42
    opts.arith.nlExtTangentPlanesWasSetByUser = true;
1585
12173
  } else if (name == "nl-ext-tplanes-interleave") {
1586
    opts.arith.nlExtTangentPlanesInterleave = handlers::handleOption<bool>("nl-ext-tplanes-interleave", name, optionarg);
1587
    opts.arith.nlExtTangentPlanesInterleaveWasSetByUser = true;
1588
12173
  } else if (name == "nl-icp") {
1589
2
    opts.arith.nlICP = handlers::handleOption<bool>("nl-icp", name, optionarg);
1590
2
    opts.arith.nlICPWasSetByUser = true;
1591
12171
  } else if (name == "nl-rlv") {
1592
6
    opts.arith.nlRlvMode = stringToNlRlvMode(optionarg);
1593
6
    opts.arith.nlRlvModeWasSetByUser = true;
1594
12165
  } else if (name == "nl-rlv-assert-bounds") {
1595
    opts.arith.nlRlvAssertBounds = handlers::handleOption<bool>("nl-rlv-assert-bounds", name, optionarg);
1596
    opts.arith.nlRlvAssertBoundsWasSetByUser = true;
1597
12165
  } else if (name == "on-repeat-ite-simp") {
1598
    opts.smt.doITESimpOnRepeat = handlers::handleOption<bool>("on-repeat-ite-simp", name, optionarg);
1599
    opts.smt.doITESimpOnRepeatWasSetByUser = true;
1600
12165
  } else if (name == "regular-output-channel" || name == "out") {
1601
    auto value = handlers::handleOption<ManagedOut>("out", name, optionarg);
1602
    opts.handler().setOutStream("out", name, value);
1603
    opts.base.out = value;
1604
    opts.base.outWasSetByUser = true;
1605
12165
  } else if (name == "output") {
1606
6
  opts.handler().enableOutputTag("output", name, optionarg);
1607
12159
  } else if (name == "output-lang" || name == "output-language") {
1608
6197
    auto value = opts.handler().stringToLanguage("output-lang", name, optionarg);
1609
6197
    opts.handler().applyOutputLanguage("output-lang", name, value);
1610
6197
    opts.base.outputLanguage = value;
1611
6197
    opts.base.outputLanguageWasSetByUser = true;
1612
5962
  } else if (name == "parse-only") {
1613
16
    opts.base.parseOnly = handlers::handleOption<bool>("parse-only", name, optionarg);
1614
16
    opts.base.parseOnlyWasSetByUser = true;
1615
5946
  } else if (name == "partial-triggers") {
1616
3
    opts.quantifiers.partialTriggers = handlers::handleOption<bool>("partial-triggers", name, optionarg);
1617
3
    opts.quantifiers.partialTriggersWasSetByUser = true;
1618
5943
  } else if (name == "pb-rewrites") {
1619
2
    opts.arith.pbRewrites = handlers::handleOption<bool>("pb-rewrites", name, optionarg);
1620
2
    opts.arith.pbRewritesWasSetByUser = true;
1621
5941
  } else if (name == "pivot-threshold") {
1622
    opts.arith.arithPivotThreshold = handlers::handleOption<uint64_t>("pivot-threshold", name, optionarg);
1623
    opts.arith.arithPivotThresholdWasSetByUser = true;
1624
5941
  } else if (name == "pool-inst") {
1625
3
    opts.quantifiers.poolInst = handlers::handleOption<bool>("pool-inst", name, optionarg);
1626
3
    opts.quantifiers.poolInstWasSetByUser = true;
1627
5938
  } else if (name == "pp-assert-max-sub-size") {
1628
    opts.arith.ppAssertMaxSubSize = handlers::handleOption<uint64_t>("pp-assert-max-sub-size", name, optionarg);
1629
    opts.arith.ppAssertMaxSubSizeWasSetByUser = true;
1630
5938
  } else if (name == "pre-skolem-quant") {
1631
2
    opts.quantifiers.preSkolemQuant = handlers::handleOption<bool>("pre-skolem-quant", name, optionarg);
1632
2
    opts.quantifiers.preSkolemQuantWasSetByUser = true;
1633
5936
  } else if (name == "pre-skolem-quant-agg") {
1634
    opts.quantifiers.preSkolemQuantAgg = handlers::handleOption<bool>("pre-skolem-quant-agg", name, optionarg);
1635
    opts.quantifiers.preSkolemQuantAggWasSetByUser = true;
1636
5936
  } else if (name == "pre-skolem-quant-nested") {
1637
2
    opts.quantifiers.preSkolemQuantNested = handlers::handleOption<bool>("pre-skolem-quant-nested", name, optionarg);
1638
2
    opts.quantifiers.preSkolemQuantNestedWasSetByUser = true;
1639
5934
  } else if (name == "prenex-quant") {
1640
    opts.quantifiers.prenexQuant = stringToPrenexQuantMode(optionarg);
1641
    opts.quantifiers.prenexQuantWasSetByUser = true;
1642
5934
  } else if (name == "prenex-quant-user") {
1643
    opts.quantifiers.prenexQuantUser = handlers::handleOption<bool>("prenex-quant-user", name, optionarg);
1644
    opts.quantifiers.prenexQuantUserWasSetByUser = true;
1645
5934
  } else if (name == "preprocess-only") {
1646
3
    opts.base.preprocessOnly = handlers::handleOption<bool>("preprocess-only", name, optionarg);
1647
3
    opts.base.preprocessOnlyWasSetByUser = true;
1648
5931
  } else if (name == "print-inst") {
1649
3
    opts.printer.printInstMode = stringToPrintInstMode(optionarg);
1650
3
    opts.printer.printInstModeWasSetByUser = true;
1651
5928
  } else if (name == "print-inst-full") {
1652
12
    opts.printer.printInstFull = handlers::handleOption<bool>("print-inst-full", name, optionarg);
1653
12
    opts.printer.printInstFullWasSetByUser = true;
1654
5916
  } else if (name == "print-success") {
1655
30
    auto value = handlers::handleOption<bool>("print-success", name, optionarg);
1656
30
    opts.handler().setPrintSuccess("print-success", name, value);
1657
30
    opts.base.printSuccess = value;
1658
30
    opts.base.printSuccessWasSetByUser = true;
1659
5886
  } else if (name == "produce-abducts") {
1660
21
    opts.smt.produceAbducts = handlers::handleOption<bool>("produce-abducts", name, optionarg);
1661
21
    opts.smt.produceAbductsWasSetByUser = true;
1662
5865
  } else if (name == "produce-assertions") {
1663
26
    auto value = handlers::handleOption<bool>("produce-assertions", name, optionarg);
1664
26
    opts.handler().setProduceAssertions("produce-assertions", name, value);
1665
26
    opts.smt.produceAssertions = value;
1666
26
    opts.smt.produceAssertionsWasSetByUser = true;
1667
5839
  } else if (name == "produce-assignments") {
1668
4
    opts.smt.produceAssignments = handlers::handleOption<bool>("produce-assignments", name, optionarg);
1669
4
    opts.smt.produceAssignmentsWasSetByUser = true;
1670
5835
  } else if (name == "produce-difficulty") {
1671
4
    opts.smt.produceDifficulty = handlers::handleOption<bool>("produce-difficulty", name, optionarg);
1672
4
    opts.smt.produceDifficultyWasSetByUser = true;
1673
5831
  } else if (name == "produce-interpols") {
1674
11
    opts.smt.produceInterpols = stringToProduceInterpols(optionarg);
1675
11
    opts.smt.produceInterpolsWasSetByUser = true;
1676
5820
  } else if (name == "produce-models") {
1677
817
    opts.smt.produceModels = handlers::handleOption<bool>("produce-models", name, optionarg);
1678
817
    opts.smt.produceModelsWasSetByUser = true;
1679
5003
  } else if (name == "produce-proofs") {
1680
33
    opts.smt.produceProofs = handlers::handleOption<bool>("produce-proofs", name, optionarg);
1681
33
    opts.smt.produceProofsWasSetByUser = true;
1682
4970
  } else if (name == "produce-unsat-assumptions") {
1683
15
    opts.smt.unsatAssumptions = handlers::handleOption<bool>("produce-unsat-assumptions", name, optionarg);
1684
15
    opts.smt.unsatAssumptionsWasSetByUser = true;
1685
4955
  } else if (name == "produce-unsat-cores") {
1686
21
    opts.smt.unsatCores = handlers::handleOption<bool>("produce-unsat-cores", name, optionarg);
1687
21
    opts.smt.unsatCoresWasSetByUser = true;
1688
4934
  } else if (name == "proof-check") {
1689
2
    opts.proof.proofCheck = stringToProofCheckMode(optionarg);
1690
2
    opts.proof.proofCheckWasSetByUser = true;
1691
4932
  } else if (name == "proof-format-mode") {
1692
    opts.proof.proofFormatMode = stringToProofFormatMode(optionarg);
1693
    opts.proof.proofFormatModeWasSetByUser = true;
1694
4932
  } else if (name == "proof-granularity") {
1695
    opts.proof.proofGranularityMode = stringToProofGranularityMode(optionarg);
1696
    opts.proof.proofGranularityModeWasSetByUser = true;
1697
4932
  } else if (name == "proof-pedantic") {
1698
    opts.proof.proofPedantic = handlers::handleOption<uint64_t>("proof-pedantic", name, optionarg);
1699
    opts.proof.proofPedanticWasSetByUser = true;
1700
4932
  } else if (name == "proof-pp-merge") {
1701
    opts.proof.proofPpMerge = handlers::handleOption<bool>("proof-pp-merge", name, optionarg);
1702
    opts.proof.proofPpMergeWasSetByUser = true;
1703
4932
  } else if (name == "proof-print-conclusion") {
1704
    opts.proof.proofPrintConclusion = handlers::handleOption<bool>("proof-print-conclusion", name, optionarg);
1705
    opts.proof.proofPrintConclusionWasSetByUser = true;
1706
4932
  } else if (name == "prop-row-length") {
1707
    opts.arith.arithPropagateMaxLength = handlers::handleOption<uint64_t>("prop-row-length", name, optionarg);
1708
    opts.arith.arithPropagateMaxLengthWasSetByUser = true;
1709
4932
  } else if (name == "purify-triggers") {
1710
3
    opts.quantifiers.purifyTriggers = handlers::handleOption<bool>("purify-triggers", name, optionarg);
1711
3
    opts.quantifiers.purifyTriggersWasSetByUser = true;
1712
4929
  } else if (name == "qcf-all-conflict") {
1713
    opts.quantifiers.qcfAllConflict = handlers::handleOption<bool>("qcf-all-conflict", name, optionarg);
1714
    opts.quantifiers.qcfAllConflictWasSetByUser = true;
1715
4929
  } else if (name == "qcf-eager-check-rd") {
1716
    opts.quantifiers.qcfEagerCheckRd = handlers::handleOption<bool>("qcf-eager-check-rd", name, optionarg);
1717
    opts.quantifiers.qcfEagerCheckRdWasSetByUser = true;
1718
4929
  } else if (name == "qcf-eager-test") {
1719
    opts.quantifiers.qcfEagerTest = handlers::handleOption<bool>("qcf-eager-test", name, optionarg);
1720
    opts.quantifiers.qcfEagerTestWasSetByUser = true;
1721
4929
  } else if (name == "qcf-nested-conflict") {
1722
    opts.quantifiers.qcfNestedConflict = handlers::handleOption<bool>("qcf-nested-conflict", name, optionarg);
1723
    opts.quantifiers.qcfNestedConflictWasSetByUser = true;
1724
4929
  } else if (name == "qcf-skip-rd") {
1725
    opts.quantifiers.qcfSkipRd = handlers::handleOption<bool>("qcf-skip-rd", name, optionarg);
1726
    opts.quantifiers.qcfSkipRdWasSetByUser = true;
1727
4929
  } else if (name == "qcf-tconstraint") {
1728
6
    opts.quantifiers.qcfTConstraint = handlers::handleOption<bool>("qcf-tconstraint", name, optionarg);
1729
6
    opts.quantifiers.qcfTConstraintWasSetByUser = true;
1730
4923
  } else if (name == "qcf-vo-exp") {
1731
    opts.quantifiers.qcfVoExp = handlers::handleOption<bool>("qcf-vo-exp", name, optionarg);
1732
    opts.quantifiers.qcfVoExpWasSetByUser = true;
1733
4923
  } else if (name == "quant-alpha-equiv") {
1734
    opts.quantifiers.quantAlphaEquiv = handlers::handleOption<bool>("quant-alpha-equiv", name, optionarg);
1735
    opts.quantifiers.quantAlphaEquivWasSetByUser = true;
1736
4923
  } else if (name == "quant-cf") {
1737
    opts.quantifiers.quantConflictFind = handlers::handleOption<bool>("quant-cf", name, optionarg);
1738
    opts.quantifiers.quantConflictFindWasSetByUser = true;
1739
4923
  } else if (name == "quant-cf-mode") {
1740
    opts.quantifiers.qcfMode = stringToQcfMode(optionarg);
1741
    opts.quantifiers.qcfModeWasSetByUser = true;
1742
4923
  } else if (name == "quant-cf-when") {
1743
    opts.quantifiers.qcfWhenMode = stringToQcfWhenMode(optionarg);
1744
    opts.quantifiers.qcfWhenModeWasSetByUser = true;
1745
4923
  } else if (name == "quant-dsplit-mode") {
1746
    opts.quantifiers.quantDynamicSplit = stringToQuantDSplitMode(optionarg);
1747
    opts.quantifiers.quantDynamicSplitWasSetByUser = true;
1748
4923
  } else if (name == "quant-fun-wd") {
1749
    opts.quantifiers.quantFunWellDefined = handlers::handleOption<bool>("quant-fun-wd", name, optionarg);
1750
    opts.quantifiers.quantFunWellDefinedWasSetByUser = true;
1751
4923
  } else if (name == "quant-ind") {
1752
8
    opts.quantifiers.quantInduction = handlers::handleOption<bool>("quant-ind", name, optionarg);
1753
8
    opts.quantifiers.quantInductionWasSetByUser = true;
1754
4915
  } else if (name == "quant-rep-mode") {
1755
    opts.quantifiers.quantRepMode = stringToQuantRepMode(optionarg);
1756
    opts.quantifiers.quantRepModeWasSetByUser = true;
1757
4915
  } else if (name == "quant-split") {
1758
150
    opts.quantifiers.quantSplit = handlers::handleOption<bool>("quant-split", name, optionarg);
1759
150
    opts.quantifiers.quantSplitWasSetByUser = true;
1760
4765
  } else if (name == "quiet") {
1761
196
  opts.handler().decreaseVerbosity("quiet", name);
1762
4569
  } else if (name == "random-frequency" || name == "random-freq") {
1763
    auto value = handlers::handleOption<double>("random-freq", name, optionarg);
1764
    opts.handler().checkMinimum("random-freq", name, value, static_cast<double>(0.0));
1765
    opts.handler().checkMaximum("random-freq", name, value, static_cast<double>(1.0));
1766
    opts.prop.satRandomFreq = value;
1767
    opts.prop.satRandomFreqWasSetByUser = true;
1768
4569
  } else if (name == "random-seed") {
1769
2
    opts.prop.satRandomSeed = handlers::handleOption<uint64_t>("random-seed", name, optionarg);
1770
2
    opts.prop.satRandomSeedWasSetByUser = true;
1771
4567
  } else if (name == "re-elim") {
1772
51
    opts.strings.regExpElim = handlers::handleOption<bool>("re-elim", name, optionarg);
1773
51
    opts.strings.regExpElimWasSetByUser = true;
1774
4516
  } else if (name == "re-elim-agg") {
1775
20
    opts.strings.regExpElimAgg = handlers::handleOption<bool>("re-elim-agg", name, optionarg);
1776
20
    opts.strings.regExpElimAggWasSetByUser = true;
1777
4496
  } else if (name == "re-inter-mode") {
1778
    opts.strings.stringRegExpInterMode = stringToRegExpInterMode(optionarg);
1779
    opts.strings.stringRegExpInterModeWasSetByUser = true;
1780
4496
  } else if (name == "refine-conflicts") {
1781
    opts.prop.sat_refine_conflicts = handlers::handleOption<bool>("refine-conflicts", name, optionarg);
1782
    opts.prop.sat_refine_conflictsWasSetByUser = true;
1783
4496
  } else if (name == "register-quant-body-terms") {
1784
    opts.quantifiers.registerQuantBodyTerms = handlers::handleOption<bool>("register-quant-body-terms", name, optionarg);
1785
    opts.quantifiers.registerQuantBodyTermsWasSetByUser = true;
1786
4496
  } else if (name == "relational-triggers") {
1787
15
    opts.quantifiers.relationalTriggers = handlers::handleOption<bool>("relational-triggers", name, optionarg);
1788
15
    opts.quantifiers.relationalTriggersWasSetByUser = true;
1789
4481
  } else if (name == "relevance-filter") {
1790
    opts.theory.relevanceFilter = handlers::handleOption<bool>("relevance-filter", name, optionarg);
1791
    opts.theory.relevanceFilterWasSetByUser = true;
1792
4481
  } else if (name == "relevant-triggers") {
1793
3
    opts.quantifiers.relevantTriggers = handlers::handleOption<bool>("relevant-triggers", name, optionarg);
1794
3
    opts.quantifiers.relevantTriggersWasSetByUser = true;
1795
4478
  } else if (name == "repeat-simp") {
1796
4
    opts.smt.repeatSimp = handlers::handleOption<bool>("repeat-simp", name, optionarg);
1797
4
    opts.smt.repeatSimpWasSetByUser = true;
1798
4474
  } else if (name == "replay-early-close-depth") {
1799
    opts.arith.replayEarlyCloseDepths = handlers::handleOption<int64_t>("replay-early-close-depth", name, optionarg);
1800
    opts.arith.replayEarlyCloseDepthsWasSetByUser = true;
1801
4474
  } else if (name == "replay-failure-penalty") {
1802
    opts.arith.replayFailurePenalty = handlers::handleOption<int64_t>("replay-failure-penalty", name, optionarg);
1803
    opts.arith.replayFailurePenaltyWasSetByUser = true;
1804
4474
  } else if (name == "replay-lemma-reject-cut") {
1805
    opts.arith.lemmaRejectCutSize = handlers::handleOption<uint64_t>("replay-lemma-reject-cut", name, optionarg);
1806
    opts.arith.lemmaRejectCutSizeWasSetByUser = true;
1807
4474
  } else if (name == "replay-num-err-penalty") {
1808
    opts.arith.replayNumericFailurePenalty = handlers::handleOption<int64_t>("replay-num-err-penalty", name, optionarg);
1809
    opts.arith.replayNumericFailurePenaltyWasSetByUser = true;
1810
4474
  } else if (name == "replay-reject-cut") {
1811
    opts.arith.replayRejectCutSize = handlers::handleOption<uint64_t>("replay-reject-cut", name, optionarg);
1812
    opts.arith.replayRejectCutSizeWasSetByUser = true;
1813
4474
  } else if (name == "replay-soi-major-threshold") {
1814
    opts.arith.soiApproxMajorFailure = handlers::handleOption<double>("replay-soi-major-threshold", name, optionarg);
1815
    opts.arith.soiApproxMajorFailureWasSetByUser = true;
1816
4474
  } else if (name == "replay-soi-major-threshold-pen") {
1817
    opts.arith.soiApproxMajorFailurePen = handlers::handleOption<int64_t>("replay-soi-major-threshold-pen", name, optionarg);
1818
    opts.arith.soiApproxMajorFailurePenWasSetByUser = true;
1819
4474
  } else if (name == "replay-soi-minor-threshold") {
1820
    opts.arith.soiApproxMinorFailure = handlers::handleOption<double>("replay-soi-minor-threshold", name, optionarg);
1821
    opts.arith.soiApproxMinorFailureWasSetByUser = true;
1822
4474
  } else if (name == "replay-soi-minor-threshold-pen") {
1823
    opts.arith.soiApproxMinorFailurePen = handlers::handleOption<int64_t>("replay-soi-minor-threshold-pen", name, optionarg);
1824
    opts.arith.soiApproxMinorFailurePenWasSetByUser = true;
1825
4474
  } else if (name == "restart-int-base") {
1826
    opts.prop.satRestartFirst = handlers::handleOption<uint64_t>("restart-int-base", name, optionarg);
1827
    opts.prop.satRestartFirstWasSetByUser = true;
1828
4474
  } else if (name == "restart-int-inc") {
1829
    auto value = handlers::handleOption<double>("restart-int-inc", name, optionarg);
1830
    opts.handler().checkMinimum("restart-int-inc", name, value, static_cast<double>(0.0));
1831
    opts.prop.satRestartInc = value;
1832
    opts.prop.satRestartIncWasSetByUser = true;
1833
4474
  } else if (name == "restrict-pivots") {
1834
    opts.arith.restrictedPivots = handlers::handleOption<bool>("restrict-pivots", name, optionarg);
1835
    opts.arith.restrictedPivotsWasSetByUser = true;
1836
4474
  } else if (name == "revert-arith-models-on-unsat") {
1837
    opts.arith.revertArithModels = handlers::handleOption<bool>("revert-arith-models-on-unsat", name, optionarg);
1838
    opts.arith.revertArithModelsWasSetByUser = true;
1839
4474
  } else if (name == "rlimit") {
1840
    opts.base.cumulativeResourceLimit = handlers::handleOption<uint64_t>("rlimit", name, optionarg);
1841
    opts.base.cumulativeResourceLimitWasSetByUser = true;
1842
4474
  } else if (name == "reproducible-resource-limit" || name == "rlimit-per") {
1843
    opts.base.perCallResourceLimit = handlers::handleOption<uint64_t>("rlimit-per", name, optionarg);
1844
    opts.base.perCallResourceLimitWasSetByUser = true;
1845
4474
  } else if (name == "rr-turns") {
1846
    opts.arith.rrTurns = handlers::handleOption<int64_t>("rr-turns", name, optionarg);
1847
    opts.arith.rrTurnsWasSetByUser = true;
1848
4474
  } else if (name == "rweight") {
1849
  opts.handler().setResourceWeight("rweight", name, optionarg);
1850
4474
  } else if (name == "se-solve-int") {
1851
    opts.arith.trySolveIntStandardEffort = handlers::handleOption<bool>("se-solve-int", name, optionarg);
1852
    opts.arith.trySolveIntStandardEffortWasSetByUser = true;
1853
4474
  } else if (name == "seed") {
1854
    opts.driver.seed = handlers::handleOption<uint64_t>("seed", name, optionarg);
1855
    opts.driver.seedWasSetByUser = true;
1856
4474
  } else if (name == "segv-spin") {
1857
    opts.driver.segvSpin = handlers::handleOption<bool>("segv-spin", name, optionarg);
1858
    opts.driver.segvSpinWasSetByUser = true;
1859
4474
  } else if (name == "semantic-checks") {
1860
    opts.parser.semanticChecks = handlers::handleOption<bool>("semantic-checks", name, optionarg);
1861
    opts.parser.semanticChecksWasSetByUser = true;
1862
4474
  } else if (name == "sep-check-neg") {
1863
    opts.sep.sepCheckNeg = handlers::handleOption<bool>("sep-check-neg", name, optionarg);
1864
    opts.sep.sepCheckNegWasSetByUser = true;
1865
4474
  } else if (name == "sep-child-refine") {
1866
    opts.sep.sepChildRefine = handlers::handleOption<bool>("sep-child-refine", name, optionarg);
1867
    opts.sep.sepChildRefineWasSetByUser = true;
1868
4474
  } else if (name == "sep-deq-c") {
1869
    opts.sep.sepDisequalC = handlers::handleOption<bool>("sep-deq-c", name, optionarg);
1870
    opts.sep.sepDisequalCWasSetByUser = true;
1871
4474
  } else if (name == "sep-exp") {
1872
    opts.sep.sepExp = handlers::handleOption<bool>("sep-exp", name, optionarg);
1873
    opts.sep.sepExpWasSetByUser = true;
1874
4474
  } else if (name == "sep-min-refine") {
1875
    opts.sep.sepMinimalRefine = handlers::handleOption<bool>("sep-min-refine", name, optionarg);
1876
    opts.sep.sepMinimalRefineWasSetByUser = true;
1877
4474
  } else if (name == "sep-pre-skolem-emp") {
1878
1
    opts.sep.sepPreSkolemEmp = handlers::handleOption<bool>("sep-pre-skolem-emp", name, optionarg);
1879
1
    opts.sep.sepPreSkolemEmpWasSetByUser = true;
1880
4473
  } else if (name == "sets-ext") {
1881
116
    opts.sets.setsExt = handlers::handleOption<bool>("sets-ext", name, optionarg);
1882
116
    opts.sets.setsExtWasSetByUser = true;
1883
4357
  } else if (name == "sets-infer-as-lemmas") {
1884
2
    opts.sets.setsInferAsLemmas = handlers::handleOption<bool>("sets-infer-as-lemmas", name, optionarg);
1885
2
    opts.sets.setsInferAsLemmasWasSetByUser = true;
1886
4355
  } else if (name == "sets-proxy-lemmas") {
1887
    opts.sets.setsProxyLemmas = handlers::handleOption<bool>("sets-proxy-lemmas", name, optionarg);
1888
    opts.sets.setsProxyLemmasWasSetByUser = true;
1889
4355
  } else if (name == "show-config") {
1890
2626
  opts.handler().showConfiguration("show-config", name);
1891
1729
  } else if (name == "show-debug-tags") {
1892
  opts.handler().showDebugTags("show-debug-tags", name);
1893
1729
  } else if (name == "show-trace-tags") {
1894
  opts.handler().showTraceTags("show-trace-tags", name);
1895
1729
  } else if (name == "simp-ite-compress") {
1896
2
    opts.smt.compressItes = handlers::handleOption<bool>("simp-ite-compress", name, optionarg);
1897
2
    opts.smt.compressItesWasSetByUser = true;
1898
1727
  } else if (name == "simp-ite-hunt-zombies") {
1899
    opts.smt.zombieHuntThreshold = handlers::handleOption<uint64_t>("simp-ite-hunt-zombies", name, optionarg);
1900
    opts.smt.zombieHuntThresholdWasSetByUser = true;
1901
1727
  } else if (name == "simp-with-care") {
1902
    opts.smt.simplifyWithCareEnabled = handlers::handleOption<bool>("simp-with-care", name, optionarg);
1903
    opts.smt.simplifyWithCareEnabledWasSetByUser = true;
1904
1727
  } else if (name == "simplex-check-period") {
1905
    opts.arith.arithSimplexCheckPeriod = handlers::handleOption<uint64_t>("simplex-check-period", name, optionarg);
1906
    opts.arith.arithSimplexCheckPeriodWasSetByUser = true;
1907
1727
  } else if (name == "simplification" || name == "simplification-mode") {
1908
32
    opts.smt.simplificationMode = stringToSimplificationMode(optionarg);
1909
32
    opts.smt.simplificationModeWasSetByUser = true;
1910
1695
  } else if (name == "soi-qe") {
1911
    opts.arith.soiQuickExplain = handlers::handleOption<bool>("soi-qe", name, optionarg);
1912
    opts.arith.soiQuickExplainWasSetByUser = true;
1913
1695
  } else if (name == "solve-bv-as-int") {
1914
148
    opts.smt.solveBVAsInt = stringToSolveBVAsIntMode(optionarg);
1915
148
    opts.smt.solveBVAsIntWasSetByUser = true;
1916
1547
  } else if (name == "solve-int-as-bv") {
1917
17
    opts.smt.solveIntAsBV = handlers::handleOption<uint64_t>("solve-int-as-bv", name, optionarg);
1918
17
    opts.smt.solveIntAsBVWasSetByUser = true;
1919
1530
  } else if (name == "solve-real-as-int") {
1920
9
    opts.smt.solveRealAsInt = handlers::handleOption<bool>("solve-real-as-int", name, optionarg);
1921
9
    opts.smt.solveRealAsIntWasSetByUser = true;
1922
1521
  } else if (name == "sort-inference") {
1923
26
    opts.smt.sortInference = handlers::handleOption<bool>("sort-inference", name, optionarg);
1924
26
    opts.smt.sortInferenceWasSetByUser = true;
1925
1495
  } else if (name == "standard-effort-variable-order-pivots") {
1926
    opts.arith.arithStandardCheckVarOrderPivots = handlers::handleOption<int64_t>("standard-effort-variable-order-pivots", name, optionarg);
1927
    opts.arith.arithStandardCheckVarOrderPivotsWasSetByUser = true;
1928
1495
  } else if (name == "static-learning") {
1929
    opts.smt.doStaticLearning = handlers::handleOption<bool>("static-learning", name, optionarg);
1930
    opts.smt.doStaticLearningWasSetByUser = true;
1931
1495
  } else if (name == "stats") {
1932
2
    auto value = handlers::handleOption<bool>("stats", name, optionarg);
1933
2
    opts.handler().setStats("stats", name, value);
1934
2
    opts.base.statistics = value;
1935
2
    opts.base.statisticsWasSetByUser = true;
1936
1493
  } else if (name == "stats-all") {
1937
1
    auto value = handlers::handleOption<bool>("stats-all", name, optionarg);
1938
1
    opts.handler().setStats("stats-all", name, value);
1939
1
    opts.base.statisticsAll = value;
1940
1
    opts.base.statisticsAllWasSetByUser = true;
1941
1492
  } else if (name == "stats-every-query") {
1942
    auto value = handlers::handleOption<bool>("stats-every-query", name, optionarg);
1943
    opts.handler().setStats("stats-every-query", name, value);
1944
    opts.base.statisticsEveryQuery = value;
1945
    opts.base.statisticsEveryQueryWasSetByUser = true;
1946
1492
  } else if (name == "stats-expert") {
1947
1
    auto value = handlers::handleOption<bool>("stats-expert", name, optionarg);
1948
1
    opts.handler().setStats("stats-expert", name, value);
1949
1
    opts.base.statisticsExpert = value;
1950
1
    opts.base.statisticsExpertWasSetByUser = true;
1951
1491
  } else if (name == "strict-parsing") {
1952
9
    opts.parser.strictParsing = handlers::handleOption<bool>("strict-parsing", name, optionarg);
1953
9
    opts.parser.strictParsingWasSetByUser = true;
1954
1482
  } else if (name == "strings-check-entail-len") {
1955
    opts.strings.stringCheckEntailLen = handlers::handleOption<bool>("strings-check-entail-len", name, optionarg);
1956
    opts.strings.stringCheckEntailLenWasSetByUser = true;
1957
1482
  } else if (name == "strings-eager") {
1958
2
    opts.strings.stringEager = handlers::handleOption<bool>("strings-eager", name, optionarg);
1959
2
    opts.strings.stringEagerWasSetByUser = true;
1960
1480
  } else if (name == "strings-eager-eval") {
1961
    opts.strings.stringEagerEval = handlers::handleOption<bool>("strings-eager-eval", name, optionarg);
1962
    opts.strings.stringEagerEvalWasSetByUser = true;
1963
1480
  } else if (name == "strings-eager-len") {
1964
    opts.strings.stringEagerLen = handlers::handleOption<bool>("strings-eager-len", name, optionarg);
1965
    opts.strings.stringEagerLenWasSetByUser = true;
1966
1480
  } else if (name == "strings-exp") {
1967
556
    opts.strings.stringExp = handlers::handleOption<bool>("strings-exp", name, optionarg);
1968
556
    opts.strings.stringExpWasSetByUser = true;
1969
924
  } else if (name == "strings-ff") {
1970
    opts.strings.stringFlatForms = handlers::handleOption<bool>("strings-ff", name, optionarg);
1971
    opts.strings.stringFlatFormsWasSetByUser = true;
1972
924
  } else if (name == "strings-fmf") {
1973
51
    opts.strings.stringFMF = handlers::handleOption<bool>("strings-fmf", name, optionarg);
1974
51
    opts.strings.stringFMFWasSetByUser = true;
1975
873
  } else if (name == "strings-guess-model") {
1976
    opts.strings.stringGuessModel = handlers::handleOption<bool>("strings-guess-model", name, optionarg);
1977
    opts.strings.stringGuessModelWasSetByUser = true;
1978
873
  } else if (name == "strings-infer-as-lemmas") {
1979
    opts.strings.stringInferAsLemmas = handlers::handleOption<bool>("strings-infer-as-lemmas", name, optionarg);
1980
    opts.strings.stringInferAsLemmasWasSetByUser = true;
1981
873
  } else if (name == "strings-infer-sym") {
1982
    opts.strings.stringInferSym = handlers::handleOption<bool>("strings-infer-sym", name, optionarg);
1983
    opts.strings.stringInferSymWasSetByUser = true;
1984
873
  } else if (name == "strings-lazy-pp") {
1985
32
    opts.strings.stringLazyPreproc = handlers::handleOption<bool>("strings-lazy-pp", name, optionarg);
1986
32
    opts.strings.stringLazyPreprocWasSetByUser = true;
1987
841
  } else if (name == "strings-len-norm") {
1988
    opts.strings.stringLenNorm = handlers::handleOption<bool>("strings-len-norm", name, optionarg);
1989
    opts.strings.stringLenNormWasSetByUser = true;
1990
841
  } else if (name == "strings-lprop-csp") {
1991
    opts.strings.stringLenPropCsp = handlers::handleOption<bool>("strings-lprop-csp", name, optionarg);
1992
    opts.strings.stringLenPropCspWasSetByUser = true;
1993
841
  } else if (name == "strings-min-prefix-explain") {
1994
    opts.strings.stringMinPrefixExplain = handlers::handleOption<bool>("strings-min-prefix-explain", name, optionarg);
1995
    opts.strings.stringMinPrefixExplainWasSetByUser = true;
1996
841
  } else if (name == "strings-process-loop-mode") {
1997
    opts.strings.stringProcessLoopMode = stringToProcessLoopMode(optionarg);
1998
    opts.strings.stringProcessLoopModeWasSetByUser = true;
1999
841
  } else if (name == "strings-rexplain-lemmas") {
2000
    opts.strings.stringRExplainLemmas = handlers::handleOption<bool>("strings-rexplain-lemmas", name, optionarg);
2001
    opts.strings.stringRExplainLemmasWasSetByUser = true;
2002
841
  } else if (name == "strings-unified-vspt") {
2003
    opts.strings.stringUnifiedVSpt = handlers::handleOption<bool>("strings-unified-vspt", name, optionarg);
2004
    opts.strings.stringUnifiedVSptWasSetByUser = true;
2005
841
  } else if (name == "sygus") {
2006
    opts.quantifiers.sygus = handlers::handleOption<bool>("sygus", name, optionarg);
2007
    opts.quantifiers.sygusWasSetByUser = true;
2008
841
  } else if (name == "sygus-abort-size") {
2009
11
    opts.datatypes.sygusAbortSize = handlers::handleOption<int64_t>("sygus-abort-size", name, optionarg);
2010
11
    opts.datatypes.sygusAbortSizeWasSetByUser = true;
2011
830
  } else if (name == "sygus-active-gen") {
2012
14
    opts.quantifiers.sygusActiveGenMode = stringToSygusActiveGenMode(optionarg);
2013
14
    opts.quantifiers.sygusActiveGenModeWasSetByUser = true;
2014
816
  } else if (name == "sygus-active-gen-cfactor") {
2015
    opts.quantifiers.sygusActiveGenEnumConsts = handlers::handleOption<uint64_t>("sygus-active-gen-cfactor", name, optionarg);
2016
    opts.quantifiers.sygusActiveGenEnumConstsWasSetByUser = true;
2017
816
  } else if (name == "sygus-add-const-grammar") {
2018
2
    opts.quantifiers.sygusAddConstGrammar = handlers::handleOption<bool>("sygus-add-const-grammar", name, optionarg);
2019
2
    opts.quantifiers.sygusAddConstGrammarWasSetByUser = true;
2020
814
  } else if (name == "sygus-arg-relevant") {
2021
3
    opts.quantifiers.sygusArgRelevant = handlers::handleOption<bool>("sygus-arg-relevant", name, optionarg);
2022
3
    opts.quantifiers.sygusArgRelevantWasSetByUser = true;
2023
811
  } else if (name == "sygus-auto-unfold") {
2024
    opts.quantifiers.sygusInvAutoUnfold = handlers::handleOption<bool>("sygus-auto-unfold", name, optionarg);
2025
    opts.quantifiers.sygusInvAutoUnfoldWasSetByUser = true;
2026
811
  } else if (name == "sygus-bool-ite-return-const") {
2027
1
    opts.quantifiers.sygusBoolIteReturnConst = handlers::handleOption<bool>("sygus-bool-ite-return-const", name, optionarg);
2028
1
    opts.quantifiers.sygusBoolIteReturnConstWasSetByUser = true;
2029
810
  } else if (name == "sygus-core-connective") {
2030
5
    opts.quantifiers.sygusCoreConnective = handlers::handleOption<bool>("sygus-core-connective", name, optionarg);
2031
5
    opts.quantifiers.sygusCoreConnectiveWasSetByUser = true;
2032
805
  } else if (name == "sygus-crepair-abort") {
2033
    opts.quantifiers.sygusConstRepairAbort = handlers::handleOption<bool>("sygus-crepair-abort", name, optionarg);
2034
    opts.quantifiers.sygusConstRepairAbortWasSetByUser = true;
2035
805
  } else if (name == "sygus-eval-opt") {
2036
    opts.quantifiers.sygusEvalOpt = handlers::handleOption<bool>("sygus-eval-opt", name, optionarg);
2037
    opts.quantifiers.sygusEvalOptWasSetByUser = true;
2038
805
  } else if (name == "sygus-eval-unfold") {
2039
    opts.quantifiers.sygusEvalUnfold = handlers::handleOption<bool>("sygus-eval-unfold", name, optionarg);
2040
    opts.quantifiers.sygusEvalUnfoldWasSetByUser = true;
2041
805
  } else if (name == "sygus-eval-unfold-bool") {
2042
    opts.quantifiers.sygusEvalUnfoldBool = handlers::handleOption<bool>("sygus-eval-unfold-bool", name, optionarg);
2043
    opts.quantifiers.sygusEvalUnfoldBoolWasSetByUser = true;
2044
805
  } else if (name == "sygus-expr-miner-check-timeout") {
2045
    opts.quantifiers.sygusExprMinerCheckTimeout = handlers::handleOption<uint64_t>("sygus-expr-miner-check-timeout", name, optionarg);
2046
    opts.quantifiers.sygusExprMinerCheckTimeoutWasSetByUser = true;
2047
805
  } else if (name == "sygus-ext-rew") {
2048
2
    opts.quantifiers.sygusExtRew = handlers::handleOption<bool>("sygus-ext-rew", name, optionarg);
2049
2
    opts.quantifiers.sygusExtRewWasSetByUser = true;
2050
803
  } else if (name == "sygus-fair") {
2051
2
    opts.datatypes.sygusFair = stringToSygusFairMode(optionarg);
2052
2
    opts.datatypes.sygusFairWasSetByUser = true;
2053
801
  } else if (name == "sygus-fair-max") {
2054
    opts.datatypes.sygusFairMax = handlers::handleOption<bool>("sygus-fair-max", name, optionarg);
2055
    opts.datatypes.sygusFairMaxWasSetByUser = true;
2056
801
  } else if (name == "sygus-filter-sol") {
2057
    opts.quantifiers.sygusFilterSolMode = stringToSygusFilterSolMode(optionarg);
2058
    opts.quantifiers.sygusFilterSolModeWasSetByUser = true;
2059
801
  } else if (name == "sygus-filter-sol-rev") {
2060
    opts.quantifiers.sygusFilterSolRevSubsume = handlers::handleOption<bool>("sygus-filter-sol-rev", name, optionarg);
2061
    opts.quantifiers.sygusFilterSolRevSubsumeWasSetByUser = true;
2062
801
  } else if (name == "sygus-grammar-cons") {
2063
6
    opts.quantifiers.sygusGrammarConsMode = stringToSygusGrammarConsMode(optionarg);
2064
6
    opts.quantifiers.sygusGrammarConsModeWasSetByUser = true;
2065
795
  } else if (name == "sygus-grammar-norm") {
2066
    opts.quantifiers.sygusGrammarNorm = handlers::handleOption<bool>("sygus-grammar-norm", name, optionarg);
2067
    opts.quantifiers.sygusGrammarNormWasSetByUser = true;
2068
795
  } else if (name == "sygus-inference") {
2069
59
    opts.quantifiers.sygusInference = handlers::handleOption<bool>("sygus-inference", name, optionarg);
2070
59
    opts.quantifiers.sygusInferenceWasSetByUser = true;
2071
736
  } else if (name == "sygus-inst") {
2072
26
    opts.quantifiers.sygusInst = handlers::handleOption<bool>("sygus-inst", name, optionarg);
2073
26
    opts.quantifiers.sygusInstWasSetByUser = true;
2074
710
  } else if (name == "sygus-inst-mode") {
2075
    opts.quantifiers.sygusInstMode = stringToSygusInstMode(optionarg);
2076
    opts.quantifiers.sygusInstModeWasSetByUser = true;
2077
710
  } else if (name == "sygus-inst-scope") {
2078
    opts.quantifiers.sygusInstScope = stringToSygusInstScope(optionarg);
2079
    opts.quantifiers.sygusInstScopeWasSetByUser = true;
2080
710
  } else if (name == "sygus-inst-term-sel") {
2081
    opts.quantifiers.sygusInstTermSel = stringToSygusInstTermSelMode(optionarg);
2082
    opts.quantifiers.sygusInstTermSelWasSetByUser = true;
2083
710
  } else if (name == "sygus-inv-templ") {
2084
3
    opts.quantifiers.sygusInvTemplMode = stringToSygusInvTemplMode(optionarg);
2085
3
    opts.quantifiers.sygusInvTemplModeWasSetByUser = true;
2086
707
  } else if (name == "sygus-inv-templ-when-sg") {
2087
    opts.quantifiers.sygusInvTemplWhenSyntax = handlers::handleOption<bool>("sygus-inv-templ-when-sg", name, optionarg);
2088
    opts.quantifiers.sygusInvTemplWhenSyntaxWasSetByUser = true;
2089
707
  } else if (name == "sygus-min-grammar") {
2090
    opts.quantifiers.sygusMinGrammar = handlers::handleOption<bool>("sygus-min-grammar", name, optionarg);
2091
    opts.quantifiers.sygusMinGrammarWasSetByUser = true;
2092
707
  } else if (name == "sygus-out") {
2093
185
    opts.smt.sygusOut = stringToSygusSolutionOutMode(optionarg);
2094
185
    opts.smt.sygusOutWasSetByUser = true;
2095
522
  } else if (name == "sygus-pbe") {
2096
6
    opts.quantifiers.sygusUnifPbe = handlers::handleOption<bool>("sygus-pbe", name, optionarg);
2097
6
    opts.quantifiers.sygusUnifPbeWasSetByUser = true;
2098
516
  } else if (name == "sygus-pbe-multi-fair") {
2099
    opts.quantifiers.sygusPbeMultiFair = handlers::handleOption<bool>("sygus-pbe-multi-fair", name, optionarg);
2100
    opts.quantifiers.sygusPbeMultiFairWasSetByUser = true;
2101
516
  } else if (name == "sygus-pbe-multi-fair-diff") {
2102
    opts.quantifiers.sygusPbeMultiFairDiff = handlers::handleOption<int64_t>("sygus-pbe-multi-fair-diff", name, optionarg);
2103
    opts.quantifiers.sygusPbeMultiFairDiffWasSetByUser = true;
2104
516
  } else if (name == "sygus-print-callbacks") {
2105
    opts.smt.sygusPrintCallbacks = handlers::handleOption<bool>("sygus-print-callbacks", name, optionarg);
2106
    opts.smt.sygusPrintCallbacksWasSetByUser = true;
2107
516
  } else if (name == "sygus-qe-preproc") {
2108
4
    opts.quantifiers.sygusQePreproc = handlers::handleOption<bool>("sygus-qe-preproc", name, optionarg);
2109
4
    opts.quantifiers.sygusQePreprocWasSetByUser = true;
2110
512
  } else if (name == "sygus-query-gen") {
2111
    opts.quantifiers.sygusQueryGen = handlers::handleOption<bool>("sygus-query-gen", name, optionarg);
2112
    opts.quantifiers.sygusQueryGenWasSetByUser = true;
2113
512
  } else if (name == "sygus-query-gen-check") {
2114
    opts.quantifiers.sygusQueryGenCheck = handlers::handleOption<bool>("sygus-query-gen-check", name, optionarg);
2115
    opts.quantifiers.sygusQueryGenCheckWasSetByUser = true;
2116
512
  } else if (name == "sygus-query-gen-dump-files") {
2117
    opts.quantifiers.sygusQueryGenDumpFiles = stringToSygusQueryDumpFilesMode(optionarg);
2118
    opts.quantifiers.sygusQueryGenDumpFilesWasSetByUser = true;
2119
512
  } else if (name == "sygus-query-gen-thresh") {
2120
    opts.quantifiers.sygusQueryGenThresh = handlers::handleOption<uint64_t>("sygus-query-gen-thresh", name, optionarg);
2121
    opts.quantifiers.sygusQueryGenThreshWasSetByUser = true;
2122
512
  } else if (name == "sygus-rec-fun") {
2123
3
    opts.quantifiers.sygusRecFun = handlers::handleOption<bool>("sygus-rec-fun", name, optionarg);
2124
3
    opts.quantifiers.sygusRecFunWasSetByUser = true;
2125
509
  } else if (name == "sygus-rec-fun-eval-limit") {
2126
    opts.quantifiers.sygusRecFunEvalLimit = handlers::handleOption<uint64_t>("sygus-rec-fun-eval-limit", name, optionarg);
2127
    opts.quantifiers.sygusRecFunEvalLimitWasSetByUser = true;
2128
509
  } else if (name == "sygus-repair-const") {
2129
8
    opts.quantifiers.sygusRepairConst = handlers::handleOption<bool>("sygus-repair-const", name, optionarg);
2130
8
    opts.quantifiers.sygusRepairConstWasSetByUser = true;
2131
501
  } else if (name == "sygus-repair-const-timeout") {
2132
    opts.quantifiers.sygusRepairConstTimeout = handlers::handleOption<uint64_t>("sygus-repair-const-timeout", name, optionarg);
2133
    opts.quantifiers.sygusRepairConstTimeoutWasSetByUser = true;
2134
501
  } else if (name == "sygus-rr") {
2135
6
    opts.quantifiers.sygusRew = handlers::handleOption<bool>("sygus-rr", name, optionarg);
2136
6
    opts.quantifiers.sygusRewWasSetByUser = true;
2137
495
  } else if (name == "sygus-rr-synth") {
2138
1
    opts.quantifiers.sygusRewSynth = handlers::handleOption<bool>("sygus-rr-synth", name, optionarg);
2139
1
    opts.quantifiers.sygusRewSynthWasSetByUser = true;
2140
494
  } else if (name == "sygus-rr-synth-accel") {
2141
    opts.quantifiers.sygusRewSynthAccel = handlers::handleOption<bool>("sygus-rr-synth-accel", name, optionarg);
2142
    opts.quantifiers.sygusRewSynthAccelWasSetByUser = true;
2143
494
  } else if (name == "sygus-rr-synth-check") {
2144
5
    opts.quantifiers.sygusRewSynthCheck = handlers::handleOption<bool>("sygus-rr-synth-check", name, optionarg);
2145
5
    opts.quantifiers.sygusRewSynthCheckWasSetByUser = true;
2146
489
  } else if (name == "sygus-rr-synth-filter-cong") {
2147
    opts.quantifiers.sygusRewSynthFilterCong = handlers::handleOption<bool>("sygus-rr-synth-filter-cong", name, optionarg);
2148
    opts.quantifiers.sygusRewSynthFilterCongWasSetByUser = true;
2149
489
  } else if (name == "sygus-rr-synth-filter-match") {
2150
    opts.quantifiers.sygusRewSynthFilterMatch = handlers::handleOption<bool>("sygus-rr-synth-filter-match", name, optionarg);
2151
    opts.quantifiers.sygusRewSynthFilterMatchWasSetByUser = true;
2152
489
  } else if (name == "sygus-rr-synth-filter-nl") {
2153
    opts.quantifiers.sygusRewSynthFilterNonLinear = handlers::handleOption<bool>("sygus-rr-synth-filter-nl", name, optionarg);
2154
    opts.quantifiers.sygusRewSynthFilterNonLinearWasSetByUser = true;
2155
489
  } else if (name == "sygus-rr-synth-filter-order") {
2156
    opts.quantifiers.sygusRewSynthFilterOrder = handlers::handleOption<bool>("sygus-rr-synth-filter-order", name, optionarg);
2157
    opts.quantifiers.sygusRewSynthFilterOrderWasSetByUser = true;
2158
489
  } else if (name == "sygus-rr-synth-input") {
2159
255
    opts.quantifiers.sygusRewSynthInput = handlers::handleOption<bool>("sygus-rr-synth-input", name, optionarg);
2160
255
    opts.quantifiers.sygusRewSynthInputWasSetByUser = true;
2161
234
  } else if (name == "sygus-rr-synth-input-nvars") {
2162
    opts.quantifiers.sygusRewSynthInputNVars = handlers::handleOption<int64_t>("sygus-rr-synth-input-nvars", name, optionarg);
2163
    opts.quantifiers.sygusRewSynthInputNVarsWasSetByUser = true;
2164
234
  } else if (name == "sygus-rr-synth-input-use-bool") {
2165
    opts.quantifiers.sygusRewSynthInputUseBool = handlers::handleOption<bool>("sygus-rr-synth-input-use-bool", name, optionarg);
2166
    opts.quantifiers.sygusRewSynthInputUseBoolWasSetByUser = true;
2167
234
  } else if (name == "sygus-rr-synth-rec") {
2168
    opts.quantifiers.sygusRewSynthRec = handlers::handleOption<bool>("sygus-rr-synth-rec", name, optionarg);
2169
    opts.quantifiers.sygusRewSynthRecWasSetByUser = true;
2170
234
  } else if (name == "sygus-rr-verify") {
2171
    opts.quantifiers.sygusRewVerify = handlers::handleOption<bool>("sygus-rr-verify", name, optionarg);
2172
    opts.quantifiers.sygusRewVerifyWasSetByUser = true;
2173
234
  } else if (name == "sygus-rr-verify-abort") {
2174
7
    opts.quantifiers.sygusRewVerifyAbort = handlers::handleOption<bool>("sygus-rr-verify-abort", name, optionarg);
2175
7
    opts.quantifiers.sygusRewVerifyAbortWasSetByUser = true;
2176
227
  } else if (name == "sygus-sample-fp-uniform") {
2177
    opts.quantifiers.sygusSampleFpUniform = handlers::handleOption<bool>("sygus-sample-fp-uniform", name, optionarg);
2178
    opts.quantifiers.sygusSampleFpUniformWasSetByUser = true;
2179
227
  } else if (name == "sygus-sample-grammar") {
2180
    opts.quantifiers.sygusSampleGrammar = handlers::handleOption<bool>("sygus-sample-grammar", name, optionarg);
2181
    opts.quantifiers.sygusSampleGrammarWasSetByUser = true;
2182
227
  } else if (name == "sygus-samples") {
2183
7
    opts.quantifiers.sygusSamples = handlers::handleOption<int64_t>("sygus-samples", name, optionarg);
2184
7
    opts.quantifiers.sygusSamplesWasSetByUser = true;
2185
220
  } else if (name == "sygus-si") {
2186
47
    opts.quantifiers.cegqiSingleInvMode = stringToCegqiSingleInvMode(optionarg);
2187
47
    opts.quantifiers.cegqiSingleInvModeWasSetByUser = true;
2188
173
  } else if (name == "sygus-si-abort") {
2189
    opts.quantifiers.cegqiSingleInvAbort = handlers::handleOption<bool>("sygus-si-abort", name, optionarg);
2190
    opts.quantifiers.cegqiSingleInvAbortWasSetByUser = true;
2191
173
  } else if (name == "sygus-si-partial") {
2192
    opts.quantifiers.cegqiSingleInvPartial = handlers::handleOption<bool>("sygus-si-partial", name, optionarg);
2193
    opts.quantifiers.cegqiSingleInvPartialWasSetByUser = true;
2194
173
  } else if (name == "sygus-si-rcons") {
2195
    opts.quantifiers.cegqiSingleInvReconstruct = stringToCegqiSingleInvRconsMode(optionarg);
2196
    opts.quantifiers.cegqiSingleInvReconstructWasSetByUser = true;
2197
173
  } else if (name == "sygus-si-rcons-limit") {
2198
1
    opts.quantifiers.cegqiSingleInvReconstructLimit = handlers::handleOption<int64_t>("sygus-si-rcons-limit", name, optionarg);
2199
1
    opts.quantifiers.cegqiSingleInvReconstructLimitWasSetByUser = true;
2200
172
  } else if (name == "sygus-si-reconstruct-const") {
2201
    opts.quantifiers.cegqiSingleInvReconstructConst = handlers::handleOption<bool>("sygus-si-reconstruct-const", name, optionarg);
2202
    opts.quantifiers.cegqiSingleInvReconstructConstWasSetByUser = true;
2203
172
  } else if (name == "sygus-stream") {
2204
4
    opts.quantifiers.sygusStream = handlers::handleOption<bool>("sygus-stream", name, optionarg);
2205
4
    opts.quantifiers.sygusStreamWasSetByUser = true;
2206
168
  } else if (name == "sygus-sym-break") {
2207
8
    opts.datatypes.sygusSymBreak = handlers::handleOption<bool>("sygus-sym-break", name, optionarg);
2208
8
    opts.datatypes.sygusSymBreakWasSetByUser = true;
2209
160
  } else if (name == "sygus-sym-break-agg") {
2210
    opts.datatypes.sygusSymBreakAgg = handlers::handleOption<bool>("sygus-sym-break-agg", name, optionarg);
2211
    opts.datatypes.sygusSymBreakAggWasSetByUser = true;
2212
160
  } else if (name == "sygus-sym-break-dynamic") {
2213
    opts.datatypes.sygusSymBreakDynamic = handlers::handleOption<bool>("sygus-sym-break-dynamic", name, optionarg);
2214
    opts.datatypes.sygusSymBreakDynamicWasSetByUser = true;
2215
160
  } else if (name == "sygus-sym-break-lazy") {
2216
2
    opts.datatypes.sygusSymBreakLazy = handlers::handleOption<bool>("sygus-sym-break-lazy", name, optionarg);
2217
2
    opts.datatypes.sygusSymBreakLazyWasSetByUser = true;
2218
158
  } else if (name == "sygus-sym-break-pbe") {
2219
    opts.datatypes.sygusSymBreakPbe = handlers::handleOption<bool>("sygus-sym-break-pbe", name, optionarg);
2220
    opts.datatypes.sygusSymBreakPbeWasSetByUser = true;
2221
158
  } else if (name == "sygus-sym-break-rlv") {
2222
2
    opts.datatypes.sygusSymBreakRlv = handlers::handleOption<bool>("sygus-sym-break-rlv", name, optionarg);
2223
2
    opts.datatypes.sygusSymBreakRlvWasSetByUser = true;
2224
156
  } else if (name == "sygus-templ-embed-grammar") {
2225
    opts.quantifiers.sygusTemplEmbedGrammar = handlers::handleOption<bool>("sygus-templ-embed-grammar", name, optionarg);
2226
    opts.quantifiers.sygusTemplEmbedGrammarWasSetByUser = true;
2227
156
  } else if (name == "sygus-unif-cond-independent-no-repeat-sol") {
2228
    opts.quantifiers.sygusUnifCondIndNoRepeatSol = handlers::handleOption<bool>("sygus-unif-cond-independent-no-repeat-sol", name, optionarg);
2229
    opts.quantifiers.sygusUnifCondIndNoRepeatSolWasSetByUser = true;
2230
156
  } else if (name == "sygus-unif-pi") {
2231
9
    opts.quantifiers.sygusUnifPi = stringToSygusUnifPiMode(optionarg);
2232
9
    opts.quantifiers.sygusUnifPiWasSetByUser = true;
2233
147
  } else if (name == "sygus-unif-shuffle-cond") {
2234
    opts.quantifiers.sygusUnifShuffleCond = handlers::handleOption<bool>("sygus-unif-shuffle-cond", name, optionarg);
2235
    opts.quantifiers.sygusUnifShuffleCondWasSetByUser = true;
2236
147
  } else if (name == "sygus-verify-inst-max-rounds") {
2237
    opts.quantifiers.sygusVerifyInstMaxRounds = handlers::handleOption<int64_t>("sygus-verify-inst-max-rounds", name, optionarg);
2238
    opts.quantifiers.sygusVerifyInstMaxRoundsWasSetByUser = true;
2239
147
  } else if (name == "symmetry-breaker" || name == "uf-symmetry-breaker") {
2240
    opts.uf.ufSymmetryBreaker = handlers::handleOption<bool>("symmetry-breaker", name, optionarg);
2241
    opts.uf.ufSymmetryBreakerWasSetByUser = true;
2242
147
  } else if (name == "tc-mode") {
2243
    opts.theory.tcMode = stringToTcMode(optionarg);
2244
    opts.theory.tcModeWasSetByUser = true;
2245
147
  } else if (name == "term-db-cd") {
2246
    opts.quantifiers.termDbCd = handlers::handleOption<bool>("term-db-cd", name, optionarg);
2247
    opts.quantifiers.termDbCdWasSetByUser = true;
2248
147
  } else if (name == "term-db-mode") {
2249
    opts.quantifiers.termDbMode = stringToTermDbMode(optionarg);
2250
    opts.quantifiers.termDbModeWasSetByUser = true;
2251
147
  } else if (name == "theoryof-mode") {
2252
5
    opts.theory.theoryOfMode = stringToTheoryOfMode(optionarg);
2253
5
    opts.theory.theoryOfModeWasSetByUser = true;
2254
142
  } else if (name == "tlimit") {
2255
    opts.base.cumulativeMillisecondLimit = handlers::handleOption<uint64_t>("tlimit", name, optionarg);
2256
    opts.base.cumulativeMillisecondLimitWasSetByUser = true;
2257
142
  } else if (name == "tlimit-per") {
2258
6
    opts.base.perCallMillisecondLimit = handlers::handleOption<uint64_t>("tlimit-per", name, optionarg);
2259
6
    opts.base.perCallMillisecondLimitWasSetByUser = true;
2260
136
  } else if (name == "trace") {
2261
  opts.handler().enableTraceTag("trace", name, optionarg);
2262
136
  } else if (name == "trigger-active-sel") {
2263
    opts.quantifiers.triggerActiveSelMode = stringToTriggerActiveSelMode(optionarg);
2264
    opts.quantifiers.triggerActiveSelModeWasSetByUser = true;
2265
136
  } else if (name == "trigger-sel") {
2266
    opts.quantifiers.triggerSelMode = stringToTriggerSelMode(optionarg);
2267
    opts.quantifiers.triggerSelModeWasSetByUser = true;
2268
136
  } else if (name == "type-checking") {
2269
    opts.expr.typeChecking = handlers::handleOption<bool>("type-checking", name, optionarg);
2270
    opts.expr.typeCheckingWasSetByUser = true;
2271
136
  } else if (name == "uf-ho") {
2272
    opts.uf.ufHo = handlers::handleOption<bool>("uf-ho", name, optionarg);
2273
    opts.uf.ufHoWasSetByUser = true;
2274
136
  } else if (name == "uf-ho-ext") {
2275
    opts.uf.ufHoExt = handlers::handleOption<bool>("uf-ho-ext", name, optionarg);
2276
    opts.uf.ufHoExtWasSetByUser = true;
2277
136
  } else if (name == "uf-ss") {
2278
7
    opts.uf.ufssMode = stringToUfssMode(optionarg);
2279
7
    opts.uf.ufssModeWasSetByUser = true;
2280
129
  } else if (name == "uf-ss-abort-card") {
2281
    opts.uf.ufssAbortCardinality = handlers::handleOption<int64_t>("uf-ss-abort-card", name, optionarg);
2282
    opts.uf.ufssAbortCardinalityWasSetByUser = true;
2283
129
  } else if (name == "uf-ss-fair") {
2284
    opts.uf.ufssFairness = handlers::handleOption<bool>("uf-ss-fair", name, optionarg);
2285
    opts.uf.ufssFairnessWasSetByUser = true;
2286
129
  } else if (name == "uf-ss-fair-monotone") {
2287
4
    opts.uf.ufssFairnessMonotone = handlers::handleOption<bool>("uf-ss-fair-monotone", name, optionarg);
2288
4
    opts.uf.ufssFairnessMonotoneWasSetByUser = true;
2289
125
  } else if (name == "uf-ss-totality-limited") {
2290
    opts.uf.ufssTotalityLimited = handlers::handleOption<int64_t>("uf-ss-totality-limited", name, optionarg);
2291
    opts.uf.ufssTotalityLimitedWasSetByUser = true;
2292
125
  } else if (name == "uf-ss-totality-sym-break") {
2293
    opts.uf.ufssTotalitySymBreak = handlers::handleOption<bool>("uf-ss-totality-sym-break", name, optionarg);
2294
    opts.uf.ufssTotalitySymBreakWasSetByUser = true;
2295
125
  } else if (name == "unate-lemmas") {
2296
    opts.arith.arithUnateLemmaMode = stringToArithUnateLemmaMode(optionarg);
2297
    opts.arith.arithUnateLemmaModeWasSetByUser = true;
2298
125
  } else if (name == "unconstrained-simp") {
2299
107
    opts.smt.unconstrainedSimp = handlers::handleOption<bool>("unconstrained-simp", name, optionarg);
2300
107
    opts.smt.unconstrainedSimpWasSetByUser = true;
2301
18
  } else if (name == "unsat-cores-mode") {
2302
2
    opts.smt.unsatCoresMode = stringToUnsatCoresMode(optionarg);
2303
2
    opts.smt.unsatCoresModeWasSetByUser = true;
2304
16
  } else if (name == "use-approx") {
2305
    opts.arith.useApprox = handlers::handleOption<bool>("use-approx", name, optionarg);
2306
    opts.arith.useApproxWasSetByUser = true;
2307
16
  } else if (name == "use-fcsimplex") {
2308
    opts.arith.useFC = handlers::handleOption<bool>("use-fcsimplex", name, optionarg);
2309
    opts.arith.useFCWasSetByUser = true;
2310
16
  } else if (name == "use-soi") {
2311
    opts.arith.useSOI = handlers::handleOption<bool>("use-soi", name, optionarg);
2312
    opts.arith.useSOIWasSetByUser = true;
2313
16
  } else if (name == "user-pat") {
2314
    opts.quantifiers.userPatternsQuant = stringToUserPatMode(optionarg);
2315
    opts.quantifiers.userPatternsQuantWasSetByUser = true;
2316
16
  } else if (name == "var-elim-quant") {
2317
    opts.quantifiers.varElimQuant = handlers::handleOption<bool>("var-elim-quant", name, optionarg);
2318
    opts.quantifiers.varElimQuantWasSetByUser = true;
2319
16
  } else if (name == "var-ineq-elim-quant") {
2320
7
    opts.quantifiers.varIneqElimQuant = handlers::handleOption<bool>("var-ineq-elim-quant", name, optionarg);
2321
7
    opts.quantifiers.varIneqElimQuantWasSetByUser = true;
2322
9
  } else if (name == "verbose") {
2323
3
  opts.handler().increaseVerbosity("verbose", name);
2324
6
  } else if (name == "verbosity") {
2325
6
    auto value = handlers::handleOption<int64_t>("verbosity", name, optionarg);
2326
6
    opts.handler().setVerbosity("verbosity", name, value);
2327
6
    opts.base.verbosity = value;
2328
6
    opts.base.verbosityWasSetByUser = true;
2329
  } else if (name == "version") {
2330
    opts.driver.version = handlers::handleOption<bool>("version", name, optionarg);
2331
    opts.driver.versionWasSetByUser = true;
2332
    // clang-format on
2333
  }
2334
  else
2335
  {
2336
    throw OptionException("Unrecognized option key or setting: " + name);
2337
  }
2338
36038
}
2339
2340
#if defined(CVC5_MUZZLED) || defined(CVC5_COMPETITION_MODE)
2341
#define DO_SEMANTIC_CHECKS_BY_DEFAULT false
2342
#else /* CVC5_MUZZLED || CVC5_COMPETITION_MODE */
2343
#define DO_SEMANTIC_CHECKS_BY_DEFAULT true
2344
#endif /* CVC5_MUZZLED || CVC5_COMPETITION_MODE */
2345
2346
2786889
OptionInfo getInfo(const Options& opts, const std::string& name)
2347
{
2348
  // clang-format off
2349
2786889
  if (name == "abstract-values") return OptionInfo{"abstract-values", {}, opts.smt.abstractValuesWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.abstractValues}};
2350
2786889
  if (name == "ackermann") return OptionInfo{"ackermann", {}, opts.smt.ackermannWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.ackermann}};
2351
2786889
  if (name == "ag-miniscope-quant") return OptionInfo{"ag-miniscope-quant", {}, opts.quantifiers.aggressiveMiniscopeQuantWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.aggressiveMiniscopeQuant}};
2352
2786889
  if (name == "approx-branch-depth") return OptionInfo{"approx-branch-depth", {}, opts.arith.maxApproxDepthWasSetByUser, OptionInfo::NumberInfo<int64_t>{200, opts.arith.maxApproxDepth, {}, {}}};
2353
2786889
  if (name == "arith-brab") return OptionInfo{"arith-brab", {}, opts.arith.brabTestWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.arith.brabTest}};
2354
2786889
  if (name == "arith-cong-man") return OptionInfo{"arith-cong-man", {}, opts.arith.arithCongManWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.arith.arithCongMan}};
2355
2786889
  if (name == "arith-eq-solver") return OptionInfo{"arith-eq-solver", {}, opts.arith.arithEqSolverWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.arithEqSolver}};
2356
2786889
  if (name == "arith-no-partial-fun") return OptionInfo{"arith-no-partial-fun", {}, opts.arith.arithNoPartialFunWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.arithNoPartialFun}};
2357
2786889
  if (name == "arith-prop") return OptionInfo{"arith-prop", {}, opts.arith.arithPropagationModeWasSetByUser, OptionInfo::ModeInfo{"BOTH_PROP", opts.arith.arithPropagationMode, { "BOTH_PROP", "BOUND_INFERENCE_PROP", "NO_PROP", "UNATE_PROP" }}};
2358
2786889
  if (name == "arith-prop-clauses") return OptionInfo{"arith-prop-clauses", {}, opts.arith.arithPropAsLemmaLengthWasSetByUser, OptionInfo::NumberInfo<uint64_t>{8, opts.arith.arithPropAsLemmaLength, {}, {}}};
2359
2786889
  if (name == "arith-rewrite-equalities") return OptionInfo{"arith-rewrite-equalities", {}, opts.arith.arithRewriteEqWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.arithRewriteEq}};
2360
2786889
  if (name == "arrays-config") return OptionInfo{"arrays-config", {}, opts.arrays.arraysConfigWasSetByUser, OptionInfo::NumberInfo<int64_t>{0, opts.arrays.arraysConfig, {}, {}}};
2361
2786889
  if (name == "arrays-eager-index") return OptionInfo{"arrays-eager-index", {}, opts.arrays.arraysEagerIndexSplittingWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.arrays.arraysEagerIndexSplitting}};
2362
2786889
  if (name == "arrays-eager-lemmas") return OptionInfo{"arrays-eager-lemmas", {}, opts.arrays.arraysEagerLemmasWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arrays.arraysEagerLemmas}};
2363
2786889
  if (name == "arrays-exp") return OptionInfo{"arrays-exp", {}, opts.arrays.arraysExpWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arrays.arraysExp}};
2364
2786889
  if (name == "arrays-model-based") return OptionInfo{"arrays-model-based", {}, opts.arrays.arraysModelBasedWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arrays.arraysModelBased}};
2365
2786889
  if (name == "arrays-optimize-linear") return OptionInfo{"arrays-optimize-linear", {}, opts.arrays.arraysOptimizeLinearWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.arrays.arraysOptimizeLinear}};
2366
2786889
  if (name == "arrays-prop") return OptionInfo{"arrays-prop", {}, opts.arrays.arraysPropagateWasSetByUser, OptionInfo::NumberInfo<int64_t>{2, opts.arrays.arraysPropagate, {}, {}}};
2367
2786889
  if (name == "arrays-reduce-sharing") return OptionInfo{"arrays-reduce-sharing", {}, opts.arrays.arraysReduceSharingWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arrays.arraysReduceSharing}};
2368
2786889
  if (name == "arrays-weak-equiv") return OptionInfo{"arrays-weak-equiv", {}, opts.arrays.arraysWeakEquivalenceWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arrays.arraysWeakEquivalence}};
2369
2786889
  if (name == "assign-function-values") return OptionInfo{"assign-function-values", {}, opts.theory.assignFunctionValuesWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.theory.assignFunctionValues}};
2370
2786889
  if (name == "bitblast") return OptionInfo{"bitblast", {}, opts.bv.bitblastModeWasSetByUser, OptionInfo::ModeInfo{"LAZY", opts.bv.bitblastMode, { "EAGER", "LAZY" }}};
2371
2786889
  if (name == "bitblast-aig") return OptionInfo{"bitblast-aig", {}, opts.bv.bitvectorAigWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.bv.bitvectorAig}};
2372
2786889
  if (name == "bitwise-eq") return OptionInfo{"bitwise-eq", {}, opts.bv.bitwiseEqWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.bv.bitwiseEq}};
2373
2786889
  if (name == "block-models") return OptionInfo{"block-models", {}, opts.smt.blockModelsModeWasSetByUser, OptionInfo::ModeInfo{"NONE", opts.smt.blockModelsMode, { "LITERALS", "NONE", "VALUES" }}};
2374
2786889
  if (name == "bool-to-bv") return OptionInfo{"bool-to-bv", {}, opts.bv.boolToBitvectorWasSetByUser, OptionInfo::ModeInfo{"OFF", opts.bv.boolToBitvector, { "ALL", "ITE", "OFF" }}};
2375
2786889
  if (name == "bv-abstraction") return OptionInfo{"bv-abstraction", {}, opts.bv.bvAbstractionWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.bv.bvAbstraction}};
2376
2786889
  if (name == "bv-aig-simp") return OptionInfo{"bv-aig-simp", {}, opts.bv.bitvectorAigSimplificationsWasSetByUser, OptionInfo::ValueInfo<std::string>{"balance;drw", opts.bv.bitvectorAigSimplifications}};
2377
2786889
  if (name == "bv-alg-extf") return OptionInfo{"bv-alg-extf", {}, opts.bv.bvAlgExtfWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.bv.bvAlgExtf}};
2378
2786889
  if (name == "bv-algebraic-budget") return OptionInfo{"bv-algebraic-budget", {}, opts.bv.bitvectorAlgebraicBudgetWasSetByUser, OptionInfo::NumberInfo<uint64_t>{1500, opts.bv.bitvectorAlgebraicBudget, {}, {}}};
2379
2786889
  if (name == "bv-algebraic-solver") return OptionInfo{"bv-algebraic-solver", {}, opts.bv.bitvectorAlgebraicSolverWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.bv.bitvectorAlgebraicSolver}};
2380
2786889
  if (name == "bv-assert-input") return OptionInfo{"bv-assert-input", {}, opts.bv.bvAssertInputWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.bv.bvAssertInput}};
2381
2786889
  if (name == "bv-eager-explanations") return OptionInfo{"bv-eager-explanations", {}, opts.bv.bvEagerExplanationsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.bv.bvEagerExplanations}};
2382
2786889
  if (name == "bv-eq-solver") return OptionInfo{"bv-eq-solver", {}, opts.bv.bitvectorEqualitySolverWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.bv.bitvectorEqualitySolver}};
2383
2786889
  if (name == "bv-extract-arith") return OptionInfo{"bv-extract-arith", {}, opts.bv.bvExtractArithRewriteWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.bv.bvExtractArithRewrite}};
2384
2786889
  if (name == "bv-gauss-elim") return OptionInfo{"bv-gauss-elim", {}, opts.bv.bvGaussElimWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.bv.bvGaussElim}};
2385
2786889
  if (name == "bv-inequality-solver") return OptionInfo{"bv-inequality-solver", {}, opts.bv.bitvectorInequalitySolverWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.bv.bitvectorInequalitySolver}};
2386
2786889
  if (name == "bv-intro-pow2") return OptionInfo{"bv-intro-pow2", {}, opts.bv.bvIntroducePow2WasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.bv.bvIntroducePow2}};
2387
2786889
  if (name == "bv-num-func") return OptionInfo{"bv-num-func", {}, opts.bv.bvNumFuncWasSetByUser, OptionInfo::NumberInfo<uint64_t>{1, opts.bv.bvNumFunc, {}, {}}};
2388
2786889
  if (name == "bv-print-consts-as-indexed-symbols") return OptionInfo{"bv-print-consts-as-indexed-symbols", {}, opts.bv.bvPrintConstsAsIndexedSymbolsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.bv.bvPrintConstsAsIndexedSymbols}};
2389
2786889
  if (name == "bv-propagate") return OptionInfo{"bv-propagate", {}, opts.bv.bitvectorPropagateWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.bv.bitvectorPropagate}};
2390
2786889
  if (name == "bv-quick-xplain") return OptionInfo{"bv-quick-xplain", {}, opts.bv.bitvectorQuickXplainWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.bv.bitvectorQuickXplain}};
2391
2786889
  if (name == "bv-sat-solver") return OptionInfo{"bv-sat-solver", {}, opts.bv.bvSatSolverWasSetByUser, OptionInfo::ModeInfo{"MINISAT", opts.bv.bvSatSolver, { "CADICAL", "CRYPTOMINISAT", "KISSAT", "MINISAT" }}};
2392
2786889
  if (name == "bv-skolemize") return OptionInfo{"bv-skolemize", {}, opts.bv.skolemizeArgumentsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.bv.skolemizeArguments}};
2393
2786889
  if (name == "bv-solver") return OptionInfo{"bv-solver", {}, opts.bv.bvSolverWasSetByUser, OptionInfo::ModeInfo{"BITBLAST", opts.bv.bvSolver, { "BITBLAST", "BITBLAST_INTERNAL", "LAYERED" }}};
2394
2786889
  if (name == "bv-to-bool") return OptionInfo{"bv-to-bool", {}, opts.bv.bitvectorToBoolWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.bv.bitvectorToBool}};
2395
2786889
  if (name == "bvand-integer-granularity") return OptionInfo{"bvand-integer-granularity", {}, opts.smt.BVAndIntegerGranularityWasSetByUser, OptionInfo::NumberInfo<uint64_t>{1, opts.smt.BVAndIntegerGranularity, {}, {}}};
2396
2786889
  if (name == "cdt-bisimilar") return OptionInfo{"cdt-bisimilar", {}, opts.datatypes.cdtBisimilarWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.datatypes.cdtBisimilar}};
2397
2786889
  if (name == "cegis-sample") return OptionInfo{"cegis-sample", {}, opts.quantifiers.cegisSampleWasSetByUser, OptionInfo::ModeInfo{"NONE", opts.quantifiers.cegisSample, { "NONE", "TRUST", "USE" }}};
2398
2786889
  if (name == "cegqi") return OptionInfo{"cegqi", {}, opts.quantifiers.cegqiWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.cegqi}};
2399
2786889
  if (name == "cegqi-all") return OptionInfo{"cegqi-all", {}, opts.quantifiers.cegqiAllWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.cegqiAll}};
2400
2786889
  if (name == "cegqi-bv") return OptionInfo{"cegqi-bv", {}, opts.quantifiers.cegqiBvWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.cegqiBv}};
2401
2786889
  if (name == "cegqi-bv-concat-inv") return OptionInfo{"cegqi-bv-concat-inv", {}, opts.quantifiers.cegqiBvConcInvWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.cegqiBvConcInv}};
2402
2786889
  if (name == "cegqi-bv-ineq") return OptionInfo{"cegqi-bv-ineq", {}, opts.quantifiers.cegqiBvIneqModeWasSetByUser, OptionInfo::ModeInfo{"EQ_BOUNDARY", opts.quantifiers.cegqiBvIneqMode, { "EQ_BOUNDARY", "EQ_SLACK", "KEEP" }}};
2403
2786889
  if (name == "cegqi-bv-interleave-value") return OptionInfo{"cegqi-bv-interleave-value", {}, opts.quantifiers.cegqiBvInterleaveValueWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.cegqiBvInterleaveValue}};
2404
2786889
  if (name == "cegqi-bv-linear") return OptionInfo{"cegqi-bv-linear", {}, opts.quantifiers.cegqiBvLinearizeWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.cegqiBvLinearize}};
2405
2786889
  if (name == "cegqi-bv-rm-extract") return OptionInfo{"cegqi-bv-rm-extract", {}, opts.quantifiers.cegqiBvRmExtractWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.cegqiBvRmExtract}};
2406
2786889
  if (name == "cegqi-bv-solve-nl") return OptionInfo{"cegqi-bv-solve-nl", {}, opts.quantifiers.cegqiBvSolveNlWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.cegqiBvSolveNl}};
2407
2786889
  if (name == "cegqi-full") return OptionInfo{"cegqi-full", {}, opts.quantifiers.cegqiFullEffortWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.cegqiFullEffort}};
2408
2786889
  if (name == "cegqi-innermost") return OptionInfo{"cegqi-innermost", {}, opts.quantifiers.cegqiInnermostWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.cegqiInnermost}};
2409
2786889
  if (name == "cegqi-midpoint") return OptionInfo{"cegqi-midpoint", {}, opts.quantifiers.cegqiMidpointWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.cegqiMidpoint}};
2410
2786889
  if (name == "cegqi-min-bounds") return OptionInfo{"cegqi-min-bounds", {}, opts.quantifiers.cegqiMinBoundsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.cegqiMinBounds}};
2411
2786889
  if (name == "cegqi-model") return OptionInfo{"cegqi-model", {}, opts.quantifiers.cegqiModelWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.cegqiModel}};
2412
2786889
  if (name == "cegqi-multi-inst") return OptionInfo{"cegqi-multi-inst", {}, opts.quantifiers.cegqiMultiInstWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.cegqiMultiInst}};
2413
2786889
  if (name == "cegqi-nested-qe") return OptionInfo{"cegqi-nested-qe", {}, opts.quantifiers.cegqiNestedQEWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.cegqiNestedQE}};
2414
2786889
  if (name == "cegqi-nopt") return OptionInfo{"cegqi-nopt", {}, opts.quantifiers.cegqiNoptWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.cegqiNopt}};
2415
2786889
  if (name == "cegqi-repeat-lit") return OptionInfo{"cegqi-repeat-lit", {}, opts.quantifiers.cegqiRepeatLitWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.cegqiRepeatLit}};
2416
2786889
  if (name == "cegqi-round-up-lia") return OptionInfo{"cegqi-round-up-lia", {}, opts.quantifiers.cegqiRoundUpLowerLiaWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.cegqiRoundUpLowerLia}};
2417
2786889
  if (name == "cegqi-sat") return OptionInfo{"cegqi-sat", {}, opts.quantifiers.cegqiSatWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.cegqiSat}};
2418
2786889
  if (name == "cegqi-use-inf-int") return OptionInfo{"cegqi-use-inf-int", {}, opts.quantifiers.cegqiUseInfIntWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.cegqiUseInfInt}};
2419
2786889
  if (name == "cegqi-use-inf-real") return OptionInfo{"cegqi-use-inf-real", {}, opts.quantifiers.cegqiUseInfRealWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.cegqiUseInfReal}};
2420
2786889
  if (name == "check-abducts") return OptionInfo{"check-abducts", {}, opts.smt.checkAbductsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.checkAbducts}};
2421
2786889
  if (name == "check-interpols") return OptionInfo{"check-interpols", {}, opts.smt.checkInterpolsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.checkInterpols}};
2422
2786889
  if (name == "check-models") return OptionInfo{"check-models", {}, opts.smt.checkModelsWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.smt.checkModels}};
2423
2786889
  if (name == "check-proofs") return OptionInfo{"check-proofs", {}, opts.smt.checkProofsWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.smt.checkProofs}};
2424
2786889
  if (name == "check-synth-sol") return OptionInfo{"check-synth-sol", {}, opts.smt.checkSynthSolWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.checkSynthSol}};
2425
2786889
  if (name == "check-unsat-cores") return OptionInfo{"check-unsat-cores", {}, opts.smt.checkUnsatCoresWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.smt.checkUnsatCores}};
2426
2786889
  if (name == "collect-pivot-stats") return OptionInfo{"collect-pivot-stats", {}, opts.arith.collectPivotsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.collectPivots}};
2427
2786889
  if (name == "cond-var-split-agg-quant") return OptionInfo{"cond-var-split-agg-quant", {}, opts.quantifiers.condVarSplitQuantAggWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.condVarSplitQuantAgg}};
2428
2786889
  if (name == "cond-var-split-quant") return OptionInfo{"cond-var-split-quant", {}, opts.quantifiers.condVarSplitQuantWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.condVarSplitQuant}};
2429
2786889
  if (name == "condense-function-values") return OptionInfo{"condense-function-values", {}, opts.theory.condenseFunctionValuesWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.theory.condenseFunctionValues}};
2430
2786889
  if (name == "conjecture-filter-active-terms") return OptionInfo{"conjecture-filter-active-terms", {}, opts.quantifiers.conjectureFilterActiveTermsWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.conjectureFilterActiveTerms}};
2431
2786889
  if (name == "conjecture-filter-canonical") return OptionInfo{"conjecture-filter-canonical", {}, opts.quantifiers.conjectureFilterCanonicalWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.conjectureFilterCanonical}};
2432
2786889
  if (name == "conjecture-filter-model") return OptionInfo{"conjecture-filter-model", {}, opts.quantifiers.conjectureFilterModelWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.conjectureFilterModel}};
2433
2786889
  if (name == "conjecture-gen") return OptionInfo{"conjecture-gen", {}, opts.quantifiers.conjectureGenWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.conjectureGen}};
2434
2786889
  if (name == "conjecture-gen-gt-enum") return OptionInfo{"conjecture-gen-gt-enum", {}, opts.quantifiers.conjectureGenGtEnumWasSetByUser, OptionInfo::NumberInfo<int64_t>{50, opts.quantifiers.conjectureGenGtEnum, {}, {}}};
2435
2786889
  if (name == "conjecture-gen-max-depth") return OptionInfo{"conjecture-gen-max-depth", {}, opts.quantifiers.conjectureGenMaxDepthWasSetByUser, OptionInfo::NumberInfo<int64_t>{3, opts.quantifiers.conjectureGenMaxDepth, {}, {}}};
2436
2786889
  if (name == "conjecture-gen-per-round") return OptionInfo{"conjecture-gen-per-round", {}, opts.quantifiers.conjectureGenPerRoundWasSetByUser, OptionInfo::NumberInfo<int64_t>{1, opts.quantifiers.conjectureGenPerRound, {}, {}}};
2437
2786889
  if (name == "conjecture-gen-uee-intro") return OptionInfo{"conjecture-gen-uee-intro", {}, opts.quantifiers.conjectureUeeIntroWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.conjectureUeeIntro}};
2438
2786889
  if (name == "conjecture-no-filter") return OptionInfo{"conjecture-no-filter", {}, opts.quantifiers.conjectureNoFilterWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.conjectureNoFilter}};
2439
2786889
  if (name == "copyright") return OptionInfo{"copyright", {}, false, OptionInfo::VoidInfo{}};
2440
2786889
  if (name == "cut-all-bounded") return OptionInfo{"cut-all-bounded", {}, opts.arith.doCutAllBoundedWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.doCutAllBounded}};
2441
2786889
  if (name == "dag-thresh") return OptionInfo{"dag-thresh", {}, opts.expr.defaultDagThreshWasSetByUser, OptionInfo::NumberInfo<int64_t>{1, opts.expr.defaultDagThresh, 0, {}}};
2442
2786889
  if (name == "debug") return OptionInfo{"debug", {}, false, OptionInfo::VoidInfo{}};
2443
2786889
  if (name == "debug-check-models") return OptionInfo{"debug-check-models", {}, opts.smt.debugCheckModelsWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.smt.debugCheckModels}};
2444
2786889
  if (name == "decision-mode" || name == "decision") return OptionInfo{"decision", {"decision-mode"}, opts.decision.decisionModeWasSetByUser, OptionInfo::ModeInfo{"INTERNAL", opts.decision.decisionMode, { "INTERNAL", "JUSTIFICATION", "JUSTIFICATION_OLD", "STOPONLY", "STOPONLY_OLD" }}};
2445
2786889
  if (name == "decision-random-weight") return OptionInfo{"decision-random-weight", {}, opts.decision.decisionRandomWeightWasSetByUser, OptionInfo::NumberInfo<int64_t>{0, opts.decision.decisionRandomWeight, {}, {}}};
2446
2786889
  if (name == "decision-threshold") return OptionInfo{"decision-threshold", {}, opts.decision.decisionThresholdWasSetByUser, OptionInfo::VoidInfo{}};
2447
2786889
  if (name == "decision-use-weight") return OptionInfo{"decision-use-weight", {}, opts.decision.decisionUseWeightWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.decision.decisionUseWeight}};
2448
2786889
  if (name == "decision-weight-internal") return OptionInfo{"decision-weight-internal", {}, opts.decision.decisionWeightInternalWasSetByUser, OptionInfo::ModeInfo{"OFF", opts.decision.decisionWeightInternal, { "MAX", "OFF", "SUM", "USR1" }}};
2449
2786889
  if (name == "difficulty-mode") return OptionInfo{"difficulty-mode", {}, opts.smt.difficultyModeWasSetByUser, OptionInfo::ModeInfo{"LEMMA_LITERAL", opts.smt.difficultyMode, { "LEMMA_LITERAL", "MODEL_CHECK" }}};
2450
2786889
  if (name == "dio-decomps") return OptionInfo{"dio-decomps", {}, opts.arith.exportDioDecompositionsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.exportDioDecompositions}};
2451
2786889
  if (name == "dio-repeat") return OptionInfo{"dio-repeat", {}, opts.arith.dioRepeatWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.dioRepeat}};
2452
2786889
  if (name == "dio-solver") return OptionInfo{"dio-solver", {}, opts.arith.arithDioSolverWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.arith.arithDioSolver}};
2453
2786889
  if (name == "dio-turns") return OptionInfo{"dio-turns", {}, opts.arith.dioSolverTurnsWasSetByUser, OptionInfo::NumberInfo<int64_t>{10, opts.arith.dioSolverTurns, {}, {}}};
2454
2786889
  if (name == "dt-binary-split") return OptionInfo{"dt-binary-split", {}, opts.datatypes.dtBinarySplitWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.datatypes.dtBinarySplit}};
2455
2786889
  if (name == "dt-blast-splits") return OptionInfo{"dt-blast-splits", {}, opts.datatypes.dtBlastSplitsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.datatypes.dtBlastSplits}};
2456
2786889
  if (name == "dt-cyclic") return OptionInfo{"dt-cyclic", {}, opts.datatypes.dtCyclicWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.datatypes.dtCyclic}};
2457
2786889
  if (name == "dt-force-assignment") return OptionInfo{"dt-force-assignment", {}, opts.datatypes.dtForceAssignmentWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.datatypes.dtForceAssignment}};
2458
2786889
  if (name == "dt-infer-as-lemmas") return OptionInfo{"dt-infer-as-lemmas", {}, opts.datatypes.dtInferAsLemmasWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.datatypes.dtInferAsLemmas}};
2459
2786889
  if (name == "dt-nested-rec") return OptionInfo{"dt-nested-rec", {}, opts.datatypes.dtNestedRecWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.datatypes.dtNestedRec}};
2460
2786889
  if (name == "dt-polite-optimize") return OptionInfo{"dt-polite-optimize", {}, opts.datatypes.dtPoliteOptimizeWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.datatypes.dtPoliteOptimize}};
2461
2786889
  if (name == "dt-rewrite-error-sel") return OptionInfo{"dt-rewrite-error-sel", {}, opts.datatypes.dtRewriteErrorSelWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.datatypes.dtRewriteErrorSel}};
2462
2786889
  if (name == "dt-share-sel") return OptionInfo{"dt-share-sel", {}, opts.datatypes.dtSharedSelectorsWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.datatypes.dtSharedSelectors}};
2463
2786889
  if (name == "dt-stc-ind") return OptionInfo{"dt-stc-ind", {}, opts.quantifiers.dtStcInductionWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.dtStcInduction}};
2464
2786889
  if (name == "dt-var-exp-quant") return OptionInfo{"dt-var-exp-quant", {}, opts.quantifiers.dtVarExpandQuantWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.dtVarExpandQuant}};
2465
2786889
  if (name == "dump") return OptionInfo{"dump", {}, opts.smt.dumpModeStringWasSetByUser, OptionInfo::ValueInfo<std::string>{std::string(), opts.smt.dumpModeString}};
2466
2786889
  if (name == "dump-difficulty") return OptionInfo{"dump-difficulty", {}, opts.driver.dumpDifficultyWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.driver.dumpDifficulty}};
2467
2488325
  if (name == "dump-instantiations") return OptionInfo{"dump-instantiations", {}, opts.driver.dumpInstantiationsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.driver.dumpInstantiations}};
2468
2189761
  if (name == "dump-instantiations-debug") return OptionInfo{"dump-instantiations-debug", {}, opts.driver.dumpInstantiationsDebugWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.driver.dumpInstantiationsDebug}};
2469
1891344
  if (name == "dump-models") return OptionInfo{"dump-models", {}, opts.driver.dumpModelsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.driver.dumpModels}};
2470
1592780
  if (name == "dump-proofs") return OptionInfo{"dump-proofs", {}, opts.driver.dumpProofsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.driver.dumpProofs}};
2471
1294216
  if (name == "dump-to") return OptionInfo{"dump-to", {}, opts.smt.dumpToFileNameWasSetByUser, OptionInfo::VoidInfo{}};
2472
1294216
  if (name == "dump-unsat-cores") return OptionInfo{"dump-unsat-cores", {}, opts.driver.dumpUnsatCoresWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.driver.dumpUnsatCores}};
2473
995652
  if (name == "dump-unsat-cores-full") return OptionInfo{"dump-unsat-cores-full", {}, opts.driver.dumpUnsatCoresFullWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.driver.dumpUnsatCoresFull}};
2474
697097
  if (name == "e-matching") return OptionInfo{"e-matching", {}, opts.quantifiers.eMatchingWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.eMatching}};
2475
697097
  if (name == "early-exit") return OptionInfo{"early-exit", {}, opts.driver.earlyExitWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.driver.earlyExit}};
2476
690946
  if (name == "early-ite-removal") return OptionInfo{"early-ite-removal", {}, opts.smt.earlyIteRemovalWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.earlyIteRemoval}};
2477
690946
  if (name == "ee-mode") return OptionInfo{"ee-mode", {}, opts.theory.eeModeWasSetByUser, OptionInfo::ModeInfo{"DISTRIBUTED", opts.theory.eeMode, { "CENTRAL", "DISTRIBUTED" }}};
2478
690946
  if (name == "elim-taut-quant") return OptionInfo{"elim-taut-quant", {}, opts.quantifiers.elimTautQuantWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.elimTautQuant}};
2479
690946
  if (name == "diagnostic-output-channel" || name == "err") return OptionInfo{"err", {"diagnostic-output-channel"}, opts.base.errWasSetByUser, OptionInfo::VoidInfo{}};
2480
690946
  if (name == "error-selection-rule") return OptionInfo{"error-selection-rule", {}, opts.arith.arithErrorSelectionRuleWasSetByUser, OptionInfo::ModeInfo{"MINIMUM_AMOUNT", opts.arith.arithErrorSelectionRule, { "MAXIMUM_AMOUNT", "MINIMUM_AMOUNT", "SUM_METRIC", "VAR_ORDER" }}};
2481
690946
  if (name == "expand-definitions") return OptionInfo{"expand-definitions", {}, opts.smt.expandDefinitionsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.expandDefinitions}};
2482
690946
  if (name == "expr-depth") return OptionInfo{"expr-depth", {}, opts.expr.defaultExprDepthWasSetByUser, OptionInfo::NumberInfo<int64_t>{0, opts.expr.defaultExprDepth, -1, {}}};
2483
690946
  if (name == "ext-rew-prep") return OptionInfo{"ext-rew-prep", {}, opts.smt.extRewPrepWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.extRewPrep}};
2484
690946
  if (name == "ext-rew-prep-agg") return OptionInfo{"ext-rew-prep-agg", {}, opts.smt.extRewPrepAggWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.extRewPrepAgg}};
2485
690946
  if (name == "ext-rewrite-quant") return OptionInfo{"ext-rewrite-quant", {}, opts.quantifiers.extRewriteQuantWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.extRewriteQuant}};
2486
690946
  if (name == "fc-penalties") return OptionInfo{"fc-penalties", {}, opts.arith.havePenaltiesWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.havePenalties}};
2487
690946
  if (name == "filename") return OptionInfo{"filename", {}, opts.driver.filenameWasSetByUser, OptionInfo::ValueInfo<std::string>{std::string(), opts.driver.filename}};
2488
690946
  if (name == "filesystem-access") return OptionInfo{"filesystem-access", {}, opts.parser.filesystemAccessWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.parser.filesystemAccess}};
2489
684544
  if (name == "finite-model-find") return OptionInfo{"finite-model-find", {}, opts.quantifiers.finiteModelFindWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.finiteModelFind}};
2490
684544
  if (name == "flatten-ho-chains") return OptionInfo{"flatten-ho-chains", {}, opts.printer.flattenHOChainsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.printer.flattenHOChains}};
2491
684544
  if (name == "fmf-bound") return OptionInfo{"fmf-bound", {}, opts.quantifiers.fmfBoundWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.fmfBound}};
2492
684544
  if (name == "fmf-bound-int") return OptionInfo{"fmf-bound-int", {}, opts.quantifiers.fmfBoundIntWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.fmfBoundInt}};
2493
684544
  if (name == "fmf-bound-lazy") return OptionInfo{"fmf-bound-lazy", {}, opts.quantifiers.fmfBoundLazyWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.fmfBoundLazy}};
2494
684544
  if (name == "fmf-fmc-simple") return OptionInfo{"fmf-fmc-simple", {}, opts.quantifiers.fmfFmcSimpleWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.fmfFmcSimple}};
2495
684544
  if (name == "fmf-fresh-dc") return OptionInfo{"fmf-fresh-dc", {}, opts.quantifiers.fmfFreshDistConstWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.fmfFreshDistConst}};
2496
684544
  if (name == "fmf-fun") return OptionInfo{"fmf-fun", {}, opts.quantifiers.fmfFunWellDefinedWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.fmfFunWellDefined}};
2497
684544
  if (name == "fmf-fun-rlv") return OptionInfo{"fmf-fun-rlv", {}, opts.quantifiers.fmfFunWellDefinedRelevantWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.fmfFunWellDefinedRelevant}};
2498
684544
  if (name == "fmf-inst-engine") return OptionInfo{"fmf-inst-engine", {}, opts.quantifiers.fmfInstEngineWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.fmfInstEngine}};
2499
684544
  if (name == "fmf-type-completion-thresh") return OptionInfo{"fmf-type-completion-thresh", {}, opts.quantifiers.fmfTypeCompletionThreshWasSetByUser, OptionInfo::NumberInfo<int64_t>{1000, opts.quantifiers.fmfTypeCompletionThresh, {}, {}}};
2500
684544
  if (name == "force-logic") return OptionInfo{"force-logic", {}, opts.parser.forceLogicStringWasSetByUser, OptionInfo::ValueInfo<std::string>{std::string(), opts.parser.forceLogicString}};
2501
678130
  if (name == "force-no-limit-cpu-while-dump") return OptionInfo{"force-no-limit-cpu-while-dump", {}, opts.driver.forceNoLimitCpuWhileDumpWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.driver.forceNoLimitCpuWhileDump}};
2502
678102
  if (name == "foreign-theory-rewrite") return OptionInfo{"foreign-theory-rewrite", {}, opts.smt.foreignTheoryRewriteWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.foreignTheoryRewrite}};
2503
678102
  if (name == "fp-exp") return OptionInfo{"fp-exp", {}, opts.fp.fpExpWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.fp.fpExp}};
2504
678102
  if (name == "fp-lazy-wb") return OptionInfo{"fp-lazy-wb", {}, opts.fp.fpLazyWbWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.fp.fpLazyWb}};
2505
678102
  if (name == "fs-interleave") return OptionInfo{"fs-interleave", {}, opts.quantifiers.fullSaturateInterleaveWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.fullSaturateInterleave}};
2506
678102
  if (name == "fs-stratify") return OptionInfo{"fs-stratify", {}, opts.quantifiers.fullSaturateStratifyWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.fullSaturateStratify}};
2507
678102
  if (name == "fs-sum") return OptionInfo{"fs-sum", {}, opts.quantifiers.fullSaturateSumWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.fullSaturateSum}};
2508
678102
  if (name == "full-saturate-quant") return OptionInfo{"full-saturate-quant", {}, opts.quantifiers.fullSaturateQuantWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.fullSaturateQuant}};
2509
678102
  if (name == "full-saturate-quant-limit") return OptionInfo{"full-saturate-quant-limit", {}, opts.quantifiers.fullSaturateLimitWasSetByUser, OptionInfo::NumberInfo<int64_t>{-1, opts.quantifiers.fullSaturateLimit, {}, {}}};
2510
678102
  if (name == "full-saturate-quant-rd") return OptionInfo{"full-saturate-quant-rd", {}, opts.quantifiers.fullSaturateQuantRdWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.fullSaturateQuantRd}};
2511
678102
  if (name == "global-declarations") return OptionInfo{"global-declarations", {}, opts.parser.globalDeclarationsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.parser.globalDeclarations}};
2512
678102
  if (name == "global-negate") return OptionInfo{"global-negate", {}, opts.quantifiers.globalNegateWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.globalNegate}};
2513
678102
  if (name == "help") return OptionInfo{"help", {}, opts.driver.helpWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.driver.help}};
2514
671931
  if (name == "heuristic-pivots") return OptionInfo{"heuristic-pivots", {}, opts.arith.arithHeuristicPivotsWasSetByUser, OptionInfo::NumberInfo<int64_t>{0, opts.arith.arithHeuristicPivots, {}, {}}};
2515
671931
  if (name == "ho-elim") return OptionInfo{"ho-elim", {}, opts.quantifiers.hoElimWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.hoElim}};
2516
671931
  if (name == "ho-elim-store-ax") return OptionInfo{"ho-elim-store-ax", {}, opts.quantifiers.hoElimStoreAxWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.hoElimStoreAx}};
2517
671931
  if (name == "ho-matching") return OptionInfo{"ho-matching", {}, opts.quantifiers.hoMatchingWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.hoMatching}};
2518
671931
  if (name == "ho-matching-var-priority") return OptionInfo{"ho-matching-var-priority", {}, opts.quantifiers.hoMatchingVarArgPriorityWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.hoMatchingVarArgPriority}};
2519
671931
  if (name == "ho-merge-term-db") return OptionInfo{"ho-merge-term-db", {}, opts.quantifiers.hoMergeTermDbWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.hoMergeTermDb}};
2520
671931
  if (name == "iand-mode") return OptionInfo{"iand-mode", {}, opts.smt.iandModeWasSetByUser, OptionInfo::ModeInfo{"VALUE", opts.smt.iandMode, { "BITWISE", "SUM", "VALUE" }}};
2521
671931
  if (name == "in") return OptionInfo{"in", {}, opts.base.inWasSetByUser, OptionInfo::VoidInfo{}};
2522
671931
  if (name == "increment-triggers") return OptionInfo{"increment-triggers", {}, opts.quantifiers.incrementTriggersWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.incrementTriggers}};
2523
671931
  if (name == "incremental") return OptionInfo{"incremental", {}, opts.base.incrementalSolvingWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.base.incrementalSolving}};
2524
665760
  if (name == "inst-level-input-only") return OptionInfo{"inst-level-input-only", {}, opts.quantifiers.instLevelInputOnlyWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.instLevelInputOnly}};
2525
665760
  if (name == "inst-max-level") return OptionInfo{"inst-max-level", {}, opts.quantifiers.instMaxLevelWasSetByUser, OptionInfo::NumberInfo<int64_t>{-1, opts.quantifiers.instMaxLevel, {}, {}}};
2526
665760
  if (name == "inst-max-rounds") return OptionInfo{"inst-max-rounds", {}, opts.quantifiers.instMaxRoundsWasSetByUser, OptionInfo::NumberInfo<int64_t>{-1, opts.quantifiers.instMaxRounds, {}, {}}};
2527
665760
  if (name == "inst-no-entail") return OptionInfo{"inst-no-entail", {}, opts.quantifiers.instNoEntailWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.instNoEntail}};
2528
665760
  if (name == "inst-when") return OptionInfo{"inst-when", {}, opts.quantifiers.instWhenModeWasSetByUser, OptionInfo::ModeInfo{"FULL_LAST_CALL", opts.quantifiers.instWhenMode, { "FULL", "FULL_DELAY", "FULL_DELAY_LAST_CALL", "FULL_LAST_CALL", "LAST_CALL", "PRE_FULL" }}};
2529
665760
  if (name == "inst-when-phase") return OptionInfo{"inst-when-phase", {}, opts.quantifiers.instWhenPhaseWasSetByUser, OptionInfo::NumberInfo<int64_t>{2, opts.quantifiers.instWhenPhase, {}, {}}};
2530
665760
  if (name == "inst-when-strict-interleave") return OptionInfo{"inst-when-strict-interleave", {}, opts.quantifiers.instWhenStrictInterleaveWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.instWhenStrictInterleave}};
2531
665760
  if (name == "inst-when-tc-first") return OptionInfo{"inst-when-tc-first", {}, opts.quantifiers.instWhenTcFirstWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.instWhenTcFirst}};
2532
665760
  if (name == "int-wf-ind") return OptionInfo{"int-wf-ind", {}, opts.quantifiers.intWfInductionWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.intWfInduction}};
2533
665760
  if (name == "interactive") return OptionInfo{"interactive", {}, opts.driver.interactiveWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.driver.interactive}};
2534
653418
  if (name == "interactive-mode") return OptionInfo{"interactive-mode", {}, opts.smt.interactiveModeWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.smt.interactiveMode}};
2535
653418
  if (name == "ite-dtt-split-quant") return OptionInfo{"ite-dtt-split-quant", {}, opts.quantifiers.iteDtTesterSplitQuantWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.iteDtTesterSplitQuant}};
2536
653418
  if (name == "ite-lift-quant") return OptionInfo{"ite-lift-quant", {}, opts.quantifiers.iteLiftQuantWasSetByUser, OptionInfo::ModeInfo{"SIMPLE", opts.quantifiers.iteLiftQuant, { "ALL", "NONE", "SIMPLE" }}};
2537
653418
  if (name == "ite-simp") return OptionInfo{"ite-simp", {}, opts.smt.doITESimpWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.smt.doITESimp}};
2538
653418
  if (name == "jh-rlv-order") return OptionInfo{"jh-rlv-order", {}, opts.decision.jhRlvOrderWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.decision.jhRlvOrder}};
2539
653418
  if (name == "jh-skolem") return OptionInfo{"jh-skolem", {}, opts.decision.jhSkolemModeWasSetByUser, OptionInfo::ModeInfo{"FIRST", opts.decision.jhSkolemMode, { "FIRST", "LAST" }}};
2540
653418
  if (name == "jh-skolem-rlv") return OptionInfo{"jh-skolem-rlv", {}, opts.decision.jhSkolemRlvModeWasSetByUser, OptionInfo::ModeInfo{"ASSERT", opts.decision.jhSkolemRlvMode, { "ALWAYS", "ASSERT" }}};
2541
653418
  if (name == "input-language" || name == "lang") return OptionInfo{"lang", {"input-language"}, opts.base.inputLanguageWasSetByUser, OptionInfo::VoidInfo{}};
2542
653418
  if (name == "language-help") return OptionInfo{"language-help", {}, opts.base.languageHelpWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.base.languageHelp}};
2543
647247
  if (name == "learned-rewrite") return OptionInfo{"learned-rewrite", {}, opts.smt.learnedRewriteWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.learnedRewrite}};
2544
647247
  if (name == "lemmas-on-replay-failure") return OptionInfo{"lemmas-on-replay-failure", {}, opts.arith.replayFailureLemmaWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.replayFailureLemma}};
2545
647247
  if (name == "literal-matching") return OptionInfo{"literal-matching", {}, opts.quantifiers.literalMatchModeWasSetByUser, OptionInfo::ModeInfo{"USE", opts.quantifiers.literalMatchMode, { "AGG", "AGG_PREDICATE", "NONE", "USE" }}};
2546
647247
  if (name == "macros-quant") return OptionInfo{"macros-quant", {}, opts.quantifiers.macrosQuantWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.macrosQuant}};
2547
647247
  if (name == "macros-quant-mode") return OptionInfo{"macros-quant-mode", {}, opts.quantifiers.macrosQuantModeWasSetByUser, OptionInfo::ModeInfo{"GROUND_UF", opts.quantifiers.macrosQuantMode, { "ALL", "GROUND", "GROUND_UF" }}};
2548
647247
  if (name == "maxCutsInContext") return OptionInfo{"maxCutsInContext", {}, opts.arith.maxCutsInContextWasSetByUser, OptionInfo::NumberInfo<uint64_t>{65535, opts.arith.maxCutsInContext, {}, {}}};
2549
647247
  if (name == "mbqi") return OptionInfo{"mbqi", {}, opts.quantifiers.mbqiModeWasSetByUser, OptionInfo::ModeInfo{"FMC", opts.quantifiers.mbqiMode, { "FMC", "NONE", "TRUST" }}};
2550
647247
  if (name == "mbqi-interleave") return OptionInfo{"mbqi-interleave", {}, opts.quantifiers.mbqiInterleaveWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.mbqiInterleave}};
2551
647247
  if (name == "mbqi-one-inst-per-round") return OptionInfo{"mbqi-one-inst-per-round", {}, opts.quantifiers.fmfOneInstPerRoundWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.fmfOneInstPerRound}};
2552
647247
  if (name == "minimal-unsat-cores") return OptionInfo{"minimal-unsat-cores", {}, opts.smt.minimalUnsatCoresWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.minimalUnsatCores}};
2553
647247
  if (name == "minisat-dump-dimacs") return OptionInfo{"minisat-dump-dimacs", {}, opts.prop.minisatDumpDimacsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.prop.minisatDumpDimacs}};
2554
647247
  if (name == "minisat-elimination") return OptionInfo{"minisat-elimination", {}, opts.prop.minisatUseElimWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.prop.minisatUseElim}};
2555
647247
  if (name == "miniscope-quant") return OptionInfo{"miniscope-quant", {}, opts.quantifiers.miniscopeQuantWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.miniscopeQuant}};
2556
647247
  if (name == "miniscope-quant-fv") return OptionInfo{"miniscope-quant-fv", {}, opts.quantifiers.miniscopeQuantFreeVarWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.miniscopeQuantFreeVar}};
2557
647247
  if (name == "miplib-trick") return OptionInfo{"miplib-trick", {}, opts.arith.arithMLTrickWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.arithMLTrick}};
2558
647247
  if (name == "miplib-trick-subs") return OptionInfo{"miplib-trick-subs", {}, opts.arith.arithMLTrickSubstitutionsWasSetByUser, OptionInfo::NumberInfo<uint64_t>{1, opts.arith.arithMLTrickSubstitutions, {}, {}}};
2559
647247
  if (name == "mmap") return OptionInfo{"mmap", {}, opts.parser.memoryMapWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.parser.memoryMap}};
2560
641076
  if (name == "model-cores") return OptionInfo{"model-cores", {}, opts.smt.modelCoresModeWasSetByUser, OptionInfo::ModeInfo{"NONE", opts.smt.modelCoresMode, { "NONE", "NON_IMPLIED", "SIMPLE" }}};
2561
641076
  if (name == "model-format") return OptionInfo{"model-format", {}, opts.printer.modelFormatModeWasSetByUser, OptionInfo::ModeInfo{"DEFAULT", opts.printer.modelFormatMode, { "DEFAULT", "TABLE" }}};
2562
641076
  if (name == "model-uninterp-print" || name == "model-u-print") return OptionInfo{"model-u-print", {"model-uninterp-print"}, opts.smt.modelUninterpPrintWasSetByUser, OptionInfo::ModeInfo{"None", opts.smt.modelUninterpPrint, { "DeclFun", "DeclSortAndFun", "None" }}};
2563
641076
  if (name == "model-witness-value") return OptionInfo{"model-witness-value", {}, opts.smt.modelWitnessValueWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.modelWitnessValue}};
2564
641076
  if (name == "multi-trigger-cache") return OptionInfo{"multi-trigger-cache", {}, opts.quantifiers.multiTriggerCacheWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.multiTriggerCache}};
2565
641076
  if (name == "multi-trigger-linear") return OptionInfo{"multi-trigger-linear", {}, opts.quantifiers.multiTriggerLinearWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.multiTriggerLinear}};
2566
641076
  if (name == "multi-trigger-priority") return OptionInfo{"multi-trigger-priority", {}, opts.quantifiers.multiTriggerPriorityWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.multiTriggerPriority}};
2567
641076
  if (name == "multi-trigger-when-single") return OptionInfo{"multi-trigger-when-single", {}, opts.quantifiers.multiTriggerWhenSingleWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.multiTriggerWhenSingle}};
2568
641076
  if (name == "new-prop") return OptionInfo{"new-prop", {}, opts.arith.newPropWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.arith.newProp}};
2569
641076
  if (name == "nl-cad") return OptionInfo{"nl-cad", {}, opts.arith.nlCadWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.nlCad}};
2570
641076
  if (name == "nl-cad-initial") return OptionInfo{"nl-cad-initial", {}, opts.arith.nlCadUseInitialWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.nlCadUseInitial}};
2571
641076
  if (name == "nl-cad-lift") return OptionInfo{"nl-cad-lift", {}, opts.arith.nlCadLiftingWasSetByUser, OptionInfo::ModeInfo{"REGULAR", opts.arith.nlCadLifting, { "LAZARD", "REGULAR" }}};
2572
641076
  if (name == "nl-cad-proj") return OptionInfo{"nl-cad-proj", {}, opts.arith.nlCadProjectionWasSetByUser, OptionInfo::ModeInfo{"MCCALLUM", opts.arith.nlCadProjection, { "LAZARD", "LAZARDMOD", "MCCALLUM" }}};
2573
641076
  if (name == "nl-ext") return OptionInfo{"nl-ext", {}, opts.arith.nlExtWasSetByUser, OptionInfo::ModeInfo{"FULL", opts.arith.nlExt, { "FULL", "LIGHT", "NONE" }}};
2574
641076
  if (name == "nl-ext-ent-conf") return OptionInfo{"nl-ext-ent-conf", {}, opts.arith.nlExtEntailConflictsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.nlExtEntailConflicts}};
2575
641076
  if (name == "nl-ext-factor") return OptionInfo{"nl-ext-factor", {}, opts.arith.nlExtFactorWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.arith.nlExtFactor}};
2576
641076
  if (name == "nl-ext-inc-prec") return OptionInfo{"nl-ext-inc-prec", {}, opts.arith.nlExtIncPrecisionWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.arith.nlExtIncPrecision}};
2577
641076
  if (name == "nl-ext-purify") return OptionInfo{"nl-ext-purify", {}, opts.arith.nlExtPurifyWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.nlExtPurify}};
2578
641076
  if (name == "nl-ext-rbound") return OptionInfo{"nl-ext-rbound", {}, opts.arith.nlExtResBoundWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.nlExtResBound}};
2579
641076
  if (name == "nl-ext-rewrite") return OptionInfo{"nl-ext-rewrite", {}, opts.arith.nlExtRewritesWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.arith.nlExtRewrites}};
2580
641076
  if (name == "nl-ext-split-zero") return OptionInfo{"nl-ext-split-zero", {}, opts.arith.nlExtSplitZeroWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.nlExtSplitZero}};
2581
641076
  if (name == "nl-ext-tf-taylor-deg") return OptionInfo{"nl-ext-tf-taylor-deg", {}, opts.arith.nlExtTfTaylorDegreeWasSetByUser, OptionInfo::NumberInfo<int64_t>{4, opts.arith.nlExtTfTaylorDegree, {}, {}}};
2582
641076
  if (name == "nl-ext-tf-tplanes") return OptionInfo{"nl-ext-tf-tplanes", {}, opts.arith.nlExtTfTangentPlanesWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.arith.nlExtTfTangentPlanes}};
2583
641076
  if (name == "nl-ext-tplanes") return OptionInfo{"nl-ext-tplanes", {}, opts.arith.nlExtTangentPlanesWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.nlExtTangentPlanes}};
2584
641076
  if (name == "nl-ext-tplanes-interleave") return OptionInfo{"nl-ext-tplanes-interleave", {}, opts.arith.nlExtTangentPlanesInterleaveWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.nlExtTangentPlanesInterleave}};
2585
641076
  if (name == "nl-icp") return OptionInfo{"nl-icp", {}, opts.arith.nlICPWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.nlICP}};
2586
641076
  if (name == "nl-rlv") return OptionInfo{"nl-rlv", {}, opts.arith.nlRlvModeWasSetByUser, OptionInfo::ModeInfo{"NONE", opts.arith.nlRlvMode, { "ALWAYS", "INTERLEAVE", "NONE" }}};
2587
641076
  if (name == "nl-rlv-assert-bounds") return OptionInfo{"nl-rlv-assert-bounds", {}, opts.arith.nlRlvAssertBoundsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.nlRlvAssertBounds}};
2588
641076
  if (name == "on-repeat-ite-simp") return OptionInfo{"on-repeat-ite-simp", {}, opts.smt.doITESimpOnRepeatWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.doITESimpOnRepeat}};
2589
641076
  if (name == "regular-output-channel" || name == "out") return OptionInfo{"out", {"regular-output-channel"}, opts.base.outWasSetByUser, OptionInfo::VoidInfo{}};
2590
641076
  if (name == "output") return OptionInfo{"output", {}, opts.base.outputTagWasSetByUser, OptionInfo::ModeInfo{"NONE", opts.base.outputTag, { "INST", "NONE", "RAW_BENCHMARK", "SYGUS", "TRIGGER" }}};
2591
641074
  if (name == "output-lang" || name == "output-language") return OptionInfo{"output-lang", {"output-language"}, opts.base.outputLanguageWasSetByUser, OptionInfo::VoidInfo{}};
2592
641074
  if (name == "parse-only") return OptionInfo{"parse-only", {}, opts.base.parseOnlyWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.base.parseOnly}};
2593
336070
  if (name == "partial-triggers") return OptionInfo{"partial-triggers", {}, opts.quantifiers.partialTriggersWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.partialTriggers}};
2594
336070
  if (name == "pb-rewrites") return OptionInfo{"pb-rewrites", {}, opts.arith.pbRewritesWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.pbRewrites}};
2595
336070
  if (name == "pivot-threshold") return OptionInfo{"pivot-threshold", {}, opts.arith.arithPivotThresholdWasSetByUser, OptionInfo::NumberInfo<uint64_t>{2, opts.arith.arithPivotThreshold, {}, {}}};
2596
336070
  if (name == "pool-inst") return OptionInfo{"pool-inst", {}, opts.quantifiers.poolInstWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.poolInst}};
2597
336070
  if (name == "pp-assert-max-sub-size") return OptionInfo{"pp-assert-max-sub-size", {}, opts.arith.ppAssertMaxSubSizeWasSetByUser, OptionInfo::NumberInfo<uint64_t>{2, opts.arith.ppAssertMaxSubSize, {}, {}}};
2598
336070
  if (name == "pre-skolem-quant") return OptionInfo{"pre-skolem-quant", {}, opts.quantifiers.preSkolemQuantWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.preSkolemQuant}};
2599
336070
  if (name == "pre-skolem-quant-agg") return OptionInfo{"pre-skolem-quant-agg", {}, opts.quantifiers.preSkolemQuantAggWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.preSkolemQuantAgg}};
2600
336070
  if (name == "pre-skolem-quant-nested") return OptionInfo{"pre-skolem-quant-nested", {}, opts.quantifiers.preSkolemQuantNestedWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.preSkolemQuantNested}};
2601
336070
  if (name == "prenex-quant") return OptionInfo{"prenex-quant", {}, opts.quantifiers.prenexQuantWasSetByUser, OptionInfo::ModeInfo{"SIMPLE", opts.quantifiers.prenexQuant, { "NONE", "NORMAL", "SIMPLE" }}};
2602
336070
  if (name == "prenex-quant-user") return OptionInfo{"prenex-quant-user", {}, opts.quantifiers.prenexQuantUserWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.prenexQuantUser}};
2603
336070
  if (name == "preprocess-only") return OptionInfo{"preprocess-only", {}, opts.base.preprocessOnlyWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.base.preprocessOnly}};
2604
336070
  if (name == "print-inst") return OptionInfo{"print-inst", {}, opts.printer.printInstModeWasSetByUser, OptionInfo::ModeInfo{"LIST", opts.printer.printInstMode, { "LIST", "NUM" }}};
2605
336070
  if (name == "print-inst-full") return OptionInfo{"print-inst-full", {}, opts.printer.printInstFullWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.printer.printInstFull}};
2606
336070
  if (name == "print-success") return OptionInfo{"print-success", {}, opts.base.printSuccessWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.base.printSuccess}};
2607
336070
  if (name == "produce-abducts") return OptionInfo{"produce-abducts", {}, opts.smt.produceAbductsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.produceAbducts}};
2608
336070
  if (name == "produce-assertions") return OptionInfo{"produce-assertions", {}, opts.smt.produceAssertionsWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.smt.produceAssertions}};
2609
336070
  if (name == "produce-assignments") return OptionInfo{"produce-assignments", {}, opts.smt.produceAssignmentsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.produceAssignments}};
2610
336070
  if (name == "produce-difficulty") return OptionInfo{"produce-difficulty", {}, opts.smt.produceDifficultyWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.produceDifficulty}};
2611
336070
  if (name == "produce-interpols") return OptionInfo{"produce-interpols", {}, opts.smt.produceInterpolsWasSetByUser, OptionInfo::ModeInfo{"NONE", opts.smt.produceInterpols, { "ALL", "ASSUMPTIONS", "CONJECTURE", "DEFAULT", "NONE", "SHARED" }}};
2612
336070
  if (name == "produce-models") return OptionInfo{"produce-models", {}, opts.smt.produceModelsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.produceModels}};
2613
336070
  if (name == "produce-proofs") return OptionInfo{"produce-proofs", {}, opts.smt.produceProofsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.produceProofs}};
2614
336070
  if (name == "produce-unsat-assumptions") return OptionInfo{"produce-unsat-assumptions", {}, opts.smt.unsatAssumptionsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.unsatAssumptions}};
2615
336070
  if (name == "produce-unsat-cores") return OptionInfo{"produce-unsat-cores", {}, opts.smt.unsatCoresWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.smt.unsatCores}};
2616
336070
  if (name == "proof-check") return OptionInfo{"proof-check", {}, opts.proof.proofCheckWasSetByUser, OptionInfo::ModeInfo{"LAZY", opts.proof.proofCheck, { "EAGER", "EAGER_SIMPLE", "LAZY", "NONE" }}};
2617
336070
  if (name == "proof-format-mode") return OptionInfo{"proof-format-mode", {}, opts.proof.proofFormatModeWasSetByUser, OptionInfo::ModeInfo{"NONE", opts.proof.proofFormatMode, { "DOT", "NONE", "TPTP", "VERIT" }}};
2618
336070
  if (name == "proof-granularity") return OptionInfo{"proof-granularity", {}, opts.proof.proofGranularityModeWasSetByUser, OptionInfo::ModeInfo{"THEORY_REWRITE", opts.proof.proofGranularityMode, { "DSL_REWRITE", "OFF", "REWRITE", "THEORY_REWRITE" }}};
2619
336070
  if (name == "proof-pedantic") return OptionInfo{"proof-pedantic", {}, opts.proof.proofPedanticWasSetByUser, OptionInfo::NumberInfo<uint64_t>{0, opts.proof.proofPedantic, {}, {}}};
2620
336070
  if (name == "proof-pp-merge") return OptionInfo{"proof-pp-merge", {}, opts.proof.proofPpMergeWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.proof.proofPpMerge}};
2621
336070
  if (name == "proof-print-conclusion") return OptionInfo{"proof-print-conclusion", {}, opts.proof.proofPrintConclusionWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.proof.proofPrintConclusion}};
2622
336070
  if (name == "prop-row-length") return OptionInfo{"prop-row-length", {}, opts.arith.arithPropagateMaxLengthWasSetByUser, OptionInfo::NumberInfo<uint64_t>{16, opts.arith.arithPropagateMaxLength, {}, {}}};
2623
336070
  if (name == "purify-triggers") return OptionInfo{"purify-triggers", {}, opts.quantifiers.purifyTriggersWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.purifyTriggers}};
2624
336070
  if (name == "qcf-all-conflict") return OptionInfo{"qcf-all-conflict", {}, opts.quantifiers.qcfAllConflictWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.qcfAllConflict}};
2625
336070
  if (name == "qcf-eager-check-rd") return OptionInfo{"qcf-eager-check-rd", {}, opts.quantifiers.qcfEagerCheckRdWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.qcfEagerCheckRd}};
2626
336070
  if (name == "qcf-eager-test") return OptionInfo{"qcf-eager-test", {}, opts.quantifiers.qcfEagerTestWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.qcfEagerTest}};
2627
336070
  if (name == "qcf-nested-conflict") return OptionInfo{"qcf-nested-conflict", {}, opts.quantifiers.qcfNestedConflictWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.qcfNestedConflict}};
2628
336070
  if (name == "qcf-skip-rd") return OptionInfo{"qcf-skip-rd", {}, opts.quantifiers.qcfSkipRdWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.qcfSkipRd}};
2629
336070
  if (name == "qcf-tconstraint") return OptionInfo{"qcf-tconstraint", {}, opts.quantifiers.qcfTConstraintWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.qcfTConstraint}};
2630
336070
  if (name == "qcf-vo-exp") return OptionInfo{"qcf-vo-exp", {}, opts.quantifiers.qcfVoExpWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.qcfVoExp}};
2631
336070
  if (name == "quant-alpha-equiv") return OptionInfo{"quant-alpha-equiv", {}, opts.quantifiers.quantAlphaEquivWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.quantAlphaEquiv}};
2632
336070
  if (name == "quant-cf") return OptionInfo{"quant-cf", {}, opts.quantifiers.quantConflictFindWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.quantConflictFind}};
2633
336070
  if (name == "quant-cf-mode") return OptionInfo{"quant-cf-mode", {}, opts.quantifiers.qcfModeWasSetByUser, OptionInfo::ModeInfo{"PROP_EQ", opts.quantifiers.qcfMode, { "CONFLICT_ONLY", "PARTIAL", "PROP_EQ" }}};
2634
336070
  if (name == "quant-cf-when") return OptionInfo{"quant-cf-when", {}, opts.quantifiers.qcfWhenModeWasSetByUser, OptionInfo::ModeInfo{"DEFAULT", opts.quantifiers.qcfWhenMode, { "DEFAULT", "LAST_CALL", "STD", "STD_H" }}};
2635
336070
  if (name == "quant-dsplit-mode") return OptionInfo{"quant-dsplit-mode", {}, opts.quantifiers.quantDynamicSplitWasSetByUser, OptionInfo::ModeInfo{"DEFAULT", opts.quantifiers.quantDynamicSplit, { "AGG", "DEFAULT", "NONE" }}};
2636
336070
  if (name == "quant-fun-wd") return OptionInfo{"quant-fun-wd", {}, opts.quantifiers.quantFunWellDefinedWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.quantFunWellDefined}};
2637
336070
  if (name == "quant-ind") return OptionInfo{"quant-ind", {}, opts.quantifiers.quantInductionWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.quantInduction}};
2638
336070
  if (name == "quant-rep-mode") return OptionInfo{"quant-rep-mode", {}, opts.quantifiers.quantRepModeWasSetByUser, OptionInfo::ModeInfo{"FIRST", opts.quantifiers.quantRepMode, { "DEPTH", "EE", "FIRST" }}};
2639
336070
  if (name == "quant-split") return OptionInfo{"quant-split", {}, opts.quantifiers.quantSplitWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.quantSplit}};
2640
336070
  if (name == "quiet") return OptionInfo{"quiet", {}, false, OptionInfo::VoidInfo{}};
2641
336070
  if (name == "random-frequency" || name == "random-freq") return OptionInfo{"random-freq", {"random-frequency"}, opts.prop.satRandomFreqWasSetByUser, OptionInfo::NumberInfo<double>{0.0, opts.prop.satRandomFreq, 0.0, 1.0}};
2642
336068
  if (name == "random-seed") return OptionInfo{"random-seed", {}, opts.prop.satRandomSeedWasSetByUser, OptionInfo::NumberInfo<uint64_t>{0, opts.prop.satRandomSeed, {}, {}}};
2643
336068
  if (name == "re-elim") return OptionInfo{"re-elim", {}, opts.strings.regExpElimWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.strings.regExpElim}};
2644
336068
  if (name == "re-elim-agg") return OptionInfo{"re-elim-agg", {}, opts.strings.regExpElimAggWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.strings.regExpElimAgg}};
2645
336068
  if (name == "re-inter-mode") return OptionInfo{"re-inter-mode", {}, opts.strings.stringRegExpInterModeWasSetByUser, OptionInfo::ModeInfo{"CONSTANT", opts.strings.stringRegExpInterMode, { "ALL", "CONSTANT", "NONE", "ONE_CONSTANT" }}};
2646
336068
  if (name == "refine-conflicts") return OptionInfo{"refine-conflicts", {}, opts.prop.sat_refine_conflictsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.prop.sat_refine_conflicts}};
2647
336068
  if (name == "register-quant-body-terms") return OptionInfo{"register-quant-body-terms", {}, opts.quantifiers.registerQuantBodyTermsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.registerQuantBodyTerms}};
2648
336068
  if (name == "relational-triggers") return OptionInfo{"relational-triggers", {}, opts.quantifiers.relationalTriggersWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.relationalTriggers}};
2649
336068
  if (name == "relevance-filter") return OptionInfo{"relevance-filter", {}, opts.theory.relevanceFilterWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.theory.relevanceFilter}};
2650
336068
  if (name == "relevant-triggers") return OptionInfo{"relevant-triggers", {}, opts.quantifiers.relevantTriggersWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.relevantTriggers}};
2651
336068
  if (name == "repeat-simp") return OptionInfo{"repeat-simp", {}, opts.smt.repeatSimpWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.smt.repeatSimp}};
2652
336068
  if (name == "replay-early-close-depth") return OptionInfo{"replay-early-close-depth", {}, opts.arith.replayEarlyCloseDepthsWasSetByUser, OptionInfo::NumberInfo<int64_t>{1, opts.arith.replayEarlyCloseDepths, {}, {}}};
2653
336068
  if (name == "replay-failure-penalty") return OptionInfo{"replay-failure-penalty", {}, opts.arith.replayFailurePenaltyWasSetByUser, OptionInfo::NumberInfo<int64_t>{100, opts.arith.replayFailurePenalty, {}, {}}};
2654
336068
  if (name == "replay-lemma-reject-cut") return OptionInfo{"replay-lemma-reject-cut", {}, opts.arith.lemmaRejectCutSizeWasSetByUser, OptionInfo::NumberInfo<uint64_t>{25500, opts.arith.lemmaRejectCutSize, {}, {}}};
2655
336068
  if (name == "replay-num-err-penalty") return OptionInfo{"replay-num-err-penalty", {}, opts.arith.replayNumericFailurePenaltyWasSetByUser, OptionInfo::NumberInfo<int64_t>{4194304, opts.arith.replayNumericFailurePenalty, {}, {}}};
2656
336068
  if (name == "replay-reject-cut") return OptionInfo{"replay-reject-cut", {}, opts.arith.replayRejectCutSizeWasSetByUser, OptionInfo::NumberInfo<uint64_t>{25500, opts.arith.replayRejectCutSize, {}, {}}};
2657
336068
  if (name == "replay-soi-major-threshold") return OptionInfo{"replay-soi-major-threshold", {}, opts.arith.soiApproxMajorFailureWasSetByUser, OptionInfo::NumberInfo<double>{.01, opts.arith.soiApproxMajorFailure, {}, {}}};
2658
336068
  if (name == "replay-soi-major-threshold-pen") return OptionInfo{"replay-soi-major-threshold-pen", {}, opts.arith.soiApproxMajorFailurePenWasSetByUser, OptionInfo::NumberInfo<int64_t>{50, opts.arith.soiApproxMajorFailurePen, {}, {}}};
2659
336068
  if (name == "replay-soi-minor-threshold") return OptionInfo{"replay-soi-minor-threshold", {}, opts.arith.soiApproxMinorFailureWasSetByUser, OptionInfo::NumberInfo<double>{.0001, opts.arith.soiApproxMinorFailure, {}, {}}};
2660
336068
  if (name == "replay-soi-minor-threshold-pen") return OptionInfo{"replay-soi-minor-threshold-pen", {}, opts.arith.soiApproxMinorFailurePenWasSetByUser, OptionInfo::NumberInfo<int64_t>{10, opts.arith.soiApproxMinorFailurePen, {}, {}}};
2661
336068
  if (name == "restart-int-base") return OptionInfo{"restart-int-base", {}, opts.prop.satRestartFirstWasSetByUser, OptionInfo::NumberInfo<uint64_t>{25, opts.prop.satRestartFirst, {}, {}}};
2662
336068
  if (name == "restart-int-inc") return OptionInfo{"restart-int-inc", {}, opts.prop.satRestartIncWasSetByUser, OptionInfo::NumberInfo<double>{3.0, opts.prop.satRestartInc, 0.0, {}}};
2663
336068
  if (name == "restrict-pivots") return OptionInfo{"restrict-pivots", {}, opts.arith.restrictedPivotsWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.arith.restrictedPivots}};
2664
336068
  if (name == "revert-arith-models-on-unsat") return OptionInfo{"revert-arith-models-on-unsat", {}, opts.arith.revertArithModelsWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.revertArithModels}};
2665
336068
  if (name == "rlimit") return OptionInfo{"rlimit", {}, opts.base.cumulativeResourceLimitWasSetByUser, OptionInfo::NumberInfo<uint64_t>{uint64_t(), opts.base.cumulativeResourceLimit, {}, {}}};
2666
336068
  if (name == "reproducible-resource-limit" || name == "rlimit-per") return OptionInfo{"rlimit-per", {"reproducible-resource-limit"}, opts.base.perCallResourceLimitWasSetByUser, OptionInfo::NumberInfo<uint64_t>{uint64_t(), opts.base.perCallResourceLimit, {}, {}}};
2667
336068
  if (name == "rr-turns") return OptionInfo{"rr-turns", {}, opts.arith.rrTurnsWasSetByUser, OptionInfo::NumberInfo<int64_t>{3, opts.arith.rrTurns, {}, {}}};
2668
336068
  if (name == "rweight") return OptionInfo{"rweight", {}, false, OptionInfo::VoidInfo{}};
2669
336068
  if (name == "se-solve-int") return OptionInfo{"se-solve-int", {}, opts.arith.trySolveIntStandardEffortWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.trySolveIntStandardEffort}};
2670
336068
  if (name == "seed") return OptionInfo{"seed", {}, opts.driver.seedWasSetByUser, OptionInfo::NumberInfo<uint64_t>{0, opts.driver.seed, {}, {}}};
2671
336068
  if (name == "segv-spin") return OptionInfo{"segv-spin", {}, opts.driver.segvSpinWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.driver.segvSpin}};
2672
329897
  if (name == "semantic-checks") return OptionInfo{"semantic-checks", {}, opts.parser.semanticChecksWasSetByUser, OptionInfo::ValueInfo<bool>{DO_SEMANTIC_CHECKS_BY_DEFAULT, opts.parser.semanticChecks}};
2673
323495
  if (name == "sep-check-neg") return OptionInfo{"sep-check-neg", {}, opts.sep.sepCheckNegWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.sep.sepCheckNeg}};
2674
323495
  if (name == "sep-child-refine") return OptionInfo{"sep-child-refine", {}, opts.sep.sepChildRefineWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.sep.sepChildRefine}};
2675
323495
  if (name == "sep-deq-c") return OptionInfo{"sep-deq-c", {}, opts.sep.sepDisequalCWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.sep.sepDisequalC}};
2676
323495
  if (name == "sep-exp") return OptionInfo{"sep-exp", {}, opts.sep.sepExpWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.sep.sepExp}};
2677
323495
  if (name == "sep-min-refine") return OptionInfo{"sep-min-refine", {}, opts.sep.sepMinimalRefineWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.sep.sepMinimalRefine}};
2678
323495
  if (name == "sep-pre-skolem-emp") return OptionInfo{"sep-pre-skolem-emp", {}, opts.sep.sepPreSkolemEmpWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.sep.sepPreSkolemEmp}};
2679
323495
  if (name == "sets-ext") return OptionInfo{"sets-ext", {}, opts.sets.setsExtWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.sets.setsExt}};
2680
323495
  if (name == "sets-infer-as-lemmas") return OptionInfo{"sets-infer-as-lemmas", {}, opts.sets.setsInferAsLemmasWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.sets.setsInferAsLemmas}};
2681
323495
  if (name == "sets-proxy-lemmas") return OptionInfo{"sets-proxy-lemmas", {}, opts.sets.setsProxyLemmasWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.sets.setsProxyLemmas}};
2682
323495
  if (name == "show-config") return OptionInfo{"show-config", {}, false, OptionInfo::VoidInfo{}};
2683
323495
  if (name == "show-debug-tags") return OptionInfo{"show-debug-tags", {}, false, OptionInfo::VoidInfo{}};
2684
323495
  if (name == "show-trace-tags") return OptionInfo{"show-trace-tags", {}, false, OptionInfo::VoidInfo{}};
2685
323495
  if (name == "simp-ite-compress") return OptionInfo{"simp-ite-compress", {}, opts.smt.compressItesWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.compressItes}};
2686
323495
  if (name == "simp-ite-hunt-zombies") return OptionInfo{"simp-ite-hunt-zombies", {}, opts.smt.zombieHuntThresholdWasSetByUser, OptionInfo::NumberInfo<uint64_t>{524288, opts.smt.zombieHuntThreshold, {}, {}}};
2687
323495
  if (name == "simp-with-care") return OptionInfo{"simp-with-care", {}, opts.smt.simplifyWithCareEnabledWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.simplifyWithCareEnabled}};
2688
323495
  if (name == "simplex-check-period") return OptionInfo{"simplex-check-period", {}, opts.arith.arithSimplexCheckPeriodWasSetByUser, OptionInfo::NumberInfo<uint64_t>{200, opts.arith.arithSimplexCheckPeriod, {}, {}}};
2689
323495
  if (name == "simplification" || name == "simplification-mode") return OptionInfo{"simplification", {"simplification-mode"}, opts.smt.simplificationModeWasSetByUser, OptionInfo::ModeInfo{"BATCH", opts.smt.simplificationMode, { "BATCH", "NONE" }}};
2690
323495
  if (name == "soi-qe") return OptionInfo{"soi-qe", {}, opts.arith.soiQuickExplainWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.soiQuickExplain}};
2691
323495
  if (name == "solve-bv-as-int") return OptionInfo{"solve-bv-as-int", {}, opts.smt.solveBVAsIntWasSetByUser, OptionInfo::ModeInfo{"OFF", opts.smt.solveBVAsInt, { "BV", "IAND", "OFF", "SUM" }}};
2692
323495
  if (name == "solve-int-as-bv") return OptionInfo{"solve-int-as-bv", {}, opts.smt.solveIntAsBVWasSetByUser, OptionInfo::NumberInfo<uint64_t>{0, opts.smt.solveIntAsBV, {}, {}}};
2693
323495
  if (name == "solve-real-as-int") return OptionInfo{"solve-real-as-int", {}, opts.smt.solveRealAsIntWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.solveRealAsInt}};
2694
323495
  if (name == "sort-inference") return OptionInfo{"sort-inference", {}, opts.smt.sortInferenceWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.sortInference}};
2695
323495
  if (name == "standard-effort-variable-order-pivots") return OptionInfo{"standard-effort-variable-order-pivots", {}, opts.arith.arithStandardCheckVarOrderPivotsWasSetByUser, OptionInfo::NumberInfo<int64_t>{-1, opts.arith.arithStandardCheckVarOrderPivots, {}, {}}};
2696
323495
  if (name == "static-learning") return OptionInfo{"static-learning", {}, opts.smt.doStaticLearningWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.smt.doStaticLearning}};
2697
323495
  if (name == "stats") return OptionInfo{"stats", {}, opts.base.statisticsWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.base.statistics}};
2698
317324
  if (name == "stats-all") return OptionInfo{"stats-all", {}, opts.base.statisticsAllWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.base.statisticsAll}};
2699
317324
  if (name == "stats-every-query") return OptionInfo{"stats-every-query", {}, opts.base.statisticsEveryQueryWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.base.statisticsEveryQuery}};
2700
317324
  if (name == "stats-expert") return OptionInfo{"stats-expert", {}, opts.base.statisticsExpertWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.base.statisticsExpert}};
2701
317324
  if (name == "strict-parsing") return OptionInfo{"strict-parsing", {}, opts.parser.strictParsingWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.parser.strictParsing}};
2702
310922
  if (name == "strings-check-entail-len") return OptionInfo{"strings-check-entail-len", {}, opts.strings.stringCheckEntailLenWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.strings.stringCheckEntailLen}};
2703
310922
  if (name == "strings-eager") return OptionInfo{"strings-eager", {}, opts.strings.stringEagerWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.strings.stringEager}};
2704
310922
  if (name == "strings-eager-eval") return OptionInfo{"strings-eager-eval", {}, opts.strings.stringEagerEvalWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.strings.stringEagerEval}};
2705
310922
  if (name == "strings-eager-len") return OptionInfo{"strings-eager-len", {}, opts.strings.stringEagerLenWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.strings.stringEagerLen}};
2706
310922
  if (name == "strings-exp") return OptionInfo{"strings-exp", {}, opts.strings.stringExpWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.strings.stringExp}};
2707
310922
  if (name == "strings-ff") return OptionInfo{"strings-ff", {}, opts.strings.stringFlatFormsWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.strings.stringFlatForms}};
2708
310922
  if (name == "strings-fmf") return OptionInfo{"strings-fmf", {}, opts.strings.stringFMFWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.strings.stringFMF}};
2709
310922
  if (name == "strings-guess-model") return OptionInfo{"strings-guess-model", {}, opts.strings.stringGuessModelWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.strings.stringGuessModel}};
2710
310922
  if (name == "strings-infer-as-lemmas") return OptionInfo{"strings-infer-as-lemmas", {}, opts.strings.stringInferAsLemmasWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.strings.stringInferAsLemmas}};
2711
310922
  if (name == "strings-infer-sym") return OptionInfo{"strings-infer-sym", {}, opts.strings.stringInferSymWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.strings.stringInferSym}};
2712
310922
  if (name == "strings-lazy-pp") return OptionInfo{"strings-lazy-pp", {}, opts.strings.stringLazyPreprocWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.strings.stringLazyPreproc}};
2713
310922
  if (name == "strings-len-norm") return OptionInfo{"strings-len-norm", {}, opts.strings.stringLenNormWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.strings.stringLenNorm}};
2714
310922
  if (name == "strings-lprop-csp") return OptionInfo{"strings-lprop-csp", {}, opts.strings.stringLenPropCspWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.strings.stringLenPropCsp}};
2715
310922
  if (name == "strings-min-prefix-explain") return OptionInfo{"strings-min-prefix-explain", {}, opts.strings.stringMinPrefixExplainWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.strings.stringMinPrefixExplain}};
2716
310922
  if (name == "strings-process-loop-mode") return OptionInfo{"strings-process-loop-mode", {}, opts.strings.stringProcessLoopModeWasSetByUser, OptionInfo::ModeInfo{"FULL", opts.strings.stringProcessLoopMode, { "ABORT", "FULL", "NONE", "SIMPLE", "SIMPLE_ABORT" }}};
2717
310922
  if (name == "strings-rexplain-lemmas") return OptionInfo{"strings-rexplain-lemmas", {}, opts.strings.stringRExplainLemmasWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.strings.stringRExplainLemmas}};
2718
310922
  if (name == "strings-unified-vspt") return OptionInfo{"strings-unified-vspt", {}, opts.strings.stringUnifiedVSptWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.strings.stringUnifiedVSpt}};
2719
310922
  if (name == "sygus") return OptionInfo{"sygus", {}, opts.quantifiers.sygusWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygus}};
2720
310922
  if (name == "sygus-abort-size") return OptionInfo{"sygus-abort-size", {}, opts.datatypes.sygusAbortSizeWasSetByUser, OptionInfo::NumberInfo<int64_t>{-1, opts.datatypes.sygusAbortSize, {}, {}}};
2721
310922
  if (name == "sygus-active-gen") return OptionInfo{"sygus-active-gen", {}, opts.quantifiers.sygusActiveGenModeWasSetByUser, OptionInfo::ModeInfo{"AUTO", opts.quantifiers.sygusActiveGenMode, { "AUTO", "ENUM", "ENUM_BASIC", "NONE", "VAR_AGNOSTIC" }}};
2722
310922
  if (name == "sygus-active-gen-cfactor") return OptionInfo{"sygus-active-gen-cfactor", {}, opts.quantifiers.sygusActiveGenEnumConstsWasSetByUser, OptionInfo::NumberInfo<uint64_t>{5, opts.quantifiers.sygusActiveGenEnumConsts, {}, {}}};
2723
310922
  if (name == "sygus-add-const-grammar") return OptionInfo{"sygus-add-const-grammar", {}, opts.quantifiers.sygusAddConstGrammarWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusAddConstGrammar}};
2724
310922
  if (name == "sygus-arg-relevant") return OptionInfo{"sygus-arg-relevant", {}, opts.quantifiers.sygusArgRelevantWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusArgRelevant}};
2725
310922
  if (name == "sygus-auto-unfold") return OptionInfo{"sygus-auto-unfold", {}, opts.quantifiers.sygusInvAutoUnfoldWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.sygusInvAutoUnfold}};
2726
310922
  if (name == "sygus-bool-ite-return-const") return OptionInfo{"sygus-bool-ite-return-const", {}, opts.quantifiers.sygusBoolIteReturnConstWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.sygusBoolIteReturnConst}};
2727
310922
  if (name == "sygus-core-connective") return OptionInfo{"sygus-core-connective", {}, opts.quantifiers.sygusCoreConnectiveWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusCoreConnective}};
2728
310922
  if (name == "sygus-crepair-abort") return OptionInfo{"sygus-crepair-abort", {}, opts.quantifiers.sygusConstRepairAbortWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusConstRepairAbort}};
2729
310922
  if (name == "sygus-eval-opt") return OptionInfo{"sygus-eval-opt", {}, opts.quantifiers.sygusEvalOptWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.sygusEvalOpt}};
2730
310922
  if (name == "sygus-eval-unfold") return OptionInfo{"sygus-eval-unfold", {}, opts.quantifiers.sygusEvalUnfoldWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.sygusEvalUnfold}};
2731
310922
  if (name == "sygus-eval-unfold-bool") return OptionInfo{"sygus-eval-unfold-bool", {}, opts.quantifiers.sygusEvalUnfoldBoolWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.sygusEvalUnfoldBool}};
2732
310922
  if (name == "sygus-expr-miner-check-timeout") return OptionInfo{"sygus-expr-miner-check-timeout", {}, opts.quantifiers.sygusExprMinerCheckTimeoutWasSetByUser, OptionInfo::NumberInfo<uint64_t>{uint64_t(), opts.quantifiers.sygusExprMinerCheckTimeout, {}, {}}};
2733
310922
  if (name == "sygus-ext-rew") return OptionInfo{"sygus-ext-rew", {}, opts.quantifiers.sygusExtRewWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.sygusExtRew}};
2734
310922
  if (name == "sygus-fair") return OptionInfo{"sygus-fair", {}, opts.datatypes.sygusFairWasSetByUser, OptionInfo::ModeInfo{"DT_SIZE", opts.datatypes.sygusFair, { "DIRECT", "DT_HEIGHT_PRED", "DT_SIZE", "DT_SIZE_PRED", "NONE" }}};
2735
310922
  if (name == "sygus-fair-max") return OptionInfo{"sygus-fair-max", {}, opts.datatypes.sygusFairMaxWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.datatypes.sygusFairMax}};
2736
310922
  if (name == "sygus-filter-sol") return OptionInfo{"sygus-filter-sol", {}, opts.quantifiers.sygusFilterSolModeWasSetByUser, OptionInfo::ModeInfo{"NONE", opts.quantifiers.sygusFilterSolMode, { "NONE", "STRONG", "WEAK" }}};
2737
310922
  if (name == "sygus-filter-sol-rev") return OptionInfo{"sygus-filter-sol-rev", {}, opts.quantifiers.sygusFilterSolRevSubsumeWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusFilterSolRevSubsume}};
2738
310922
  if (name == "sygus-grammar-cons") return OptionInfo{"sygus-grammar-cons", {}, opts.quantifiers.sygusGrammarConsModeWasSetByUser, OptionInfo::ModeInfo{"SIMPLE", opts.quantifiers.sygusGrammarConsMode, { "ANY_CONST", "ANY_TERM", "ANY_TERM_CONCISE", "SIMPLE" }}};
2739
310922
  if (name == "sygus-grammar-norm") return OptionInfo{"sygus-grammar-norm", {}, opts.quantifiers.sygusGrammarNormWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusGrammarNorm}};
2740
310922
  if (name == "sygus-inference") return OptionInfo{"sygus-inference", {}, opts.quantifiers.sygusInferenceWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusInference}};
2741
310922
  if (name == "sygus-inst") return OptionInfo{"sygus-inst", {}, opts.quantifiers.sygusInstWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusInst}};
2742
310922
  if (name == "sygus-inst-mode") return OptionInfo{"sygus-inst-mode", {}, opts.quantifiers.sygusInstModeWasSetByUser, OptionInfo::ModeInfo{"PRIORITY_INST", opts.quantifiers.sygusInstMode, { "INTERLEAVE", "PRIORITY_EVAL", "PRIORITY_INST" }}};
2743
310922
  if (name == "sygus-inst-scope") return OptionInfo{"sygus-inst-scope", {}, opts.quantifiers.sygusInstScopeWasSetByUser, OptionInfo::ModeInfo{"IN", opts.quantifiers.sygusInstScope, { "BOTH", "IN", "OUT" }}};
2744
310922
  if (name == "sygus-inst-term-sel") return OptionInfo{"sygus-inst-term-sel", {}, opts.quantifiers.sygusInstTermSelWasSetByUser, OptionInfo::ModeInfo{"MIN", opts.quantifiers.sygusInstTermSel, { "BOTH", "MAX", "MIN" }}};
2745
310922
  if (name == "sygus-inv-templ") return OptionInfo{"sygus-inv-templ", {}, opts.quantifiers.sygusInvTemplModeWasSetByUser, OptionInfo::ModeInfo{"POST", opts.quantifiers.sygusInvTemplMode, { "NONE", "POST", "PRE" }}};
2746
310922
  if (name == "sygus-inv-templ-when-sg") return OptionInfo{"sygus-inv-templ-when-sg", {}, opts.quantifiers.sygusInvTemplWhenSyntaxWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusInvTemplWhenSyntax}};
2747
310922
  if (name == "sygus-min-grammar") return OptionInfo{"sygus-min-grammar", {}, opts.quantifiers.sygusMinGrammarWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.sygusMinGrammar}};
2748
310922
  if (name == "sygus-out") return OptionInfo{"sygus-out", {}, opts.smt.sygusOutWasSetByUser, OptionInfo::ModeInfo{"STANDARD", opts.smt.sygusOut, { "STANDARD", "STATUS", "STATUS_AND_DEF", "STATUS_OR_DEF" }}};
2749
310922
  if (name == "sygus-pbe") return OptionInfo{"sygus-pbe", {}, opts.quantifiers.sygusUnifPbeWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.sygusUnifPbe}};
2750
310922
  if (name == "sygus-pbe-multi-fair") return OptionInfo{"sygus-pbe-multi-fair", {}, opts.quantifiers.sygusPbeMultiFairWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusPbeMultiFair}};
2751
310922
  if (name == "sygus-pbe-multi-fair-diff") return OptionInfo{"sygus-pbe-multi-fair-diff", {}, opts.quantifiers.sygusPbeMultiFairDiffWasSetByUser, OptionInfo::NumberInfo<int64_t>{0, opts.quantifiers.sygusPbeMultiFairDiff, {}, {}}};
2752
310922
  if (name == "sygus-print-callbacks") return OptionInfo{"sygus-print-callbacks", {}, opts.smt.sygusPrintCallbacksWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.smt.sygusPrintCallbacks}};
2753
310922
  if (name == "sygus-qe-preproc") return OptionInfo{"sygus-qe-preproc", {}, opts.quantifiers.sygusQePreprocWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusQePreproc}};
2754
310922
  if (name == "sygus-query-gen") return OptionInfo{"sygus-query-gen", {}, opts.quantifiers.sygusQueryGenWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusQueryGen}};
2755
310922
  if (name == "sygus-query-gen-check") return OptionInfo{"sygus-query-gen-check", {}, opts.quantifiers.sygusQueryGenCheckWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.sygusQueryGenCheck}};
2756
310922
  if (name == "sygus-query-gen-dump-files") return OptionInfo{"sygus-query-gen-dump-files", {}, opts.quantifiers.sygusQueryGenDumpFilesWasSetByUser, OptionInfo::ModeInfo{"NONE", opts.quantifiers.sygusQueryGenDumpFiles, { "ALL", "NONE", "UNSOLVED" }}};
2757
310922
  if (name == "sygus-query-gen-thresh") return OptionInfo{"sygus-query-gen-thresh", {}, opts.quantifiers.sygusQueryGenThreshWasSetByUser, OptionInfo::NumberInfo<uint64_t>{5, opts.quantifiers.sygusQueryGenThresh, {}, {}}};
2758
310922
  if (name == "sygus-rec-fun") return OptionInfo{"sygus-rec-fun", {}, opts.quantifiers.sygusRecFunWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.sygusRecFun}};
2759
310922
  if (name == "sygus-rec-fun-eval-limit") return OptionInfo{"sygus-rec-fun-eval-limit", {}, opts.quantifiers.sygusRecFunEvalLimitWasSetByUser, OptionInfo::NumberInfo<uint64_t>{1000, opts.quantifiers.sygusRecFunEvalLimit, {}, {}}};
2760
310922
  if (name == "sygus-repair-const") return OptionInfo{"sygus-repair-const", {}, opts.quantifiers.sygusRepairConstWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusRepairConst}};
2761
310922
  if (name == "sygus-repair-const-timeout") return OptionInfo{"sygus-repair-const-timeout", {}, opts.quantifiers.sygusRepairConstTimeoutWasSetByUser, OptionInfo::NumberInfo<uint64_t>{uint64_t(), opts.quantifiers.sygusRepairConstTimeout, {}, {}}};
2762
310922
  if (name == "sygus-rr") return OptionInfo{"sygus-rr", {}, opts.quantifiers.sygusRewWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusRew}};
2763
310922
  if (name == "sygus-rr-synth") return OptionInfo{"sygus-rr-synth", {}, opts.quantifiers.sygusRewSynthWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusRewSynth}};
2764
310922
  if (name == "sygus-rr-synth-accel") return OptionInfo{"sygus-rr-synth-accel", {}, opts.quantifiers.sygusRewSynthAccelWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusRewSynthAccel}};
2765
310922
  if (name == "sygus-rr-synth-check") return OptionInfo{"sygus-rr-synth-check", {}, opts.quantifiers.sygusRewSynthCheckWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusRewSynthCheck}};
2766
310922
  if (name == "sygus-rr-synth-filter-cong") return OptionInfo{"sygus-rr-synth-filter-cong", {}, opts.quantifiers.sygusRewSynthFilterCongWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.sygusRewSynthFilterCong}};
2767
310922
  if (name == "sygus-rr-synth-filter-match") return OptionInfo{"sygus-rr-synth-filter-match", {}, opts.quantifiers.sygusRewSynthFilterMatchWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.sygusRewSynthFilterMatch}};
2768
310922
  if (name == "sygus-rr-synth-filter-nl") return OptionInfo{"sygus-rr-synth-filter-nl", {}, opts.quantifiers.sygusRewSynthFilterNonLinearWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusRewSynthFilterNonLinear}};
2769
310922
  if (name == "sygus-rr-synth-filter-order") return OptionInfo{"sygus-rr-synth-filter-order", {}, opts.quantifiers.sygusRewSynthFilterOrderWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.sygusRewSynthFilterOrder}};
2770
310922
  if (name == "sygus-rr-synth-input") return OptionInfo{"sygus-rr-synth-input", {}, opts.quantifiers.sygusRewSynthInputWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusRewSynthInput}};
2771
310922
  if (name == "sygus-rr-synth-input-nvars") return OptionInfo{"sygus-rr-synth-input-nvars", {}, opts.quantifiers.sygusRewSynthInputNVarsWasSetByUser, OptionInfo::NumberInfo<int64_t>{3, opts.quantifiers.sygusRewSynthInputNVars, {}, {}}};
2772
310922
  if (name == "sygus-rr-synth-input-use-bool") return OptionInfo{"sygus-rr-synth-input-use-bool", {}, opts.quantifiers.sygusRewSynthInputUseBoolWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusRewSynthInputUseBool}};
2773
310922
  if (name == "sygus-rr-synth-rec") return OptionInfo{"sygus-rr-synth-rec", {}, opts.quantifiers.sygusRewSynthRecWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusRewSynthRec}};
2774
310922
  if (name == "sygus-rr-verify") return OptionInfo{"sygus-rr-verify", {}, opts.quantifiers.sygusRewVerifyWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusRewVerify}};
2775
310922
  if (name == "sygus-rr-verify-abort") return OptionInfo{"sygus-rr-verify-abort", {}, opts.quantifiers.sygusRewVerifyAbortWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.sygusRewVerifyAbort}};
2776
310922
  if (name == "sygus-sample-fp-uniform") return OptionInfo{"sygus-sample-fp-uniform", {}, opts.quantifiers.sygusSampleFpUniformWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusSampleFpUniform}};
2777
310922
  if (name == "sygus-sample-grammar") return OptionInfo{"sygus-sample-grammar", {}, opts.quantifiers.sygusSampleGrammarWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.sygusSampleGrammar}};
2778
310922
  if (name == "sygus-samples") return OptionInfo{"sygus-samples", {}, opts.quantifiers.sygusSamplesWasSetByUser, OptionInfo::NumberInfo<int64_t>{1000, opts.quantifiers.sygusSamples, {}, {}}};
2779
310922
  if (name == "sygus-si") return OptionInfo{"sygus-si", {}, opts.quantifiers.cegqiSingleInvModeWasSetByUser, OptionInfo::ModeInfo{"NONE", opts.quantifiers.cegqiSingleInvMode, { "ALL", "NONE", "USE" }}};
2780
310922
  if (name == "sygus-si-abort") return OptionInfo{"sygus-si-abort", {}, opts.quantifiers.cegqiSingleInvAbortWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.cegqiSingleInvAbort}};
2781
310922
  if (name == "sygus-si-partial") return OptionInfo{"sygus-si-partial", {}, opts.quantifiers.cegqiSingleInvPartialWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.cegqiSingleInvPartial}};
2782
310922
  if (name == "sygus-si-rcons") return OptionInfo{"sygus-si-rcons", {}, opts.quantifiers.cegqiSingleInvReconstructWasSetByUser, OptionInfo::ModeInfo{"ALL_LIMIT", opts.quantifiers.cegqiSingleInvReconstruct, { "ALL", "ALL_LIMIT", "NONE", "TRY" }}};
2783
310922
  if (name == "sygus-si-rcons-limit") return OptionInfo{"sygus-si-rcons-limit", {}, opts.quantifiers.cegqiSingleInvReconstructLimitWasSetByUser, OptionInfo::NumberInfo<int64_t>{10000, opts.quantifiers.cegqiSingleInvReconstructLimit, {}, {}}};
2784
310922
  if (name == "sygus-si-reconstruct-const") return OptionInfo{"sygus-si-reconstruct-const", {}, opts.quantifiers.cegqiSingleInvReconstructConstWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.cegqiSingleInvReconstructConst}};
2785
310922
  if (name == "sygus-stream") return OptionInfo{"sygus-stream", {}, opts.quantifiers.sygusStreamWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusStream}};
2786
310922
  if (name == "sygus-sym-break") return OptionInfo{"sygus-sym-break", {}, opts.datatypes.sygusSymBreakWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.datatypes.sygusSymBreak}};
2787
310922
  if (name == "sygus-sym-break-agg") return OptionInfo{"sygus-sym-break-agg", {}, opts.datatypes.sygusSymBreakAggWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.datatypes.sygusSymBreakAgg}};
2788
310922
  if (name == "sygus-sym-break-dynamic") return OptionInfo{"sygus-sym-break-dynamic", {}, opts.datatypes.sygusSymBreakDynamicWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.datatypes.sygusSymBreakDynamic}};
2789
310922
  if (name == "sygus-sym-break-lazy") return OptionInfo{"sygus-sym-break-lazy", {}, opts.datatypes.sygusSymBreakLazyWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.datatypes.sygusSymBreakLazy}};
2790
310922
  if (name == "sygus-sym-break-pbe") return OptionInfo{"sygus-sym-break-pbe", {}, opts.datatypes.sygusSymBreakPbeWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.datatypes.sygusSymBreakPbe}};
2791
310922
  if (name == "sygus-sym-break-rlv") return OptionInfo{"sygus-sym-break-rlv", {}, opts.datatypes.sygusSymBreakRlvWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.datatypes.sygusSymBreakRlv}};
2792
310922
  if (name == "sygus-templ-embed-grammar") return OptionInfo{"sygus-templ-embed-grammar", {}, opts.quantifiers.sygusTemplEmbedGrammarWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusTemplEmbedGrammar}};
2793
310922
  if (name == "sygus-unif-cond-independent-no-repeat-sol") return OptionInfo{"sygus-unif-cond-independent-no-repeat-sol", {}, opts.quantifiers.sygusUnifCondIndNoRepeatSolWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.sygusUnifCondIndNoRepeatSol}};
2794
310922
  if (name == "sygus-unif-pi") return OptionInfo{"sygus-unif-pi", {}, opts.quantifiers.sygusUnifPiWasSetByUser, OptionInfo::ModeInfo{"NONE", opts.quantifiers.sygusUnifPi, { "CENUM", "CENUM_IGAIN", "COMPLETE", "NONE" }}};
2795
310922
  if (name == "sygus-unif-shuffle-cond") return OptionInfo{"sygus-unif-shuffle-cond", {}, opts.quantifiers.sygusUnifShuffleCondWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.quantifiers.sygusUnifShuffleCond}};
2796
310922
  if (name == "sygus-verify-inst-max-rounds") return OptionInfo{"sygus-verify-inst-max-rounds", {}, opts.quantifiers.sygusVerifyInstMaxRoundsWasSetByUser, OptionInfo::NumberInfo<int64_t>{3, opts.quantifiers.sygusVerifyInstMaxRounds, {}, {}}};
2797
310922
  if (name == "symmetry-breaker" || name == "uf-symmetry-breaker") return OptionInfo{"symmetry-breaker", {"uf-symmetry-breaker"}, opts.uf.ufSymmetryBreakerWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.uf.ufSymmetryBreaker}};
2798
310922
  if (name == "tc-mode") return OptionInfo{"tc-mode", {}, opts.theory.tcModeWasSetByUser, OptionInfo::ModeInfo{"CARE_GRAPH", opts.theory.tcMode, { "CARE_GRAPH" }}};
2799
310922
  if (name == "term-db-cd") return OptionInfo{"term-db-cd", {}, opts.quantifiers.termDbCdWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.termDbCd}};
2800
310922
  if (name == "term-db-mode") return OptionInfo{"term-db-mode", {}, opts.quantifiers.termDbModeWasSetByUser, OptionInfo::ModeInfo{"ALL", opts.quantifiers.termDbMode, { "ALL", "RELEVANT" }}};
2801
310922
  if (name == "theoryof-mode") return OptionInfo{"theoryof-mode", {}, opts.theory.theoryOfModeWasSetByUser, OptionInfo::ModeInfo{"THEORY_OF_TYPE_BASED", opts.theory.theoryOfMode, { "THEORY_OF_TERM_BASED", "THEORY_OF_TYPE_BASED" }}};
2802
310922
  if (name == "tlimit") return OptionInfo{"tlimit", {}, opts.base.cumulativeMillisecondLimitWasSetByUser, OptionInfo::NumberInfo<uint64_t>{uint64_t(), opts.base.cumulativeMillisecondLimit, {}, {}}};
2803
304751
  if (name == "tlimit-per") return OptionInfo{"tlimit-per", {}, opts.base.perCallMillisecondLimitWasSetByUser, OptionInfo::NumberInfo<uint64_t>{uint64_t(), opts.base.perCallMillisecondLimit, {}, {}}};
2804
304751
  if (name == "trace") return OptionInfo{"trace", {}, false, OptionInfo::VoidInfo{}};
2805
304751
  if (name == "trigger-active-sel") return OptionInfo{"trigger-active-sel", {}, opts.quantifiers.triggerActiveSelModeWasSetByUser, OptionInfo::ModeInfo{"ALL", opts.quantifiers.triggerActiveSelMode, { "ALL", "MAX", "MIN" }}};
2806
304751
  if (name == "trigger-sel") return OptionInfo{"trigger-sel", {}, opts.quantifiers.triggerSelModeWasSetByUser, OptionInfo::ModeInfo{"MIN", opts.quantifiers.triggerSelMode, { "ALL", "MAX", "MIN", "MIN_SINGLE_ALL", "MIN_SINGLE_MAX" }}};
2807
304751
  if (name == "type-checking") return OptionInfo{"type-checking", {}, opts.expr.typeCheckingWasSetByUser, OptionInfo::ValueInfo<bool>{DO_SEMANTIC_CHECKS_BY_DEFAULT, opts.expr.typeChecking}};
2808
304751
  if (name == "uf-ho") return OptionInfo{"uf-ho", {}, opts.uf.ufHoWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.uf.ufHo}};
2809
304751
  if (name == "uf-ho-ext") return OptionInfo{"uf-ho-ext", {}, opts.uf.ufHoExtWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.uf.ufHoExt}};
2810
304751
  if (name == "uf-ss") return OptionInfo{"uf-ss", {}, opts.uf.ufssModeWasSetByUser, OptionInfo::ModeInfo{"FULL", opts.uf.ufssMode, { "FULL", "NONE", "NO_MINIMAL" }}};
2811
304751
  if (name == "uf-ss-abort-card") return OptionInfo{"uf-ss-abort-card", {}, opts.uf.ufssAbortCardinalityWasSetByUser, OptionInfo::NumberInfo<int64_t>{-1, opts.uf.ufssAbortCardinality, {}, {}}};
2812
304751
  if (name == "uf-ss-fair") return OptionInfo{"uf-ss-fair", {}, opts.uf.ufssFairnessWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.uf.ufssFairness}};
2813
304751
  if (name == "uf-ss-fair-monotone") return OptionInfo{"uf-ss-fair-monotone", {}, opts.uf.ufssFairnessMonotoneWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.uf.ufssFairnessMonotone}};
2814
304751
  if (name == "uf-ss-totality-limited") return OptionInfo{"uf-ss-totality-limited", {}, opts.uf.ufssTotalityLimitedWasSetByUser, OptionInfo::NumberInfo<int64_t>{-1, opts.uf.ufssTotalityLimited, {}, {}}};
2815
304751
  if (name == "uf-ss-totality-sym-break") return OptionInfo{"uf-ss-totality-sym-break", {}, opts.uf.ufssTotalitySymBreakWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.uf.ufssTotalitySymBreak}};
2816
304751
  if (name == "unate-lemmas") return OptionInfo{"unate-lemmas", {}, opts.arith.arithUnateLemmaModeWasSetByUser, OptionInfo::ModeInfo{"ALL", opts.arith.arithUnateLemmaMode, { "ALL", "EQUALITY", "INEQUALITY", "NO" }}};
2817
304751
  if (name == "unconstrained-simp") return OptionInfo{"unconstrained-simp", {}, opts.smt.unconstrainedSimpWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.smt.unconstrainedSimp}};
2818
304751
  if (name == "unsat-cores-mode") return OptionInfo{"unsat-cores-mode", {}, opts.smt.unsatCoresModeWasSetByUser, OptionInfo::ModeInfo{"OFF", opts.smt.unsatCoresMode, { "ASSUMPTIONS", "FULL_PROOF", "OFF", "PP_ONLY", "SAT_PROOF" }}};
2819
304751
  if (name == "use-approx") return OptionInfo{"use-approx", {}, opts.arith.useApproxWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.useApprox}};
2820
304751
  if (name == "use-fcsimplex") return OptionInfo{"use-fcsimplex", {}, opts.arith.useFCWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.useFC}};
2821
304751
  if (name == "use-soi") return OptionInfo{"use-soi", {}, opts.arith.useSOIWasSetByUser, OptionInfo::ValueInfo<bool>{false, opts.arith.useSOI}};
2822
304751
  if (name == "user-pat") return OptionInfo{"user-pat", {}, opts.quantifiers.userPatternsQuantWasSetByUser, OptionInfo::ModeInfo{"TRUST", opts.quantifiers.userPatternsQuant, { "IGNORE", "INTERLEAVE", "RESORT", "STRICT", "TRUST", "USE" }}};
2823
304751
  if (name == "var-elim-quant") return OptionInfo{"var-elim-quant", {}, opts.quantifiers.varElimQuantWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.varElimQuant}};
2824
304751
  if (name == "var-ineq-elim-quant") return OptionInfo{"var-ineq-elim-quant", {}, opts.quantifiers.varIneqElimQuantWasSetByUser, OptionInfo::ValueInfo<bool>{true, opts.quantifiers.varIneqElimQuant}};
2825
304751
  if (name == "verbose") return OptionInfo{"verbose", {}, false, OptionInfo::VoidInfo{}};
2826
304749
  if (name == "verbosity") return OptionInfo{"verbosity", {}, opts.base.verbosityWasSetByUser, OptionInfo::NumberInfo<int64_t>{0, opts.base.verbosity, {}, {}}};
2827
6173
  if (name == "version") return OptionInfo{"version", {}, opts.driver.versionWasSetByUser, OptionInfo::ValueInfo<bool>{bool(), opts.driver.version}};
2828
  // clang-format on
2829
2
  return OptionInfo{"", {}, false, OptionInfo::VoidInfo{}};
2830
}
2831
2832
#undef DO_SEMANTIC_CHECKS_BY_DEFAULT
2833
2834
29577
}  // namespace cvc5::options