| 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 |
refs = r1 + refs0, 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 (r1, ty, st[r -- 0 ', refval(r1)][r -- _type, typeval(mktype_from_dims(ty, (1 + n→i(# ints2)) + i))][r -- _length, intval(ints0 .first)], refs0, ints2, ints0 .rest, i) [r0 -- sk ] ) = st[r0 -- sk], r0 ∈ refs
[[CONCRETESIMPRULES : ([CSIMPELIM : refs ≠ [] ⊦ r = refs .first ∧ refs0 = refs .rest ↔ refs = r + refs0])], [EXTRATERMS : (refs, r1, refs0)]]