mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 17:15:31 +00:00
cube and clause
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
ea032b56c0
commit
005a6d93bb
6 changed files with 119 additions and 15 deletions
|
@ -24,6 +24,7 @@ add_executable(test-z3
|
|||
chashtable.cpp
|
||||
check_assumptions.cpp
|
||||
cnf_backbones.cpp
|
||||
cube_clause.cpp
|
||||
datalog_parser.cpp
|
||||
ddnf.cpp
|
||||
diff_logic.cpp
|
||||
|
|
58
src/test/cube_clause.cpp
Normal file
58
src/test/cube_clause.cpp
Normal file
|
@ -0,0 +1,58 @@
|
|||
#include "ast/reg_decl_plugins.h"
|
||||
#include "solver/solver_pool.h"
|
||||
#include "smt/smt_solver.h"
|
||||
|
||||
|
||||
void tst_cube_clause() {
|
||||
ast_manager m;
|
||||
reg_decl_plugins(m);
|
||||
params_ref p;
|
||||
lbool r;
|
||||
ref<solver> solver = mk_smt_solver(m, p, symbol::null);
|
||||
|
||||
expr_ref a(m.mk_const(symbol("a"), m.mk_bool_sort()), m);
|
||||
expr_ref b(m.mk_const(symbol("b"), m.mk_bool_sort()), m);
|
||||
expr_ref c(m.mk_const(symbol("c"), m.mk_bool_sort()), m);
|
||||
expr_ref d(m.mk_const(symbol("d"), m.mk_bool_sort()), m);
|
||||
expr_ref e(m.mk_const(symbol("e"), m.mk_bool_sort()), m);
|
||||
expr_ref f(m.mk_const(symbol("f"), m.mk_bool_sort()), m);
|
||||
expr_ref g(m.mk_const(symbol("g"), m.mk_bool_sort()), m);
|
||||
expr_ref fml(m);
|
||||
fml = m.mk_not(m.mk_and(a, b));
|
||||
solver->assert_expr(fml);
|
||||
fml = m.mk_not(m.mk_and(c, d));
|
||||
solver->assert_expr(fml);
|
||||
fml = m.mk_not(m.mk_and(e, f));
|
||||
solver->assert_expr(fml);
|
||||
expr_ref_vector cube(m), clause(m), core(m);
|
||||
r = solver->check_sat(cube);
|
||||
std::cout << r << "\n";
|
||||
cube.push_back(a);
|
||||
r = solver->check_sat(cube);
|
||||
std::cout << r << "\n";
|
||||
cube.push_back(c);
|
||||
cube.push_back(e);
|
||||
r = solver->check_sat(cube);
|
||||
std::cout << r << "\n";
|
||||
clause.push_back(b);
|
||||
r = solver->check_sat(cube, clause);
|
||||
std::cout << r << "\n";
|
||||
core.reset();
|
||||
solver->get_unsat_core(core);
|
||||
std::cout << core << "\n";
|
||||
clause.push_back(d);
|
||||
r = solver->check_sat(cube, clause);
|
||||
std::cout << r << "\n";
|
||||
core.reset();
|
||||
solver->get_unsat_core(core);
|
||||
std::cout << core << "\n";
|
||||
clause.push_back(f);
|
||||
r = solver->check_sat(cube, clause);
|
||||
std::cout << r << "\n";
|
||||
core.reset();
|
||||
solver->get_unsat_core(core);
|
||||
std::cout << core << "\n";
|
||||
clause.push_back(g);
|
||||
r = solver->check_sat(cube, clause);
|
||||
std::cout << r << "\n";
|
||||
}
|
|
@ -172,6 +172,7 @@ int main(int argc, char ** argv) {
|
|||
TST(var_subst);
|
||||
TST(simple_parser);
|
||||
TST(api);
|
||||
TST(cube_clause);
|
||||
TST(old_interval);
|
||||
TST(get_implied_equalities);
|
||||
TST(arith_simplifier_plugin);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue