mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 20:05:51 +00:00
user solver (#4709)
* user solver Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
7c2bdfe3fb
commit
43db7df2b5
19 changed files with 420 additions and 41 deletions
|
@ -33,7 +33,6 @@ namespace euf {
|
|||
m_trail(*this),
|
||||
m_rewriter(m),
|
||||
m_unhandled_functions(m),
|
||||
m_solver(nullptr),
|
||||
m_lookahead(nullptr),
|
||||
m_to_m(&m),
|
||||
m_to_si(&si),
|
||||
|
@ -670,4 +669,27 @@ namespace euf {
|
|||
return true;
|
||||
}
|
||||
|
||||
void solver::user_propagate_init(
|
||||
void* ctx,
|
||||
::solver::push_eh_t& push_eh,
|
||||
::solver::pop_eh_t& pop_eh,
|
||||
::solver::fresh_eh_t& fresh_eh) {
|
||||
m_user_propagator = alloc(user::solver, *this);
|
||||
m_user_propagator->add(ctx, push_eh, pop_eh, fresh_eh);
|
||||
for (unsigned i = m_scopes.size(); i-- > 0; )
|
||||
m_user_propagator->push();
|
||||
m_solvers.push_back(m_user_propagator);
|
||||
m_id2solver.setx(m_user_propagator->get_id(), m_user_propagator, nullptr);
|
||||
}
|
||||
|
||||
bool solver::watches_fixed(enode* n) const {
|
||||
return m_user_propagator && m_user_propagator->has_fixed() && n->get_th_var(m_user_propagator->get_id()) != null_theory_var;
|
||||
}
|
||||
|
||||
void solver::assign_fixed(enode* n, expr* val, unsigned sz, literal const* explain) {
|
||||
theory_var v = n->get_th_var(m_user_propagator->get_id());
|
||||
m_user_propagator->new_fixed_eh(v, val, sz, explain);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue