| newref(r, st), newref(r, st0), r0 -- sk ∈ st → r0 -- sk ∈ addarray(r, ty, vals, st0) ∧ st[r0 -- sk] = (addarray(r, ty, vals, st0)[r0 -- sk]), ∀ rk. rk ∈ st → rk ∈ addarray(r, ty, vals, st0) ∧ st[rk] = (addarray(r, ty, vals, st0)[rk]), r0 -- sk ∈ st, r0 ∈ st ⊦ r = jvmref, r0 -- sk ∈ st0 ∧ st[r0 -- sk] = st0[r0 -- sk] |
st[r0 -- sk] = (addarray(r, ty, vals, st0)[r0 -- sk]), newref(r, st), newref(r, st0), r0 -- sk ∈ st, r0 ∈ st, r0 -- sk ∈ addarray(r, ty, vals, st0), r0 ∈ addarray(r, ty, vals, st0), ∀ rk. rk ∈ st → rk ∈ addarray(r, ty, vals, st0) ∧ st[rk] = (addarray(r, ty, vals, st0)[rk]) ⊦ r = jvmref, r0 -- sk ∈ st0 ∧ (addarray(r, ty, vals, st0)[r0 -- sk]) = st0[r0 -- sk]
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ r -- sk ∈ st → r ∈ st])]]