3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-24 20:16:00 +00:00

add stubs for npn3

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-02-27 21:19:02 -08:00
parent 4f575d3158
commit e8f7a08289
6 changed files with 23 additions and 53 deletions

View file

@ -226,7 +226,6 @@ namespace sat {
if (c1) c1->mark_used();
if (c2) c2->mark_used();
if (c3) c3->mark_used();
// DEBUG_CODE(validate_if(~x, ~y, z, u, c, c1, c2, c3););
m_on_mux(~x, ~y, z, u);
return true;
}
@ -271,7 +270,6 @@ namespace sat {
if (c4) c4->mark_used();
if (c5) c5->mark_used();
if (c6) c6->mark_used();
// DEBUG_CODE(validate_if(~x, ~y, z, u, c, c1, c2, c3););
m_on_maj(~x, y, z, u);
return true;
}
@ -614,51 +612,4 @@ namespace sat {
filter(clauses);
}
void npn3_finder::validate_clause(literal_vector const& clause, vector<literal_vector> const& clauses) {
solver vs(s.params(), s.rlimit());
for (unsigned i = 0; i < s.num_vars(); ++i) {
vs.mk_var();
}
svector<solver::bin_clause> bins;
s.collect_bin_clauses(bins, true, false);
for (auto b : bins) {
vs.mk_clause(b.first, b.second);
}
for (auto const& cl : clauses) {
vs.mk_clause(cl);
}
for (literal l : clause) {
literal nl = ~l;
vs.mk_clause(1, &nl);
}
lbool r = vs.check();
if (r != l_false) {
vs.display(verbose_stream());
UNREACHABLE();
}
}
void npn3_finder::validate_clause(literal x, literal y, literal z, vector<literal_vector> const& clauses) {
literal_vector clause;
clause.push_back(x);
clause.push_back(y);
clause.push_back(z);
validate_clause(clause, clauses);
}
void npn3_finder::validate_if(literal x, literal c, literal t, literal e, clause const& c0, clause const* c1, clause const* c2, clause const* c3) {
IF_VERBOSE(2, verbose_stream() << "validate if: " << x << " == " << c << " ? " << t << " : " << e << "\n");
vector<literal_vector> clauses;
clauses.push_back(literal_vector(c0.size(), c0.begin()));
if (c1) clauses.push_back(literal_vector(c1->size(), c1->begin()));
if (c2) clauses.push_back(literal_vector(c2->size(), c2->begin()));
if (c3) clauses.push_back(literal_vector(c3->size(), c3->begin()));
literal_vector clause;
validate_clause(~x, ~c, t, clauses);
validate_clause(~x, c, e, clauses);
validate_clause(~t, ~c, x, clauses);
validate_clause(~e, c, x, clauses);
}
}