3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-27 08:28:44 +00:00

disable unsound simplify, rename stats, delay region allocation for cutsets

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-02-25 12:40:10 -08:00
parent 963f8240c2
commit 39061d7388
3 changed files with 17 additions and 14 deletions

View file

@ -576,7 +576,7 @@ namespace sat {
cuts2bins(cuts); cuts2bins(cuts);
bins2dont_cares(); bins2dont_cares();
dont_cares2cuts(cuts); dont_cares2cuts(cuts);
m_aig_cuts.simplify(); // m_aig_cuts.simplify();
} }
/** /**
@ -698,16 +698,16 @@ namespace sat {
} }
void cut_simplifier::collect_statistics(statistics& st) const { void cut_simplifier::collect_statistics(statistics& st) const {
st.update("sat-aig.eqs", m_stats.m_num_eqs); st.update("sat-cut.eqs", m_stats.m_num_eqs);
st.update("sat-aig.cuts", m_stats.m_num_cuts); st.update("sat-cut.cuts", m_stats.m_num_cuts);
st.update("sat-aig.ands", m_stats.m_num_ands); st.update("sat-cut.ands", m_stats.m_num_ands);
st.update("sat-aig.ites", m_stats.m_num_ites); st.update("sat-cut.ites", m_stats.m_num_ites);
st.update("sat-aig.xors", m_stats.m_num_xors); st.update("sat-cut.xors", m_stats.m_num_xors);
st.update("sat-aig.xands", m_stats.m_xands); st.update("sat-cut.xands", m_stats.m_xands);
st.update("sat-aig.xites", m_stats.m_xites); st.update("sat-cut.xites", m_stats.m_xites);
st.update("sat-aig.xxors", m_stats.m_xxors); st.update("sat-cut.xxors", m_stats.m_xxors);
st.update("sat-aig.xluts", m_stats.m_xluts); st.update("sat-cut.xluts", m_stats.m_xluts);
st.update("sat-aig.dc-reduce", m_stats.m_num_dont_care_reductions); st.update("sat-cut.dc-reduce", m_stats.m_num_dont_care_reductions);
} }
void cut_simplifier::validate_unit(literal lit) { void cut_simplifier::validate_unit(literal lit) {

View file

@ -92,7 +92,7 @@ namespace sat {
struct hash { struct hash {
unsigned operator()(bin_rel const& p) const { unsigned operator()(bin_rel const& p) const {
return mk_mix(p.u, p.v, 1); return p.u + 65599*p.v; // Weinberger's should be a bit cheaper mk_mix(p.u, p.v, 1);
} }
}; };
struct eq { struct eq {

View file

@ -79,6 +79,9 @@ namespace sat {
void cut_set::push_back(on_update_t& on_add, cut const& c) { void cut_set::push_back(on_update_t& on_add, cut const& c) {
SASSERT(m_max_size > 0); SASSERT(m_max_size > 0);
if (!m_cuts) {
m_cuts = new (*m_region) cut[m_max_size];
}
if (m_size == m_max_size) { if (m_size == m_max_size) {
m_max_size *= 2; m_max_size *= 2;
cut* new_cuts = new (*m_region) cut[m_max_size]; cut* new_cuts = new (*m_region) cut[m_max_size];
@ -109,9 +112,9 @@ namespace sat {
SASSERT(!m_region || m_cuts); SASSERT(!m_region || m_cuts);
VERIFY(!m_region || m_max_size > 0); VERIFY(!m_region || m_max_size > 0);
if (!m_region) { if (!m_region) {
m_max_size = max_sz; m_max_size = 2; // max_sz;
m_region = &r; m_region = &r;
m_cuts = new (r) cut[max_sz]; m_cuts = nullptr;
} }
} }