mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 20:05:51 +00:00
running updates to bv_solver (#4674)
* 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> * 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> * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * dbg Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * bv Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * drat and fresh Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * move ackerman functionality Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * debugability Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * towards debugability Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * missing file 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> * remove csp Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
4d1a2a2784
commit
d02b0cde7a
63 changed files with 3060 additions and 3095 deletions
|
@ -65,15 +65,24 @@ namespace euf {
|
|||
return ctx.get_region();
|
||||
}
|
||||
|
||||
enode* th_euf_solver::get_enode(expr* e) const {
|
||||
trail_stack<euf::solver>& th_euf_solver::get_trail_stack() {
|
||||
return ctx.get_trail_stack();
|
||||
}
|
||||
|
||||
enode* th_euf_solver::expr2enode(expr* e) const {
|
||||
return ctx.get_enode(e);
|
||||
}
|
||||
|
||||
sat::literal th_euf_solver::get_literal(expr* e) const {
|
||||
sat::literal th_euf_solver::expr2literal(expr* e) const {
|
||||
return ctx.get_literal(e);
|
||||
}
|
||||
|
||||
expr* th_euf_solver::bool_var2expr(sat::bool_var v) const {
|
||||
return ctx.bool_var2expr(v);
|
||||
}
|
||||
|
||||
theory_var th_euf_solver::mk_var(enode * n) {
|
||||
force_push();
|
||||
SASSERT(!is_attached_to_var(n));
|
||||
euf::theory_var v = m_var2enode.size();
|
||||
m_var2enode.push_back(n);
|
||||
|
@ -82,7 +91,7 @@ namespace euf {
|
|||
|
||||
bool th_euf_solver::is_attached_to_var(enode* n) const {
|
||||
theory_var v = n->get_th_var(get_id());
|
||||
return v != null_theory_var && get_enode(v) == n;
|
||||
return v != null_theory_var && var2enode(v) == n;
|
||||
}
|
||||
|
||||
theory_var th_euf_solver::get_th_var(expr* e) const {
|
||||
|
@ -99,4 +108,35 @@ namespace euf {
|
|||
m_var2enode_lim.shrink(new_lvl);
|
||||
}
|
||||
|
||||
unsigned th_euf_solver::lazy_pop(unsigned n) {
|
||||
if (n <= m_num_scopes) {
|
||||
m_num_scopes -= n;
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
n -= m_num_scopes;
|
||||
pop(n);
|
||||
return n;
|
||||
}
|
||||
}
|
||||
|
||||
void th_euf_solver::add_unit(sat::literal lit) {
|
||||
ctx.s().add_clause(1, &lit, sat::status::th(m_is_redundant, get_id()));
|
||||
}
|
||||
|
||||
void th_euf_solver::add_clause(sat::literal a, sat::literal b) {
|
||||
sat::literal lits[2] = { a, b };
|
||||
ctx.s().add_clause(2, lits, sat::status::th(m_is_redundant, get_id()));
|
||||
}
|
||||
|
||||
void th_euf_solver::add_clause(sat::literal a, sat::literal b, sat::literal c) {
|
||||
sat::literal lits[3] = { a, b, c };
|
||||
ctx.s().add_clause(3, lits, sat::status::th(m_is_redundant, get_id()));
|
||||
}
|
||||
|
||||
void th_euf_solver::add_clause(sat::literal a, sat::literal b, sat::literal c, sat::literal d) {
|
||||
sat::literal lits[4] = { a, b, c, d };
|
||||
ctx.s().add_clause(4, lits, sat::status::th(m_is_redundant, get_id()));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue