mirror of
https://github.com/Z3Prover/z3
synced 2025-04-28 19:35:50 +00:00
merge with master
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
commit
c513f3ca09
883 changed files with 13979 additions and 16480 deletions
|
@ -27,9 +27,9 @@ public:
|
|||
: m(m), m_p(p)
|
||||
{}
|
||||
|
||||
virtual ~ackermannize_bv_tactic() { }
|
||||
~ackermannize_bv_tactic() override { }
|
||||
|
||||
virtual void operator()(goal_ref const & g, goal_ref_buffer & result) {
|
||||
void operator()(goal_ref const & g, goal_ref_buffer & result) override {
|
||||
tactic_report report("ackermannize", *g);
|
||||
fail_if_unsat_core_generation("ackermannize", g);
|
||||
fail_if_proof_generation("ackermannize", g);
|
||||
|
@ -38,7 +38,7 @@ public:
|
|||
expr_ref_vector flas(m);
|
||||
const unsigned sz = g->size();
|
||||
for (unsigned i = 0; i < sz; i++) flas.push_back(g->form(i));
|
||||
lackr lackr(m, m_p, m_st, flas, NULL);
|
||||
lackr lackr(m, m_p, m_st, flas, nullptr);
|
||||
|
||||
// mk result
|
||||
goal_ref resg(alloc(goal, *g, true));
|
||||
|
@ -61,24 +61,24 @@ public:
|
|||
}
|
||||
|
||||
|
||||
void updt_params(params_ref const & _p) {
|
||||
void updt_params(params_ref const & _p) override {
|
||||
ackermannize_bv_tactic_params p(_p);
|
||||
m_lemma_limit = p.div0_ackermann_limit();
|
||||
}
|
||||
|
||||
virtual void collect_param_descrs(param_descrs & r) {
|
||||
void collect_param_descrs(param_descrs & r) override {
|
||||
ackermannize_bv_tactic_params::collect_param_descrs(r);
|
||||
}
|
||||
|
||||
virtual void collect_statistics(statistics & st) const {
|
||||
void collect_statistics(statistics & st) const override {
|
||||
st.update("ackr-constraints", m_st.m_ackrs_sz);
|
||||
}
|
||||
|
||||
virtual void reset_statistics() { m_st.reset(); }
|
||||
void reset_statistics() override { m_st.reset(); }
|
||||
|
||||
virtual void cleanup() { }
|
||||
void cleanup() override { }
|
||||
|
||||
virtual tactic* translate(ast_manager& m) {
|
||||
tactic* translate(ast_manager& m) override {
|
||||
return alloc(ackermannize_bv_tactic, m, m_p);
|
||||
}
|
||||
private:
|
||||
|
|
|
@ -45,7 +45,7 @@ class ackr_bound_probe : public probe {
|
|||
if (a->get_num_args() == 0) return;
|
||||
if (!m_ackr_helper.should_ackermannize(a)) return;
|
||||
func_decl* const fd = a->get_decl();
|
||||
app_set* ts = 0;
|
||||
app_set* ts = nullptr;
|
||||
if (!m_fun2terms.find(fd, ts)) {
|
||||
ts = alloc(app_set);
|
||||
m_fun2terms.insert(fd, ts);
|
||||
|
@ -57,7 +57,7 @@ class ackr_bound_probe : public probe {
|
|||
public:
|
||||
ackr_bound_probe() {}
|
||||
|
||||
virtual result operator()(goal const & g) {
|
||||
result operator()(goal const & g) override {
|
||||
proc p(g.m());
|
||||
unsigned sz = g.size();
|
||||
expr_fast_mark1 visited;
|
||||
|
|
|
@ -65,7 +65,7 @@ class ackr_info {
|
|||
}
|
||||
|
||||
inline app* find_term(func_decl* c) const {
|
||||
app * rv = 0;
|
||||
app * rv = nullptr;
|
||||
m_c2t.find(c,rv);
|
||||
return rv;
|
||||
}
|
||||
|
|
|
@ -37,12 +37,11 @@ public:
|
|||
, fixed_model(false)
|
||||
{ }
|
||||
|
||||
virtual ~ackr_model_converter() { }
|
||||
~ackr_model_converter() override { }
|
||||
|
||||
virtual void get_units(obj_map<expr, bool>& units) { units.reset(); }
|
||||
void get_units(obj_map<expr, bool>& units) override { units.reset(); }
|
||||
|
||||
virtual void operator()(model_ref & md, unsigned goal_idx) {
|
||||
SASSERT(goal_idx == 0);
|
||||
void operator()(model_ref & md) override {
|
||||
SASSERT(!fixed_model || md.get() == 0 || (!md->get_num_constants() && !md->get_num_functions()));
|
||||
model_ref& old_model = fixed_model ? abstr_model : md;
|
||||
SASSERT(old_model.get());
|
||||
|
@ -51,9 +50,7 @@ public:
|
|||
md = new_model;
|
||||
}
|
||||
|
||||
virtual void operator()(model_ref & md) { operator()(md, 0); }
|
||||
|
||||
virtual model_converter * translate(ast_translation & translator) {
|
||||
model_converter * translate(ast_translation & translator) override {
|
||||
ackr_info_ref retv_info = info->translate(translator);
|
||||
if (fixed_model) {
|
||||
model_ref retv_mod_ref = abstr_model->translate(translator);
|
||||
|
@ -122,7 +119,7 @@ void ackr_model_converter::add_entry(model_evaluator & evaluator,
|
|||
<< mk_ismt2_pp(value, m, 2) << "\n";
|
||||
);
|
||||
|
||||
func_interp * fi = 0;
|
||||
func_interp * fi = nullptr;
|
||||
func_decl * const declaration = term->get_decl();
|
||||
const unsigned sz = declaration->get_arity();
|
||||
SASSERT(sz == term->get_num_args());
|
||||
|
@ -139,7 +136,7 @@ void ackr_model_converter::add_entry(model_evaluator & evaluator,
|
|||
evaluator(aarg, arg_value);
|
||||
args.push_back(arg_value);
|
||||
}
|
||||
if (fi->get_entry(args.c_ptr()) == 0) {
|
||||
if (fi->get_entry(args.c_ptr()) == nullptr) {
|
||||
TRACE("ackr_model",
|
||||
tout << mk_ismt2_pp(declaration, m) << " args: " << std::endl;
|
||||
for (unsigned i = 0; i < args.size(); i++)
|
||||
|
|
|
@ -185,7 +185,7 @@ void lackr::add_term(app* a) {
|
|||
if (a->get_num_args() == 0) return;
|
||||
if (!m_ackr_helper.should_ackermannize(a)) return;
|
||||
func_decl* const fd = a->get_decl();
|
||||
app_set* ts = 0;
|
||||
app_set* ts = nullptr;
|
||||
if (!m_fun2terms.find(fd, ts)) {
|
||||
ts = alloc(app_set);
|
||||
m_fun2terms.insert(fd, ts);
|
||||
|
@ -205,7 +205,7 @@ lbool lackr::eager() {
|
|||
SASSERT(m_is_init);
|
||||
push_abstraction();
|
||||
TRACE("lackr", tout << "run sat 0\n"; );
|
||||
const lbool rv0 = m_sat->check_sat(0, 0);
|
||||
const lbool rv0 = m_sat->check_sat(0, nullptr);
|
||||
if (rv0 == l_false) return l_false;
|
||||
eager_enc();
|
||||
expr_ref all(m_m);
|
||||
|
@ -213,7 +213,7 @@ lbool lackr::eager() {
|
|||
m_simp(all);
|
||||
m_sat->assert_expr(all);
|
||||
TRACE("lackr", tout << "run sat all\n"; );
|
||||
return m_sat->check_sat(0, 0);
|
||||
return m_sat->check_sat(0, nullptr);
|
||||
}
|
||||
|
||||
lbool lackr::lazy() {
|
||||
|
@ -225,7 +225,7 @@ lbool lackr::lazy() {
|
|||
m_st.m_it++;
|
||||
checkpoint();
|
||||
TRACE("lackr", tout << "lazy check: " << m_st.m_it << "\n";);
|
||||
const lbool r = m_sat->check_sat(0, 0);
|
||||
const lbool r = m_sat->check_sat(0, nullptr);
|
||||
if (r == l_undef) return l_undef; // give up
|
||||
if (r == l_false) return l_false; // abstraction unsat
|
||||
// reconstruct model
|
||||
|
|
|
@ -34,7 +34,7 @@ struct lackr_model_constructor::imp {
|
|||
, m_conflicts(conflicts)
|
||||
, m_b_rw(m)
|
||||
, m_bv_rw(m)
|
||||
, m_evaluator(NULL)
|
||||
, m_evaluator(nullptr)
|
||||
, m_empty_model(m)
|
||||
, m_ackr_helper(m)
|
||||
{}
|
||||
|
@ -121,7 +121,7 @@ struct lackr_model_constructor::imp {
|
|||
|
||||
void add_entry(app* term, expr* value,
|
||||
obj_map<func_decl, func_interp*>& interpretations) {
|
||||
func_interp* fi = 0;
|
||||
func_interp* fi = nullptr;
|
||||
func_decl * const declaration = term->get_decl();
|
||||
const unsigned sz = declaration->get_arity();
|
||||
SASSERT(sz == term->get_num_args());
|
||||
|
@ -169,7 +169,7 @@ struct lackr_model_constructor::imp {
|
|||
// Stops upon the first failure.
|
||||
// Returns true if and only if all congruence checks succeeded.
|
||||
bool _check_stack() {
|
||||
if (m_evaluator == NULL) m_evaluator = alloc(model_evaluator, m_empty_model);
|
||||
if (m_evaluator == nullptr) m_evaluator = alloc(model_evaluator, m_empty_model);
|
||||
expr * curr;
|
||||
while (!m_stack.empty()) {
|
||||
curr = m_stack.back();
|
||||
|
@ -276,7 +276,7 @@ struct lackr_model_constructor::imp {
|
|||
SASSERT(a->get_num_args() == 0);
|
||||
func_decl * const fd = a->get_decl();
|
||||
expr * val = m_abstr_model->get_const_interp(fd);
|
||||
if (val == 0) { // TODO: avoid model completetion?
|
||||
if (val == nullptr) { // TODO: avoid model completetion?
|
||||
sort * s = fd->get_range();
|
||||
val = m_abstr_model->get_some_value(s);
|
||||
}
|
||||
|
@ -295,7 +295,7 @@ struct lackr_model_constructor::imp {
|
|||
expr_ref value(m_m);
|
||||
value = m_abstr_model->get_const_interp(ac->get_decl());
|
||||
// get ackermann constant's interpretation
|
||||
if (value.get() == 0) { // TODO: avoid model completion?
|
||||
if (value.get() == nullptr) { // TODO: avoid model completion?
|
||||
sort * s = a_fd->get_range();
|
||||
value = m_abstr_model->get_some_value(s);
|
||||
}
|
||||
|
@ -362,7 +362,7 @@ struct lackr_model_constructor::imp {
|
|||
};
|
||||
|
||||
lackr_model_constructor::lackr_model_constructor(ast_manager& m, ackr_info_ref info)
|
||||
: m_imp(0)
|
||||
: m_imp(nullptr)
|
||||
, m_m(m)
|
||||
, m_state(UNKNOWN)
|
||||
, m_info(info)
|
||||
|
@ -377,7 +377,7 @@ bool lackr_model_constructor::check(model_ref& abstr_model) {
|
|||
m_conflicts.reset();
|
||||
if (m_imp) {
|
||||
dealloc(m_imp);
|
||||
m_imp = 0;
|
||||
m_imp = nullptr;
|
||||
}
|
||||
m_imp = alloc(lackr_model_constructor::imp, m_m, m_info, abstr_model, m_conflicts);
|
||||
const bool rv = m_imp->check();
|
||||
|
|
|
@ -28,10 +28,9 @@ public:
|
|||
, model_constructor(lmc)
|
||||
{ }
|
||||
|
||||
virtual ~lackr_model_converter_lazy() { }
|
||||
~lackr_model_converter_lazy() override { }
|
||||
|
||||
virtual void operator()(model_ref & md, unsigned goal_idx) {
|
||||
SASSERT(goal_idx == 0);
|
||||
void operator()(model_ref & md) override {
|
||||
SASSERT(md.get() == 0 || (!md->get_num_constants() && !md->get_num_functions()));
|
||||
SASSERT(model_constructor.get());
|
||||
model * new_model = alloc(model, m);
|
||||
|
@ -39,15 +38,11 @@ public:
|
|||
model_constructor->make_model(md);
|
||||
}
|
||||
|
||||
virtual void operator()(model_ref & md) {
|
||||
operator()(md, 0);
|
||||
}
|
||||
|
||||
virtual void get_units(obj_map<expr, bool>& units) { units.reset(); }
|
||||
void get_units(obj_map<expr, bool>& units) override { units.reset(); }
|
||||
|
||||
//void display(std::ostream & out);
|
||||
|
||||
virtual model_converter * translate(ast_translation & translator) {
|
||||
model_converter * translate(ast_translation & translator) override {
|
||||
NOT_IMPLEMENTED_YET();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue