3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-09-16 14:41:31 +00:00

Merge branch 'unstable' of https://git01.codeplex.com/z3 into unstable

This commit is contained in:
Nikolaj Bjorner 2012-11-04 08:40:23 +02:00
commit bfbdad3ce6
79 changed files with 1497 additions and 1604 deletions

View file

@ -21,7 +21,7 @@ Revision History:
#include "dl_rule_transformer.h"
#include "dl_bmc_engine.h"
#include "dl_mk_slice.h"
#include "smt_solver.h"
#include "smt_kernel.h"
#include "datatype_decl_plugin.h"
#include "dl_mk_rule_inliner.h"
#include "dl_decl_plugin.h"

View file

@ -22,7 +22,7 @@ Revision History:
#include "params.h"
#include "statistics.h"
#include "smt_solver.h"
#include "smt_kernel.h"
#include "bv_decl_plugin.h"
@ -33,7 +33,7 @@ namespace datalog {
context& m_ctx;
ast_manager& m;
front_end_params m_fparams;
smt::solver m_solver;
smt::kernel m_solver;
obj_map<func_decl, sort*> m_pred2sort;
obj_map<sort, func_decl*> m_sort2pred;
obj_map<func_decl, func_decl*> m_pred2newpred;

View file

@ -23,7 +23,7 @@ Revision History:
#include "dl_context.h"
#include "dl_smt_relation.h"
#include "expr_abstract.h"
#include "smt_solver.h"
#include "smt_kernel.h"
#include "th_rewriter.h"
#include "qe.h"
#include "datatype_decl_plugin.h"
@ -131,7 +131,7 @@ namespace datalog {
front_end_params& params = get_plugin().get_fparams();
flet<bool> flet2(params.m_der, true);
smt::solver ctx(m, params);
smt::kernel ctx(m, params);
expr_ref tmp(m);
instantiate(r, tmp);
ctx.assert_expr(tmp);
@ -184,7 +184,7 @@ namespace datalog {
flet<bool> flet0(params.m_quant_elim, true);
flet<bool> flet1(params.m_nnf_cnf, false);
flet<bool> flet2(params.m_der, true);
smt::solver ctx(m, params);
smt::kernel ctx(m, params);
ctx.assert_expr(fml_inst);
lbool result = ctx.check();
TRACE("smt_relation",
@ -242,7 +242,7 @@ namespace datalog {
eqs.resize(num_vars);
instantiate(r, tmp);
flet<bool> flet4(params.m_model, true);
smt::solver ctx(m, params);
smt::kernel ctx(m, params);
ctx.assert_expr(tmp);
while (true) {

View file

@ -1867,7 +1867,7 @@ namespace pdr {
}
bool context::check_invariant(unsigned lvl, func_decl* fn) {
smt::solver ctx(m, m_fparams);
smt::kernel ctx(m, m_fparams);
pred_transformer& pt = *m_rels.find(fn);
expr_ref_vector conj(m);
expr_ref inv = pt.get_formulas(next_level(lvl), false);

View file

@ -274,7 +274,7 @@ namespace pdr {
(*this)(n, new_cores.back().first, new_cores.back().second);
}
}
virtual void collect_statistics(statistics& st) {}
virtual void collect_statistics(statistics& st) const {}
};
class context {

View file

@ -251,7 +251,7 @@ namespace pdr {
o2p(outer_mgr, m_pr)
{
reg_decl_plugins(m_pr);
m_ctx = alloc(smt::solver, m_pr, m_proof_params);
m_ctx = alloc(smt::kernel, m_pr, m_proof_params);
}
front_end_params farkas_learner::get_proof_params(front_end_params& orig_params) {
@ -325,7 +325,7 @@ namespace pdr {
if (!m_ctx) {
m_ctx = alloc(smt::solver, m_pr, m_proof_params);
m_ctx = alloc(smt::kernel, m_pr, m_proof_params);
}
m_ctx->push();

View file

@ -23,7 +23,7 @@ Revision History:
#include "arith_decl_plugin.h"
#include "ast_translation.h"
#include "bv_decl_plugin.h"
#include "smt_solver.h"
#include "smt_kernel.h"
#include "bool_rewriter.h"
#include "pdr_util.h"
#include "front_end_params.h"
@ -41,7 +41,7 @@ class farkas_learner {
front_end_params m_proof_params;
ast_manager m_pr;
scoped_ptr<smt::solver> m_ctx;
scoped_ptr<smt::kernel> m_ctx;
static front_end_params get_proof_params(front_end_params& orig_params);

View file

@ -463,7 +463,7 @@ namespace pdr {
imp imp(m_ctx);
ast_manager& m = core.get_manager();
expr_ref goal = imp.mk_induction_goal(p->pt(), p->level(), depth);
smt::solver ctx(m, m_ctx.get_fparams(), m_ctx.get_params());
smt::kernel ctx(m, m_ctx.get_fparams(), m_ctx.get_params());
ctx.assert_expr(goal);
lbool r = ctx.check();
TRACE("pdr", tout << r << "\n";

View file

@ -329,7 +329,7 @@ namespace pdr {
bool manager::implication_surely_holds(expr * lhs, expr * rhs, expr * bg) {
smt::solver sctx(m, get_fparams());
smt::kernel sctx(m, get_fparams());
if(bg) {
sctx.assert_expr(bg);
}

View file

@ -28,7 +28,7 @@ Revision History:
#include "expr_substitution.h"
#include "map.h"
#include "ref_vector.h"
#include "smt_solver.h"
#include "smt_kernel.h"
#include "pdr_util.h"
#include "pdr_sym_mux.h"
#include "pdr_farkas_learner.h"

View file

@ -25,7 +25,7 @@ Revision History:
#include <utility>
#include "ast.h"
#include "obj_hashtable.h"
#include "smt_solver.h"
#include "smt_kernel.h"
#include "util.h"
#include "vector.h"
#include "pdr_manager.h"

View file

@ -152,7 +152,7 @@ namespace pdr {
bool found_instance = false;
expr_ref C(m);
front_end_params fparams;
smt::solver solver(m, fparams);
smt::kernel solver(m, fparams);
solver.assert_expr(m_A);
for (unsigned i = 0; i < m_Bs.size(); ++i) {
expr_ref_vector fresh_vars(m);
@ -344,7 +344,7 @@ namespace pdr {
for (unsigned i = 0; i < fmls.size(); ++i) {
tout << mk_pp(fmls[i].get(), mp) << "\n";
});
smt::solver solver(mp, fparams);
smt::kernel solver(mp, fparams);
for (unsigned i = 0; i < fmls.size(); ++i) {
solver.assert_expr(fmls[i].get());
}

View file

@ -52,7 +52,7 @@ namespace pdr {
}
_smt_context::_smt_context(smt::solver & ctx, smt_context_manager& p, app* pred):
_smt_context::_smt_context(smt::kernel & ctx, smt_context_manager& p, app* pred):
smt_context(p, ctx.m(), pred),
m_context(ctx)
{}
@ -104,21 +104,21 @@ namespace pdr {
smt_context_manager::~smt_context_manager() {
TRACE("pdr",tout << "\n";);
std::for_each(m_contexts.begin(), m_contexts.end(), delete_proc<smt::solver>());
std::for_each(m_contexts.begin(), m_contexts.end(), delete_proc<smt::kernel>());
}
smt_context* smt_context_manager::mk_fresh() {
++m_num_contexts;
app_ref pred(m);
smt::solver * ctx = 0;
smt::kernel * ctx = 0;
if (m_max_num_contexts == 0) {
m_contexts.push_back(alloc(smt::solver, m, m_fparams));
m_contexts.push_back(alloc(smt::kernel, m, m_fparams));
pred = m.mk_true();
ctx = m_contexts[m_num_contexts-1];
}
else {
if (m_contexts.size() < m_max_num_contexts) {
m_contexts.push_back(alloc(smt::solver, m, m_fparams));
m_contexts.push_back(alloc(smt::kernel, m, m_fparams));
}
std::stringstream name;
name << "#context" << m_num_contexts;

View file

@ -20,7 +20,7 @@ Revision History:
#ifndef _PDR_SMT_CONTEXT_MANAGER_H_
#define _PDR_SMT_CONTEXT_MANAGER_H_
#include "smt_solver.h"
#include "smt_kernel.h"
#include "sat_solver.h"
#include "func_decl_dependencies.h"
@ -56,9 +56,9 @@ namespace pdr {
};
class _smt_context : public smt_context {
smt::solver & m_context;
smt::kernel & m_context;
public:
_smt_context(smt::solver & ctx, smt_context_manager& p, app* pred);
_smt_context(smt::kernel & ctx, smt_context_manager& p, app* pred);
virtual ~_smt_context() {}
virtual void assert_expr(expr* e);
virtual lbool check(expr_ref_vector& assumptions);
@ -74,7 +74,7 @@ namespace pdr {
class sat_context : public smt_context {
sat::solver m_solver;
public:
sat_context(smt::solver & ctx, smt_context_manager& p, app* pred);
sat_context(smt::kernel & ctx, smt_context_manager& p, app* pred);
virtual ~sat_context() {}
virtual void assert_expr(expr* e);
virtual lbool check(expr_ref_vector& assumptions);
@ -91,7 +91,7 @@ namespace pdr {
front_end_params& m_fparams;
ast_manager& m;
unsigned m_max_num_contexts;
ptr_vector<smt::solver> m_contexts;
ptr_vector<smt::kernel> m_contexts;
unsigned m_num_contexts;
app_ref_vector m_predicate_list;
func_decl_set m_predicate_set;

View file

@ -38,7 +38,7 @@ Revision History:
#include "bool_rewriter.h"
#include "dl_util.h"
#include "th_rewriter.h"
#include "smt_solver.h"
#include "smt_kernel.h"
#include "model_evaluator.h"
#include "has_free_vars.h"
#include "rewriter_def.h"
@ -1288,7 +1288,7 @@ namespace qe {
ast_manager& m;
quant_elim& m_qe;
th_rewriter m_rewriter;
smt::solver m_solver;
smt::kernel m_solver;
bv_util m_bv;
expr_ref_vector m_literals;

View file

@ -23,7 +23,7 @@ Revision History:
#include "qe_sat_tactic.h"
#include "quant_hoist.h"
#include "ast_pp.h"
#include "smt_solver.h"
#include "smt_kernel.h"
#include "qe.h"
#include "cooperate.h"
#include "model_v2_pp.h"
@ -66,8 +66,8 @@ namespace qe {
bool m_strong_context_simplify_param;
bool m_ctx_simplify_local_param;
vector<app_ref_vector> m_vars;
ptr_vector<smt::solver> m_solvers;
smt::solver m_solver;
ptr_vector<smt::kernel> m_solvers;
smt::kernel m_solver;
expr_ref m_fml;
expr_ref_vector m_Ms;
expr_ref_vector m_assignments;
@ -80,7 +80,7 @@ namespace qe {
ast_manager& m;
sat_tactic& m_super;
smt::solver& m_solver;
smt::kernel& m_solver;
atom_set m_pos;
atom_set m_neg;
app_ref_vector m_vars;
@ -322,10 +322,10 @@ namespace qe {
void init_Ms() {
for (unsigned i = 0; i < num_alternations(); ++i) {
m_Ms.push_back(m.mk_true());
m_solvers.push_back(alloc(smt::solver, m, m_fparams, m_params));
m_solvers.push_back(alloc(smt::kernel, m, m_fparams, m_params));
}
m_Ms.push_back(m_fml);
m_solvers.push_back(alloc(smt::solver, m, m_fparams, m_params));
m_solvers.push_back(alloc(smt::kernel, m, m_fparams, m_params));
m_solvers.back()->assert_expr(m_fml);
}
@ -333,7 +333,7 @@ namespace qe {
app_ref_vector const& vars(unsigned i) { return m_vars[i]; }
smt::solver& solver(unsigned i) { return *m_solvers[i]; }
smt::kernel& solver(unsigned i) { return *m_solvers[i]; }
void reset() {
m_fml = 0;
@ -468,7 +468,7 @@ namespace qe {
remove_duplicates(pos, neg);
// Assumption: B is already asserted in solver[i].
smt::solver& solver = *m_solvers[i];
smt::kernel& solver = *m_solvers[i];
solver.push();
solver.assert_expr(A);
nnf_strengthen(solver, pos, m.mk_false(), sub);
@ -506,7 +506,7 @@ namespace qe {
return Bnnf;
}
void nnf_strengthen(smt::solver& solver, atom_set& atoms, expr* value, expr_substitution& sub) {
void nnf_strengthen(smt::kernel& solver, atom_set& atoms, expr* value, expr_substitution& sub) {
atom_set::iterator it = atoms.begin(), end = atoms.end();
for (; it != end; ++it) {
solver.push();
@ -565,7 +565,7 @@ namespace qe {
return Bnnf;
}
void nnf_weaken(smt::solver& solver, expr_ref& B, atom_set& atoms, expr* value, expr_substitution& sub) {
void nnf_weaken(smt::kernel& solver, expr_ref& B, atom_set& atoms, expr* value, expr_substitution& sub) {
atom_set::iterator it = atoms.begin(), end = atoms.end();
for (; it != end; ++it) {
solver.push();
@ -678,7 +678,7 @@ namespace qe {
}
bool is_sat(unsigned i, expr* ctx, model_ref& model) {
smt::solver& solver = *m_solvers[i];
smt::kernel& solver = *m_solvers[i];
solver.push();
solver.assert_expr(ctx);
lbool r = solver.check();