3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-06 17:44:08 +00:00
This commit is contained in:
Nikolaj Bjorner 2023-11-28 14:32:56 -08:00
parent f36f21fa8c
commit 8179f8b5d7
3 changed files with 12 additions and 3 deletions

View file

@ -899,6 +899,11 @@ namespace arith {
lp().random_update(vars.size(), vars.data());
}
bool solver::include_func_interp(enode* n) const {
func_decl* d = n->get_decl();
return d && include_func_interp(d);
}
bool solver::assume_eqs() {
if (delayed_assume_eqs())
return true;
@ -913,7 +918,7 @@ namespace arith {
theory_var v = (i + start) % sz;
if (is_bool(v))
continue;
if (!ctx.is_shared(var2enode(v)))
if (!ctx.is_shared(var2enode(v)) && !include_func_interp(var2enode(v)))
continue;
ensure_column(v);
if (!is_registered_var(v))

View file

@ -401,6 +401,7 @@ namespace arith {
bool delayed_assume_eqs();
bool is_eq(theory_var v1, theory_var v2);
bool use_nra_model();
bool include_func_interp(enode* n) const;
lbool make_feasible();
bool check_delayed_eqs();

View file

@ -1513,7 +1513,7 @@ public:
for (theory_var i = 0; i < sz; ++i) {
theory_var v = (i + start) % sz;
enode* n1 = get_enode(v);
if (!th.is_relevant_and_shared(n1))
if (!th.is_relevant_and_shared(n1) && !include_func_interp(n1))
continue;
ensure_column(v);
if (!is_registered_var(v))
@ -3346,7 +3346,6 @@ public:
}
}
return r;
}
model_value_proc * mk_value(enode * n, model_generator & mg) {
@ -3402,6 +3401,10 @@ public:
a.is_mod0(f);
}
bool include_func_interp(enode* n) {
return include_func_interp(n->get_decl());
}
bool get_lower(enode* n, rational& val, bool& is_strict) {
theory_var v = n->get_th_var(get_id());
if (!is_registered_var(v))