summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTim King <taking@google.com>2017-03-27 10:24:13 -0700
committerTim King <taking@google.com>2017-03-27 10:24:13 -0700
commit4930de53415ffbf614d6965af59b1f44e405451c (patch)
tree5fb07f7dfbf7b358c6d79a92d8af6376e33147cf /src
parent09d14ac7f81111882327cb168f100e9f998611ac (diff)
Making ppNotifyAssertions take a const vector.
Diffstat (limited to 'src')
-rw-r--r--src/theory/quantifiers/theory_quantifiers.cpp10
-rw-r--r--src/theory/quantifiers/theory_quantifiers.h2
-rw-r--r--src/theory/quantifiers_engine.cpp32
-rw-r--r--src/theory/quantifiers_engine.h2
-rw-r--r--src/theory/sep/theory_sep.cpp22
-rw-r--r--src/theory/sep/theory_sep.h4
-rw-r--r--src/theory/theory.h12
-rw-r--r--src/theory/theory_engine.cpp10
-rw-r--r--src/theory/theory_engine.h15
9 files changed, 57 insertions, 52 deletions
diff --git a/src/theory/quantifiers/theory_quantifiers.cpp b/src/theory/quantifiers/theory_quantifiers.cpp
index 0b4f3c0c7..94a11a09e 100644
--- a/src/theory/quantifiers/theory_quantifiers.cpp
+++ b/src/theory/quantifiers/theory_quantifiers.cpp
@@ -88,10 +88,12 @@ void TheoryQuantifiers::presolve() {
}
}
-void TheoryQuantifiers::ppNotifyAssertions( std::vector< Node >& assertions ) {
- Trace("quantifiers-presolve") << "TheoryQuantifiers::ppNotifyAssertions" << std::endl;
- if( getQuantifiersEngine() ){
- getQuantifiersEngine()->ppNotifyAssertions( assertions );
+void TheoryQuantifiers::ppNotifyAssertions(
+ const std::vector<Node>& assertions) {
+ Trace("quantifiers-presolve")
+ << "TheoryQuantifiers::ppNotifyAssertions" << std::endl;
+ if (getQuantifiersEngine()) {
+ getQuantifiersEngine()->ppNotifyAssertions(assertions);
}
}
diff --git a/src/theory/quantifiers/theory_quantifiers.h b/src/theory/quantifiers/theory_quantifiers.h
index 308514b92..f52381011 100644
--- a/src/theory/quantifiers/theory_quantifiers.h
+++ b/src/theory/quantifiers/theory_quantifiers.h
@@ -61,7 +61,7 @@ public:
void notifyEq(TNode lhs, TNode rhs);
void preRegisterTerm(TNode n);
void presolve();
- void ppNotifyAssertions( std::vector< Node >& assertions );
+ void ppNotifyAssertions(const std::vector<Node>& assertions);
void check(Effort e);
Node getNextDecisionRequest( unsigned& priority );
Node getValue(TNode n);
diff --git a/src/theory/quantifiers_engine.cpp b/src/theory/quantifiers_engine.cpp
index bdf2de7f7..b369e30b7 100644
--- a/src/theory/quantifiers_engine.cpp
+++ b/src/theory/quantifiers_engine.cpp
@@ -355,22 +355,28 @@ void QuantifiersEngine::presolve() {
}
}
-void QuantifiersEngine::ppNotifyAssertions( std::vector< Node >& assertions ) {
- Trace("quant-engine-proc") << "ppNotifyAssertions in QE, #assertions = " << assertions.size() << " check epr = " << (d_qepr!=NULL) << std::endl;
- if( ( options::instLevelInputOnly() && options::instMaxLevel()!=-1 ) || d_qepr!=NULL ){
- for( unsigned i=0; i<assertions.size(); i++ ) {
- if( options::instLevelInputOnly() && options::instMaxLevel()!=-1 ){
- setInstantiationLevelAttr( assertions[i], 0 );
+void QuantifiersEngine::ppNotifyAssertions(
+ const std::vector<Node>& assertions) {
+ Trace("quant-engine-proc")
+ << "ppNotifyAssertions in QE, #assertions = " << assertions.size()
+ << " check epr = " << (d_qepr != NULL) << std::endl;
+ if ((options::instLevelInputOnly() && options::instMaxLevel() != -1) ||
+ d_qepr != NULL) {
+ for (unsigned i = 0; i < assertions.size(); i++) {
+ if (options::instLevelInputOnly() && options::instMaxLevel() != -1) {
+ setInstantiationLevelAttr(assertions[i], 0);
}
- if( d_qepr!=NULL ){
- d_qepr->registerAssertion( assertions[i] );
+ if (d_qepr != NULL) {
+ d_qepr->registerAssertion(assertions[i]);
}
}
- if( d_qepr!=NULL ){
- //must handle sources of other new constants e.g. separation logic
- //FIXME: cleanup
- ((sep::TheorySep*)getTheoryEngine()->theoryOf( THEORY_SEP ))->initializeBounds();
- d_qepr->finishInit();
+ if (d_qepr != NULL) {
+ // must handle sources of other new constants e.g. separation logic
+ // FIXME: cleanup
+ sep::TheorySep* theory_sep =
+ static_cast<sep::TheorySep*>(getTheoryEngine()->theoryOf(THEORY_SEP));
+ theory_sep->initializeBounds();
+ d_qepr->finishInit();
}
}
}
diff --git a/src/theory/quantifiers_engine.h b/src/theory/quantifiers_engine.h
index 150b3945b..5d7c25cde 100644
--- a/src/theory/quantifiers_engine.h
+++ b/src/theory/quantifiers_engine.h
@@ -280,7 +280,7 @@ public:
/** presolve */
void presolve();
/** notify preprocessed assertion */
- void ppNotifyAssertions( std::vector< Node >& assertions );
+ void ppNotifyAssertions(const std::vector<Node>& assertions);
/** check at level */
void check( Theory::Effort e );
/** notify that theories were combined */
diff --git a/src/theory/sep/theory_sep.cpp b/src/theory/sep/theory_sep.cpp
index 4f31f10b5..3f9f70c25 100644
--- a/src/theory/sep/theory_sep.cpp
+++ b/src/theory/sep/theory_sep.cpp
@@ -881,18 +881,20 @@ TypeNode TheorySep::getDataType( Node n ) {
return d_type_data;
}
-//must process assertions at preprocess so that quantified assertions are processed properly
-void TheorySep::ppNotifyAssertions( std::vector< Node >& assertions ) {
- std::map< int, std::map< Node, int > > visited;
- std::map< int, std::map< Node, std::vector< Node > > > references;
- std::map< int, std::map< Node, bool > > references_strict;
- for( unsigned i=0; i<assertions.size(); i++ ){
+// Must process assertions at preprocess so that quantified assertions are
+// processed properly.
+void TheorySep::ppNotifyAssertions(const std::vector<Node>& assertions) {
+ std::map<int, std::map<Node, int> > visited;
+ std::map<int, std::map<Node, std::vector<Node> > > references;
+ std::map<int, std::map<Node, bool> > references_strict;
+ for (unsigned i = 0; i < assertions.size(); i++) {
Trace("sep-pp") << "Process assertion : " << assertions[i] << std::endl;
- processAssertion( assertions[i], visited, references, references_strict, true, true, false );
+ processAssertion(assertions[i], visited, references, references_strict,
+ true, true, false);
}
- //if data type is unconstrained, assume a fresh uninterpreted sort
- if( !d_type_ref.isNull() ){
- if( d_type_data.isNull() ){
+ // if data type is unconstrained, assume a fresh uninterpreted sort
+ if (!d_type_ref.isNull()) {
+ if (d_type_data.isNull()) {
d_type_data = NodeManager::currentNM()->mkSort("_sep_U");
Trace("sep-type") << "Sep: assume data type " << d_type_data << std::endl;
d_loc_to_data_type[d_type_ref] = d_type_data;
diff --git a/src/theory/sep/theory_sep.h b/src/theory/sep/theory_sep.h
index 816f91c5f..bdbea7e6c 100644
--- a/src/theory/sep/theory_sep.h
+++ b/src/theory/sep/theory_sep.h
@@ -79,8 +79,8 @@ class TheorySep : public Theory {
PPAssertStatus ppAssert(TNode in, SubstitutionMap& outSubstitutions);
Node ppRewrite(TNode atom);
-
- void ppNotifyAssertions( std::vector< Node >& assertions );
+
+ void ppNotifyAssertions(const std::vector<Node>& assertions);
/////////////////////////////////////////////////////////////////////////////
// T-PROPAGATION / REGISTRATION
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/theory/theory.h b/src/theory/theory.h
index 5701f0a7b..ce94e362e 100644
--- a/src/theory/theory.h
+++ b/src/theory/theory.h
@@ -582,12 +582,12 @@ public:
* Don't preprocess subterm of this term
*/
virtual bool ppDontRewriteSubterm(TNode atom) { return false; }
-
- /** notify preprocessed assertions
- * Called on new assertions after preprocessing before they are asserted to theory engine.
- * Should not modify assertions.
- */
- virtual void ppNotifyAssertions( std::vector< Node >& assertions ) {}
+
+ /**
+ * Notify preprocessed assertions. Called on new assertions after
+ * preprocessing before they are asserted to theory engine.
+ */
+ virtual void ppNotifyAssertions(const std::vector<Node>& assertions) {}
/**
* A Theory is called with presolve exactly one time per user
diff --git a/src/theory/theory_engine.cpp b/src/theory/theory_engine.cpp
index a68625da8..d297595e1 100644
--- a/src/theory/theory_engine.cpp
+++ b/src/theory/theory_engine.cpp
@@ -1146,11 +1146,13 @@ Node TheoryEngine::preprocess(TNode assertion) {
return d_ppCache[assertion];
}
-void TheoryEngine::notifyPreprocessedAssertions( std::vector< Node >& assertions ){
+void TheoryEngine::notifyPreprocessedAssertions(
+ const std::vector<Node>& assertions) {
// call all the theories
- for(TheoryId theoryId = theory::THEORY_FIRST; theoryId < theory::THEORY_LAST; ++theoryId) {
- if(d_theoryTable[theoryId]) {
- theoryOf(theoryId)->ppNotifyAssertions( assertions );
+ for (TheoryId theoryId = theory::THEORY_FIRST; theoryId < theory::THEORY_LAST;
+ ++theoryId) {
+ if (d_theoryTable[theoryId]) {
+ theoryOf(theoryId)->ppNotifyAssertions(assertions);
}
}
}
diff --git a/src/theory/theory_engine.h b/src/theory/theory_engine.h
index f623748cf..dd2b4f14d 100644
--- a/src/theory/theory_engine.h
+++ b/src/theory/theory_engine.h
@@ -604,18 +604,11 @@ public:
*/
Node preprocess(TNode node);
+ /** Notify (preprocessed) assertions. */
+ void notifyPreprocessedAssertions(const std::vector<Node>& assertions);
- /**
- * Notify (preprocessed) assertions
- */
- void notifyPreprocessedAssertions( std::vector< Node >& assertions );
-
- /**
- * Return whether or not we are incomplete (in the current context).
- */
- inline bool isIncomplete() const {
- return d_incomplete;
- }
+ /** Return whether or not we are incomplete (in the current context). */
+ inline bool isIncomplete() const { return d_incomplete; }
/**
* Returns true if we need another round of checking. If this
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback