QF_LRA, Quantifiers: enable use decision for (only for) stopping search
authorKshitij Bansal <kshitij@cs.nyu.edu>
Mon, 18 Jun 2012 01:46:39 +0000 (01:46 +0000)
committerKshitij Bansal <kshitij@cs.nyu.edu>
Mon, 18 Jun 2012 01:46:39 +0000 (01:46 +0000)
src/smt/smt_engine.cpp

index 3ad12cc789ba24d13702908e3b8af27ddf8dd1db..b9c15ac71e0b142ead1665a95300dbda883ae95c 100644 (file)
@@ -552,41 +552,49 @@ void SmtEngine::setLogicInternal() throw(AssertionException) {
     d_earlyTheoryPP = false;
   }
   // Turn on justification heuristic of the decision engine for QF_BV and QF_AUFBV
-  // and also use it in stop-only mode for QF_AUFLIA
+  // and also use it in stop-only mode for QF_AUFLIA, QF_LRA and Quantifiers
   if(!Options::current()->decisionModeSetByUser) {
     Options::DecisionMode decMode =
       //QF_BV
-      ( !d_logic.isQuantified() &&
+      (not d_logic.isQuantified() &&
         d_logic.isPure(THEORY_BV)
         ) ||
       //QF_AUFBV
-      (!d_logic.isQuantified() &&
+      (not d_logic.isQuantified() &&
        d_logic.isTheoryEnabled(THEORY_ARRAY) &&
        d_logic.isTheoryEnabled(THEORY_UF) &&
        d_logic.isTheoryEnabled(THEORY_BV)
        ) ||
       //QF_AUFLIA (and may be ends up enabling QF_AUFLRA?)
-      (!d_logic.isQuantified() &&
+      (not d_logic.isQuantified() &&
        d_logic.isTheoryEnabled(THEORY_ARRAY) &&
        d_logic.isTheoryEnabled(THEORY_UF) &&
        d_logic.isTheoryEnabled(THEORY_ARITH)
-       )
+       ) ||
+      // QF_LRA
+      (not d_logic.isQuantified() &&
+       d_logic.isPure(THEORY_ARITH)
+       ) ||
+      // Quantifiers
+      d_logic.isQuantified()
       ? Options::DECISION_STRATEGY_JUSTIFICATION
       : Options::DECISION_STRATEGY_INTERNAL;
 
     bool stoponly =
       // QF_AUFLIA
-      (!d_logic.isQuantified() &&
+      (not d_logic.isQuantified() &&
        d_logic.isTheoryEnabled(THEORY_ARRAY) &&
        d_logic.isTheoryEnabled(THEORY_UF) &&
        d_logic.isTheoryEnabled(THEORY_ARITH)
-       )
+       ) ||
+      // QF_LRA
+      (not d_logic.isQuantified() &&
+       d_logic.isPure(THEORY_ARITH)
+       ) ||
+      // Quantifiers
+      d_logic.isQuantified()
       ? true : false;
 
-    // Turn on justification-stoponly for QF_AUFLIA
-    if(!Options::current()->decisionModeSetByUser)
-
-
     Trace("smt") << "setting decision mode to " << decMode << std::endl;
     NodeManager::currentNM()->getOptions()->decisionMode = decMode;
     NodeManager::currentNM()->getOptions()->decisionOptions.stopOnly = stoponly;