void OptionsHandler::proofEnabledBuild(std::string option, bool value)
{
-#ifndef CVC4_PROOF
+#ifdef CVC4_PROOF
+ if (value && options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER
+ && options::bvSatSolver() != theory::bv::SAT_SOLVER_MINISAT)
+ {
+ throw OptionException(
+ "Eager BV proofs only supported when minisat is used");
+ }
+#else
if(value) {
std::stringstream ss;
ss << "option `" << option << "' requires a proofs-enabled build of CVC4; this binary was not built with proof support";
Debug("pf::bv") << "BitVectorProof::registerTerm( " << term << " )"
<< std::endl;
- if (options::lfscLetification() && term.isConst()) {
+ if (options::lfscLetification() && term.isConst()
+ && term.getType().isBitVector())
+ {
if (d_constantLetMap.find(term) == d_constantLetMap.end()) {
std::ostringstream name;
name << "letBvc" << d_constantLetMap.size();
std::vector<Expr>::const_iterator it = d_bbTerms.begin();
std::vector<Expr>::const_iterator end = d_bbTerms.end();
- Assert(options::bitblastMode() != theory::bv::BITBLAST_MODE_EAGER);
-
for (; it != end; ++it) {
if (d_usedBB.find(*it) == d_usedBB.end()) {
Debug("pf::bv") << "\t" << *it << "\t(UNUSED)" << std::endl;
void LFSCProof::toStream(std::ostream& out) const
{
- Assert(options::bitblastMode() != theory::bv::BITBLAST_MODE_EAGER);
-
Assert(!d_satProof->proofConstructed());
d_satProof->constructProof();
d_theoryProof->printTheoryLemmas(used_lemmas, out, paren, globalLetMap);
Debug("pf::pm") << "Proof manager: printing theory lemmas DONE!" << std::endl;
+ out << ";; Printing final unsat proof \n";
if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER && ProofManager::getBitVectorProof()) {
proof::LFSCProofPrinter::printResolutionEmptyClause(
ProofManager::getBitVectorProof()->getSatProof(), out, paren);
void EagerBitblaster::bbAtom(TNode node)
{
node = node.getKind() == kind::NOT ? node[0] : node;
- if (node.getKind() == kind::BITVECTOR_BITOF) return;
- if (hasBBAtom(node))
+ if (node.getKind() == kind::BITVECTOR_BITOF
+ || node.getKind() == kind::CONST_BOOLEAN || hasBBAtom(node))
{
return;
}
-; COMMAND-LINE: --bitblast=eager --no-check-models --no-check-proofs --no-check-unsat-cores
+; COMMAND-LINE: --bitblast=eager --no-check-models --no-check-unsat-cores
; EXPECT: sat
(set-logic QF_UFBV)
(set-info :smt-lib-version 2.0)
-; COMMAND-LINE: --bitblast=eager --no-check-models --no-check-proofs --no-check-unsat-cores
+; COMMAND-LINE: --bitblast=eager --no-check-models --no-check-unsat-cores
; EXPECT: unsat
(set-logic QF_UFBV)
(set-info :smt-lib-version 2.0)
-; COMMAND-LINE: --bitblast=eager --no-check-proofs
+; COMMAND-LINE: --bitblast=eager
; EXPECT: unsat
(set-logic QF_BV)
(set-info :status unsat)