summaryrefslogtreecommitdiff
path: root/src/smt/smt_engine.cpp
diff options
context:
space:
mode:
authorTim King <taking@cs.nyu.edu>2014-06-10 17:32:57 -0400
committerMorgan Deters <mdeters@cs.nyu.edu>2014-06-10 17:35:41 -0400
commit629824db3911ab11ae286e4b14151a537602ba5a (patch)
treef82eed6908c9cad382f8b08f25f910edc1990455 /src/smt/smt_engine.cpp
parentdb795eb64da6f10f2a322e33d8a0eb0ef0bb6f1b (diff)
Merging Tim's pseudoboolean work from his fmcad14 branch.
Signed-off-by: Morgan Deters <mdeters@cs.nyu.edu>
Diffstat (limited to 'src/smt/smt_engine.cpp')
-rw-r--r--src/smt/smt_engine.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp
index 6dbef4fe3..b71969d15 100644
--- a/src/smt/smt_engine.cpp
+++ b/src/smt/smt_engine.cpp
@@ -88,6 +88,8 @@
#include "theory/strings/theory_strings_preprocess.h"
#include "printer/options.h"
+#include "theory/arith/pseudoboolean_proc.h"
+
using namespace std;
using namespace CVC4;
using namespace CVC4::smt;
@@ -325,6 +327,9 @@ public:
RemoveITE d_iteRemover;
private:
+
+ theory::arith::PseudoBooleanProcessor d_pbsProcessor;
+
/** The top level substitutions */
SubstitutionMap d_topLevelSubstitutions;
@@ -419,6 +424,7 @@ public:
d_simplifyAssertionsDepth(0),
d_iteSkolemMap(),
d_iteRemover(smt.d_userContext),
+ d_pbsProcessor(smt.d_userContext),
d_topLevelSubstitutions(smt.d_userContext)
{
d_smt.d_nodeManager->subscribeEvents(this);
@@ -1693,6 +1699,7 @@ bool SmtEnginePrivate::nonClausalSimplify() {
TimerStat::CodeTimer nonclausalTimer(d_smt.d_stats->d_nonclausalSimplificationTime);
+
Trace("simplify") << "SmtEnginePrivate::nonClausalSimplify()" << endl;
if(d_propagatorNeedsFinish) {
@@ -3014,6 +3021,13 @@ void SmtEnginePrivate::processAssertions() {
// d_smt.d_theoryEngine->getQuantConflictFind()->registerAssertions( d_assertionsToPreprocess );
//}
+ if( options::pbRewrites() ){
+ d_pbsProcessor.learn(d_assertionsToPreprocess);
+ if(d_pbsProcessor.likelyToHelp()){
+ d_pbsProcessor.applyReplacements(d_assertionsToPreprocess);
+ }
+ }
+
dumpAssertions("pre-simplify", d_assertionsToPreprocess);
Chat() << "simplifying assertions..." << endl;
bool noConflict = simplifyAssertions();
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback