| ∀ 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) ] ) |
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 : ()], [EXTRATERMS : (r, ty, st)]]