};
std::ostream& operator<<(std::ostream& os, const CutInfo& ci);
-struct BranchCutInfo : public CutInfo {
+class BranchCutInfo : public CutInfo {
BranchCutInfo(int execOrd, int br, Kind dir, double val);
};
-struct RowsDeleted : public CutInfo {
+class RowsDeleted : public CutInfo {
RowsDeleted(int execOrd, int nrows, const int num[]);
};
namespace theory {
namespace arith {
-static const std::string arithPresolveLemmasHelp = "\
-Presolve lemmas are generated before SAT search begins using the relationship\n\
+static const std::string arithUnateLemmasHelp = "\
+Unate lemmas are generated before SAT search begins using the relationship\n\
of constant terms and polynomials.\n\
-Modes currently supported by the --arith-presolve-lemmas option:\n\
+Modes currently supported by the --unate-lemmas option:\n\
+ none \n\
+ ineqs \n\
Outputs lemmas of the general form (<= p c) implies (<= p d) for c < d.\n\
} else if(optarg == "eqs") {
return EQUALITY_PRESOLVE_LEMMAS;
} else if(optarg == "help") {
- puts(arithPresolveLemmasHelp.c_str());
+ puts(arithUnateLemmasHelp.c_str());
exit(1);
} else {
throw OptionException(std::string("unknown option for --unate-lemmas: `") +
#include "smt/logic_request.h"
#include "smt/logic_exception.h"
+#include "smt/options.h" // for incrementalSolving()
#include "theory/arith/arithvar.h"
#include "theory/arith/cut_log.h"
}
vector<Node> lemmas;
- switch(options::arithUnateLemmaMode()){
- case NO_PRESOLVE_LEMMAS:
- break;
- case INEQUALITY_PRESOLVE_LEMMAS:
- d_constraintDatabase.outputUnateInequalityLemmas(lemmas);
- break;
- case EQUALITY_PRESOLVE_LEMMAS:
- d_constraintDatabase.outputUnateEqualityLemmas(lemmas);
- break;
- case ALL_PRESOLVE_LEMMAS:
- d_constraintDatabase.outputUnateInequalityLemmas(lemmas);
- d_constraintDatabase.outputUnateEqualityLemmas(lemmas);
- break;
- default:
- Unhandled(options::arithUnateLemmaMode());
+ if(!options::incrementalSolving()) {
+ switch(options::arithUnateLemmaMode()){
+ case NO_PRESOLVE_LEMMAS:
+ break;
+ case INEQUALITY_PRESOLVE_LEMMAS:
+ d_constraintDatabase.outputUnateInequalityLemmas(lemmas);
+ break;
+ case EQUALITY_PRESOLVE_LEMMAS:
+ d_constraintDatabase.outputUnateEqualityLemmas(lemmas);
+ break;
+ case ALL_PRESOLVE_LEMMAS:
+ d_constraintDatabase.outputUnateInequalityLemmas(lemmas);
+ d_constraintDatabase.outputUnateEqualityLemmas(lemmas);
+ break;
+ default:
+ Unhandled(options::arithUnateLemmaMode());
+ }
}
vector<Node>::const_iterator i = lemmas.begin(), i_end = lemmas.end();
bug484.smt2 \
bug486.cvc \
bug507.smt2 \
- bug512.smt2 \
bug512.minimized.smt2 \
bug516.smt2 \
bug519.smt2 \
TESTS = $(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(TPTP_TESTS) $(BUG_TESTS)
+# bug512 -- taking too long, --time-per not working perhaps? in any case,
+# we have a minimized version still getting tested
+DISABLED_TESTS = \
+ bug512.smt2
+
EXTRA_DIST = $(TESTS) \
simplification_bug4.smt2.expect \
bug216.smt2.expect
endif
# and make sure to distribute it
-EXTRA_DIST += \
+EXTRA_DIST += $(DISABLED_TESTS) \
subranges.cvc \
arrayinuf_error.smt2 \
errorcrash.smt2 \
d_em = new ExprManager();
d_nm = NodeManager::fromExprManager(d_em);
d_smt = new SmtEngine(d_em);
+ d_smt->setOption("incremental", false);
d_ctxt = d_smt->d_context;
d_uctxt = d_smt->d_userContext;
d_scope = new SmtScope(d_smt);