diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2018-05-30 15:34:05 -0500 |
---|---|---|
committer | Andres Noetzli <andres.noetzli@gmail.com> | 2018-05-30 13:34:05 -0700 |
commit | eb733c1a2c806b34abcdf0d8497fa579f2b1e66e (patch) | |
tree | a67b50d23afa90f8f8b47f7bbb8ad70b310a4fc1 /src/theory/quantifiers_engine.h | |
parent | 551a914cf9c09353712089bb0d7ad33b56adcc3f (diff) |
Fixes for quantifiers + incremental (#2009)
Diffstat (limited to 'src/theory/quantifiers_engine.h')
-rw-r--r-- | src/theory/quantifiers_engine.h | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/src/theory/quantifiers_engine.h b/src/theory/quantifiers_engine.h index 456a268da..70a4ede0c 100644 --- a/src/theory/quantifiers_engine.h +++ b/src/theory/quantifiers_engine.h @@ -173,6 +173,8 @@ private: private: /** list of all quantifiers seen */ std::map< Node, bool > d_quants; + /** quantifiers pre-registered */ + NodeSet d_quants_prereg; /** quantifiers reduced */ BoolMap d_quants_red; std::map< Node, Node > d_quants_red_lem; @@ -277,8 +279,12 @@ public: void check( Theory::Effort e ); /** notify that theories were combined */ void notifyCombineTheories(); - /** register quantifier */ - bool registerQuantifier( Node f ); + /** preRegister quantifier + * + * This function is called after registerQuantifier for quantified formulas + * that are pre-registered to the quantifiers theory. + */ + void preRegisterQuantifier(Node q); /** register quantifier */ void registerPattern( std::vector<Node> & pattern); /** assert universal quantifier */ @@ -288,10 +294,19 @@ public: /** get next decision request */ Node getNextDecisionRequest( unsigned& priority ); private: - /** reduceQuantifier, return true if reduced */ - bool reduceQuantifier( Node q ); - /** flush lemmas */ - void flushLemmas(); + /** (context-indepentent) register quantifier internal + * + * This is called when a quantified formula q is pre-registered to the + * quantifiers theory, and updates the modules in this class with + * context-independent information about how to handle q. This includes basic + * information such as which module owns q. + */ + void registerQuantifierInternal(Node q); + /** reduceQuantifier, return true if reduced */ + bool reduceQuantifier(Node q); + /** flush lemmas */ + void flushLemmas(); + public: /** add lemma lem */ bool addLemma( Node lem, bool doCache = true, bool doRewrite = true ); |