Fixes a bug in incremental with non-linear where the built model flag would still be true on the first call to check in a 2nd call to check-sat in incremental mode. This occurs when we are under the same SAT context when the model was built (likely level 0) on the subsequent check-sat call.
Fixes #5372
void NonlinearExtension::presolve()
{
Trace("nl-ext") << "NonlinearExtension::presolve" << std::endl;
+ d_builtModel = false;
}
void NonlinearExtension::runStrategy(Theory::Effort effort,
regress1/nl/issue3656.smt2
regress1/nl/issue3803-nl-check-model.smt2
regress1/nl/issue3955-ee-double-notify.smt2
+ regress1/nl/issue5372-2-no-m-presolve.smt2
regress1/nl/metitarski-1025.smt2
regress1/nl/metitarski-3-4.smt2
regress1/nl/metitarski_3_4_2e.smt2
--- /dev/null
+; COMMAND-LINE: -i
+; EXPECT: sat
+; EXPECT: unsat
+(set-logic ALL)
+(declare-fun i4 () Int)
+(declare-fun i6 () Int)
+(declare-fun i7 () Int)
+(assert (= true true true (< i7 (* i4 i4)) true true true true))
+(check-sat)
+(assert (< i6 (* 51 51 i4 i6) 0 74))
+(check-sat)