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