diff options
author | Morgan Deters <mdeters@gmail.com> | 2012-06-11 16:28:23 +0000 |
---|---|---|
committer | Morgan Deters <mdeters@gmail.com> | 2012-06-11 16:28:23 +0000 |
commit | 3378e253fcdb34c753407bb16d08929da06b3aaa (patch) | |
tree | db7c7118dd0d1594175b56866f845b42426ae0a7 /src/util/options.h | |
parent | 42794501e81c44dce5c2f7687af288af030ef63e (diff) |
Merge from quantifiers2-trunkmerge branch.
Adds TheoryQuantifiers and TheoryRewriteRules, QuantifiersEngine, and other infrastructure.
Adds theory instantiators to many theories.
Adds the UF strong solver.
Diffstat (limited to 'src/util/options.h')
-rw-r--r-- | src/util/options.h | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/src/util/options.h b/src/util/options.h index 0584fdc2a..fb5f71060 100644 --- a/src/util/options.h +++ b/src/util/options.h @@ -310,6 +310,126 @@ struct CVC4_PUBLIC Options { */ bool ufSymmetryBreakerSetByUser; + /** + * Whether to mini-scope quantifiers. + * For example, forall x. ( P( x ) ^ Q( x ) ) will be rewritten to + * ( forall x. P( x ) ) ^ ( forall x. Q( x ) ) + */ + bool miniscopeQuant; + + /** + * Whether to mini-scope quantifiers based on formulas with no free variables. + * For example, forall x. ( P( x ) V Q ) will be rewritten to + * ( forall x. P( x ) ) V Q + */ + bool miniscopeQuantFreeVar; + + /** + * Whether to prenex (nested universal) quantifiers + */ + bool prenexQuant; + + /** + * Whether to variable-eliminate quantifiers. + * For example, forall x y. ( P( x, y ) V x != c ) will be rewritten to + * forall y. P( c, y ) + */ + bool varElimQuant; + + /** + * Whether to CNF quantifier bodies + */ + bool cnfQuant; + + /** + * Whether to pre-skolemize quantifier bodies. + * For example, forall x. ( P( x ) => (exists y. f( y ) = x) ) will be rewritten to + * forall x. P( x ) => f( S( x ) ) = x + */ + bool preSkolemQuant; + + /** + * Whether to use smart triggers + */ + bool smartTriggers; + + /** + * Whether to consider terms in the bodies of quantifiers for matching + */ + bool registerQuantBodyTerms; + + /** Enumeration of inst_when modes (when to instantiate). */ + typedef enum { + /** Apply instantiation round before full effort (possibly at standard effort) */ + INST_WHEN_PRE_FULL, + /** Apply instantiation round at full effort or above */ + INST_WHEN_FULL, + /** Apply instantiation round at full effort half the time, and last call always */ + INST_WHEN_FULL_LAST_CALL, + /** Apply instantiation round at last call only */ + INST_WHEN_LAST_CALL, + } InstWhenMode; + /** When to perform instantiation round. */ + InstWhenMode instWhenMode; + + /** + * Whether to eagerly instantiate quantifiers + */ + bool eagerInstQuant; + + /** + * Whether to use finite model find heuristic + */ + bool finiteModelFind; + + /** + * Whether to use region-based SAT for finite model finding + */ + bool fmfRegionSat; + + /** + * Whether to use model-based exhaustive instantiation for finite model finding + */ + bool fmfModelBasedInst; + + /** + * Whether to use efficient E-matching + */ + bool efficientEMatching; + + /** Enumeration of literal matching modes. */ + typedef enum { + /** Do not consider polarity of patterns */ + LITERAL_MATCH_NONE, + /** Consider polarity of boolean predicates only */ + LITERAL_MATCH_PREDICATE, + /** Consider polarity of boolean predicates, as well as equalities */ + LITERAL_MATCH_EQUALITY, + } LiteralMatchMode; + + /** Which literal matching mode to use. */ + LiteralMatchMode literalMatchMode; + + /** + * Whether to do counterexample-based quantifier instantiation + */ + bool cbqi; + + /** + * Whether the user explicitly requested that counterexample-based + * quantifier instantiation be enabled or disabled. + */ + bool cbqiSetByUser; + + /** + * Whether to use user patterns for pattern-based instantiation + */ + bool userPatternsQuant; + + /** + * Whether to use flip decision (useful when cbqi=true) + */ + bool flipDecision; /** The output channel to receive notfication events for new lemmas */ LemmaOutputChannel* lemmaOutputChannel; |