3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-15 23:35:26 +00:00

adding uhle/uhte for faster asymmetric branching

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-11-29 21:21:56 -08:00
parent 26bd784b1f
commit da0aa71082
4 changed files with 221 additions and 57 deletions

View file

@ -37,12 +37,19 @@ namespace sat {
unsigned m_num_elim_bin;
random_gen m_rand;
void get_dfs_num(svector<int>& dfs, bool learned);
// BIG state:
vector<literal_vector> m_dag;
svector<bool> m_roots;
svector<int> m_left, m_right;
literal_vector m_root, m_parent;
void shuffle(literal_vector& lits);
void reduce_tr();
bool reduce_tr(bool learned);
bool reduce_tr(svector<int> const& dfs, bool learned);
unsigned reduce_tr(bool learned);
public:
scc(solver & s, params_ref const & p);
unsigned operator()();
@ -51,6 +58,19 @@ namespace sat {
void collect_statistics(statistics & st) const;
void reset_statistics();
/*
\brief retrieve binary implication graph
*/
vector<literal_vector> const& get_big(bool learned);
int get_left(literal l) const { return m_left[l.index()]; }
int get_right(literal l) const { return m_right[l.index()]; }
literal get_parent(literal l) const { return m_parent[l.index()]; }
literal get_root(literal l) const { return m_root[l.index()]; }
void get_dfs_num(bool learned);
};
};