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

update to use incremental substitution

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2022-01-23 03:00:25 +01:00
parent 6f689c3c1f
commit cbbf1381f7
19 changed files with 167 additions and 89 deletions

View file

@ -309,10 +309,10 @@ public :
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 << "sub 0 " << p.subst_val0(sub0) << "\n";
std::cout << "sub 1 " << p.subst_val0(sub1) << "\n";
std::cout << "sub 2 " << p.subst_val0(sub2) << "\n";
std::cout << "sub 3 " << p.subst_val0(sub3) << "\n";
std::cout << "expect 1 " << (2*a + 1).is_never_zero() << "\n";
std::cout << "expect 1 " << (2*a*b + 2*b + 1).is_never_zero() << "\n";
@ -538,7 +538,7 @@ public :
pdd const p = 2*a + b + 1;
SASSERT(p.subst_val(va, rational(0)) == b + 1);
}
{
pdd const p = a + 2*b;
SASSERT(p.subst_val(va, rational(0)) == 2*b);
@ -555,7 +555,7 @@ public :
vector<std::pair<unsigned, rational>> sub;
sub.push_back({vb, rational(2)});
sub.push_back({vc, rational(3)});
SASSERT(p.subst_val(sub) == a + d + 1);
SASSERT(p.subst_val0(sub) == a + d + 1);
}
{
@ -563,10 +563,10 @@ public :
vector<std::pair<unsigned, rational>> sub;
sub.push_back({vb, rational(2)});
sub.push_back({vc, rational(3)});
SASSERT(p.subst_val(sub) == (a + 2) * (d + 3));
SASSERT(p.subst_val0(sub) == (a + 2) * (d + 3));
sub.push_back({va, rational(3)});
sub.push_back({vd, rational(2)});
SASSERT(p.subst_val(sub) == m.one());
SASSERT(p.subst_val0(sub) == m.one());
}
}

View file

@ -85,8 +85,8 @@ namespace polysat {
LOG(m_name << ": " << m_last_result << "\n");
statistics st;
collect_statistics(st);
// LOG(st << "\n" << *this << "\n");
std::cout << st << "\n" << *this << "\n";
LOG(st << "\n" << *this << "\n");
std::cout << st << "\n";
}
void expect_unsat() {
@ -1321,17 +1321,16 @@ public:
void tst_polysat() {
using namespace polysat;
test_fi::exhaustive();
test_fi::randomized();
return;
test_polysat::test_l2();
#if 0
// looks like a fishy conflict lemma?
test_polysat::test_monot_bounds();
return;
return;
test_polysat::test_quot_rem_incomplete();
test_polysat::test_quot_rem_fixed();
return;
//return;
test_polysat::test_band();
return;
@ -1347,6 +1346,8 @@ void tst_polysat() {
test_polysat::test_ineq_axiom6();
return;
#endif
test_polysat::test_ineq_basic4();
//return;
@ -1390,6 +1391,11 @@ void tst_polysat() {
test_polysat::test_ineq_axiom4();
test_polysat::test_ineq_axiom5();
test_polysat::test_ineq_axiom6();
test_fi::exhaustive();
test_fi::randomized();
return;
#if 0
test_polysat::test_ineq_non_axiom4(32, 5);
#endif