3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +00:00

consolidate literals

This commit is contained in:
Nikolaj Bjorner 2021-05-20 12:58:27 -07:00
parent c959e28d4a
commit 03d2c5f3d0
9 changed files with 299 additions and 323 deletions

View file

@ -13,7 +13,7 @@ static void _init_solver(sat::solver& s)
s.mk_var();
}
static void _mk_clause4(sat::solver& s, sat::literal w, sat::literal x, sat::literal y, sat::literal z)
static void _mk_clause4(sat::solver& s, sat::literal const & w, sat::literal const& x, sat::literal const& y, sat::literal const& z)
{
sat::literal lits[] = {w, x, y, z};
s.mk_clause(4, lits);
@ -41,10 +41,10 @@ static void tst_single_mux() {
sat::solver s({}, r);
_init_solver(s);
s.mk_clause({ 0, true }, { 1, true }, { 3, false });
s.mk_clause({ 0, true }, { 1, false }, { 3, true });
s.mk_clause({ 0, false }, { 2, true }, { 3, false });
s.mk_clause({ 0, false }, { 2, false }, { 3, true });
s.mk_clause(sat::literal(0, true), sat::literal(1, true), sat::literal(3, false));
s.mk_clause(sat::literal(0, true), sat::literal(1, false), sat::literal(3, true));
s.mk_clause(sat::literal(0, false), sat::literal(2, true), sat::literal(3, false));
s.mk_clause(sat::literal(0, false), sat::literal(2, false), sat::literal(3, true));
_check_finder(s, std::mem_fn(&sat::npn3_finder::set_on_mux), "mux", 7, 0, 3, 5);
}
@ -54,12 +54,12 @@ static void tst_single_maj() {
sat::solver s({}, r);
_init_solver(s);
s.mk_clause({ 0, false }, { 1, false }, { 3, true });
s.mk_clause({ 0, false }, { 2, false }, { 3, true });
s.mk_clause({ 1, false }, { 2, false }, { 3, true });
s.mk_clause({ 0, true }, { 1, true }, { 3, false });
s.mk_clause({ 0, true }, { 2, true }, { 3, false });
s.mk_clause({ 1, true }, { 2, true }, { 3, false });
s.mk_clause(sat::literal(0, false), sat::literal(1, false), sat::literal(3, true));
s.mk_clause(sat::literal(0, false), sat::literal(2, false), sat::literal(3, true));
s.mk_clause(sat::literal(1, false), sat::literal(2, false), sat::literal(3, true));
s.mk_clause(sat::literal(0, true), sat::literal(1, true), sat::literal(3, false));
s.mk_clause(sat::literal(0, true), sat::literal(2, true), sat::literal(3, false));
s.mk_clause(sat::literal(1, true), sat::literal(2, true), sat::literal(3, false));
_check_finder(s, std::mem_fn(&sat::npn3_finder::set_on_maj), "maj", 6, 0, 2, 4);
}
@ -69,10 +69,10 @@ static void tst_single_orand() {
sat::solver s({}, r);
_init_solver(s);
s.mk_clause({0, false}, {3, true});
s.mk_clause({1, false}, {2, false}, {3, true});
s.mk_clause({0, true}, {1, true}, {3, false});
s.mk_clause({0, true}, {2, true}, {3, false});
s.mk_clause(sat::literal(0, false), sat::literal(3, true));
s.mk_clause(sat::literal(1, false), sat::literal(2, false), sat::literal(3, true));
s.mk_clause(sat::literal(0, true), sat::literal(1, true), sat::literal(3, false));
s.mk_clause(sat::literal(0, true), sat::literal(2, true), sat::literal(3, false));
_check_finder(s, std::mem_fn(&sat::npn3_finder::set_on_orand), "orand", 6, 0, 2, 4);
}
@ -82,11 +82,11 @@ static void tst_single_and() {
sat::solver s({}, r);
_init_solver(s);
sat::literal ls1[] = {{0, true}, {1, true}, {2, true}, {3, false}};
sat::literal ls1[] = {sat::literal(0, true), sat::literal(1, true), sat::literal(2, true), sat::literal(3, false)};
s.mk_clause(4, ls1);
s.mk_clause({0, false}, {3, true});
s.mk_clause({1, false}, {3, true});
s.mk_clause({2, false}, {3, true});
s.mk_clause(sat::literal(0, false), sat::literal(3, true));
s.mk_clause(sat::literal(1, false), sat::literal(3, true));
s.mk_clause(sat::literal(2, false), sat::literal(3, true));
_check_finder(s, std::mem_fn(&sat::npn3_finder::set_on_and), "and", 6, 0, 2, 4);
}
@ -96,14 +96,14 @@ static void tst_single_xor() {
sat::solver s({}, r);
_init_solver(s);
_mk_clause4(s, {0, true}, {1, false}, {2, false}, {3, false});
_mk_clause4(s, {0, false}, {1, true}, {2, false}, {3, false});
_mk_clause4(s, {0, false}, {1, false}, {2, true}, {3, false});
_mk_clause4(s, {0, false}, {1, false}, {2, false}, {3, true});
_mk_clause4(s, {0, false}, {1, true}, {2, true}, {3, true});
_mk_clause4(s, {0, true}, {1, false}, {2, true}, {3, true});
_mk_clause4(s, {0, true}, {1, true}, {2, false}, {3, true});
_mk_clause4(s, {0, true}, {1, true}, {2, true}, {3, false});
_mk_clause4(s, sat::literal(0, true), sat::literal(1, false), sat::literal(2, false), sat::literal(3, false));
_mk_clause4(s, sat::literal(0, false), sat::literal(1, true), sat::literal(2, false), sat::literal(3, false));
_mk_clause4(s, sat::literal(0, false), sat::literal(1, false), sat::literal(2, true), sat::literal(3, false));
_mk_clause4(s, sat::literal(0, false), sat::literal(1, false), sat::literal(2, false), sat::literal(3, true));
_mk_clause4(s, sat::literal(0, false), sat::literal(1, true), sat::literal(2, true), sat::literal(3, true));
_mk_clause4(s, sat::literal(0, true), sat::literal(1, false), sat::literal(2, true), sat::literal(3, true));
_mk_clause4(s, sat::literal(0, true), sat::literal(1, true), sat::literal(2, false), sat::literal(3, true));
_mk_clause4(s, sat::literal(0, true), sat::literal(1, true), sat::literal(2, true), sat::literal(3, false));
_check_finder(s, std::mem_fn(&sat::npn3_finder::set_on_xor), "xor", 1, 3, 4, 6);
}
@ -113,12 +113,12 @@ static void tst_single_andxor() {
sat::solver s({}, r);
_init_solver(s);
s.mk_clause({0, true}, {1, false}, {3, true});
s.mk_clause({0, true}, {2, false}, {3, true});
_mk_clause4(s, {0, true}, {1, true}, {2, true}, {3, false});
s.mk_clause({0, false}, {1, false}, {3, false});
s.mk_clause({0, false}, {2, false}, {3, false});
_mk_clause4(s, {0, false}, {1, true}, {2, true}, {3, true});
s.mk_clause(sat::literal(0, true), sat::literal(1, false), sat::literal(3, true));
s.mk_clause(sat::literal(0, true), sat::literal(2, false), sat::literal(3, true));
_mk_clause4(s, sat::literal(0, true), sat::literal(1, true), sat::literal(2, true), sat::literal(3, false));
s.mk_clause(sat::literal(0, false), sat::literal(1, false), sat::literal(3, false));
s.mk_clause(sat::literal(0, false), sat::literal(2, false), sat::literal(3, false));
_mk_clause4(s, sat::literal(0, false), sat::literal(1, true), sat::literal(2, true), sat::literal(3, true));
_check_finder(s, std::mem_fn(&sat::npn3_finder::set_on_andxor), "andxor", 0, 6, 2, 4);
}
@ -128,11 +128,11 @@ static void tst_single_xorand() {
sat::solver s({}, r);
_init_solver(s);
s.mk_clause({0, false}, {3, true});
s.mk_clause({1, false}, {2, false}, {3, true});
s.mk_clause({1, true}, {2, true}, {3, true});
_mk_clause4(s, {0, true}, {1, true}, {2, false}, {3, false});
_mk_clause4(s, {0, true}, {1, false}, {2, true}, {3, false});
s.mk_clause(sat::literal(0, false), sat::literal(3, true));
s.mk_clause(sat::literal(1, false), sat::literal(2, false), sat::literal(3, true));
s.mk_clause(sat::literal(1, true), sat::literal(2, true), sat::literal(3, true));
_mk_clause4(s, sat::literal(0, true), sat::literal(1, true), sat::literal(2, false), sat::literal(3, false));
_mk_clause4(s, sat::literal(0, true), sat::literal(1, false), sat::literal(2, true), sat::literal(3, false));
_check_finder(s, std::mem_fn(&sat::npn3_finder::set_on_xorand), "xorand", 6, 0, 3, 5);
}
@ -142,11 +142,11 @@ static void tst_single_gamble() {
sat::solver s({}, r);
_init_solver(s);
s.mk_clause({0, true}, {1, false}, {3, true});
s.mk_clause({1, true}, {2, false}, {3, true});
s.mk_clause({0, false}, {2, true}, {3, true});
_mk_clause4(s, {0, false}, {1, false}, {2, false}, {3, false});
_mk_clause4(s, {0, true}, {1, true}, {2, true}, {3, false});
s.mk_clause(sat::literal(0, true), sat::literal(1, false), sat::literal(3, true));
s.mk_clause(sat::literal(1, true), sat::literal(2, false), sat::literal(3, true));
s.mk_clause(sat::literal(0, false), sat::literal(2, true), sat::literal(3, true));
_mk_clause4(s, sat::literal(0, false), sat::literal(1, false), sat::literal(2, false), sat::literal(3, false));
_mk_clause4(s, sat::literal(0, true), sat::literal(1, true), sat::literal(2, true), sat::literal(3, false));
_check_finder(s, std::mem_fn(&sat::npn3_finder::set_on_gamble), "gamble", 6, 0, 2, 4);
}
@ -156,13 +156,13 @@ static void tst_single_onehot() {
sat::solver s({}, r);
_init_solver(s);
s.mk_clause({0, true}, {1, true}, {3, true});
s.mk_clause({0, true}, {2, true}, {3, true});
s.mk_clause({1, true}, {2, true}, {3, true});
_mk_clause4(s, {0, false}, {1, false}, {2, false}, {3, true});
_mk_clause4(s, {0, true}, {1, false}, {2, false}, {3, false});
_mk_clause4(s, {0, false}, {1, true}, {2, false}, {3, false});
_mk_clause4(s, {0, false}, {1, false}, {2, true}, {3, false});
s.mk_clause(sat::literal(0, true), sat::literal(1, true), sat::literal(3, true));
s.mk_clause(sat::literal(0, true), sat::literal(2, true), sat::literal(3, true));
s.mk_clause(sat::literal(1, true), sat::literal(2, true), sat::literal(3, true));
_mk_clause4(s, sat::literal(0, false), sat::literal(1, false), sat::literal(2, false), sat::literal(3, true));
_mk_clause4(s, sat::literal(0, true), sat::literal(1, false), sat::literal(2, false), sat::literal(3, false));
_mk_clause4(s, sat::literal(0, false), sat::literal(1, true), sat::literal(2, false), sat::literal(3, false));
_mk_clause4(s, sat::literal(0, false), sat::literal(1, false), sat::literal(2, true), sat::literal(3, false));
_check_finder(s, std::mem_fn(&sat::npn3_finder::set_on_onehot), "onehot", 6, 0, 2, 4);
}
@ -172,11 +172,11 @@ static void tst_single_dot() {
sat::solver s({}, r);
_init_solver(s);
s.mk_clause({0, false}, {2, false}, {3, true});
s.mk_clause({0, true}, {1, true}, {3, true});
s.mk_clause({0, true}, {2, true}, {3, true});
s.mk_clause({0, false}, {2, true}, {3, false});
_mk_clause4(s, {0, true}, {1, false}, {2, false}, {3, false});
s.mk_clause(sat::literal(0, false), sat::literal(2, false), sat::literal(3, true));
s.mk_clause(sat::literal(0, true), sat::literal(1, true), sat::literal(3, true));
s.mk_clause(sat::literal(0, true), sat::literal(2, true), sat::literal(3, true));
s.mk_clause(sat::literal(0, false), sat::literal(2, true), sat::literal(3, false));
_mk_clause4(s, sat::literal(0, true), sat::literal(1, false), sat::literal(2, false), sat::literal(3, false));
_check_finder(s, std::mem_fn(&sat::npn3_finder::set_on_dot), "dot", 6, 0, 2, 4);
}