| rk = r0 -- sk, rk ∈ st, st ⊆ st1, newref(r, st) ⊦ r = jvmref, ( rk ∈ addarray(r, ty, i1, st1) ∨ r0 = r ∧ ¬ is_fskey(sk) ∧ ¬ sk .index < j ∧ ¬ j + n→i(# vals1) ≤ sk .index ∨ r0 = r ∧ ¬ is_fskey(sk) ∧ ¬ sk .index < i ∧ ¬ i + n→i(# vals0) ≤ sk .index) ∧ st[rk] = (putArray(vals0, r, i, putArray(vals1, r, j, addarray(r, ty, i1, st1)))[rk]) |
r0 -- sk ∈ st, st ⊆ st1, newref(r, st), r0 ∈ st ⊦ r = jvmref, ( r0 -- sk ∈ addarray(r, ty, i1, st1) ∨ r0 = r ∧ ¬ is_fskey(sk) ∧ ¬ sk .index < j ∧ ¬ j + n→i(# vals1) ≤ sk .index ∨ r0 = r ∧ ¬ is_fskey(sk) ∧ ¬ sk .index < i ∧ ¬ i + n→i(# vals0) ≤ sk .index) ∧ st[r0 -- sk] = (putArray(vals0, r, i, putArray(vals1, r, j, addarray(r, ty, i1, st1)))[r0 -- sk])
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ r -- sk ∈ st → r ∈ st])]]