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

more scaffolding

This commit is contained in:
Nikolaj Bjorner 2021-03-21 11:31:14 -07:00
parent a1f484fa35
commit 2fef6dc502
16 changed files with 476 additions and 152 deletions

View file

@ -284,6 +284,44 @@ public :
}
/**
* Test polynomials mod 2^2
*/
static void mod4_operations() {
std::cout << "operations mod4\n";
pdd_manager m(4, pdd_manager::mod2N_e, 2);
unsigned va = 0;
unsigned vb = 1;
unsigned vc = 2;
unsigned vd = 3;
pdd a = m.mk_var(va);
pdd b = m.mk_var(vb);
pdd c = m.mk_var(vc);
pdd d = m.mk_var(vd);
pdd p = a - b;
std::cout << p << "\n";
// should be reduced to 0:
p = a*a*(a*a - 1);
std::cout << p << "\n";
vector<std::pair<unsigned, rational>> sub0, sub1, sub2, sub3;
sub0.push_back(std::make_pair(va, rational(0)));
sub1.push_back(std::make_pair(va, rational(1)));
sub2.push_back(std::make_pair(va, rational(2)));
sub3.push_back(std::make_pair(va, rational(3)));
std::cout << "sub 0 " << p.subst_val(sub0) << "\n";
std::cout << "sub 1 " << p.subst_val(sub1) << "\n";
std::cout << "sub 2 " << p.subst_val(sub2) << "\n";
std::cout << "sub 3 " << p.subst_val(sub3) << "\n";
std::cout << "expect 1 " << (2*a + 1).is_non_zero() << "\n";
std::cout << "expect 1 " << (2*a*b + 2*b + 1).is_non_zero() << "\n";
std::cout << "expect 0 " << (2*a + 2).is_non_zero() << "\n";
SASSERT((2*a + 1).is_non_zero());
SASSERT((2*a + 2*b + 1).is_non_zero());
SASSERT(!(2*a*b + 3*b + 2).is_non_zero());
}
};
}
@ -297,4 +335,5 @@ void tst_pdd() {
dd::test::iterator();
dd::test::order();
dd::test::order_lm();
dd::test::mod4_operations();
}

View file

@ -453,6 +453,19 @@ static void tst11(bool use_ints) {
std::cout << "\n";
}
static void tst12() {
std::cout << "test12\n";
rational r;
r = 5;
SASSERT(r.get_bit(0));
SASSERT(!r.get_bit(1));
SASSERT(r.get_bit(2));
SASSERT(!r.get_bit(3));
r = rational("10000000000000000000000000000000001");
for (unsigned i = 0; i < r.get_num_bits(); ++i)
std::cout << i << ": " << r.get_bit(i) << "\n";
}
void tst_rational() {
TRACE("rational", tout << "starting rational test...\n";);
@ -478,4 +491,5 @@ void tst_rational() {
tst11(true);
tst10(true);
tst10(false);
tst12();
}