3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 01:25:31 +00:00

delay evaluation of model, throttle propagation, introduce LUT results into cutset

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-02-05 12:33:42 -08:00
parent 7b2f6791bc
commit 2d59b81353
14 changed files with 112 additions and 84 deletions

View file

@ -275,6 +275,18 @@ namespace sat {
SASSERT(!m_aig[v].empty());
}
void aig_cuts::add_cut(bool_var v, uint64_t lut, bool_var_vector const& args) {
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]);
}
void aig_cuts::set_root(bool_var v, literal r) {
IF_VERBOSE(10, verbose_stream() << "set-root " << v << " -> " << r << "\n");
m_roots.push_back(std::make_pair(v, r));

View file

@ -158,6 +158,7 @@ namespace sat {
aig_cuts();
void add_var(unsigned v);
void add_node(literal head, bool_op op, unsigned sz, literal const* args);
void add_cut(bool_var v, uint64_t lut, bool_var_vector const& args);
void set_root(bool_var v, literal r);
void set_on_clause_add(on_clause_t& on_clause_add);

View file

@ -230,8 +230,9 @@ namespace sat {
#if 0
std::function<void(uint64_t, bool_var_vector const&, bool_var)> on_lut =
[&,this](uint64_t l, bool_var_vector const& vars, bool_var v) {
[&,this](uint64_t lut, bool_var_vector const& vars, bool_var v) {
m_stats.m_xluts++;
m_aig_cuts.add_cut(v, lut, vars);
};
lut_finder lf(s);
lf.set(on_lut);