| ∀ r0, i0, st0. getarray(r0, i0, n→i(# vals0), putArray(vals0, r0, i0, st0)) = vals0 ⊦ getarray(r, i, 1 + n→i(# vals0), putArray(vals0, r, i + 1, st)[r -- i ', val]) = val ' + vals0 |
⊦ 1 < j → getarray(r, i, j, st) = getarray(r, i, j - 1, st) + st[r -- (i + j - 1) ']
⊦ putArray([], r, i, st) = st
⊦ getarray(r, i, 1, st) = st[r -- i '] '
1 < 1 + n→i(# vals0), ∀ r0, i0, st0. getarray(r0, i0, n→i(# vals0), putArray(vals0, r0, i0, st0)) = vals0 ⊦ getarray(r, i, 1 + n→i(# vals0) - 1, putArray(vals0, r, i + 1, st)[r -- i ', val]) + (putArray(vals0, r, i + 1, st)[r -- i ', val][r -- (i + 1 + n→i(# vals0) - 1) ']) = val ' + vals0
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ((* j)) < i0 + ((* j0)) ↔ j - j0 < i0], [CSIMPSEQ : 0 ≤ i ⊦ ((* i)) < n→i(n) ↔ i→n(i) < n], [CSIMPSEQ : ⊦ 0 < n ↔ n ≠ 0], [CSIMPSEQ : ⊦ # vals = 0 ↔ vals = []], [CSIMPSEQ : ⊦ i + j + i0 = (i + j) + i0], [CSIMPSEQ : ⊦ i + j = j + i], [CSIMPSEQ : ⊦ # [] = 0], [CSIMPSEQ : ⊦ (st[rk0, val][rk]) = ((rk = rk0 ⊃ val; st[rk]))], [CSIMPSEQ : ⊦ vals + [] = vals], [CSIMPSEQ : ⊦ (vals + vals0) + vals1 = vals + vals0 + vals1], [CSIMPSEQ : ⊦ val ' = val0 ' ↔ val = val0])], [EXTRATERMS : (putArray(vals0, r, i + 1, st)[r -- i ', val], 1 + n→i(# vals0), i, r)]]