| st[rk] = refval(r), newref(r1, st), rk ∈ st, validrefnotnull(str, r, ty1, st) ⊦ r1 = jvmref, is_referencevalue(addarray(r1, ty, vals, st)[rk]) ∧ validrefnotnull(str, (addarray(r1, ty, vals, st)[rk]) .refval, ty1, addarray(r1, ty, vals, st)) |
⊦ rk .ref ≠ r → (addarray(r, ty, vals, st)[rk]) = st[rk]
¬ rk .ref ≠ r1, st[rk] = refval(r), newref(r1, st), rk ∈ st, validrefnotnull(str, r, ty1, st) ⊦ r1 = jvmref, is_referencevalue(addarray(r1, ty, vals, st)[rk]) ∧ validrefnotnull(str, (addarray(r1, ty, vals, st)[rk]) .refval, ty1, addarray(r1, ty, vals, st))
⊦ newref(r1, st) ∧ validrefnotnull(str, r, ty1, st) → validrefnotnull(str, r, ty1, addarray(r1, ty, vals, st))
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_referencevalue(refval(r))], [CSIMPSEQ : ⊦ refval(r) .refval = r])], [EXTRATERMS : (rk, st, vals, ty, r1)]]