This PR enables the CDCAC solver for quantified logics with reals, but no integers. Also, it disables SyGuS if no integers are used. The regression is a benchmark that is only solved with this new configuration.
}
else if (!isSygus(opts) && logic.isQuantified()
&& (logic.isPure(THEORY_FP)
- || (logic.isPure(THEORY_ARITH) && !logic.isLinear()))
+ || (logic.isPure(THEORY_ARITH) && !logic.isLinear()
+ && logic.areIntegersUsed()))
&& !opts.base.incrementalSolving)
{
opts.quantifiers.sygusInst = true;
}
}
}
+ else if (logic.isQuantified() && logic.isTheoryEnabled(theory::THEORY_ARITH)
+ && logic.areRealsUsed() && !logic.areIntegersUsed())
+ {
+ if (!opts.arith.nlCad && !opts.arith.nlCadWasSetByUser)
+ {
+ opts.arith.nlCad = true;
+ if (!opts.arith.nlExtWasSetByUser)
+ {
+ opts.arith.nlExt = options::NlExtMode::LIGHT;
+ }
+ }
+ }
#else
if (opts.arith.nlCad)
{
regress1/nl/nl-help-unsat-quant.smt2
regress1/nl/nl-unk-quant.smt2
regress1/nl/nl_uf_lalt.smt2
+ regress1/nl/nra-cad-performance.smt2
regress1/nl/ones.smt2
regress1/nl/pinto-model-core-ni.smt2
regress1/nl/poly-1025.smt2
--- /dev/null
+; Source: NRA/keymaera/ETCS-essentials-live-range2.proof-node1388.smt2
+; EXPECT: unsat
+; REQUIRES: poly
+(set-logic NRA)
+(set-info :status unsat)
+(declare-fun zuscore1dollarskuscore2 () Real)
+(declare-fun b () Real)
+(declare-fun Muscore0uscore0dollarmvuscore0 () Real)
+(declare-fun A () Real)
+(declare-fun puscore0dollarskuscore4 () Real)
+(declare-fun ep () Real)
+(declare-fun uscorenuscore0dollarskuscore2 () Real)
+(declare-fun vuscore1dollarskuscore2 () Real)
+(declare-fun vo () Real)
+(assert (not (exists ((Muscore0uscore0dollarmvuscore0 Real)) (=> (and (and (and (and (and (and (> uscorenuscore0dollarskuscore2 0) (>= (+ zuscore1dollarskuscore2 (* (* uscorenuscore0dollarskuscore2 ep) vo)) puscore0dollarskuscore4)) (= vuscore1dollarskuscore2 vo)) (> vo 0)) (> ep 0)) (> b 0)) (>= A 0)) (or (>= (- Muscore0uscore0dollarmvuscore0 zuscore1dollarskuscore2) (+ (/ (* vuscore1dollarskuscore2 vuscore1dollarskuscore2) (* 2 b)) (* (+ (/ A b) 1) (+ (* (/ A 2) (* ep ep)) (* ep vuscore1dollarskuscore2))))) (>= (+ (* (/ 1 2) (* 2 zuscore1dollarskuscore2)) (* (* (- uscorenuscore0dollarskuscore2 1) ep) vo)) puscore0dollarskuscore4))))))
+(check-sat)