| 0 ≤ n→i(m) + n→i(m0), ∀ r, val, m, st. addarray(r, mklist(val, m0), n→i(m), addarray(r, mklist(val, m), 0, st)) = addarray(r, val, n→i(m0) + n→i(m), st) ⊦ addarray(r, mklist(val, m0) + val ', n→i(m), addarray(r, mklist(val, m), 0, st)) = (addarray(r, val, n→i(m0) + n→i(m), st)[r -- (n→i(m0) + n→i(m)) ', val]) |
⊦ vals ≠ [] → addarray(r, vals, i, st) = (addarray(r, vals .butlast, i, st)[r -- (i + n→i(# vals) - 1) ', vals .last])
mklist(val, m0) + val ' ≠ [], 0 ≤ n→i(m) + n→i(m0), ∀ r, val, m, st. addarray(r, mklist(val, m0), n→i(m), addarray(r, mklist(val, m), 0, st)) = addarray(r, val, n→i(m0) + n→i(m), st) ⊦ (addarray(r, (mklist(val, m0) + val ') .butlast, n→i(m), addarray(r, mklist(val, m), 0, st)) [r -- (n→i(m) + n→i(# (mklist(val, m0) + val ')) - 1) ', (mklist(val, m0) + val ') .last ] ) = (addarray(r, val, n→i(m0) + n→i(m), st)[r -- (n→i(m0) + n→i(m)) ', val])
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ vals + vals0 ≠ [] ↔ vals = [] ∧ vals0 = []], [CSIMPSEQ : ⊦ mklist(val, m) = [] ↔ m = 0], [CSIMPSEQ : ⊦ val ' ≠ []], [CSIMPSEQ : ⊦ (vals + vals0) + vals1 = vals + vals0 + vals1])], [EXTRATERMS : (addarray(r, mklist(val, m), 0, st), n→i(m), mklist(val, m0) + val ', r)]]