mirror of
https://github.com/Z3Prover/z3
synced 2025-04-07 09:55:19 +00:00
maintain ownership of dependency
This commit is contained in:
parent
7b8980f82d
commit
974ea7b68d
|
@ -31,8 +31,9 @@ namespace euf {
|
||||||
expr* orig; // original expression that encoded equation
|
expr* orig; // original expression that encoded equation
|
||||||
app* var; // isolated variable
|
app* var; // isolated variable
|
||||||
expr_ref term; // defined term
|
expr_ref term; // defined term
|
||||||
expr_dependency* dep;
|
expr_dependency_ref dep;
|
||||||
dependent_eq(expr* orig, app* var, expr_ref const& term, expr_dependency* d) : orig(orig), var(var), term(term), dep(d) {}
|
dependent_eq(expr* orig, app* var, expr_ref const& term, expr_dependency* d) :
|
||||||
|
orig(orig), var(var), term(term), dep(d, term.get_manager()) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef vector<dependent_eq> dep_eq_vector;
|
typedef vector<dependent_eq> dep_eq_vector;
|
||||||
|
|
|
@ -1996,11 +1996,7 @@ namespace bv {
|
||||||
out << e->get_id() << ": " << mk_bounded_pp(e, m, 1) << " ";
|
out << e->get_id() << ": " << mk_bounded_pp(e, m, 1) << " ";
|
||||||
if (is_fixed0(e))
|
if (is_fixed0(e))
|
||||||
out << "f ";
|
out << "f ";
|
||||||
if (bv.is_bv(e))
|
display_value(out, e) << "\n";
|
||||||
out << wval(e);
|
|
||||||
else if (m.is_bool(e))
|
|
||||||
out << (bval0(e) ? "T" : "F");
|
|
||||||
out << "\n";
|
|
||||||
}
|
}
|
||||||
terms.reset();
|
terms.reset();
|
||||||
return out;
|
return out;
|
||||||
|
|
|
@ -393,6 +393,7 @@ public:
|
||||||
bool external_is_used(unsigned) const;
|
bool external_is_used(unsigned) const;
|
||||||
void pop(unsigned k);
|
void pop(unsigned k);
|
||||||
unsigned num_scopes() const { return m_trail.get_num_scopes(); }
|
unsigned num_scopes() const { return m_trail.get_num_scopes(); }
|
||||||
|
trail_stack& trail() { return m_trail; }
|
||||||
bool compare_values(lpvar j, lconstraint_kind kind, const mpq& right_side);
|
bool compare_values(lpvar j, lconstraint_kind kind, const mpq& right_side);
|
||||||
lpvar add_term(const vector<std::pair<mpq, lpvar>>& coeffs, unsigned ext_i);
|
lpvar add_term(const vector<std::pair<mpq, lpvar>>& coeffs, unsigned ext_i);
|
||||||
void register_existing_terms();
|
void register_existing_terms();
|
||||||
|
|
|
@ -49,8 +49,18 @@ Notes:
|
||||||
#include "parsers/smt2/smt2parser.h"
|
#include "parsers/smt2/smt2parser.h"
|
||||||
#include "sat/sat_params.hpp"
|
#include "sat/sat_params.hpp"
|
||||||
|
|
||||||
|
tactic* mk_tactic_for_logic(ast_manager& m, params_ref const& p, symbol const& logic);
|
||||||
|
|
||||||
|
|
||||||
|
class smt_nested_solver_factory : public solver_factory {
|
||||||
|
public:
|
||||||
|
solver* operator()(ast_manager& m, params_ref const& p, bool proofs_enabled, bool models_enabled, bool unsat_core_enabled, symbol const& logic) override {
|
||||||
|
auto t = mk_tactic_for_logic(m, p, logic);
|
||||||
|
auto s = mk_tactic2solver(m, t, p, proofs_enabled, models_enabled, unsat_core_enabled, logic);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
tactic * mk_tactic_for_logic(ast_manager & m, params_ref const & p, symbol const & logic) {
|
tactic * mk_tactic_for_logic(ast_manager & m, params_ref const & p, symbol const & logic) {
|
||||||
if (logic=="QF_UF")
|
if (logic=="QF_UF")
|
||||||
return mk_qfuf_tactic(m, p);
|
return mk_qfuf_tactic(m, p);
|
||||||
|
|
Loading…
Reference in a new issue