mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 17:15:31 +00:00
adding bdd package
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
64ea473bc7
commit
d7b6373601
5 changed files with 476 additions and 129 deletions
|
@ -16,6 +16,7 @@ add_executable(test-z3
|
|||
arith_rewriter.cpp
|
||||
arith_simplifier_plugin.cpp
|
||||
ast.cpp
|
||||
bdd.cpp
|
||||
bit_blaster.cpp
|
||||
bits.cpp
|
||||
bit_vector.cpp
|
||||
|
|
40
src/test/bdd.cpp
Normal file
40
src/test/bdd.cpp
Normal file
|
@ -0,0 +1,40 @@
|
|||
#include "sat/sat_bdd.h"
|
||||
|
||||
namespace sat {
|
||||
static void test1() {
|
||||
bdd_manager m(20, 1000);
|
||||
bdd v0 = m.mk_var(0);
|
||||
bdd v1 = m.mk_var(1);
|
||||
bdd v2 = m.mk_var(2);
|
||||
bdd c1 = v0 && v1 && v2;
|
||||
bdd c2 = v2 && v0 && v1;
|
||||
std::cout << c1 << "\n";
|
||||
SASSERT(c1 == c2);
|
||||
|
||||
c1 = v0 || v1 || v2;
|
||||
c2 = v2 || v1 || v0;
|
||||
std::cout << c1 << "\n";
|
||||
std::cout << c2 << "\n";
|
||||
SASSERT(c1 == c2);
|
||||
}
|
||||
|
||||
static void test2() {
|
||||
bdd_manager m(20, 1000);
|
||||
bdd v0 = m.mk_var(0);
|
||||
bdd v1 = m.mk_var(1);
|
||||
bdd v2 = m.mk_var(2);
|
||||
SASSERT(m.mk_ite(v0,v0,v1) == (v0 || v1));
|
||||
SASSERT(m.mk_ite(v0,v1,v1) == v1);
|
||||
SASSERT(m.mk_ite(v1,v0,v1) == (v0 && v1));
|
||||
SASSERT(m.mk_ite(v1,v0,v0) == v0);
|
||||
SASSERT(m.mk_ite(v0,!v0,v1) == (!v0 && v1));
|
||||
SASSERT(m.mk_ite(v0,v1,!v0) == (!v0 || v1));
|
||||
SASSERT(!(v0 && v1) == (!v0 || !v1));
|
||||
SASSERT(!(v0 || v1) == (!v0 && !v1));
|
||||
}
|
||||
}
|
||||
|
||||
void tst_bdd() {
|
||||
sat::test1();
|
||||
sat::test2();
|
||||
}
|
|
@ -245,6 +245,7 @@ int main(int argc, char ** argv) {
|
|||
TST_ARGV(sat_lookahead);
|
||||
TST_ARGV(sat_local_search);
|
||||
TST_ARGV(cnf_backbones);
|
||||
TST(bdd);
|
||||
//TST_ARGV(hs);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue