mirror of
https://github.com/Z3Prover/z3
synced 2025-06-06 22:23:22 +00:00
disable polysat inside of recursive solver
This commit is contained in:
parent
1cba5fd55e
commit
704a41ee36
5 changed files with 12 additions and 5 deletions
|
@ -42,10 +42,11 @@ namespace polysat {
|
||||||
bit_width(bit_width),
|
bit_width(bit_width),
|
||||||
x_decl(m),
|
x_decl(m),
|
||||||
x(m) {
|
x(m) {
|
||||||
// m.register_plugin(symbol("bv"), alloc(bv_decl_plugin)); // this alone doesn't work
|
|
||||||
reg_decl_plugins(m);
|
reg_decl_plugins(m);
|
||||||
bv = alloc(bv_util, m);
|
bv = alloc(bv_util, m);
|
||||||
s = mk_solver(m, params_ref::get_empty(), false, true, true, symbol::null);
|
params_ref p;
|
||||||
|
p.set_bool("bv.polysat", false);
|
||||||
|
s = mk_solver(m, p, false, true, true, symbol::null);
|
||||||
x_decl = m.mk_const_decl("x", bv->mk_sort(bit_width));
|
x_decl = m.mk_const_decl("x", bv->mk_sort(bit_width));
|
||||||
x = m.mk_const(x_decl);
|
x = m.mk_const(x_decl);
|
||||||
}
|
}
|
||||||
|
@ -68,7 +69,8 @@ namespace polysat {
|
||||||
expr* mk_poly(univariate const& p) const {
|
expr* mk_poly(univariate const& p) const {
|
||||||
if (p.empty()) {
|
if (p.empty()) {
|
||||||
return mk_numeral(rational::zero());
|
return mk_numeral(rational::zero());
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
expr* e = mk_numeral(p.back());
|
expr* e = mk_numeral(p.back());
|
||||||
for (unsigned i = p.size() - 1; i-- > 0; ) {
|
for (unsigned i = p.size() - 1; i-- > 0; ) {
|
||||||
e = bv->mk_bv_mul(e, x);
|
e = bv->mk_bv_mul(e, x);
|
||||||
|
|
|
@ -121,6 +121,7 @@ namespace sat {
|
||||||
virtual bool check_model(model const& m) const { return true; }
|
virtual bool check_model(model const& m) const { return true; }
|
||||||
virtual void gc_vars(unsigned num_vars) {}
|
virtual void gc_vars(unsigned num_vars) {}
|
||||||
virtual bool should_research(sat::literal_vector const& core) { return false;}
|
virtual bool should_research(sat::literal_vector const& core) { return false;}
|
||||||
|
virtual void updt_params(params_ref const& p) {}
|
||||||
virtual void add_assumptions(literal_set& ext_assumptions) {}
|
virtual void add_assumptions(literal_set& ext_assumptions) {}
|
||||||
virtual bool tracking_assumptions() { return false; }
|
virtual bool tracking_assumptions() { return false; }
|
||||||
virtual bool enable_self_propagate() const { return false; }
|
virtual bool enable_self_propagate() const { return false; }
|
||||||
|
|
|
@ -110,6 +110,7 @@ namespace sat {
|
||||||
void solver::set_extension(extension* ext) {
|
void solver::set_extension(extension* ext) {
|
||||||
m_ext = ext;
|
m_ext = ext;
|
||||||
if (ext) {
|
if (ext) {
|
||||||
|
ext->updt_params(m_params);
|
||||||
ext->set_solver(this);
|
ext->set_solver(this);
|
||||||
for (unsigned i = num_user_scopes(); i-- > 0;)
|
for (unsigned i = num_user_scopes(); i-- > 0;)
|
||||||
ext->user_push();
|
ext->user_push();
|
||||||
|
@ -3758,6 +3759,8 @@ namespace sat {
|
||||||
if (m_config.m_cut_simplify && !m_cut_simplifier && m_user_scope_literals.empty()) {
|
if (m_config.m_cut_simplify && !m_cut_simplifier && m_user_scope_literals.empty()) {
|
||||||
m_cut_simplifier = alloc(cut_simplifier, *this);
|
m_cut_simplifier = alloc(cut_simplifier, *this);
|
||||||
}
|
}
|
||||||
|
if (m_ext)
|
||||||
|
m_ext->updt_params(m_params);
|
||||||
}
|
}
|
||||||
|
|
||||||
void solver::collect_param_descrs(param_descrs & d) {
|
void solver::collect_param_descrs(param_descrs & d) {
|
||||||
|
|
|
@ -278,7 +278,7 @@ namespace euf {
|
||||||
}
|
}
|
||||||
trail_stack& get_trail_stack() { return m_trail; }
|
trail_stack& get_trail_stack() { return m_trail; }
|
||||||
|
|
||||||
void updt_params(params_ref const& p);
|
void updt_params(params_ref const& p) override;
|
||||||
void set_lookahead(sat::lookahead* s) override { m_lookahead = s; }
|
void set_lookahead(sat::lookahead* s) override { m_lookahead = s; }
|
||||||
void init_search() override;
|
void init_search() override;
|
||||||
double get_reward(literal l, ext_constraint_idx idx, sat::literal_occs_fun& occs) const override;
|
double get_reward(literal l, ext_constraint_idx idx, sat::literal_occs_fun& occs) const override;
|
||||||
|
|
|
@ -139,7 +139,7 @@ public:
|
||||||
else
|
else
|
||||||
l = logic;
|
l = logic;
|
||||||
|
|
||||||
tactic_params tp;
|
tactic_params tp(p);
|
||||||
tactic_ref t;
|
tactic_ref t;
|
||||||
if (tp.default_tactic() != symbol::null &&
|
if (tp.default_tactic() != symbol::null &&
|
||||||
!tp.default_tactic().is_numerical() &&
|
!tp.default_tactic().is_numerical() &&
|
||||||
|
@ -151,6 +151,7 @@ public:
|
||||||
sexpr_ref se = parse_sexpr(ctx, is, p, file_name);
|
sexpr_ref se = parse_sexpr(ctx, is, p, file_name);
|
||||||
if (se) {
|
if (se) {
|
||||||
t = sexpr2tactic(ctx, se.get());
|
t = sexpr2tactic(ctx, se.get());
|
||||||
|
t->updt_params(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue