| ∀ i, j, r, st, r1. i→n(i) + # vals0 ≤ i→n(j) ∧ 0 ≤ i → (putArray(vals0, r, i, st)[r1 -- j ']) = st[r1 -- j '], i→n(i) + # (val + vals0) ≤ i→n(j), 0 ≤ i ⊦ (putArray(val + vals0, r, i, st)[r1 -- j ']) = st[r1 -- j '] |
⊦ putArray(val ' + vals, r, i, st) = (putArray(vals, r, i + 1, st)[r -- i ', val])
# vals0 + i→n(i) < i→n(j), 0 ≤ i, ∀ i0, j0, r0, st0, r2. ¬ i→n(j0) < i→n(i0) + # vals0 ∧ ¬ i0 < 0 → (putArray(vals0, r0, i0, st0)[r2 -- j0 ']) = st0[r2 -- j0 '] ⊦ (putArray(vals0, r, i + 1, st)[r -- i ', val][r1 -- j ']) = st[r1 -- j '], j = 0
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ i→n(i) = 0 ↔ i = 0], [CSIMPFORWARD : ⊦ m < n → n ≠ 0], [CSIMPSEQ : ⊦ ¬ i ≤ j ↔ j < i], [CSIMPSEQ : ⊦ ¬ m ≤ n ↔ n < m], [CSIMPSEQ : ⊦ m + n = n + m], [CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPSEQ : ⊦ m + 1 ≤ n ↔ m < n], [CSIMPSEQ : ⊦ # val ' = 0 +1], [CSIMPSEQ : ⊦ # (vals + vals0) = # vals + # vals0], [CSIMPSEQ : ⊦ (vals + vals0) + vals1 = vals + vals0 + vals1], [CSIMPSEQ : ⊦ val + vals = val ' + vals])]]