| r ≠ r1, st[r0 -- _type] .type = mkarraytype(ty), 0 ≤ i, 0 < st[r0 -- _length] .intval, validref(str, r2, ty, st), i < st[r0 -- _length] .intval, path∃(str, r, r0, st), ∃ refs. refs ≠ [] ∧ refs .first = r ∧ refs .last = r1 ∧ ¬ dups(refs) ∧ validrefs(str, refs, (st[r0 -- i ', refval(r2)][r -- _type]) .type, st[r0 -- i ', refval(r2)]), r2 = jvmref → is_reftype(ty) ⊦ r0 = jvmref, path∃(str, r2, r1, st), path∃(str, r, r1, st) |
st[r0 -- _type] .type = mkarraytype(ty), 0 ≤ i, 0 < st[r0 -- _length] .intval, validref(str, r2, ty, st), i < st[r0 -- _length] .intval, path∃(str, refs .first, r0, st), validrefs(str, refs, st[refs .first -- _type] .type, st[r0 -- i ', refval(r2)]), r2 = jvmref → is_reftype(ty) ⊦ r0 = jvmref, refs = [], refs .first = refs .last, path∃(str, r2, refs .last, st), path∃(str, refs .first, refs .last, st), dups(refs)
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : javastore, , type-at, ⊦ (st[r -- i ', val] [r0 -- _type ] ) = st[r0 -- _type]])]]