mirror of
https://github.com/Z3Prover/z3
synced 2026-02-23 00:37:36 +00:00
Merge shared parts from polysat branch (#7063)
* sat_literal: make constants constexpr * dlist: rename elem -> list * tbv: use get_bit * additional pdd and rational tests * egraph: callback setters take functions by value This allows to set callbacks without defining a separate variable for the callback lambda. (previous usage does one copy of the function, exactly as before) * cmake: enable compiler error when non-void function does not return value
This commit is contained in:
parent
53c95e3627
commit
ec2b8eb4ca
7 changed files with 101 additions and 43 deletions
|
|
@ -153,12 +153,49 @@ public:
|
|||
pdd b = m.mk_var(1);
|
||||
pdd c = m.mk_var(2);
|
||||
pdd d = m.mk_var(3);
|
||||
pdd p = (a + b)*(c + 3*d) + 2;
|
||||
std::cout << p << "\n";
|
||||
for (auto const& m : p) {
|
||||
std::cout << m << "\n";
|
||||
}
|
||||
|
||||
auto const check = [](unsigned const expected_num_monomials, pdd const& p) {
|
||||
unsigned count = 0;
|
||||
std::cout << p << "\n";
|
||||
for (auto const& m : p) {
|
||||
std::cout << " " << m << "\n";
|
||||
++count;
|
||||
}
|
||||
VERIFY_EQ(expected_num_monomials, count);
|
||||
};
|
||||
|
||||
check(9, (a + b + 2)*(c + 3*d + 5) + 2);
|
||||
check(5, (a + b)*(c + 3*d) + 2);
|
||||
check(1, a);
|
||||
check(2, a + 5);
|
||||
check(1, m.mk_val(5));
|
||||
check(0, m.mk_val(0));
|
||||
}
|
||||
|
||||
static void linear_iterator() {
|
||||
std::cout << "test linear iterator\n";
|
||||
pdd_manager m(4);
|
||||
pdd a = m.mk_var(0);
|
||||
pdd b = m.mk_var(1);
|
||||
pdd c = m.mk_var(2);
|
||||
pdd d = m.mk_var(3);
|
||||
pdd p = (a + b + 2)*(c + 3*d + 5) + 2;
|
||||
std::cout << p << "\n";
|
||||
for (auto const& m : p.linear_monomials())
|
||||
std::cout << " " << m << "\n";
|
||||
std::cout << a << "\n";
|
||||
for (auto const& m : a.linear_monomials())
|
||||
std::cout << " " << m << "\n";
|
||||
pdd one = m.mk_val(5);
|
||||
std::cout << one << "\n";
|
||||
for (auto const& m : one.linear_monomials())
|
||||
std::cout << " " << m << "\n";
|
||||
pdd zero = m.mk_val(0);
|
||||
std::cout << zero << "\n";
|
||||
for (auto const& m : zero.linear_monomials())
|
||||
std::cout << " " << m << "\n";
|
||||
}
|
||||
|
||||
static void order() {
|
||||
std::cout << "order\n";
|
||||
pdd_manager m(4);
|
||||
|
|
@ -693,6 +730,7 @@ void tst_pdd() {
|
|||
dd::test::canonize();
|
||||
dd::test::reset();
|
||||
dd::test::iterator();
|
||||
dd::test::linear_iterator();
|
||||
dd::test::order();
|
||||
dd::test::order_lm();
|
||||
dd::test::mod4_operations();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue