diff options
Diffstat (limited to 'src/smt/smt_engine.cpp')
-rw-r--r-- | src/smt/smt_engine.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp index 0d473a1a1..75cffefc2 100644 --- a/src/smt/smt_engine.cpp +++ b/src/smt/smt_engine.cpp @@ -292,14 +292,13 @@ class SmtEnginePrivate : public NodeManagerListener { */ Node d_modZero; +public: /** * Map from skolem variables to index in d_assertionsToCheck containing * corresponding introduced Boolean ite */ IteSkolemMap d_iteSkolemMap; -public: - /** Instance of the ITE remover */ RemoveITE d_iteRemover; @@ -2534,6 +2533,21 @@ Result SmtEngine::check() { Trace("smt") << "SmtEngine::check(): processing assertions" << endl; d_private->processAssertions(); + // Turn off stop only for QF_LRA + // TODO: Bring up in a meeting where to put this + if(options::decisionStopOnly() && !options::decisionMode.wasSetByUser() ){ + if( // QF_LRA + (not d_logic.isQuantified() && + d_logic.isPure(THEORY_ARITH) && d_logic.isLinear() && !d_logic.isDifferenceLogic() && !d_logic.areIntegersUsed() + )){ + if(d_private->d_iteSkolemMap.empty()){ + options::decisionStopOnly.set(false); + d_decisionEngine->clearStrategies(); + Trace("smt") << "SmtEngine::check(): turning off stop only" << endl; + } + } + } + unsigned long millis = 0; if(d_timeBudgetCumulative != 0) { millis = getTimeRemaining(); |