summaryrefslogtreecommitdiff
path: root/src/theory/quantifiers/term_util.cpp
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2019-09-12 17:31:22 -0500
committerGitHub <noreply@github.com>2019-09-12 17:31:22 -0500
commita117e2b45539a822aa480b90558c2c0da6031dd9 (patch)
tree5006484b1794943a1f049247ebbb2a63cb82dbfb /src/theory/quantifiers/term_util.cpp
parentbee3c7f6840e531bc91d990b98f2b331d1f2f82c (diff)
Update to standard implementation of contains term (#3270)
Diffstat (limited to 'src/theory/quantifiers/term_util.cpp')
-rw-r--r--src/theory/quantifiers/term_util.cpp44
1 files changed, 6 insertions, 38 deletions
diff --git a/src/theory/quantifiers/term_util.cpp b/src/theory/quantifiers/term_util.cpp
index ffd808ed3..48dc88537 100644
--- a/src/theory/quantifiers/term_util.cpp
+++ b/src/theory/quantifiers/term_util.cpp
@@ -489,15 +489,17 @@ Node TermUtil::rewriteVtsSymbols( Node n ) {
bool TermUtil::containsVtsTerm( Node n, bool isFree ) {
std::vector< Node > t;
getVtsTerms( t, isFree, false );
- return containsTerms( n, t );
+ return expr::hasSubterm(n, t);
}
bool TermUtil::containsVtsTerm( std::vector< Node >& n, bool isFree ) {
std::vector< Node > t;
getVtsTerms( t, isFree, false );
if( !t.empty() ){
- for( unsigned i=0; i<n.size(); i++ ){
- if( containsTerms( n[i], t ) ){
+ for (const Node& nc : n)
+ {
+ if (expr::hasSubterm(nc, t))
+ {
return true;
}
}
@@ -508,7 +510,7 @@ bool TermUtil::containsVtsTerm( std::vector< Node >& n, bool isFree ) {
bool TermUtil::containsVtsInfinity( Node n, bool isFree ) {
std::vector< Node > t;
getVtsTerms( t, isFree, false, false );
- return containsTerms( n, t );
+ return expr::hasSubterm(n, t);
}
Node TermUtil::ensureType( Node n, TypeNode tn ) {
@@ -524,40 +526,6 @@ Node TermUtil::ensureType( Node n, TypeNode tn ) {
}
}
-bool TermUtil::containsTerms2( Node n, std::vector< Node >& t, std::map< Node, bool >& visited ) {
- if (visited.find(n) == visited.end())
- {
- if( std::find( t.begin(), t.end(), n )!=t.end() ){
- return true;
- }
- visited[n] = true;
- if (n.hasOperator())
- {
- if (containsTerms2(n.getOperator(), t, visited))
- {
- return true;
- }
- }
- for (const Node& nc : n)
- {
- if (containsTerms2(nc, t, visited))
- {
- return true;
- }
- }
- }
- return false;
-}
-
-bool TermUtil::containsTerms( Node n, std::vector< Node >& t ) {
- if( t.empty() ){
- return false;
- }else{
- std::map< Node, bool > visited;
- return containsTerms2( n, t, visited );
- }
-}
-
int TermUtil::getTermDepth( Node n ) {
if (!n.hasAttribute(TermDepthAttribute()) ){
int maxDepth = -1;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback