| n→i(# vals) = i + 1, ∀ 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)) ⊦ vals = [], putArray(vals, r, 0, addarray(r, initial_value(ty), i, st)[r -- i ', initial_value(ty)]) = (addarray(r, vals .butlast, 0, st)[r -- i ', vals .last]) |
vals = vals1 + val ', n→i(# vals) = i + 1, ∀ 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)) ⊦ vals = [], putArray(vals, r, 0, addarray(r, initial_value(ty), i, st)[r -- i ', initial_value(ty)]) = (addarray(r, vals1, 0, st)[r -- i ', val])
[[CONCRETESIMPRULES : ([CSIMPELIM : vals ≠ [] ⊦ val = vals .last ∧ vals0 = vals .butlast ↔ vals = vals0 + val '])], [EXTRATERMS : (vals, val, vals1)]]