mirror of
https://github.com/Z3Prover/z3
synced 2025-04-07 18:05:21 +00:00
This commit is contained in:
parent
7cda90c06a
commit
ae6aea7a4d
|
@ -193,8 +193,8 @@ namespace euf {
|
|||
}
|
||||
s().mk_clause(lits, st);
|
||||
if (relevancy_enabled())
|
||||
add_root(lits.size(), lits.data());
|
||||
}
|
||||
add_root(lits);
|
||||
}
|
||||
else {
|
||||
// g(f(x_i)) = x_i
|
||||
// f(x_1) = a + .... + f(x_n) = a >= 2
|
||||
|
|
|
@ -357,8 +357,11 @@ namespace euf {
|
|||
// relevancy
|
||||
bool relevancy_enabled() const { return get_config().m_relevancy_lvl > 0; }
|
||||
void add_root(unsigned n, sat::literal const* lits);
|
||||
void add_root(sat::literal_vector const& lits) { add_root(lits.size(), lits.data()); }
|
||||
void add_root(sat::literal lit) { add_root(1, &lit); }
|
||||
void add_root(sat::literal a, sat::literal b) { sat::literal lits[2] = {a, b}; add_root(2, lits); }
|
||||
void add_aux(unsigned n, sat::literal const* lits);
|
||||
void add_aux(sat::literal a, sat::literal b) { sat::literal lits[2] = {a, b}; add_aux(2, lits); }
|
||||
void add_aux(sat::literal a, sat::literal b) { sat::literal lits[2] = {a, b}; add_aux(2, lits); }
|
||||
void track_relevancy(sat::bool_var v);
|
||||
bool is_relevant(expr* e) const;
|
||||
bool is_relevant(enode* n) const;
|
||||
|
|
|
@ -42,8 +42,12 @@ namespace q {
|
|||
|
||||
auto const& exp = expand(q);
|
||||
if (exp.size() > 1 && is_forall(q)) {
|
||||
for (expr* e : exp)
|
||||
add_clause(~l, ctx.internalize(e, l.sign(), false, false));
|
||||
for (expr* e : exp) {
|
||||
sat::literal lit = ctx.internalize(e, l.sign(), false, false);
|
||||
add_clause(~l, lit);
|
||||
if (ctx.relevancy_enabled())
|
||||
ctx.add_root(~l, lit);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (exp.size() > 1 && is_exists(q)) {
|
||||
|
@ -52,6 +56,8 @@ namespace q {
|
|||
for (expr* e : exp)
|
||||
lits.push_back(ctx.internalize(e, l.sign(), false, false));
|
||||
add_clause(lits);
|
||||
if (ctx.relevancy_enabled())
|
||||
ctx.add_root(lits);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue