All Downloads are FREE. Search and download functionalities are using the official Maven repository.

z3-z3-4.13.0.src.test.cube_clause.cpp Maven / Gradle / Ivy

The newest version!
#include "ast/reg_decl_plugins.h"
#include "solver/solver_pool.h"
#include "smt/smt_solver.h"
#include 

void tst_cube_clause() {
    ast_manager m;
    reg_decl_plugins(m);
    params_ref p;
    lbool r;
    ref 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);
    vector clauses;
    clauses.push_back(clause);
    r = solver->check_sat_cc(cube, clauses);
    std::cout << r << "\n";
    core.reset();
    solver->get_unsat_core(core);
    std::cout << core << "\n";
    clause.push_back(d);
    clauses.reset();
    clauses.push_back(clause);
    r = solver->check_sat_cc(cube, clauses);
    std::cout << r << "\n";
    core.reset();
    solver->get_unsat_core(core);
    std::cout << core << "\n";
    clause.push_back(f);
    clauses.reset();
    clauses.push_back(clause);
    r = solver->check_sat_cc(cube, clauses);
    std::cout << r << "\n";
    core.reset();
    solver->get_unsat_core(core);
    std::cout << core << "\n";
    clause.push_back(g);
    clauses.reset();
    clauses.push_back(clause);
    r = solver->check_sat_cc(cube, clauses);
    std::cout << r << "\n";
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy