summaryrefslogtreecommitdiff
path: root/src/theory/rewriterules
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2012-10-23 23:40:29 +0000
committerAndrew Reynolds <andrew.j.reynolds@gmail.com>2012-10-23 23:40:29 +0000
commit304404e3709ff7e95156c87f65a3e2647d9f3441 (patch)
tree10fd1c4cc42567c3fac5fd91ad76aef3d49975b5 /src/theory/rewriterules
parent697dd317af39a896865c99b922e80baac2bb4b23 (diff)
more major cleanup of quantifiers code, separating rewrite-rules-specific code from quantifiers-specific code
Diffstat (limited to 'src/theory/rewriterules')
-rw-r--r--src/theory/rewriterules/rr_inst_match.cpp11
-rw-r--r--src/theory/rewriterules/rr_inst_match.h3
-rw-r--r--src/theory/rewriterules/rr_inst_match_impl.h2
-rw-r--r--src/theory/rewriterules/theory_rewriterules.h3
-rw-r--r--src/theory/rewriterules/theory_rewriterules_rules.cpp15
5 files changed, 26 insertions, 8 deletions
diff --git a/src/theory/rewriterules/rr_inst_match.cpp b/src/theory/rewriterules/rr_inst_match.cpp
index 572ccfad2..af4cdeb50 100644
--- a/src/theory/rewriterules/rr_inst_match.cpp
+++ b/src/theory/rewriterules/rr_inst_match.cpp
@@ -23,6 +23,7 @@
#include "theory/rewriterules/rr_trigger.h"
#include "theory/rewriterules/rr_inst_match_impl.h"
#include "theory/rewriterules/rr_candidate_generator.h"
+#include "theory/quantifiers/candidate_generator.h"
using namespace CVC4;
using namespace CVC4::kind;
@@ -140,7 +141,8 @@ ApplyMatcher::ApplyMatcher( Node pat, QuantifiersEngine* qe): d_pattern(pat){
//set-up d_variables, d_constants, d_childrens
for( size_t i=0; i< d_pattern.getNumChildren(); ++i ){
- EqualityQuery* q = qe->getEqualityQuery(d_pattern[i].getType());
+ //EqualityQuery* q = qe->getEqualityQuery(d_pattern[i].getType());
+ EqualityQuery* q = qe->getEqualityQuery();
Assert( q != NULL );
if( d_pattern[i].hasAttribute(InstConstantAttribute()) ){
if( d_pattern[i].getKind()==INST_CONSTANT ){
@@ -327,7 +329,8 @@ class VarMatcher: public Matcher{
EqualityQuery* d_q;
public:
VarMatcher(Node var, QuantifiersEngine* qe): d_var(var), d_binded(false){
- d_q = qe->getEqualityQuery(var.getType());
+ //d_q = qe->getEqualityQuery(var.getType());
+ d_q = qe->getEqualityQuery();
}
void resetInstantiationRound( QuantifiersEngine* qe ){};
bool reset( TNode n, InstMatch& m, QuantifiersEngine* qe ){
@@ -600,9 +603,9 @@ private:
public:
void mkCandidateGenerator(){
if(classes)
- d_cg = d_qe->getRRCanGenClasses();
+ d_cg = new GenericCandidateGeneratorClasses(d_qe);
else
- d_cg = d_qe->getRRCanGenClass();
+ d_cg = new GenericCandidateGeneratorClass(d_qe);
}
GenericCandidateGeneratorClasses(QuantifiersEngine* qe):
diff --git a/src/theory/rewriterules/rr_inst_match.h b/src/theory/rewriterules/rr_inst_match.h
index 14873b501..63728a95b 100644
--- a/src/theory/rewriterules/rr_inst_match.h
+++ b/src/theory/rewriterules/rr_inst_match.h
@@ -30,6 +30,7 @@
#include "context/cdlist.h"
#include "theory/quantifiers/inst_match.h"
+#include "theory/quantifiers/term_database.h"
#include "expr/node_manager.h"
#include "expr/node_builder.h"
@@ -55,7 +56,7 @@ public:
Node cand = cg->getNextCandidate();
//.......
}while( !cand.isNull() );
-
+
eqc is the equivalence class you are searching in
*/
virtual void reset( TNode eqc ) = 0;
diff --git a/src/theory/rewriterules/rr_inst_match_impl.h b/src/theory/rewriterules/rr_inst_match_impl.h
index 43161a9e5..388d1a702 100644
--- a/src/theory/rewriterules/rr_inst_match_impl.h
+++ b/src/theory/rewriterules/rr_inst_match_impl.h
@@ -31,7 +31,7 @@ template<bool modEq>
InstMatchTrie2Gen<modEq>::InstMatchTrie2Gen(context::Context* c, QuantifiersEngine* qe):
d_context(c), d_mods(c) {
d_eQ = qe->getEqualityQuery();
- d_cG = qe->getRRCanGenClass();
+ d_cG = new GenericCandidateGeneratorClass(qe);
};
/** add match m for quantifier f starting at index, take into account equalities q, return true if successful */
diff --git a/src/theory/rewriterules/theory_rewriterules.h b/src/theory/rewriterules/theory_rewriterules.h
index 5e06bfd0b..4a27b4559 100644
--- a/src/theory/rewriterules/theory_rewriterules.h
+++ b/src/theory/rewriterules/theory_rewriterules.h
@@ -263,6 +263,9 @@ private:
rewriter::Subst & pvars,
rewriter::Subst & vars);
+ //create inst variable
+ std::vector<Node> createInstVariable( std::vector<Node> & vars );
+
/** statistics class */
class Statistics {
public:
diff --git a/src/theory/rewriterules/theory_rewriterules_rules.cpp b/src/theory/rewriterules/theory_rewriterules_rules.cpp
index cc01a01ff..20e5fa084 100644
--- a/src/theory/rewriterules/theory_rewriterules_rules.cpp
+++ b/src/theory/rewriterules/theory_rewriterules_rules.cpp
@@ -151,8 +151,7 @@ void TheoryRewriteRules::addRewriteRule(const Node r)
vars.push_back(*v);
};
/* Instantiation version */
- std::vector<Node> inst_constants =
- getQuantifiersEngine()->createInstVariable(vars);
+ std::vector<Node> inst_constants = createInstVariable(vars);
/* Body/Remove_term/Guards/Triggers */
Node body = r[2][1];
TNode new_terms = r[2][1];
@@ -377,6 +376,18 @@ bool TheoryRewriteRules::addRewritePattern(TNode pattern, TNode body,
}
+std::vector<Node> TheoryRewriteRules::createInstVariable( std::vector<Node> & vars ){
+ std::vector<Node> inst_constant;
+ inst_constant.reserve(vars.size());
+ for( std::vector<Node>::const_iterator v = vars.begin();
+ v != vars.end(); ++v ){
+ //make instantiation constants
+ Node ic = NodeManager::currentNM()->mkInstConstant( (*v).getType() );
+ inst_constant.push_back( ic );
+ };
+ return inst_constant;
+}
+
}/* CVC4::theory::rewriterules namespace */
}/* CVC4::theory namespace */
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback