mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 17:15:31 +00:00
add consequence finding to inc-sat-solver
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
d8ea3023fc
commit
aec59e4ff7
10 changed files with 283 additions and 41 deletions
50
src/test/get_consequences.cpp
Normal file
50
src/test/get_consequences.cpp
Normal file
|
@ -0,0 +1,50 @@
|
|||
/*++
|
||||
Copyright (c) 2016 Microsoft Corporation
|
||||
|
||||
--*/
|
||||
|
||||
#include "inc_sat_solver.h"
|
||||
#include "bv_decl_plugin.h"
|
||||
#include "reg_decl_plugins.h"
|
||||
#include "ast_pp.h"
|
||||
//include
|
||||
|
||||
static expr_ref mk_const(ast_manager& m, char const* name, sort* s) {
|
||||
return expr_ref(m.mk_const(symbol(name), s), m);
|
||||
}
|
||||
|
||||
static expr_ref mk_bool(ast_manager& m, char const* name) {
|
||||
return expr_ref(m.mk_const(symbol(name), m.mk_bool_sort()), m);
|
||||
}
|
||||
|
||||
static expr_ref mk_bv(ast_manager& m, char const* name, unsigned sz) {
|
||||
bv_util bv(m);
|
||||
return expr_ref(m.mk_const(symbol(name), bv.mk_sort(sz)), m);
|
||||
}
|
||||
|
||||
void tst_get_consequences() {
|
||||
ast_manager m;
|
||||
reg_decl_plugins(m);
|
||||
bv_util bv(m);
|
||||
params_ref p;
|
||||
|
||||
ref<solver> solver = mk_inc_sat_solver(m, p);
|
||||
expr_ref a = mk_bool(m, "a"), b = mk_bool(m, "b"), c = mk_bool(m, "c");
|
||||
expr_ref ba = mk_bv(m, "ba", 3), bb = mk_bv(m, "bb", 3), bc = mk_bv(m, "bc", 3);
|
||||
|
||||
solver->assert_expr(m.mk_implies(a, b));
|
||||
solver->assert_expr(m.mk_implies(b, c));
|
||||
expr_ref_vector asms(m), vars(m), conseq(m);
|
||||
asms.push_back(a);
|
||||
vars.push_back(b);
|
||||
vars.push_back(c);
|
||||
vars.push_back(bb);
|
||||
vars.push_back(bc);
|
||||
solver->assert_expr(m.mk_eq(ba, bc));
|
||||
solver->assert_expr(m.mk_eq(bv.mk_numeral(2, 3), ba));
|
||||
solver->get_consequences(asms, vars, conseq);
|
||||
|
||||
std::cout << conseq << "\n";
|
||||
|
||||
|
||||
}
|
|
@ -228,6 +228,7 @@ int main(int argc, char ** argv) {
|
|||
TST(pdr);
|
||||
TST_ARGV(ddnf);
|
||||
TST(model_evaluator);
|
||||
TST(get_consequences);
|
||||
//TST_ARGV(hs);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue