| 0 ≤ i, i→n(i) < # vals0, i→n(i) + # vals ≤ # vals0, i→n(i) + n0 + # vals < # vals0, 0 ≤ (n→i(n0) + n→i(# vals)) + i, (i→n(i) + # vals) + n0 < # vals0, 0 ≤ i + n→i(# vals) ⊦ vals0 = [], vals0[i→n(i) + n0 + # vals] = (restn(i→n(i) + # vals, vals0)[n0]) |
⊦ m + n = n + m
0 ≤ i, i→n(i) < # vals0, # vals + i→n(i) ≤ # vals0, i→n(i) + n0 + # vals < # vals0, 0 ≤ (n→i(n0) + n→i(# vals)) + i, (# vals + i→n(i)) + n0 < # vals0, 0 ≤ i + n→i(# vals) ⊦ vals0 = [], vals0[i→n(i) + n0 + # vals] = (restn(# vals + i→n(i), vals0)[n0])
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (# vals, i→n(i))]]