mirror of
https://github.com/Z3Prover/z3
synced 2025-06-06 22:23:22 +00:00
debugging
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
94416bea52
commit
6f4c873b29
9 changed files with 139 additions and 102 deletions
|
@ -281,8 +281,8 @@ namespace sat {
|
||||||
for (unsigned i = 0; i < num_watch; ++i) {
|
for (unsigned i = 0; i < num_watch; ++i) {
|
||||||
watch_literal(p, p[i]);
|
watch_literal(p, p[i]);
|
||||||
}
|
}
|
||||||
p.set_slack(slack);
|
p.set_slack(slack);
|
||||||
p.set_num_watch(num_watch);
|
p.set_num_watch(num_watch);
|
||||||
}
|
}
|
||||||
TRACE("sat", display(tout << "init watch: ", p, true););
|
TRACE("sat", display(tout << "init watch: ", p, true););
|
||||||
}
|
}
|
||||||
|
@ -381,6 +381,9 @@ namespace sat {
|
||||||
return l_false;
|
return l_false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (index > p.size() || num_watch > p.size()) {
|
||||||
|
std::cout << "size: " << p.size() << "index: " << index << " num watch: " << num_watch << "\n";
|
||||||
|
}
|
||||||
// swap out the watched literal.
|
// swap out the watched literal.
|
||||||
--num_watch;
|
--num_watch;
|
||||||
SASSERT(num_watch > 0);
|
SASSERT(num_watch > 0);
|
||||||
|
@ -1711,6 +1714,7 @@ namespace sat {
|
||||||
}
|
}
|
||||||
|
|
||||||
void card_extension::simplify() {
|
void card_extension::simplify() {
|
||||||
|
return;
|
||||||
s().pop_to_base_level();
|
s().pop_to_base_level();
|
||||||
unsigned trail_sz;
|
unsigned trail_sz;
|
||||||
do {
|
do {
|
||||||
|
|
|
@ -1734,11 +1734,14 @@ namespace sat {
|
||||||
}
|
}
|
||||||
IF_VERBOSE(1, verbose_stream() << "(sat-lookahead :units " << num_units << ")\n";);
|
IF_VERBOSE(1, verbose_stream() << "(sat-lookahead :units " << num_units << ")\n";);
|
||||||
|
|
||||||
if (num_units > 0 && !m_s.inconsistent()) {
|
if (m_s.inconsistent()) return;
|
||||||
|
|
||||||
|
if (num_units > 0) {
|
||||||
m_s.propagate_core(false);
|
m_s.propagate_core(false);
|
||||||
m_s.m_simplifier(false);
|
m_s.m_simplifier(false);
|
||||||
}
|
}
|
||||||
m_lookahead.reset();
|
m_lookahead.reset();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -162,7 +162,7 @@ namespace sat {
|
||||||
for (unsigned i = 0; i < sz; ++i)
|
for (unsigned i = 0; i < sz; ++i)
|
||||||
e.m_clauses.push_back(c[i]);
|
e.m_clauses.push_back(c[i]);
|
||||||
e.m_clauses.push_back(null_literal);
|
e.m_clauses.push_back(null_literal);
|
||||||
TRACE("sat_mc_bug", tout << "adding (wrapper): "; for (literal l : c) tout << l << " "; tout << "\n";);
|
// TRACE("sat_mc_bug", tout << "adding (wrapper): "; for (literal l : c) tout << l << " "; tout << "\n";);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool model_converter::check_invariant(unsigned num_vars) const {
|
bool model_converter::check_invariant(unsigned num_vars) const {
|
||||||
|
|
|
@ -1415,11 +1415,17 @@ namespace sat {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_config.m_lookahead_simplify) {
|
if (m_config.m_lookahead_simplify) {
|
||||||
|
{
|
||||||
lookahead lh(*this);
|
lookahead lh(*this);
|
||||||
lh.simplify();
|
lh.simplify();
|
||||||
|
lh.collect_statistics(m_aux_stats);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
lookahead lh(*this);
|
||||||
lh.scc();
|
lh.scc();
|
||||||
lh.collect_statistics(m_aux_stats);
|
lh.collect_statistics(m_aux_stats);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sort_watch_lits();
|
sort_watch_lits();
|
||||||
CASSERT("sat_simplify_bug", check_invariant());
|
CASSERT("sat_simplify_bug", check_invariant());
|
||||||
|
@ -1450,7 +1456,7 @@ namespace sat {
|
||||||
m_next_simplify = m_conflicts_since_init + m_config.m_simplify_max;
|
m_next_simplify = m_conflicts_since_init + m_config.m_simplify_max;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 1
|
#if 0
|
||||||
static unsigned file_no = 0;
|
static unsigned file_no = 0;
|
||||||
#pragma omp critical (print_sat)
|
#pragma omp critical (print_sat)
|
||||||
{
|
{
|
||||||
|
|
|
@ -28,6 +28,19 @@ bound_manager::~bound_manager() {
|
||||||
reset();
|
reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bound_manager* bound_manager::translate(ast_manager& dst_m) {
|
||||||
|
bound_manager* result = alloc(bound_manager, dst_m);
|
||||||
|
ast_translation tr(m(), dst_m);
|
||||||
|
expr_dependency_translation edtr(tr);
|
||||||
|
for (auto& kv : m_lowers) result->m_lowers.insert(tr(kv.m_key), kv.m_value);
|
||||||
|
for (auto& kv : m_uppers) result->m_uppers.insert(tr(kv.m_key), kv.m_value);
|
||||||
|
for (auto& kv : m_lower_deps) result->m_lower_deps.insert(tr(kv.m_key), edtr(kv.m_value));
|
||||||
|
for (auto& kv : m_upper_deps) result->m_upper_deps.insert(tr(kv.m_key), edtr(kv.m_value));
|
||||||
|
for (expr* e : m_bounded_vars) result->m_bounded_vars.push_back(tr(e));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static decl_kind swap_decl(decl_kind k) {
|
static decl_kind swap_decl(decl_kind k) {
|
||||||
switch (k) {
|
switch (k) {
|
||||||
case OP_LE: return OP_GE;
|
case OP_LE: return OP_GE;
|
||||||
|
|
|
@ -47,6 +47,8 @@ public:
|
||||||
bound_manager(ast_manager & m);
|
bound_manager(ast_manager & m);
|
||||||
~bound_manager();
|
~bound_manager();
|
||||||
|
|
||||||
|
bound_manager* translate(ast_manager& dst_m);
|
||||||
|
|
||||||
ast_manager & m() const { return m_util.get_manager(); }
|
ast_manager & m() const { return m_util.get_manager(); }
|
||||||
|
|
||||||
void operator()(goal const & g);
|
void operator()(goal const & g);
|
||||||
|
|
|
@ -73,8 +73,17 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual solver* translate(ast_manager& m, params_ref const& p) {
|
virtual solver* translate(ast_manager& dst_m, params_ref const& p) {
|
||||||
return alloc(bounded_int2bv_solver, m, p, m_solver->translate(m, p));
|
flush_assertions();
|
||||||
|
bounded_int2bv_solver* result = alloc(bounded_int2bv_solver, dst_m, p, m_solver->translate(dst_m, p));
|
||||||
|
ast_translation tr(m, dst_m);
|
||||||
|
for (auto& kv : m_int2bv) result->m_int2bv.insert(tr(kv.m_key), tr(kv.m_value));
|
||||||
|
for (auto& kv : m_bv2int) result->m_bv2int.insert(tr(kv.m_key), tr(kv.m_value));
|
||||||
|
for (auto& kv : m_bv2offset) result->m_bv2offset.insert(tr(kv.m_key), kv.m_value);
|
||||||
|
for (func_decl* f : m_bv_fns) result->m_bv_fns.push_back(tr(f));
|
||||||
|
for (func_decl* f : m_int_fns) result->m_int_fns.push_back(tr(f));
|
||||||
|
for (bound_manager* b : m_bounds) result->m_bounds.push_back(b->translate(dst_m));
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void assert_expr(expr * t) {
|
virtual void assert_expr(expr * t) {
|
||||||
|
|
|
@ -49,7 +49,7 @@ public:
|
||||||
virtual ~pb2bv_solver() {}
|
virtual ~pb2bv_solver() {}
|
||||||
|
|
||||||
virtual solver* translate(ast_manager& m, params_ref const& p) {
|
virtual solver* translate(ast_manager& m, params_ref const& p) {
|
||||||
|
flush_assertions();
|
||||||
return alloc(pb2bv_solver, m, p, m_solver->translate(m, p));
|
return alloc(pb2bv_solver, m, p, m_solver->translate(m, p));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue