3
0
Fork 0
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:
Nikolaj Bjorner 2015-02-08 10:22:06 +01:00
parent f020b7c7b8
commit 8141dadc89
14 changed files with 80 additions and 31 deletions

View file

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

View file

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