mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 20:05:51 +00:00
model refactor (#4723)
* refactor model fixing Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * missing cond macro Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * file Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * file Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * add macros dependency Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * deps and debug Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * add dependency to normal forms Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * na Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * build issues Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * compile Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fix leal regression * complete model fixer Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fold back private functionality to model_finder Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * avoid duplicate fixed callbacks Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
6cc52e04c3
commit
fa58a36b9f
42 changed files with 2060 additions and 1494 deletions
|
@ -107,6 +107,11 @@ namespace euf {
|
|||
enode* n = enode::mk(m_region, f, num_args, args);
|
||||
m_nodes.push_back(n);
|
||||
m_exprs.push_back(f);
|
||||
if (is_app(f) && num_args > 0) {
|
||||
unsigned id = to_app(f)->get_decl()->get_decl_id();
|
||||
m_decl2enodes.reserve(id+1);
|
||||
m_decl2enodes[id].push_back(n);
|
||||
}
|
||||
m_expr2enode.setx(f->get_id(), n, nullptr);
|
||||
push_node(n);
|
||||
for (unsigned i = 0; i < num_args; ++i)
|
||||
|
@ -114,9 +119,15 @@ namespace euf {
|
|||
return n;
|
||||
}
|
||||
|
||||
enode_vector const& egraph::enodes_of(func_decl* f) {
|
||||
unsigned id = f->get_decl_id();
|
||||
if (id < m_decl2enodes.size())
|
||||
return m_decl2enodes[id];
|
||||
return m_empty_enodes;
|
||||
}
|
||||
|
||||
enode_bool_pair egraph::insert_table(enode* p) {
|
||||
auto rc = m_table.insert(p);
|
||||
enode* p_other = rc.first;
|
||||
p->m_cg = rc.first;
|
||||
return rc;
|
||||
}
|
||||
|
@ -338,6 +349,8 @@ namespace euf {
|
|||
|
||||
m_expr2enode[e->get_id()] = nullptr;
|
||||
n->~enode();
|
||||
if (is_app(e) && n->num_args() > 0)
|
||||
m_decl2enodes[to_app(e)->get_decl()->get_decl_id()].pop_back();
|
||||
m_nodes.pop_back();
|
||||
m_exprs.pop_back();
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue