mirror of
https://github.com/Z3Prover/z3
synced 2025-04-22 16:45:31 +00:00
add tracking for reason unknown
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
833a910d57
commit
e37a6dd809
4 changed files with 15 additions and 6 deletions
|
@ -233,11 +233,6 @@ namespace sat {
|
|||
CASSERT("sat_solver", s.check_invariant());
|
||||
TRACE("after_simplifier", s.display(tout); tout << "model_converter:\n"; s.m_mc.display(tout););
|
||||
|
||||
if (!learned) {
|
||||
// perform lookahead simplification
|
||||
lookahead(s).simplify();
|
||||
}
|
||||
|
||||
finalize();
|
||||
|
||||
}
|
||||
|
|
|
@ -57,6 +57,7 @@ namespace sat {
|
|||
m_scope_lvl(0),
|
||||
m_search_lvl(0),
|
||||
m_params(p) {
|
||||
init_reason_unknown();
|
||||
updt_params(p);
|
||||
m_conflicts_since_gc = 0;
|
||||
m_conflicts = 0;
|
||||
|
@ -826,6 +827,7 @@ namespace sat {
|
|||
//
|
||||
// -----------------------
|
||||
lbool solver::check(unsigned num_lits, literal const* lits) {
|
||||
init_reason_unknown();
|
||||
pop_to_base_level();
|
||||
IF_VERBOSE(2, verbose_stream() << "(sat.sat-solver)\n";);
|
||||
SASSERT(at_base_lvl());
|
||||
|
@ -872,6 +874,7 @@ namespace sat {
|
|||
if (check_inconsistent()) return l_false;
|
||||
|
||||
if (m_config.m_max_conflicts == 0) {
|
||||
m_reason_unknown = "sat.max.conflicts";
|
||||
IF_VERBOSE(SAT_VB_LVL, verbose_stream() << "(sat \"abort: max-conflicts = 0\")\n";);
|
||||
return l_undef;
|
||||
}
|
||||
|
@ -884,6 +887,7 @@ namespace sat {
|
|||
return r;
|
||||
|
||||
if (m_conflicts > m_config.m_max_conflicts) {
|
||||
m_reason_unknown = "sat.max.conflicts";
|
||||
IF_VERBOSE(SAT_VB_LVL, verbose_stream() << "(sat \"abort: max-conflicts = " << m_conflicts << "\")\n";);
|
||||
return l_undef;
|
||||
}
|
||||
|
@ -894,6 +898,7 @@ namespace sat {
|
|||
gc();
|
||||
|
||||
if (m_config.m_restart_max <= m_restarts) {
|
||||
m_reason_unknown = "sat.max.restarts";
|
||||
IF_VERBOSE(SAT_VB_LVL, verbose_stream() << "(sat \"abort: max-restarts\")\n";);
|
||||
return l_undef;
|
||||
}
|
||||
|
@ -901,6 +906,7 @@ namespace sat {
|
|||
}
|
||||
}
|
||||
catch (abort_solver) {
|
||||
m_reason_unknown = "sat.giveup";
|
||||
return l_undef;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -132,6 +132,8 @@ namespace sat {
|
|||
unsigned m_search_lvl;
|
||||
literal_vector m_trail;
|
||||
clause_wrapper_vector m_clauses_to_reinit;
|
||||
std::string m_reason_unknown;
|
||||
|
||||
struct scope {
|
||||
unsigned m_trail_lim;
|
||||
unsigned m_clauses_to_reinit_lim;
|
||||
|
@ -351,6 +353,7 @@ namespace sat {
|
|||
literal_vector const& get_core() const { return m_core; }
|
||||
model_converter const & get_model_converter() const { return m_mc; }
|
||||
void set_model(model const& mdl);
|
||||
char const* get_reason_unknown() const { return m_reason_unknown.c_str(); }
|
||||
|
||||
literal select_lookahead(bool_var_vector const& vars);
|
||||
|
||||
|
@ -374,6 +377,7 @@ namespace sat {
|
|||
|
||||
literal_vector m_min_core;
|
||||
bool m_min_core_valid;
|
||||
void init_reason_unknown() { m_reason_unknown = "no reason given"; }
|
||||
void init_assumptions(unsigned num_lits, literal const* lits);
|
||||
void reassert_min_core();
|
||||
void update_min_core();
|
||||
|
|
|
@ -151,6 +151,7 @@ public:
|
|||
m_internalized = true;
|
||||
m_internalized_converted = false;
|
||||
|
||||
init_reason_unknown();
|
||||
r = m_solver.check(m_asms.size(), m_asms.c_ptr());
|
||||
|
||||
switch (r) {
|
||||
|
@ -166,6 +167,7 @@ public:
|
|||
}
|
||||
break;
|
||||
default:
|
||||
set_reason_unknown(m_solver.get_reason_unknown());
|
||||
break;
|
||||
}
|
||||
return r;
|
||||
|
@ -345,7 +347,9 @@ public:
|
|||
return l_true;
|
||||
}
|
||||
|
||||
|
||||
void init_reason_unknown() {
|
||||
m_unknown = "no reason given";
|
||||
}
|
||||
virtual std::string reason_unknown() const {
|
||||
return m_unknown;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue