| validrefnotnull(str, st[rk] .refval, ty1, st), is_referencevalue(st[rk]), rk ∈ st, newref(r1, 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)) |
st[rk] = refval(r), validrefnotnull(str, r, ty1, st), is_referencevalue(st[rk]), rk ∈ st, newref(r1, 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))
[[CONCRETESIMPRULES : ([CSIMPELIM : ⊦ is_referencevalue(val) → ( r = val .refval ↔ val = refval(r))])], [EXTRATERMS : (st[rk], r)]]