| (~1) ≤ i1, 0 < i1, ∀ i, ints0, refs, st, ty, r, ints1. ints#(ints1) < ints#((i1 + 1) + ints2) → (true → (addarraymultlist(r, ty, st, refs, ints1, ints0, i)[_mode]) = st[_mode]) ⊦ ints2 = [], (addarraymultlist (refs .first, ty, addarraymultlist (r, ty, st[r -- i1 ', refval(refs .first)][r -- _type, typeval(mktype_from_dims(ty, (1 + n→i(# ints2)) + i))][r -- _length, intval(ints0 .first)], refs .rest, i1 ' + ints2, ints0, i), restn(i→n(i1 * (countrefs2(ints2) + 1)), refs .rest), ints2, ints0 .rest, i) [_mode ] ) = st[_mode] |
⊦ ints#(i ' + ints) = 1 + i→n(i) + ints#(ints)
(addarraymultlist (refs .first, ty, addarraymultlist (r, ty, st[r -- i1 ', refval(refs .first)][r -- _type, typeval(mktype_from_dims(ty, (1 + n→i(# ints2)) + i))][r -- _length, intval(ints0 .first)], refs .rest, i1 ' + ints2, ints0, i), restn(i→n(i1 * (countrefs2(ints2) + 1)), refs .rest), ints2, ints0 .rest, i) [_mode ] ) = (addarraymultlist (r, ty, st[r -- i1 ', refval(refs .first)][r -- _type, typeval(mktype_from_dims(ty, (1 + n→i(# ints2)) + i))][r -- _length, intval(ints0 .first)], refs .rest, i1 ' + ints2, ints0, i) [_mode ] ), (~1) ≤ i1, 0 < i1, ∀ i, ints0, refs, st, ty, r, ints1. ints#(ints1) < ints#((i1 + 1) + ints2) → (true → (addarraymultlist(r, ty, st, refs, ints1, ints0, i)[_mode]) = st[_mode]) ⊦ ints2 = [], (addarraymultlist (refs .first, ty, addarraymultlist (r, ty, st[r -- i1 ', refval(refs .first)][r -- _type, typeval(mktype_from_dims(ty, (1 + n→i(# ints2)) + i))][r -- _length, intval(ints0 .first)], refs .rest, i1 ' + ints2, ints0, i), restn(i→n(i1 * (countrefs2(ints2) + 1)), refs .rest), ints2, ints0 .rest, i) [_mode ] ) = st[_mode]
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ i + ints = i ' + ints], [CSIMPSEQ : ⊦ 0 < i → i→n(i + 1) = i→n(i) + 1], [CSIMPSEQ : ⊦ i + j + i0 = (i + j) + i0], [CSIMPSEQ : ⊦ i + j = j + i], [CSIMPSEQ : ⊦ (ints + ints0) + ints1 = ints + ints0 + ints1], [CSIMPSEQ : ⊦ ¬ m < n ↔ n ≤ m], [CSIMPSEQ : ⊦ m + n ≤ m ↔ n = 0], [CSIMPSEQ : ⊦ m + n = 0 ↔ m = 0 ∧ n = 0], [CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPSEQ : ⊦ m + n = n + m])], [EXTRATERMS : (i, ints0 .rest, restn(i→n(i1 * (countrefs2(ints2) + 1)), refs .rest), addarraymultlist (r, ty, st[r -- i1 ', refval(refs .first)] [r -- _type, typeval (mktype_from_dims(ty, (1 + n→i(# ints2)) + i)) ] [r -- _length, intval(ints0 .first) ], refs .rest, i1 ' + ints2, ints0, i), ty, refs .first, ints2)]]