| (addarray(r, ty, vals, st)[r -- sks0]) = refval(r0), (addarray(r, ty, vals, st)[r -- (i ' ' + sks1)]) = refval(r0), disjoint(str, vals .nonnullrefs, st), validreflist(str, vals, ty, st), newref(r, st), i < n→i(# vals), fits(r, sks0, addarray(r, ty, vals, st)), fits(vals[i→n(i)] .refval, sks1, addarray(r, ty, vals, st)), is_referencevalue(vals[i→n(i)]), 0 ≤ i ⊦ vals = [], r = jvmref, r0 = jvmref, sks0 = [], sks0 = i ' ' + sks1, dups(vals .nonnullrefs), hasSharing(vals .nonnullrefs, st) |
vals[i→n(i)] = refval(r1), (addarray(r, ty, vals, st)[r -- sks0]) = refval(r0), (addarray(r, ty, vals, st)[r -- (i ' ' + sks1)]) = refval(r0), disjoint(str, vals .nonnullrefs, st), validreflist(str, vals, ty, st), newref(r, st), i < n→i(# vals), fits(r, sks0, addarray(r, ty, vals, st)), fits(r1, sks1, addarray(r, ty, vals, st)), is_referencevalue(vals[i→n(i)]), 0 ≤ i ⊦ vals = [], r = jvmref, r0 = jvmref, sks0 = [], sks0 = i ' ' + sks1, dups(vals .nonnullrefs), hasSharing(vals .nonnullrefs, st)
[[CONCRETESIMPRULES : ([CSIMPELIM : ⊦ is_referencevalue(val) → ( r = val .refval ↔ val = refval(r))])], [EXTRATERMS : (vals[i→n(i)], r1)]]