| i + n→i(# vals) ≤ n→i(# vals0), 0 ≤ i ⊦ putArray(vals, r, i, addarray(r, ty, vals0, st)) = addarray(r, ty, firstn(i→n(i), vals0) + vals + restn(i→n(i) + # vals, vals0), st) |
⊦ st1 = st2 ↔ (∀ rk. (rk ∈ st1 ↔ rk ∈ st2) ∧ st1[rk] = st2[rk])
i + n→i(# vals) ≤ n→i(# vals0), 0 ≤ i ⊦ ∀ rk. (rk ∈ putArray(vals, r, i, addarray(r, ty, vals0, st)) ↔ rk ∈ addarray(r, ty, firstn(i→n(i), vals0) + vals + restn(i→n(i) + # vals, vals0), st)) ∧ (putArray(vals, r, i, addarray(r, ty, vals0, st))[rk]) = (addarray(r, ty, firstn(i→n(i), vals0) + vals + restn(i→n(i) + # vals, vals0), st)[rk])
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (addarray (r, ty, firstn(i→n(i), vals0) + vals + restn(i→n(i) + # vals, vals0), st), putArray(vals, r, i, addarray(r, ty, vals0, st)))]]