| 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) ] ) |
∀ 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), st)[r -- n→i(m) ', initial_value(ty)][r -- _type, typeval(mkarraytype(ty))] [r -- _length, intval(n→i(m) + 1) ] )
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ 0 ≤ n→i(n)], [CSIMPSEQ : ⊦ (~1) < i ↔ 0 ≤ i], [CSIMPSEQ : ⊦ ((* j)) < i0 + ((* j0)) ↔ j - j0 < i0], [CSIMPSEQ : ⊦ i > j ↔ j < i], [CSIMPSEQ : ⊦ i + j = j + i], [CSIMPSEQ : ⊦ i + j + i0 = (i + j) + i0], [CSIMPSEQ : ⊦ i + 0 = i], [CSIMPSEQ : ⊦ ((* i)) + i0 - ((* j)) = (i - j) + i0])]]