| st[r -- sk] = refval(r0), sk .fs = mkfs(class, ty, fieldvar), st[r -- _type] .type = mkarraytype(ty0), is_array(str, r, st), 0 < st[r -- _length] .intval, 0 ≤ sk .index, sk .index < st[r -- _length] .intval, is_indexkey(sk), unchanged(str, r, st, st0), is_referencevalue(st[r -- sk .index ']) ∧ ( st[r -- sk .index '] .refval ≠ jvmref → st[st[r -- sk .index '] .refval -- _type] .type ≤ ty0 ∧ is_valid_ref(str, st[r -- sk .index '] .refval, st)) → unchanged(str, st[r -- sk .index '] .refval, st, st0) ⊦ r = jvmref, unchanged(str, r0, st, st0), junkref(str, r, st) |
sk = i ', st[r -- sk] = refval(r0), sk .fs = mkfs(class, ty, fieldvar), st[r -- _type] .type = mkarraytype(ty0), is_array(str, r, st), 0 < st[r -- _length] .intval, 0 ≤ i, i < st[r -- _length] .intval, is_indexkey(sk), unchanged(str, r, st, st0), is_referencevalue(st[r -- i ']) ∧ (st[r -- i '] .refval ≠ jvmref → st[st[r -- i '] .refval -- _type] .type ≤ ty0 ∧ is_valid_ref(str, st[r -- i '] .refval, st)) → unchanged(str, st[r -- i '] .refval, st, st0) ⊦ r = jvmref, unchanged(str, r0, st, st0), junkref(str, r, st)
[[CONCRETESIMPRULES : ([CSIMPELIM : ⊦ is_indexkey(sk) → (i = sk .index ↔ sk = i ')])], [EXTRATERMS : (sk, i)]]