mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 09:05:31 +00:00
break on small cores
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
f020b7c7b8
commit
8141dadc89
14 changed files with 80 additions and 31 deletions
|
@ -370,7 +370,12 @@ namespace smt {
|
|||
tout << "conflict_lvl: " << m_conflict_lvl << " scope_lvl: " << m_ctx.get_scope_level() << " base_lvl: " << m_ctx.get_base_level()
|
||||
<< " search_lvl: " << m_ctx.get_search_level() << "\n";
|
||||
tout << "js.kind: " << js.get_kind() << "\n";
|
||||
m_ctx.display_literal(tout, consequent); tout << "\n";);
|
||||
tout << "consequent: " << consequent << "\n";
|
||||
for (unsigned i = 0; i < m_assigned_literals.size(); ++i) {
|
||||
tout << m_assigned_literals[i] << " ";
|
||||
}
|
||||
tout << "\n";
|
||||
);
|
||||
|
||||
// m_conflict_lvl can be smaller than m_ctx.get_search_level() when:
|
||||
// there are user level scopes created using the Z3 API, and
|
||||
|
@ -1310,8 +1315,11 @@ namespace smt {
|
|||
}
|
||||
|
||||
void conflict_resolution::process_antecedent_for_unsat_core(literal antecedent) {
|
||||
TRACE("conflict", tout << "processing antecedent: "; m_ctx.display_literal(tout, antecedent); tout << "\n";);
|
||||
bool_var var = antecedent.var();
|
||||
TRACE("conflict", tout << "processing antecedent: ";
|
||||
m_ctx.display_literal_info(tout << antecedent << " ", antecedent);
|
||||
tout << (m_ctx.is_marked(var)?"marked":"not marked");
|
||||
tout << "\n";);
|
||||
|
||||
if (!m_ctx.is_marked(var)) {
|
||||
m_ctx.set_mark(var);
|
||||
|
@ -1341,13 +1349,14 @@ namespace smt {
|
|||
|
||||
b_justification js = conflict;
|
||||
literal consequent = false_literal;
|
||||
if (not_l != null_literal)
|
||||
if (not_l != null_literal) {
|
||||
consequent = ~not_l;
|
||||
}
|
||||
|
||||
int idx = skip_literals_above_conflict_level();
|
||||
|
||||
if (not_l != null_literal)
|
||||
process_antecedent_for_unsat_core(not_l);
|
||||
process_antecedent_for_unsat_core(consequent);
|
||||
|
||||
if (m_assigned_literals.empty()) {
|
||||
goto end_unsat_core;
|
||||
|
|
|
@ -103,9 +103,9 @@ namespace smt {
|
|||
void context::display_literal_info(std::ostream & out, literal l) const {
|
||||
l.display_compact(out, m_bool_var2expr.c_ptr());
|
||||
if (l.sign())
|
||||
out << " (not " << mk_bounded_pp(bool_var2expr(l.var()), m_manager, 10) << ")\n";
|
||||
out << " (not " << mk_bounded_pp(bool_var2expr(l.var()), m_manager, 10) << ") ";
|
||||
else
|
||||
out << " " << mk_bounded_pp(bool_var2expr(l.var()), m_manager, 10) << "\n";
|
||||
out << " " << mk_bounded_pp(bool_var2expr(l.var()), m_manager, 10) << " ";
|
||||
out << "relevant: " << is_relevant(bool_var2expr(l.var())) << ", val: " << get_assignment(l) << "\n";
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue