| ∀ n, j, r, i, st. n→i(m0) + n→i(n) ≤ j → sublist(m0, n, getarray(r, i, j, st)) = getarray(r, i + n→i(m0), n→i(n), st) ⊦ n→i(m0 +1) + n→i(n) ≤ j → sublist(m0 +1, n, getarray(r, i, j, st)) = getarray(r, i + n→i(m0 +1), n→i(n), st) |
⊦ 0 < j → getarray(r, i, j, st) .rest = getarray(r, i + 1, j - 1, st)
0 < j, n→i(n) + n→i(m0) < j, ∀ n0, j0, r0, i0, st0. ¬ j0 < n→i(m0) + n→i(n0) → sublist(m0, n0, getarray(r0, i0, j0, st0)) = getarray(r0, i0 + n→i(m0), n→i(n0), st0) ⊦ sublist(m0, n, getarray(r, i + 1, j - 1, st)) = getarray(r, (n→i(m0) + 1) + i, n→i(n), st)
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ n→i(m) + n→i(n) < j → 0 < j], [CSIMPSEQ : ⊦ ¬ i ≤ j ↔ j < i], [CSIMPSEQ : ⊦ i + j = j + i], [CSIMPSEQ : ⊦ i + j + i0 = (i + j) + i0], [CSIMPSEQ : ⊦ i + 1 ≤ j ↔ i < j], [CSIMPSEQ : ⊦ n→i(m + n) = n→i(m) + n→i(n)], [CSIMPSEQ : ⊦ m + n = n + m], [CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPSEQ : ⊦ sublist(m + 1, n, vals) = sublist(m, n, vals .rest)], [CSIMPSEQ : ⊦ m +1 = m + 1])]]