diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2012-11-13 21:16:26 +0000 |
---|---|---|
committer | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2012-11-13 21:16:26 +0000 |
commit | 795e5ba8a1138a371409ac9c8e9da78ce652bb94 (patch) | |
tree | 5cc0d5bebbccf87b122b9e1690f27e398b4e8cc0 /src/theory/quantifiers/term_database.cpp | |
parent | 740df5937639738a0238312dfb061643e62ba605 (diff) |
refactoring of quantifiers rewriter based on code review from yesterday, refactoring code out of instantiators in preparation for quantifiers equality engine
Diffstat (limited to 'src/theory/quantifiers/term_database.cpp')
-rw-r--r-- | src/theory/quantifiers/term_database.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/theory/quantifiers/term_database.cpp b/src/theory/quantifiers/term_database.cpp index 591270ab0..b55e8abdf 100644 --- a/src/theory/quantifiers/term_database.cpp +++ b/src/theory/quantifiers/term_database.cpp @@ -14,7 +14,7 @@ #include "theory/quantifiers/term_database.h" #include "theory/quantifiers_engine.h" -#include "theory/uf/theory_uf_instantiator.h" +#include "theory/quantifiers/trigger.h" #include "theory/theory_engine.h" #include "theory/quantifiers/first_order_model.h" #include "theory/quantifiers/options.h" @@ -80,7 +80,7 @@ void TermDb::addTerm( Node n, std::set< Node >& added, bool withinQuant ){ d_op_map[op].push_back( n ); added.insert( n ); - for( int i=0; i<(int)n.getNumChildren(); i++ ){ + for( size_t i=0; i<n.getNumChildren(); i++ ){ addTerm( n[i], added, withinQuant ); if( options::efficientEMatching() ){ EfficientEMatcher* eem = d_quantEngine->getEfficientEMatcher(); @@ -100,10 +100,9 @@ void TermDb::addTerm( Node n, std::set< Node >& added, bool withinQuant ){ } if( options::eagerInstQuant() ){ if( !n.hasAttribute(InstLevelAttribute()) && n.getAttribute(InstLevelAttribute())==0 ){ - uf::InstantiatorTheoryUf* ith = (uf::InstantiatorTheoryUf*)d_quantEngine->getInstantiator( THEORY_UF ); int addedLemmas = 0; - for( int i=0; i<(int)ith->d_op_triggers[op].size(); i++ ){ - addedLemmas += ith->d_op_triggers[op][i]->addTerm( n ); + for( size_t i=0; i<d_op_triggers[op].size(); i++ ){ + addedLemmas += d_op_triggers[op][i]->addTerm( n ); } //Message() << "Terms, added lemmas: " << addedLemmas << std::endl; d_quantEngine->flushLemmas( &d_quantEngine->getTheoryEngine()->theoryOf( THEORY_QUANTIFIERS )->getOutputChannel() ); @@ -468,3 +467,9 @@ void TermDb::getVarContainsNode( Node f, Node n, std::vector< Node >& varContain } } } + +void TermDb::registerTrigger( theory::inst::Trigger* tr, Node op ){ + if( std::find( d_op_triggers[op].begin(), d_op_triggers[op].end(), tr )==d_op_triggers[op].end() ){ + d_op_triggers[op].push_back( tr ); + } +} |