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

initial unit test for pdd_grobner

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2019-12-22 10:59:12 -08:00
parent 3fca59ac84
commit 58be42d2a9
6 changed files with 104 additions and 34 deletions

View file

@ -83,6 +83,7 @@ add_executable(test-z3
parray.cpp
pb2bv.cpp
pdd.cpp
pdd_grobner.cpp
permutation.cpp
polynomial.cpp
polynorm.cpp

View file

@ -254,6 +254,7 @@ int main(int argc, char ** argv) {
TST_ARGV(cnf_backbones);
TST(bdd);
TST(pdd);
TST(pdd_grobner);
TST(solver_pool);
//TST_ARGV(hs);
}

53
src/test/pdd_grobner.cpp Normal file
View file

@ -0,0 +1,53 @@
#include "util/rlimit.h"
#include "math/grobner/pdd_grobner.h"
namespace dd {
void print_eqs(ptr_vector<grobner::equation> const& eqs) {
std::cout << "eqs\n";
for (grobner::equation* e : eqs) {
std::cout << e->poly() << "\n";
}
}
void test1() {
pdd_manager m(4);
reslimit lim;
pdd v0 = m.mk_var(0);
pdd v1 = m.mk_var(1);
pdd v2 = m.mk_var(2);
pdd v3 = m.mk_var(3);
grobner gb(lim, m);
gb.add(v1*v2 + v1*v3);
gb.add(v1 - 1);
print_eqs(gb.equations());
gb.saturate();
print_eqs(gb.equations());
gb.reset();
gb.add(v1*v1*v2 + v2*v3);
gb.add(v1*v1*v2 + v2*v1);
gb.saturate();
print_eqs(gb.equations());
gb.reset();
gb.add(v1*v1*v2 + v2*v1);
gb.add(v1*v1*v2 + v2*v1);
gb.saturate();
print_eqs(gb.equations());
gb.reset();
gb.add(v1*v3*v3 + v3*v1 + 2);
gb.add(v1*v3*v3 + v3*v1);
gb.add(v3*v1 + v1*v2 + v2*v3);
gb.add(v3*v1 + v1*v2 + v2*v3 + v1);
gb.add(v3*v1 + v1*v2 + v2*v3 + v2);
gb.saturate();
print_eqs(gb.equations());
gb.reset();
}
}
void tst_pdd_grobner() {
dd::test1();
}