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

fix bug in PB constraint init_watch handling, adding transitive reduction, HLE, ULT,

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-12-01 08:23:55 -08:00
parent 427b5ef002
commit 018411bc58
10 changed files with 248 additions and 136 deletions

View file

@ -44,10 +44,13 @@ namespace sat {
svector<int> m_left, m_right;
literal_vector m_root, m_parent;
void shuffle(literal_vector& lits);
void reduce_tr();
unsigned reduce_tr(bool learned);
void init_dfs_num(bool learned);
struct pframe;
public:
scc(solver & s, params_ref const & p);
@ -60,17 +63,14 @@ namespace sat {
void reset_statistics();
/*
\brief retrieve binary implication graph
\brief create binary implication graph and associated data-structures to check transitivity.
*/
vector<literal_vector> const& get_big(bool learned);
void init_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);
bool reaches(literal u, literal v) const { return m_left[u.index()] < m_left[v.index()] && m_right[v.index()] < m_right[u.index()]; }
};
};