mirror of
https://github.com/Z3Prover/z3
synced 2025-10-03 14:33:56 +00:00
add EUF plugin framework.
plugin setting allows adding equality saturation within the E-graph propagation without involving externalizing theory solver dispatch. It makes equality saturation independent of SAT integration. Add a special relation operator to support ad-hoc AC symbols.
This commit is contained in:
parent
5784c2da79
commit
b52fd8d954
28 changed files with 3063 additions and 68 deletions
|
@ -207,6 +207,7 @@ namespace euf {
|
|||
enode* get_root() const { return m_root; }
|
||||
expr* get_expr() const { return m_expr; }
|
||||
sort* get_sort() const { return m_expr->get_sort(); }
|
||||
enode* get_interpreted() const { return get_root(); }
|
||||
app* get_app() const { return to_app(m_expr); }
|
||||
func_decl* get_decl() const { return is_app(m_expr) ? to_app(m_expr)->get_decl() : nullptr; }
|
||||
unsigned get_expr_id() const { return m_expr->get_id(); }
|
||||
|
@ -216,6 +217,10 @@ namespace euf {
|
|||
bool children_are_roots() const;
|
||||
enode* get_next() const { return m_next; }
|
||||
|
||||
enode* get_target() const { return m_target; }
|
||||
justification get_justification() const { return m_justification; }
|
||||
justification get_lit_justification() const { return m_lit_justification; }
|
||||
|
||||
bool has_lbl_hash() const { return m_lbl_hash >= 0; }
|
||||
unsigned char get_lbl_hash() const {
|
||||
SASSERT(m_lbl_hash >= 0 && static_cast<unsigned>(m_lbl_hash) < approx_set_traits<unsigned long long>::capacity);
|
||||
|
@ -229,6 +234,7 @@ namespace euf {
|
|||
|
||||
theory_var get_th_var(theory_id id) const { return m_th_vars.find(id); }
|
||||
theory_var get_closest_th_var(theory_id id) const;
|
||||
enode* get_closest_th_node(theory_id id);
|
||||
bool is_attached_to(theory_id id) const { return get_th_var(id) != null_theory_var; }
|
||||
bool has_th_vars() const { return !m_th_vars.empty(); }
|
||||
bool has_one_th_var() const { return !m_th_vars.empty() && !m_th_vars.get_next();}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue