diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2018-07-13 17:36:01 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-13 17:36:01 +0200 |
commit | c369afa180b7cb3d9388c39d18fcb81e8246ff21 (patch) | |
tree | 149026fe09eb96fa338c3869ac7da78f12448a93 /src/theory/theory.h | |
parent | 96dcf80d249ecbf12f1e3a0cd473deade007a1c3 (diff) |
sygusComp2018: optimization for collect model info (#2105)
Diffstat (limited to 'src/theory/theory.h')
-rw-r--r-- | src/theory/theory.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/theory/theory.h b/src/theory/theory.h index 3721806ad..2c3c727cb 100644 --- a/src/theory/theory.h +++ b/src/theory/theory.h @@ -161,14 +161,27 @@ private: /** * Helper function for computeRelevantTerms */ - void collectTerms(TNode n, std::set<Node>& termSet) const; + void collectTerms(TNode n, + std::set<Kind>& irrKinds, + std::set<Node>& termSet) const; /** * Scans the current set of assertions and shared terms top-down * until a theory-leaf is reached, and adds all terms found to * termSet. This is used by collectModelInfo to delimit the set of - * terms that should be used when constructing a model + * terms that should be used when constructing a model. + * + * irrKinds: The kinds of terms that appear in assertions that should *not* + * be included in termSet. Note that the kinds EQUAL and NOT are always + * treated as irrelevant kinds. + * + * includeShared: Whether to include shared terms in termSet. Notice that + * shared terms are not influenced by irrKinds. */ + void computeRelevantTerms(std::set<Node>& termSet, + std::set<Kind>& irrKinds, + bool includeShared = true) const; + /** same as above, but with empty irrKinds */ void computeRelevantTerms(std::set<Node>& termSet, bool includeShared = true) const; /** |