| 0 ≤ i, i + n→i(# vals) ≤ n→i(# vals0) ⊦ is_indexkey(sk), (putArray(vals, r0, i, addarray(r0, ty, vals0, st))[r0 -- sk]) = (addarray(r0, ty, firstn(i→n(i), vals0) + vals + restn(i→n(i) + # vals, vals0), st)[r0 -- sk]) |
0 ≤ i, i + n→i(# vals) ≤ n→i(# vals0), is_fskey(sk) ⊦ (addarray(r0, ty, vals0, st)[r0 -- sk]) = (addarray(r0, ty, firstn(i→n(i), vals0) + vals + restn(i→n(i) + # vals, vals0), st)[r0 -- sk])
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_fskey(sk) → (putArray(vals, r, i, st) [r0 -- sk ] ) = st[r0 -- sk]], [CSIMPSEQ : ⊦ ¬ is_indexkey(sk) ↔ is_fskey(sk)])]]