Since the internal bitblaster can be way slower, the regressions that would have slow runs when --check-proofs is passed now have the command line that forces the use of the default bitblaster.
opts.bv.bvAssertInput = false;
}
+ // If proofs are required and the user did not specify a specific BV solver,
+ // we make sure to use the proof producing BITBLAST_INTERNAL solver.
+ if (options::produceProofs()
+ && options::bvSolver() != options::BVSolver::BITBLAST_INTERNAL
+ && !opts.bv.bvSolverWasSetByUser
+ && opts.bv.bvSatSolver == options::SatSolverMode::MINISAT)
+ {
+ Notice() << "Forcing internal bit-vector solver due to proof production."
+ << std::endl;
+ opts.bv.bvSolver = options::BVSolver::BITBLAST_INTERNAL;
+ }
+
// whether we want to force safe unsat cores, i.e., if we are in the default
// ASSUMPTIONS mode, since other ones are experimental
bool safeUnsatCores =
+; COMMAND-LINE: --bv-solver=bitblast
; EXPECT: unsat
(set-logic QF_FP)
(declare-fun fpv5 () Float32)
+; COMMAND-LINE: --bv-solver=bitblast
(set-option :incremental false)
(set-info :status unsat)
(set-logic QF_AUFBV)
-; COMMAND-LINE: --cegqi-bv
+; COMMAND-LINE: --cegqi-bv --bv-solver=bitblast
; EXPECT: unsat
(set-logic BV)
(set-info :status unsat)
(assert
(and (bvsle c_main_~i~6 (_ bv3 32)) (bvsle c_main_~i~6 (_ bv2 32))
(exists ((v_nnf_34 (_ BitVec 32)))
- (and (bvsle (bvadd v_nnf_34 (_ bv3 32)) c_main_~k~6)
+ (and (bvsle (bvadd v_nnf_34 (_ bv3 32)) c_main_~k~6)
(bvsle v_nnf_34 (_ bv3 32)) (bvsle c_main_~j~6 (bvadd (bvmul (_ bv2 32) v_nnf_34) (_ bv1 32)))))))
(assert
(not
(and (bvsle c_main_~i~6 (_ bv3 32)) (bvsle c_main_~i~6 (_ bv2 32))
(exists ((v_nnf_30 (_ BitVec 32)))
- (and (bvsle (bvadd v_nnf_30 (_ bv1 32)) c_main_~k~6)
+ (and (bvsle (bvadd v_nnf_30 (_ bv1 32)) c_main_~k~6)
(bvsle v_nnf_30 (_ bv3 32)) (bvsle c_main_~j~6 (bvadd (bvmul (_ bv2 32) v_nnf_30) (_ bv1 32))))))))
(check-sat)
(exit)
-
-; COMMAND-LINE: --incremental
+; COMMAND-LINE: --incremental --bv-solver=bitblast
; EXPECT: sat
; EXPECT: unsat
; EXPECT: unsat