| n→i(# vals0) = i1 + 1, ∀ r0, i0, st0. getarray(r0, i0, i1 + 1, putArray(vals0, r0, i0, st0)) = vals0 ⊦ vals0 = [], getarray(r, i, i1 + 1, putArray(vals0, r, i + 1, st)[r -- i ', val]) + vals0[i→n(i1)] ' = val ' + vals0 |
0 < j ⊦ getarray(r, i, j, st) = st[r -- i '] ' + getarray(r, i + 1, j - 1, st)
0 < i1 + 1, n→i(# vals0) = i1 + 1, ∀ r0, i0, st0. getarray(r0, i0, i1 + 1, putArray(vals0, r0, i0, st0)) = vals0 ⊦ vals0 = [], ((putArray(vals0, r, i + 1, st)[r -- i ', val][r -- i ']) ' + getarray(r, i + 1, i1 + 1 - 1, putArray(vals0, r, i + 1, st)[r -- i ', val])) + vals0[i→n(i1)] ' = val ' + vals0
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ((* j)) < i0 + ((* j0)) ↔ j - j0 < i0], [CSIMPSEQ : ⊦ (~1) < i ↔ 0 ≤ i], [CSIMPSEQ : ⊦ ¬ i ≤ j ↔ j < i], [CSIMPSEQ : ⊦ i + j + i0 = (i + j) + i0], [CSIMPSEQ : ⊦ i + j = j + i], [CSIMPSEQ : ⊦ i < 0 → ( n→i(m) = i + 1 ↔ m = 0 ∧ i = (~1))], [CSIMPSEQ : ⊦ # vals = 0 ↔ vals = []])], [EXTRATERMS : (putArray(vals0, r, i + 1, st)[r -- i ', val], i1 + 1, i, r)]]