finishwith --miplib-trick --miplib-trick-subs=4 --use-approx --lemmas-on-replay-failure --replay-early-close-depth=4 --replay-lemma-reject-cut=128 --replay-reject-cut=512 --unconstrained-simp --use-soi --pb-rewrites
;;
QF_NIA)
- trywith 300 --nl-ext --nl-ext-tplanes --decision=internal
+ trywith 300 --nl-ext-tplanes --decision=internal
+ trywith 30 --no-nl-ext-tplanes --decision=internal
# this totals up to more than 20 minutes, although notice that smaller bit-widths may quickly fail
trywith 300 --solve-int-as-bv=2 --bitblast=eager --bv-sat-solver=cryptominisat
trywith 300 --solve-int-as-bv=4 --bitblast=eager --bv-sat-solver=cryptominisat
finishwith --solve-int-as-bv=32 --bitblast=eager --bv-sat-solver=cryptominisat
;;
QF_NRA)
- trywith 300 --nl-ext --nl-ext-tplanes --decision=internal
- trywith 300 --nl-ext --nl-ext-tplanes --decision=justification --no-nl-ext-factor
- trywith 30 --nl-ext --nl-ext-tplanes --decision=internal --solve-real-as-int
- finishwith --nl-ext --nl-ext-tplanes --decision=justification
+ trywith 300 --nl-ext-tplanes --decision=internal
+ trywith 300 --nl-ext-tplanes --decision=justification --no-nl-ext-factor
+ trywith 30 --nl-ext-tplanes --decision=internal --solve-real-as-int
+ finishwith --nl-ext-tplanes --decision=justification
;;
# all logics with UF + quantifiers should either fall under this or special cases below
ALIA|AUFLIA|AUFLIRA|AUFNIRA|UF|UFIDL|UFLIA|UFLRA|UFNIA|UFDT|UFDTLIA|AUFDTLIA|AUFBVDTLIA)
read_only = true
help = "use non-terminating tangent plane strategy for non-linear"
+[[option]]
+ name = "nlExtTangentPlanesInterleave"
+ category = "regular"
+ long = "nl-ext-tplanes-interleave"
+ type = "bool"
+ default = "false"
+ help = "interleave tangent plane strategy for non-linear"
+
[[option]]
name = "nlExtTfTangentPlanes"
category = "regular"
if (options::arithRewriteEq()) {
d_earlyTheoryPP = false;
}
+ if (d_logic.isPure(THEORY_ARITH) && !d_logic.areRealsUsed())
+ {
+ if (!options::nlExtTangentPlanesInterleave.wasSetByUser())
+ {
+ Trace("smt") << "setting nlExtTangentPlanesInterleave to true" << endl;
+ options::nlExtTangentPlanesInterleave.set(true);
+ }
+ }
// Set decision mode based on logic (if not set by user)
if(!options::decisionMode.wasSetByUser()) {
// nt_lemmas.size() << std::endl; prioritize lemmas that do not
// introduce new monomials
lemmas_proc = flushLemmas(lemmas);
+
+ if (options::nlExtTangentPlanes() && options::nlExtTangentPlanesInterleave())
+ {
+ lemmas = checkTangentPlanes();
+ lemmas_proc += flushLemmas(lemmas);
+ }
+
if (lemmas_proc > 0) {
Trace("nl-ext") << " ...finished with " << lemmas_proc << " new lemmas."
<< std::endl;
}
//------------------------------------tangent planes
- if (options::nlExtTangentPlanes())
+ if (options::nlExtTangentPlanes() && !options::nlExtTangentPlanesInterleave())
{
lemmas = checkTangentPlanes();
d_waiting_lemmas.insert(