}
else if (!opts.base.incrementalSolving)
{
+ // if not incremental, we rely on ackermann to eliminate other theories.
opts.smt.ackermann = true;
}
+ else if (logic.isQuantified() || !logic.isPure(THEORY_BV))
+ {
+ // requested bitblast=eager in incremental mode, must be QF_BV only.
+ throw OptionException(
+ std::string("Eager bit-blasting is only support in incremental mode "
+ "if the logic is quantifier-free bit-vectors"));
+ }
}
if (opts.smt.solveIntAsBV > 0)
}
notifyModifyOption("ackermann", "false", "model generation");
opts.smt.ackermann = false;
+ // we are not relying on ackermann to eliminate theories in this case
+ Assert(opts.bv.bitblastMode != options::BitblastMode::EAGER);
}
if (opts.smt.ackermann)
regress0/bv/issue5396.smt2
regress0/bv/issue8159-1-rewrite-bvneg.smt2
regress0/bv/issue8240-rewrite-bvnot.smt2
+ regress0/bv/issue8654-bitblast-quant-exc.smt2
regress0/bv/mul-neg-unsat.smt2
regress0/bv/mul-negpow2.smt2
regress0/bv/mult-pow2-negative.smt2
--- /dev/null
+; SCRUBBER: sed -e 's/(error.*/error/'
+; COMMAND-LINE: -i --bitblast=eager
+; EXPECT: error
+; EXIT: 1
+(set-logic BV)
+(declare-fun a () Bool)
+(declare-fun b () Bool)
+(assert (forall ((c Bool) (d Bool)) (or (and a d) (and b d) (and c d))))
+(check-sat)