| ∀ r, ty, st. addarray(r, ty, mklist(initial_value(ty), m), st) = (addarray(r, initial_value(ty), n→i(m), st)[r -- _type, typeval(mkarraytype(ty))][r -- _length, intval(n→i(m))]) ⊦ (addarray(r, ty, mklist(initial_value(ty), m + 1) .butlast, st)[r -- n→i(m) ', mklist(initial_value(ty), m + 1) .last] [r -- _length, intval(n→i(m) + 1) ] ) = (addarray(r, initial_value(ty), n→i(m) + 1, st)[r -- _type, typeval(mkarraytype(ty))][r -- _length, intval(n→i(m) + 1)]) |
⊦ i > 0 → addarray(r, val, i, st) = (addarray(r, val, i - 1, st)[r -- (i - 1) ', val])
n→i(m) + 1 > 0, ∀ r, ty, st. addarray(r, ty, mklist(initial_value(ty), m), st) = (addarray(r, initial_value(ty), n→i(m), st)[r -- _type, typeval(mkarraytype(ty))][r -- _length, intval(n→i(m))]) ⊦ (addarray(r, ty, mklist(initial_value(ty), m + 1) .butlast, st)[r -- n→i(m) ', mklist(initial_value(ty), m + 1) .last] [r -- _length, intval(n→i(m) + 1) ] ) = (addarray(r, initial_value(ty), n→i(m) + 1 - 1, st)[r -- (n→i(m) + 1 - 1) ', initial_value(ty)][r -- _type, typeval(mkarraytype(ty))] [r -- _length, intval(n→i(m) + 1) ] )
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ i > j ↔ j < i], [CSIMPSEQ : ⊦ ((* j)) < i0 + ((* j0)) ↔ j - j0 < i0], [CSIMPSEQ : ⊦ (~1) < i ↔ 0 ≤ i], [CSIMPSEQ : ⊦ 0 ≤ n→i(n)], [CSIMPSEQ : ⊦ i + j + i0 = (i + j) + i0], [CSIMPSEQ : ⊦ i + j = j + i])], [EXTRATERMS : (st, n→i(m) + 1, initial_value(ty), r)]]