mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 09:35:32 +00:00
Merge branch 'master' into polysat
This commit is contained in:
commit
e5e79c1d4b
398 changed files with 24548 additions and 4983 deletions
|
@ -368,7 +368,6 @@ br_status bv2real_rewriter::mk_app_core(func_decl * f, unsigned num_args, expr *
|
|||
tout << "\n";);
|
||||
|
||||
if (u().memory_exceeded()) {
|
||||
std::cout << "tactic exception\n";
|
||||
throw tactic_exception("bv2real-memory exceeded");
|
||||
}
|
||||
if(f->get_family_id() == m_arith.get_family_id()) {
|
||||
|
|
|
@ -29,6 +29,7 @@ Notes:
|
|||
#include "ast/fpa_decl_plugin.h"
|
||||
#include "tactic/tactical.h"
|
||||
#include "util/stats.h"
|
||||
#include <iostream>
|
||||
|
||||
#include "tactic/core/collect_statistics_tactic.h"
|
||||
|
||||
|
|
|
@ -1756,14 +1756,14 @@ namespace smtfd {
|
|||
expr_ref val0 = (*m_model)(a);
|
||||
expr_ref val1 = (*m_model)(abs(a));
|
||||
if (is_ground(a) && val0 != val1 && val0->get_sort() == val1->get_sort()) {
|
||||
std::cout << mk_bounded_pp(a, m, 2) << " := " << val0 << " " << val1 << "\n";
|
||||
//std::cout << mk_bounded_pp(a, m, 2) << " := " << val0 << " " << val1 << "\n";
|
||||
found_bad = true;
|
||||
}
|
||||
}
|
||||
if (found_bad) {
|
||||
std::cout << "core: " << core << "\n";
|
||||
std::cout << *m_model.get() << "\n";
|
||||
exit(0);
|
||||
//std::cout << "core: " << core << "\n";
|
||||
//std::cout << *m_model.get() << "\n";
|
||||
UNREACHABLE();
|
||||
});
|
||||
|
||||
if (!has_q) {
|
||||
|
|
|
@ -23,12 +23,16 @@ Notes:
|
|||
/*
|
||||
* Add or overwrite value in model.
|
||||
*/
|
||||
void model_converter::display_add(std::ostream& out, ast_manager& m, func_decl* f, expr* e) const {
|
||||
void model_converter::display_add(std::ostream& out, smt2_pp_environment& env, ast_manager& m, func_decl* f, expr* e) {
|
||||
VERIFY(e);
|
||||
smt2_pp_environment_dbg env(m);
|
||||
smt2_pp_environment* _env = m_env ? m_env : &env;
|
||||
VERIFY(f->get_range() == e->get_sort());
|
||||
ast_smt2_pp(out, f, e, *_env, params_ref(), 0, "model-add") << "\n";
|
||||
ast_smt2_pp(out, f, e, env, params_ref(), 0, "model-add") << "\n";
|
||||
}
|
||||
|
||||
void model_converter::display_add(std::ostream& out, ast_manager& m, func_decl* f, expr* e) const {
|
||||
smt2_pp_environment_dbg dbgenv(m);
|
||||
smt2_pp_environment& env = m_env ? *m_env : dbgenv;
|
||||
display_add(out, env, m, f, e);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -57,14 +61,22 @@ void model_converter::display_add(std::ostream& out, ast_manager& m) {
|
|||
// default printer for converter that adds entries
|
||||
model_ref mdl = alloc(model, m);
|
||||
(*this)(mdl);
|
||||
for (unsigned i = 0, sz = mdl->get_num_constants(); i < sz; ++i) {
|
||||
func_decl* f = mdl->get_constant(i);
|
||||
display_add(out, m, f, mdl->get_const_interp(f));
|
||||
smt2_pp_environment_dbg dbgenv(m);
|
||||
smt2_pp_environment& env = m_env ? *m_env : dbgenv;
|
||||
display_add(out, env, *mdl);
|
||||
}
|
||||
|
||||
void model_converter::display_add(std::ostream& out, smt2_pp_environment& env, model& mdl) {
|
||||
|
||||
ast_manager& m = mdl.get_manager();
|
||||
for (unsigned i = 0, sz = mdl.get_num_constants(); i < sz; ++i) {
|
||||
func_decl* f = mdl.get_constant(i);
|
||||
display_add(out, env, m, f, mdl.get_const_interp(f));
|
||||
}
|
||||
for (unsigned i = 0, sz = mdl->get_num_functions(); i < sz; ++i) {
|
||||
func_decl* f = mdl->get_function(i);
|
||||
func_interp* fi = mdl->get_func_interp(f);
|
||||
display_add(out, m, f, fi->get_interp());
|
||||
for (unsigned i = 0, sz = mdl.get_num_functions(); i < sz; ++i) {
|
||||
func_decl* f = mdl.get_function(i);
|
||||
func_interp* fi = mdl.get_func_interp(f);
|
||||
display_add(out, env, m, f, fi->get_interp());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -153,9 +165,10 @@ public:
|
|||
}
|
||||
|
||||
void display(std::ostream & out) override {
|
||||
out << "(rmodel->model-converter-wrapper\n";
|
||||
model_v2_pp(out, *m_model);
|
||||
out << ")\n";
|
||||
ast_manager& m = m_model->get_manager();
|
||||
smt2_pp_environment_dbg dbgenv(m);
|
||||
smt2_pp_environment& env = m_env ? *m_env : dbgenv;
|
||||
model_converter::display_add(out, env, *m_model);
|
||||
}
|
||||
|
||||
model_converter * translate(ast_translation & translator) override {
|
||||
|
|
|
@ -64,11 +64,11 @@ class smt2_pp_environment;
|
|||
|
||||
class model_converter : public converter {
|
||||
protected:
|
||||
smt2_pp_environment* m_env;
|
||||
smt2_pp_environment* m_env;
|
||||
static void display_add(std::ostream& out, smt2_pp_environment& env, ast_manager& m, func_decl* f, expr* e);
|
||||
void display_add(std::ostream& out, ast_manager& m, func_decl* f, expr* e) const;
|
||||
void display_del(std::ostream& out, func_decl* f) const;
|
||||
void display_add(std::ostream& out, ast_manager& m);
|
||||
|
||||
public:
|
||||
|
||||
model_converter(): m_env(nullptr) {}
|
||||
|
@ -90,6 +90,9 @@ public:
|
|||
*/
|
||||
|
||||
virtual void get_units(obj_map<expr, bool>& fmls) { UNREACHABLE(); }
|
||||
|
||||
static void display_add(std::ostream& out, smt2_pp_environment& env, model& mdl);
|
||||
|
||||
};
|
||||
|
||||
typedef ref<model_converter> model_converter_ref;
|
||||
|
|
|
@ -7,7 +7,7 @@ Module Name:
|
|||
|
||||
Abstract:
|
||||
|
||||
Tactic for QF_LRA
|
||||
Tactic for QF_LIA
|
||||
|
||||
Author:
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ namespace user_propagator {
|
|||
virtual ~callback() = default;
|
||||
virtual void propagate_cb(unsigned num_fixed, expr* const* fixed_ids, unsigned num_eqs, expr* const* eq_lhs, expr* const* eq_rhs, expr* conseq) = 0;
|
||||
virtual void register_cb(expr* e) = 0;
|
||||
virtual void next_split_cb(expr* e, unsigned idx, lbool phase) = 0;
|
||||
};
|
||||
|
||||
class context_obj {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue