mirror of
https://github.com/Z3Prover/z3
synced 2025-10-04 06:53:58 +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
|
@ -28,6 +28,19 @@ bound_manager::~bound_manager() {
|
|||
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) {
|
||||
switch (k) {
|
||||
case OP_LE: return OP_GE;
|
||||
|
|
|
@ -47,6 +47,8 @@ public:
|
|||
bound_manager(ast_manager & m);
|
||||
~bound_manager();
|
||||
|
||||
bound_manager* translate(ast_manager& dst_m);
|
||||
|
||||
ast_manager & m() const { return m_util.get_manager(); }
|
||||
|
||||
void operator()(goal const & g);
|
||||
|
|
|
@ -73,8 +73,17 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
virtual solver* translate(ast_manager& m, params_ref const& p) {
|
||||
return alloc(bounded_int2bv_solver, m, p, m_solver->translate(m, p));
|
||||
virtual solver* translate(ast_manager& dst_m, params_ref const& 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) {
|
||||
|
|
|
@ -50,7 +50,7 @@ public:
|
|||
|
||||
virtual ~enum2bv_solver() {}
|
||||
|
||||
virtual solver* translate(ast_manager& m, params_ref const& p) {
|
||||
virtual solver* translate(ast_manager& m, params_ref const& p) {
|
||||
return alloc(enum2bv_solver, m, p, m_solver->translate(m, p));
|
||||
}
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ public:
|
|||
virtual ~pb2bv_solver() {}
|
||||
|
||||
virtual solver* translate(ast_manager& m, params_ref const& p) {
|
||||
|
||||
flush_assertions();
|
||||
return alloc(pb2bv_solver, m, p, m_solver->translate(m, p));
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue