| i + n→i(# vals) ≥ 0, i→n(i + n→i(# vals)) + n0 < # vals0, 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 ⊦ vals0 = [], vals0[i→n(i) + n0 + # vals] = (restn(i→n(i) + # vals, vals0)[n0]) |
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])
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j], [CSIMPSEQ : ⊦ i + j = j + i], [CSIMPSEQ : ⊦ i + j + i0 = (i + j) + i0], [CSIMPSEQ : ⊦ 0 ≤ i → i→n(i + n→i(n)) = i→n(i) + n], [CSIMPSEQ : ⊦ ¬ i < j ↔ j ≤ i], [CSIMPSEQ : ⊦ i ≥ j ↔ ¬ i < j])]]