mirror of
https://github.com/Z3Prover/z3
synced 2025-04-29 20:05:51 +00:00
ensure re-internalization for predicates that are replayed. Theory internalization is currently not considered in depth.
This commit is contained in:
parent
3021da87cf
commit
3764eb1959
2 changed files with 25 additions and 7 deletions
|
@ -454,6 +454,9 @@ namespace euf {
|
|||
bool give_up = false;
|
||||
bool cont = false;
|
||||
|
||||
if (unit_propagate())
|
||||
return sat::check_result::CR_CONTINUE;
|
||||
|
||||
if (!init_relevancy())
|
||||
give_up = true;
|
||||
|
||||
|
@ -590,10 +593,14 @@ namespace euf {
|
|||
lit = literal(replay.m[e], false);
|
||||
else
|
||||
lit = si.internalize(e, true);
|
||||
VERIFY(lit.var() == v);
|
||||
if (is_app(e))
|
||||
for (expr* arg : *to_app(e))
|
||||
e_internalize(arg);
|
||||
VERIFY(lit.var() == v);
|
||||
if (!m_egraph.find(e) && (!m.is_iff(e) && !m.is_or(e) && !m.is_and(e) && !m.is_not(e))) {
|
||||
ptr_buffer<euf::enode> args;
|
||||
if (is_app(e))
|
||||
for (expr* arg : *to_app(e))
|
||||
args.push_back(e_internalize(arg));
|
||||
mk_enode(e, args.size(), args.data());
|
||||
}
|
||||
attach_lit(lit, e);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue