| 1 < j, 0 ≤ i, i + j ≤ n→i(# vals), 0 < j, ∀ ty, st, r, vals, i, j0. i→n(j0) < i→n(j) → ( i + j0 ≤ n→i(# vals) ∧ 0 ≤ i ∧ 0 ≤ j0 → getarray(r, i, j0, addarray(r, vals, 0, st[r -- _type, typeval(mkarraytype(ty))][r -- _length, intval(n→i(# vals))])) = sublist(i→n(i), i→n(j0), vals)) ⊦ getarray(r, i, j - 1, addarray(r, vals, 0, st[r -- _type, typeval(mkarraytype(ty))][r -- _length, intval(n→i(# vals))])) + (addarray(r, vals, 0, st[r -- _type, typeval(mkarraytype(ty))][r -- _length, intval(n→i(# vals))])[r -- (i + j - 1) ']) = sublist(i→n(i), i→n(j), vals), 0 = j |
⊦ (addarray(r, vals, j, st[r -- _length, val])[r -- i ']) = (addarray(r, vals, j, st)[r -- i '])
⊦ (addarray(r, vals, j, st[r -- _type, val])[r -- i ']) = (addarray(r, vals, j, st)[r -- i '])
0 ≤ i, i + j ≤ n→i(# vals), 1 < j, 0 < j, ∀ ty, st, r, vals, i, j0. i→n(j0) < i→n(j) → ( i + j0 ≤ n→i(# vals) ∧ 0 ≤ i ∧ 0 ≤ j0 → getarray(r, i, j0, addarray(r, vals, 0, st[r -- _type, typeval(mkarraytype(ty))][r -- _length, intval(n→i(# vals))])) = sublist(i→n(i), i→n(j0), vals)) ⊦ 0 = j, getarray(r, i, j - 1, addarray(r, vals, 0, st[r -- _type, typeval(mkarraytype(ty))][r -- _length, intval(n→i(# vals))])) + (addarray(r, vals, 0, st)[r -- (i + j - 1) ']) ' = sublist(i→n(i), i→n(j), vals)
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ i < j ∧ 0 < i → 0 < j ∧ 1 < j], [CSIMPSEQ : ⊦ vals + val = vals + val '])]]