mirror of
https://github.com/Z3Prover/z3
synced 2025-08-08 12:11:23 +00:00
This commit is contained in:
parent
f6595c161f
commit
2842c27e92
4 changed files with 10 additions and 8 deletions
|
@ -152,7 +152,6 @@ namespace arith {
|
||||||
solver& a = dynamic_cast<solver&>(*s.fid2solver(fid));
|
solver& a = dynamic_cast<solver&>(*s.fid2solver(fid));
|
||||||
char const* name;
|
char const* name;
|
||||||
expr_ref_vector args(m);
|
expr_ref_vector args(m);
|
||||||
sort_ref_vector sorts(m);
|
|
||||||
|
|
||||||
switch (m_ty) {
|
switch (m_ty) {
|
||||||
case hint_type::farkas_h:
|
case hint_type::farkas_h:
|
||||||
|
@ -182,11 +181,6 @@ namespace arith {
|
||||||
args.push_back(arith.mk_int(1));
|
args.push_back(arith.mk_int(1));
|
||||||
args.push_back(eq);
|
args.push_back(eq);
|
||||||
}
|
}
|
||||||
for (expr* arg : args)
|
return m.mk_app(symbol(name), args.size(), args.data(), m.mk_proof_sort());
|
||||||
sorts.push_back(arg->get_sort());
|
|
||||||
sort* range = m.mk_proof_sort();
|
|
||||||
func_decl* d = m.mk_func_decl(symbol(name), args.size(), sorts.data(), range);
|
|
||||||
expr* r = m.mk_app(d, args);
|
|
||||||
return r;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -674,7 +674,7 @@ namespace euf {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto const& [e, v] : replay.m)
|
for (auto const& [e, v] : replay.m)
|
||||||
if (si.is_bool_op(e))
|
if (si.is_bool_op(e) && !si.is_cached(to_app(e), sat::literal(v, false)))
|
||||||
si.cache(to_app(e), sat::literal(v, false));
|
si.cache(to_app(e), sat::literal(v, false));
|
||||||
|
|
||||||
if (relevancy_enabled())
|
if (relevancy_enabled())
|
||||||
|
|
|
@ -26,6 +26,7 @@ namespace sat {
|
||||||
virtual literal internalize(expr* e, bool learned) = 0;
|
virtual literal internalize(expr* e, bool learned) = 0;
|
||||||
virtual bool_var to_bool_var(expr* e) = 0;
|
virtual bool_var to_bool_var(expr* e) = 0;
|
||||||
virtual bool_var add_bool_var(expr* e) = 0;
|
virtual bool_var add_bool_var(expr* e) = 0;
|
||||||
|
virtual bool is_cached(app* t, literal l) const = 0;
|
||||||
virtual void cache(app* t, literal l) = 0;
|
virtual void cache(app* t, literal l) = 0;
|
||||||
virtual void uncache(literal l) = 0;
|
virtual void uncache(literal l) = 0;
|
||||||
virtual void push() = 0;
|
virtual void push() = 0;
|
||||||
|
|
|
@ -277,6 +277,13 @@ struct goal2sat::imp : public sat::sat_internalizer {
|
||||||
m_cache_trail.push_back(t);
|
m_cache_trail.push_back(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool is_cached(app* t, sat::literal l) const override {
|
||||||
|
if (!m_app2lit.contains(t))
|
||||||
|
return false;
|
||||||
|
SASSERT(m_app2lit[t] == l);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void convert_atom(expr * t, bool root, bool sign) {
|
void convert_atom(expr * t, bool root, bool sign) {
|
||||||
SASSERT(m.is_bool(t));
|
SASSERT(m.is_bool(t));
|
||||||
sat::literal l;
|
sat::literal l;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue