mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 01:25:31 +00:00
move flatten functionality to asserted_formulas, sort variables in lut_finder
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
38d690650b
commit
8b23a1701a
9 changed files with 88 additions and 57 deletions
|
@ -276,13 +276,13 @@ namespace sat {
|
|||
}
|
||||
|
||||
void aig_cuts::add_cut(bool_var v, uint64_t lut, bool_var_vector const& args) {
|
||||
// args can be assumed to be sorted
|
||||
DEBUG_CODE(for (unsigned i = 0; i + 1 < args.size(); ++i) VERIFY(args[i] < args[i+1]););
|
||||
reserve(v);
|
||||
for (bool_var w : args) reserve(w);
|
||||
// optional: reshuffle lut and sort variables.
|
||||
cut c;
|
||||
for (bool_var w : args) VERIFY(c.add(w));
|
||||
c.set_table(lut);
|
||||
// add-don't care?
|
||||
insert_cut(v, c, m_cuts[v]);
|
||||
}
|
||||
|
||||
|
|
|
@ -59,7 +59,13 @@ namespace sat {
|
|||
s.init_visited();
|
||||
unsigned mask = 0, i = 0;
|
||||
m_vars.reset();
|
||||
m_clause.reset();
|
||||
for (literal l : c) {
|
||||
m_clause.push_back(l);
|
||||
}
|
||||
// ensure that variables in returned LUT are sorted
|
||||
std::sort(m_clause.begin(), m_clause.end());
|
||||
for (literal l : m_clause) {
|
||||
m_vars.push_back(l.var());
|
||||
m_var_position[l.var()] = i;
|
||||
s.mark_visited(l.var());
|
||||
|
@ -67,7 +73,6 @@ namespace sat {
|
|||
}
|
||||
m_clauses_to_remove.reset();
|
||||
m_clauses_to_remove.push_back(&c);
|
||||
m_clause.resize(c.size());
|
||||
m_combination = 0;
|
||||
m_num_combinations = 0;
|
||||
set_combination(mask);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue