| ⊦ disjoint(str, r ' + r2 ', st) ∧ ¬ hasSharing(r, st) ∧ ¬ hasSharing(r2, st) ∧ ¬ junkref(str, r, st) ∧ r ≠ r2 ∧ validref(str, r2, st[r0 -- _type] .type .type, st) ∧ r0 ≠ jvmref ∧ is_arraytype(st[r0 -- _type] .type) ∧ (r2 = jvmref → is_reftype(st[r0 -- _type] .type .type)) → ¬ hasSharing(r, st[r0 -- i ', refval(r2)]) |
is_arraytype(st[r0 -- _type] .type), validref(str, r2, st[r0 -- _type] .type .type, st), disjoint(str, r ' + r2 ', st), hasSharing(r, st[r0 -- i ', refval(r2)]), r2 = jvmref → is_reftype(st[r0 -- _type] .type .type) ⊦ r = r2, r0 = jvmref, hasSharing(r, st), hasSharing(r2, st), junkref(str, r, st)
[[CONCRETESIMPRULES : ()]]