PR #2786 introduced a pure virtual method `TBitblaster::getSatSolver()`.
`AigBitblaster` was missing the implementation of that method. This
commit adds an implementation that simply returns the underlying SAT
solver. Note: The method is currently only used for proofs and CVC4 does
not support proofs in combination with ABC. To make this explicit, the
commit also adds a check in `SmtEngine::setDefaults()` that makes sure
that we are not trying to produce proofs with `--bitblast-aig` (before
the commit, we just crashed with an assertion failure/null pointer
dereference).
<< endl;
setOption("global-negate", false);
}
+
+ if (options::bitvectorAig())
+ {
+ throw OptionException(
+ "bitblast-aig not supported with unsat cores/proofs");
+ }
}
else
{
extern "C" {
#include "base/abc/abc.h"
#include "base/main/main.h"
+#include "prop/cnf_stream.h"
#include "sat/cnf/cnf.h"
extern Aig_Man_t* Abc_NtkToDar(Abc_Ntk_t* pNtk, int fExors, int fRegisters);
Unreachable();
}
+ prop::SatSolver* getSatSolver() override { return d_satSolver.get(); }
+
+ void setProofLog(proof::BitVectorProof* bvp) override
+ {
+ // Proofs are currently not supported with ABC
+ Unimplemented();
+ }
+
class Statistics
{
public:
bool hasBBTerm(TNode node) const;
void getBBTerm(TNode node, Bits& bits) const;
virtual void storeBBTerm(TNode term, const Bits& bits);
- void setProofLog(proof::BitVectorProof* bvp);
+ virtual void setProofLog(proof::BitVectorProof* bvp);
/**
* Return a constant representing the value of a in the model.