| 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]) |
⊦ r ≠ r0 → (putArray(vals, r, j, st)[r0 -- sk]) = st[r0 -- sk]
⊦ r ≠ r0 → (r -- sk ∈ addarray(r0, ty, i, st) ↔ r -- sk ∈ st)
⊦ r ≠ r0 → (addarray(r, ty, i, st)[r0 -- sk]) = st[r0 -- sk]
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ r ∈ st → ¬ newref(r, st)], [CSIMPSEQ : ⊦ r ≠ r0 → (putArray(vals, r, j, st) [r0 -- sk ] ) = st[r0 -- sk]], [CSIMPSEQ : ⊦ rk ∈ st ∧ st ⊆ st1 → (st[rk] ≠ st1[rk] ↔ false)], [CSIMPSEQ : ⊦ rk ∈ st ∧ ¬ rk ∈ st0 → ¬ st ⊆ st0])], [EXTRATERMS : (sk, r0, putArray(vals1, r, j, addarray(r, ty, i1, st1)), i, r, vals0)]]