| true, ∀ val, st, ty, r, i, vals0. # vals0 < # vals → (true → (0 ≤ i ∧ i→n(i) < # vals0 → (addarray(r, ty, vals0, st)[r -- i ', val]) = addarray(r, ty, vals0[i→n(i), val], st))) ⊦ 0 ≤ i ∧ i→n(i) < # vals → (addarray(r, ty, vals, st)[r -- i ', val]) = addarray(r, ty, vals[i→n(i), val], st) |
0 ≤ i, i→n(i) < # vals, ∀ val, st, ty, r, i, vals0. # vals0 < # vals → (true → (0 ≤ i ∧ i→n(i) < # vals0 → (addarray(r, ty, vals0, st)[r -- i ', val]) = addarray(r, ty, vals0[i→n(i), val], st))) ⊦ (addarray(r, ty, vals, st)[r -- i ', val]) = addarray(r, ty, vals[i→n(i), val], st), vals = []
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ # vals = 0 ↔ vals = []], [CSIMPFORWARD : ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j], [CSIMPFORWARD : ⊦ m < n → n ≠ 0])]]