| ∀ st, ty, r, vals0. # vals0 < # vals → (true → putArray(vals0, r, 0, addarray(r, initial_value(ty), n→i(# vals0), st)) = addarray(r, vals0, 0, st)) ⊦ putArray(vals, r, 0, addarray(r, initial_value(ty), n→i(# vals), st)) = addarray(r, vals, 0, st) |
⊦ i > 0 → addarray(r, val, i, st) = (addarray(r, val, i - 1, st)[r -- (i - 1) ', val])
⊦ addarray(r, val, 0, st) = st
⊦ addarray(r, [], i, st) = st
n→i(# vals) > 0, ∀ st, ty, r, vals0. # vals0 < # vals → (true → putArray(vals0, r, 0, addarray(r, initial_value(ty), n→i(# vals0), st)) = addarray(r, vals0, 0, st)) ⊦ putArray(vals, r, 0, addarray(r, initial_value(ty), n→i(# vals) - 1, st)[r -- (n→i(# vals) - 1) ', initial_value(ty)]) = addarray(r, vals, 0, st)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ i > j ↔ j < i], [CSIMPSEQ : 0 ≤ i ⊦ ((* i)) < n→i(n) ↔ i→n(i) < n], [CSIMPSEQ : ⊦ 0 < n ↔ n ≠ 0], [CSIMPSEQ : ⊦ # vals = 0 ↔ vals = []], [CSIMPSEQ : ⊦ # [] = 0], [CSIMPSEQ : ⊦ putArray([], r, i, st) = st])], [EXTRATERMS : (st, n→i(# vals), initial_value(ty), r)]]