3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-02 09:20:22 +00:00

euf_completion with AC: add first cut of AC matching for top-level, add plugins and fix shared expression rewriting in ac-plugin

This commit is contained in:
Nikolaj Bjorner 2025-06-16 11:46:03 -07:00
parent bc312768c8
commit b2f01706be
8 changed files with 139 additions and 26 deletions

View file

@ -97,6 +97,7 @@ namespace euf {
struct monomial_t {
ptr_vector<node> m_nodes;
bloom m_bloom;
enode* m_src = nullptr;
node* operator[](unsigned i) const { return m_nodes[i]; }
unsigned size() const { return m_nodes.size(); }
void set(ptr_vector<node> const& ns) { m_nodes.reset(); m_nodes.append(ns); m_bloom.m_tick = 0; }
@ -187,6 +188,7 @@ namespace euf {
unsigned to_monomial(enode* n);
unsigned to_monomial(enode* n, ptr_vector<node> const& ms);
unsigned to_monomial(ptr_vector<node> const& ms) { return to_monomial(nullptr, ms); }
enode* from_monomial(ptr_vector<node> const& m);
monomial_t const& monomial(unsigned i) const { return m_monomials[i]; }
monomial_t& monomial(unsigned i) { return m_monomials[i]; }
void sort(monomial_t& monomial);