3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 00:55:31 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2023-12-25 16:36:00 -08:00
parent f51e200dd8
commit b82d4c352b
2 changed files with 4 additions and 16 deletions

View file

@ -218,7 +218,7 @@ namespace polysat {
// If no saturation propagation was possible, explain the conflict using the variable assignment.
m_unsat_core = explain_eval(get_constraint(conflict_idx));
m_unsat_core.push_back(m_constraint_index[conflict_idx.id].d);
m_unsat_core.push_back(get_dependency(conflict_idx));
propagate_unsat_core();
return sat::check_result::CR_CONTINUE;
}
@ -233,7 +233,7 @@ namespace polysat {
for (auto v : sc.vars()) {
if (!is_assigned(v))
continue;
auto new_level = s.level(m_constraint_index[m_justification[v].id].d);
auto new_level = s.level(get_dependency(m_justification[v]));
if (new_level < lvl)
continue;
if (new_level > lvl)
@ -412,7 +412,7 @@ namespace polysat {
dependency_vector deps;
for (auto v : sc.vars())
if (is_assigned(v))
deps.push_back(m_constraint_index[m_justification[v].id].d);
deps.push_back(get_dependency(m_justification[v]));
return deps;
}
@ -443,7 +443,7 @@ namespace polysat {
for (auto const& [sc, d, value] : m_constraint_index)
out << sc << " " << d << " := " << value << "\n";
for (unsigned i = 0; i < m_vars.size(); ++i)
out << m_vars[i] << " := " << m_values[i] << " " << m_constraint_index[m_justification[i].id].d << "\n";
out << m_vars[i] << " := " << m_values[i] << " " << get_dependency(m_justification[i]) << "\n";
m_var_queue.display(out << "vars ") << "\n";
return out;
}

View file

@ -111,8 +111,6 @@ namespace polysat {
ptr_vector<entry> m_equal_lin; // entries that have non-unit multipliers, but are equal
ptr_vector<entry> m_diseq_lin; // entries that have distinct non-zero multipliers
ptr_vector<entry> m_explain; // entries that explain the current propagation or conflict
constraint_or_dependency_list m_core; // forbidden interval core
bool m_has_core = false;
bool well_formed(entry* e);
bool well_formed(layers const& ls);
@ -159,16 +157,6 @@ namespace polysat {
*/
dependency_vector explain();
/*
* flag whether there is a forbidden interval core
*/
bool has_core() const { return m_has_core; }
/*
* Retrieve lemma corresponding to forbidden interval constraints
*/
constraint_or_dependency_list const& get_core() { SASSERT(m_has_core); return m_core; }
/*
* Register constraint at index 'idx' as unitary in v.
*/