mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 01:25:31 +00:00
#5778 - ensure arrays used inside of extensionality function are treated as shared
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
0a665b0fa0
commit
8e2f09b517
2 changed files with 9 additions and 33 deletions
|
@ -629,12 +629,14 @@ namespace array {
|
|||
euf::enode * n = var2enode(i);
|
||||
if (!is_array(n))
|
||||
continue;
|
||||
CTRACE("array", !ctx.is_relevant(n), tout << "not relevant: " << ctx.bpp(n) << "\n");
|
||||
if (!ctx.is_relevant(n))
|
||||
continue;
|
||||
euf::enode * r = n->get_root();
|
||||
if (r->is_marked1())
|
||||
continue;
|
||||
// arrays used as indices in other arrays have to be treated as shared issue #3532, #3529
|
||||
// arrays used as indices in other arrays have to be treated as shared issue #3532, #3529
|
||||
CTRACE("array", !ctx.is_shared(r) && !is_shared_arg(r), tout << "not shared: " << ctx.bpp(r) << "\n");
|
||||
if (ctx.is_shared(r) || is_shared_arg(r))
|
||||
roots.push_back(r->get_th_var(get_id()));
|
||||
r->mark1();
|
||||
|
@ -655,6 +657,8 @@ namespace array {
|
|||
return true;
|
||||
if (a.is_const(e))
|
||||
return true;
|
||||
if (a.is_ext(e))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue