36 squolem->options.set_keepModelFunctions(
true);
37 squolem->options.set_keepResolutionProof(
false);
38 squolem->options.set_freeOnExit(
true);
40 squolem->options.set_debugFilename(
"debug.qdimacs");
41 squolem->options.set_saveDebugFile(
true);
42 squolem->options.set_compressModel(
true);
79 return "Squolem (Certifying)";
103 return P_UNSATISFIABLE;
142 std::vector<Literal> buffer(new_bv.size());
146 buffer[i]=new_bv[i].dimacs();
149 while(i<new_bv.size());
151 if(!
squolem->addClause(buffer))
157 squolem->quantifyVariableInner(
159 quantifier.
type==quantifiert::UNIVERSAL);
171 const quantifiert::typet type,
175 squolem->requantifyVariable(l.
var_no(), type==quantifiert::UNIVERSAL);
180 squolem->options.set_debugFilename(str.c_str());
197 it !=
variable_map.end(),
"variable not found in the variable map");
199 const exprt &sym=it->second.first;
200 unsigned index=it->second.second;
205 extract_expr.negate();
214 std::cout <<
"CACHE HIT for " << l.
dimacs() <<
'\n';
224 WitnessStack *wsp=
squolem->getModelFunction(Literal(l.
dimacs()));
227 if(wsp==NULL || wsp->empty())
232 else if(wsp->pSize<=wsp->nSize)
248 Clause *p=wsp->negWits;
259 for(
unsigned i=0; i<p->size; i++)
261 const Literal &lit=p->literals[i];
270 else if(clause.
operands().size()==1)
277 std::cout <<
"CLAUSE: " << clause <<
'\n';
280 operands.push_back(clause);
290 Clause *p=wsp->posWits;
301 for(
unsigned i=0; i<p->size; i++)
303 const Literal &lit=p->literals[i];
321 std::cout <<
"CUBE: " << cube <<
'\n';
324 operands.push_back(cube);
bool process_clause(const bvt &bv, bvt &dest) const
filter 'true' from clause, eliminate duplicates, recognise trivially satisfied clauses
virtual void set_no_variables(size_t no)
virtual size_t no_variables() const override
Base class for all expressions.
std::vector< exprt > operandst
void add_to_operands(const exprt &expr)
Add the given argument to the end of exprt's operands.
The Boolean constant false.
Unbounded, signed integers (mathematical integers, not bitvectors)
mstreamt & status() const
void set_quantifier(const quantifiert::typet type, const literalt l) override
void set_debug_filename(const std::string &str)
~qbf_squolem_coret() override
const exprt f_get_cnf(WitnessStack *wsp)
void set_no_variables(size_t no) override
void lcnf(const bvt &bv) override
void write_qdimacs_cnf(std::ostream &out) override
const exprt f_get(literalt l) override
function_cachet function_cache
void add_quantifier(const quantifiert &quantifier) override
std::string solver_text() const override
bool is_in_core(literalt l) const override
const exprt f_get_dnf(WitnessStack *wsp)
resultt prop_solve() override
modeltypet m_get(literalt a) const override
tvt l_get(literalt a) const override
virtual size_t no_clauses() const
virtual void add_quantifier(const quantifiert &quantifier)
virtual void set_quantifier(const quantifiert::typet type, const literalt l)
void simplify_extractbits(exprt &expr) const
variable_mapt variable_map
The Boolean constant true.
The type of an expression, extends irept.
std::vector< literalt > bvt
Squolem Backend (with Proofs)
#define INVARIANT_WITH_DIAGNOSTICS(CONDITION, REASON,...)
Same as invariant, with one or more diagnostics attached Diagnostics can be of any type that has a sp...
API to expression classes.
std::string to_string(const string_not_contains_constraintt &expr)
Used for debug printing.