| is_referencevalue(st[r -- i ', refval(r2)][r -- (i ' ' + sks1)]) ∧ i ' ' + sks1 ≠ [], (st[r -- i ', refval(r2)][r2 -- sks3]) = refval(r1), st[r -- _type] .type = mkarraytype(ty), (st[r -- i ', refval(r2)][(st[r -- i ', refval(r2)][r -- (i ' ' + sks1) .first]) .refval -- (i ' ' + sks1) .rest]) = refval(r1), 0 < st[r -- _length] .intval, fits(r2, sks1, st[r -- i ', refval(r2)]), i < st[r -- _length] .intval, 0 ≤ i, fits(r2, sks3, st[r -- i ', refval(r2)]), disjoint(str, r ' + r2 ', st), validref(str, r2, ty, st) ⊦ r = jvmref, r = r2, r1 = jvmref, r2 = jvmref, sks3 = [], sks1 = sks3, junkref(str, r, st), hasSharing(r2, st), hasSharing(r, st) |
(st[r -- i ', refval(r2)][r2 -- sks3]) = refval(r1), st[r -- _type] .type = mkarraytype(ty), (st[r -- i ', refval(r2)][r2 -- sks1]) = refval(r1), is_referencevalue(st[r -- i ', refval(r2)][r -- (i ' ' + sks1)]), 0 < st[r -- _length] .intval, fits(r2, sks1, st[r -- i ', refval(r2)]), i < st[r -- _length] .intval, 0 ≤ i, fits(r2, sks3, st[r -- i ', refval(r2)]), disjoint(str, r ' + r2 ', st), validref(str, r2, ty, st) ⊦ r = jvmref, r = r2, r1 = jvmref, r2 = jvmref, sks3 = [], sks1 = sks3, junkref(str, r, st), hasSharing(r2, st), hasSharing(r, st)
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : list, storekeys, e-01, ⊦ sk ' + sks ≠ []], [CSIMPNAMEDSEQ : list, storekeys, c-07, ⊦ (sk ' + sks) .rest = sks], [CSIMPNAMEDSEQ : javavalue, , sel-09, ⊦ refval(r) .refval = r], [CSIMPNAMEDSEQ : store, javastore, At-same, ⊦ (st[rk, val][rk]) = val], [CSIMPNAMEDSEQ : list, storekeys, a, ⊦ (sks + sks0) + sks1 = sks + sks0 + sks1], [CSIMPNAMEDSEQ : list, storekeys, c-08, ⊦ (sk ' + sks) .first = sk])]]