3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-09 12:50:32 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2022-03-18 10:50:21 -07:00
parent 613b0db4cc
commit a623865a82
3 changed files with 13 additions and 11 deletions

View file

@ -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;

View file

@ -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 {

View file

@ -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);
} }