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

add cofactoring functionality

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2021-06-30 09:11:42 -07:00
parent 1defbc8aa4
commit b019477378
3 changed files with 67 additions and 1 deletions

View file

@ -425,6 +425,19 @@ public:
SASSERT_EQ(x_dom.find_hint(s358 && (x == rational(4)), rational(5), r), find_t::empty);
}
static void test_cofactor() {
std::cout << "test_cofactor\n";
bdd_manager m(20);
bdd v0 = m.mk_var(0);
bdd v1 = m.mk_var(1);
bdd v2 = m.mk_var(2);
bdd c1 = v0 && v1 && v2;
SASSERT(c1.cofactor(v0) == (v1 && v2));
SASSERT(c1.cofactor(v1) == (v0 && v2));
SASSERT(c1.cofactor(v2) == (v0 && v1));
SASSERT(c1.cofactor(!v1) == m.mk_false());
}
};
}
@ -446,4 +459,5 @@ void tst_bdd() {
dd::test_bdd::test_fdd_reorder();
dd::test_bdd::test_fdd_twovars();
dd::test_bdd::test_fdd_find_hint();
dd::test_bdd::test_cofactor();
}