| rk ∈ st, st ⊆ st1, newref(r, st) ⊦ r = jvmref, ( rk ∈ addarray(r, ty, i1, st1) ∨ rk .ref = r ∧ ¬ is_fskey(rk .key) ∧ ¬ rk .key .index < j ∧ ¬ j + n→i(# vals1) ≤ rk .key .index ∨ rk .ref = r ∧ ¬ is_fskey(rk .key) ∧ ¬ rk .key .index < i ∧ ¬ i + n→i(# vals0) ≤ rk .key .index) ∧ st[rk] = (putArray(vals0, r, i, putArray(vals1, r, j, addarray(r, ty, i1, st1)))[rk]) |
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])
[[CONCRETESIMPRULES : ([CSIMPELIM : ⊦ r = rk .ref ∧ sk = rk .key ↔ rk = r -- sk])], [EXTRATERMS : (rk, r0, sk)]]