mirror of
https://github.com/Z3Prover/z3
synced 2025-08-09 04:31:24 +00:00
na
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
613b0db4cc
commit
a623865a82
3 changed files with 13 additions and 11 deletions
|
@ -40,9 +40,6 @@ namespace polysat {
|
||||||
|
|
||||||
bool forbidden_intervals::get_interval_mul_ovfl(signed_constraint const& c, pvar v, fi_record& fi) {
|
bool forbidden_intervals::get_interval_mul_ovfl(signed_constraint const& c, pvar v, fi_record& fi) {
|
||||||
|
|
||||||
|
|
||||||
std::cout << "FORBIDDEN v" << v << "\n";
|
|
||||||
|
|
||||||
backtrack _backtrack(fi.side_cond);
|
backtrack _backtrack(fi.side_cond);
|
||||||
|
|
||||||
fi.coeff = 1;
|
fi.coeff = 1;
|
||||||
|
|
|
@ -598,15 +598,15 @@ namespace polysat {
|
||||||
while (search_it.next()) {
|
while (search_it.next()) {
|
||||||
auto& item = *search_it;
|
auto& item = *search_it;
|
||||||
search_it.set_resolved();
|
search_it.set_resolved();
|
||||||
LOG_H2("Working on " << search_item_pp(m_search, item));
|
|
||||||
if (item.is_assignment()) {
|
if (item.is_assignment()) {
|
||||||
// Resolve over variable assignment
|
// Resolve over variable assignment
|
||||||
pvar v = item.var();
|
pvar v = item.var();
|
||||||
LOG(m_justification[v]);
|
|
||||||
if (!m_conflict.contains_pvar(v) && !m_conflict.is_bailout()) {
|
if (!m_conflict.contains_pvar(v) && !m_conflict.is_bailout()) {
|
||||||
m_search.pop_assignment();
|
m_search.pop_assignment();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
LOG_H2("Working on " << search_item_pp(m_search, item));
|
||||||
|
LOG(m_justification[v]);
|
||||||
LOG("Conflict: " << m_conflict);
|
LOG("Conflict: " << m_conflict);
|
||||||
inc_activity(v);
|
inc_activity(v);
|
||||||
justification& j = m_justification[v];
|
justification& j = m_justification[v];
|
||||||
|
@ -621,10 +621,12 @@ namespace polysat {
|
||||||
SASSERT(item.is_boolean());
|
SASSERT(item.is_boolean());
|
||||||
sat::literal const lit = item.lit();
|
sat::literal const lit = item.lit();
|
||||||
sat::bool_var const var = lit.var();
|
sat::bool_var const var = lit.var();
|
||||||
LOG(bool_justification_pp(m_bvars, lit));
|
|
||||||
LOG("Literal " << lit << " is " << lit2cnstr(lit));
|
|
||||||
if (!m_conflict.is_bmarked(var))
|
if (!m_conflict.is_bmarked(var))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
LOG_H2("Working on " << search_item_pp(m_search, item));
|
||||||
|
LOG(bool_justification_pp(m_bvars, lit));
|
||||||
|
LOG("Literal " << lit << " is " << lit2cnstr(lit));
|
||||||
LOG("Conflict: " << m_conflict);
|
LOG("Conflict: " << m_conflict);
|
||||||
if (m_bvars.is_assumption(var))
|
if (m_bvars.is_assumption(var))
|
||||||
continue;
|
continue;
|
||||||
|
@ -1000,7 +1002,10 @@ namespace polysat {
|
||||||
if (item.is_assignment()) {
|
if (item.is_assignment()) {
|
||||||
pvar v = item.var();
|
pvar v = item.var();
|
||||||
auto const& j = m_justification[v];
|
auto const& j = m_justification[v];
|
||||||
out << "\t" << assignment_pp(*this, v, get_value(v)) << " @" << j.level();
|
out << "\t" << assignment_pp(*this, v, get_value(v)) << " @" << j.level() << " ";
|
||||||
|
if (j.is_propagation())
|
||||||
|
for (auto const& c : m_viable.get_constraints(v))
|
||||||
|
out << c << " ";
|
||||||
out << "\n";
|
out << "\n";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -156,15 +156,15 @@ namespace polysat {
|
||||||
};
|
};
|
||||||
|
|
||||||
class constraints {
|
class constraints {
|
||||||
viable& v;
|
viable const& v;
|
||||||
pvar var;
|
pvar var;
|
||||||
public:
|
public:
|
||||||
constraints(viable& v, pvar var) : v(v), var(var) {}
|
constraints(viable const& v, pvar var) : v(v), var(var) {}
|
||||||
iterator begin() const { return iterator(v.m_units[var], false); }
|
iterator begin() const { return iterator(v.m_units[var], false); }
|
||||||
iterator end() const { return iterator(v.m_units[var], true); }
|
iterator end() const { return iterator(v.m_units[var], true); }
|
||||||
};
|
};
|
||||||
|
|
||||||
constraints get_constraints(pvar v) {
|
constraints get_constraints(pvar v) const {
|
||||||
return constraints(*this, v);
|
return constraints(*this, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue