Go to the documentation of this file.
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_quantifier(const quantifiert::typet type, const literalt l)
The type of an expression, extends irept.
std::vector< literalt > bvt
mstreamt & status() const
Unbounded, signed integers (mathematical integers, not bitvectors)
Base class for all expressions.
virtual void set_no_variables(size_t no)
virtual void write_qdimacs_cnf(std::ostream &out)
std::string to_string(const string_not_contains_constraintt &expr)
Used for debug printing.
virtual ~qbf_squolem_coret()
#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...
void set_debug_filename(const std::string &str)
virtual const exprt f_get(literalt l)
virtual tvt l_get(literalt a) const
virtual void set_no_variables(size_t no)
virtual void lcnf(const bvt &bv)
virtual void set_quantifier(const quantifiert::typet type, const literalt l)
const exprt f_get_cnf(WitnessStack *wsp)
std::vector< exprt > operandst
The Boolean constant false.
virtual void add_quantifier(const quantifiert &quantifier)
virtual modeltypet m_get(literalt a) const
virtual bool is_in_core(literalt l) const
void simplify_extractbits(exprt &expr) const
void add_to_operands(const exprt &expr)
Add the given argument to the end of exprt's operands.
variable_mapt variable_map
virtual size_t no_variables() const override
virtual size_t no_clauses() const
The Boolean constant true.
const exprt f_get_dnf(WitnessStack *wsp)
virtual resultt prop_solve()
function_cachet function_cache
virtual void add_quantifier(const quantifiert &quantifier)
virtual const std::string solver_text()