Calling the setIncompleteness() flag on all full checks once a non-linear term has...
authorTim King <taking@cs.nyu.edu>
Sat, 29 Sep 2012 20:42:16 +0000 (20:42 +0000)
committerTim King <taking@cs.nyu.edu>
Sat, 29 Sep 2012 20:42:16 +0000 (20:42 +0000)
src/theory/arith/theory_arith.cpp
src/theory/arith/theory_arith.h

index e552ae5a06cee79d8f39b6d95634532cd8190a36..2b0d9149d064f13a614b7dc860fbc837d8924f8e 100644 (file)
@@ -58,7 +58,7 @@ const uint32_t RESET_START = 2;
 
 TheoryArith::TheoryArith(context::Context* c, context::UserContext* u, OutputChannel& out, Valuation valuation, const LogicInfo& logicInfo, QuantifiersEngine* qe) :
   Theory(THEORY_ARITH, c, u, out, valuation, logicInfo, qe),
-  d_nlIncomplete(u, false),
+  d_nlIncomplete( false),
   d_qflraStatus(Result::SAT_UNKNOWN),
   d_unknownsInARow(0),
   d_hasDoneWorkSinceCut(false),
@@ -1707,6 +1707,10 @@ void TheoryArith::check(Effort effortLevel){
       }
     }
   }//if !emmittedConflictOrSplit && fullEffort(effortLevel) && !hasIntegerModel()
+  if(fullEffort(effortLevel) && d_nlIncomplete){
+    // TODO this is total paranoia
+    d_out->setIncomplete();
+  }
 
   if(Debug.isOn("paranoid:check_tableau")){ d_linEq.debugCheckTableau(); }
   if(Debug.isOn("arith::print_model")) { debugPrintModel(); }
index 1c2c942fd2082c6e4f4bcd42a2226f31b9fd2e9f..4b3a633cb44a637ac861c0684d3be18855e12ca6 100644 (file)
@@ -64,7 +64,9 @@ class InstantiatorTheoryArith;
 class TheoryArith : public Theory {
   friend class InstantiatorTheoryArith;
 private:
-  context::CDO<bool> d_nlIncomplete;
+  bool d_nlIncomplete;
+  // TODO A better would be:
+  //context::CDO<bool> d_nlIncomplete;
 
   enum Result::Sat d_qflraStatus;
   // check()