| # (1 ' + ints2) > 1 ∧ (1 ' + ints2) .first = 1, i→n(countrefs2(ints2)) < # refs, ∀ sk, i, ints0, st, ty, r0, r, refs, ints1. ints#(ints1) < ints#(1 + ints2) → (i→n(countrefs2(ints1)) ≤ # refs → r = r0 ∨ (addarraymultlist(r, ty, st, refs, ints1, ints0, i)[r0 -- sk]) = st[r0 -- sk] ∨ r0 ∈ refs) ⊦ ints2 = [], (addarraymultlist (refs .first, ty, st[r -- ((1 ' + ints2) .first - 1) ', refval(refs .first)][r -- _type, typeval(mktype_from_dims(ty, i + n→i(# (1 ' + ints2))))] [r -- _length, intval(ints0 .first) ], refs .rest, (1 ' + ints2) .rest, ints0 .rest, i) [r0 -- sk ] ) = st[r0 -- sk], r = r0, refs = [], r0 ∈ refs |
i→n(countrefs2(ints2)) < # refs, ∀ sk, i, ints0, st, ty, r0, r, refs, ints1. ints#(ints1) < ints#(1 + ints2) → (i→n(countrefs2(ints1)) ≤ # refs → r = r0 ∨ (addarraymultlist(r, ty, st, refs, ints1, ints0, i)[r0 -- sk]) = st[r0 -- sk] ∨ r0 ∈ refs) ⊦ r = r0, refs = [], ints2 = [], (addarraymultlist (refs .first, ty, st[r -- 0 ', refval(refs .first)][r -- _type, typeval(mktype_from_dims(ty, (1 + n→i(# ints2)) + i))][r -- _length, intval(ints0 .first)], refs .rest, ints2, ints0 .rest, i) [r0 -- sk ] ) = st[r0 -- sk], r0 ∈ refs
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ # ints = 0 ↔ ints = []], [CSIMPSEQ : ⊦ m + n = 1 ↔ m = 0 ∧ n = 1 ∨ n = 0 ∧ m = 1], [CSIMPSEQ : ⊦ m + 1 ≠ 0], [CSIMPSEQ : ⊦ 1 < m ↔ ¬ (m = 0 ∨ m = 1)], [CSIMPSEQ : ⊦ m > n ↔ n < m], [CSIMPSEQ : ⊦ (i ' + ints) .rest = ints], [CSIMPSEQ : ⊦ m + n = n + m], [CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPSEQ : ⊦ n→i(m + n) = n→i(m) + n→i(n)], [CSIMPSEQ : ⊦ # i ' = 0 +1], [CSIMPSEQ : ⊦ # (ints + ints0) = # ints + # ints0], [CSIMPSEQ : ⊦ (ints + ints0) + ints1 = ints + ints0 + ints1], [CSIMPSEQ : ⊦ (i ' + ints) .first = i])]]