| sk = i ', (addarray(r, ty, vals, st)[r -- sks0]) = refval(r0), (addarray(r, ty, vals, st)[r -- (sk ' + sks1)]) = refval(r0), i < n→i(# vals), is_indexkey(sk), fits(r, sks0, addarray(r, ty, vals, st)), fits((addarray(r, ty, vals, st)[r -- sk]) .refval, sks1, addarray(r, ty, vals, st)), is_referencevalue(addarray(r, ty, vals, st)[r -- sk]), disjoint(str, vals .nonnullrefs, st), validreflist(str, vals, ty, st), newref(r, st), 0 ≤ i ⊦ vals = [], r = jvmref, r0 = jvmref, sks0 = [], sks0 = sk ' + sks1, dups(vals .nonnullrefs), hasSharing(vals .nonnullrefs, st) |
(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)
[[CONCRETESIMPRULES : ([CSIMPNAMEDFORWARD : int-abs, , forward-le-01, ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j], [CSIMPNAMEDSEQ : addarray, , add-at-ok, ⊦ 0 ≤ i ∧ i < n→i(# vals) → (addarray(r, ty, vals, st) [r -- i ' ] ) = vals[i→n(i)]], [CSIMPNAMEDSEQ : storekey, , test-08, ⊦ is_indexkey(i ')])]]