diff options
Diffstat (limited to 'src/theory/quantifiers/term_database.cpp')
-rw-r--r-- | src/theory/quantifiers/term_database.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/theory/quantifiers/term_database.cpp b/src/theory/quantifiers/term_database.cpp index c4b10eb6f..989609a76 100644 --- a/src/theory/quantifiers/term_database.cpp +++ b/src/theory/quantifiers/term_database.cpp @@ -113,19 +113,26 @@ Node TermDb::getTypeGroundTerm(TypeNode tn, unsigned i) const } } -Node TermDb::getOrMakeTypeGroundTerm(TypeNode tn) +Node TermDb::getOrMakeTypeGroundTerm(TypeNode tn, bool reqVar) { std::map<TypeNode, std::vector<Node> >::const_iterator it = d_type_map.find(tn); if (it != d_type_map.end()) { Assert(!it->second.empty()); - return it->second[0]; - } - else - { - return getOrMakeTypeFreshVariable(tn); + if (!reqVar) + { + return it->second[0]; + } + for (const Node& v : it->second) + { + if (v.isVar()) + { + return v; + } + } } + return getOrMakeTypeFreshVariable(tn); } Node TermDb::getOrMakeTypeFreshVariable(TypeNode tn) |