mirror of
https://github.com/Z3Prover/z3
synced 2025-06-27 08:28:44 +00:00
Merge pull request #531 from seahorn/qearrays
extend model with the value of a fresh variable
This commit is contained in:
commit
8a4624e21f
1 changed files with 13 additions and 6 deletions
|
@ -309,12 +309,19 @@ namespace qe {
|
||||||
expr_ref_vector args(m);
|
expr_ref_vector args(m);
|
||||||
sort* range = get_array_range(m.get_sort(s));
|
sort* range = get_array_range(m.get_sort(s));
|
||||||
for (unsigned i = 0; i < idxs.size(); ++i) {
|
for (unsigned i = 0; i < idxs.size(); ++i) {
|
||||||
app_ref var(m);
|
app_ref var(m), sel(m);
|
||||||
|
expr_ref val(m);
|
||||||
var = m.mk_fresh_const("value", range);
|
var = m.mk_fresh_const("value", range);
|
||||||
vars.push_back(var);
|
vars.push_back(var);
|
||||||
args.reset();
|
args.reset();
|
||||||
args.push_back(result);
|
|
||||||
|
args.push_back (s);
|
||||||
args.append(idxs[i].m_values.size(), idxs[i].m_vars);
|
args.append(idxs[i].m_values.size(), idxs[i].m_vars);
|
||||||
|
sel = a.mk_select (args.size (), args.c_ptr ());
|
||||||
|
VERIFY (model.eval (sel, val));
|
||||||
|
model.register_decl (var->get_decl (), val);
|
||||||
|
|
||||||
|
args[0] = result;
|
||||||
args.push_back(var);
|
args.push_back(var);
|
||||||
result = a.mk_store(args.size(), args.c_ptr());
|
result = a.mk_store(args.size(), args.c_ptr());
|
||||||
}
|
}
|
||||||
|
@ -390,15 +397,15 @@ namespace qe {
|
||||||
}
|
}
|
||||||
|
|
||||||
lbool compare(expr* val1, expr* val2) {
|
lbool compare(expr* val1, expr* val2) {
|
||||||
if (val1 == val2) {
|
if (m.are_equal (val1, val2)) return l_true;
|
||||||
return l_true;
|
if (m.are_distinct (val1, val2)) return l_false;
|
||||||
}
|
|
||||||
if (is_uninterp(val1) ||
|
if (is_uninterp(val1) ||
|
||||||
is_uninterp(val2)) {
|
is_uninterp(val2)) {
|
||||||
// TBD chase definition of nested array.
|
// TBD chase definition of nested array.
|
||||||
return l_undef;
|
return l_undef;
|
||||||
}
|
}
|
||||||
return l_true;
|
return l_undef;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue