| 0 ≤ i, i + n→i(# vals) ≤ n→i(# vals0) ⊦ (addarray(r0, ty, vals0, st)[r0 -- fs ']) = (addarray(r0, ty, firstn(i→n(i), vals0) + vals + restn(i→n(i) + # vals, vals0), st)[r0 -- fs ']) |
⊦ r ≠ r0 ∨ r = r0 ∧ is_fskey(sk) ∧ sk ≠ _length ∧ sk ≠ _type ∨ r = r0 ∧ is_indexkey(sk) ∧ (sk .index < 0 ∨ n→i(# vals) ≤ sk .index) → (addarray(r, ty, vals, st)[r0 -- sk]) = st[r0 -- sk]
¬ ( r0 ≠ r0 ∨ r0 = r0 ∧ is_fskey(fs ') ∧ fs ' ≠ _length ∧ fs ' ≠ _type ∨ r0 = r0 ∧ is_indexkey(fs ') ∧ (fs ' .index < 0 ∨ n→i(# (firstn(i→n(i), vals0) + vals + restn(i→n(i) + # vals, vals0))) ≤ fs ' .index)), 0 ≤ i, i + n→i(# vals) ≤ n→i(# vals0) ⊦ (addarray(r0, ty, vals0, st)[r0 -- fs ']) = (addarray(r0, ty, firstn(i→n(i), vals0) + vals + restn(i→n(i) + # vals, vals0), st)[r0 -- fs '])
fs ' ≠ _type, fs ' ≠ _length ⊦ (addarray(r0, ty, vals, st)[r -- fs ']) = st[r -- fs ']
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_fskey(fs ')], [CSIMPSEQ : ⊦ ¬ is_indexkey(fs ')])], [EXTRATERMS : (fs ', r0, st, firstn(i→n(i), vals0) + vals + restn(i→n(i) + # vals, vals0), ty, r0)]]