| i→n(countrefs2(ints)) ≤ # refs, ∀ sk, i, ints0, st, ty, r0, r, refs, ints1. ints#(ints1) < ints#(ints) → (i→n(countrefs2(ints1)) ≤ # refs → r = r0 ∨ (addarraymultlist(r, ty, st, refs, ints1, ints0, i)[r0 -- sk]) = st[r0 -- sk] ∨ r0 ∈ refs) ⊦ (addarraymultlist(r, ty, st, refs, ints, ints0, i)[r0 -- sk]) = st[r0 -- sk], r = r0, r0 ∈ refs |
⊦ # ints = 1 ∧ ints .first ≤ 0 → addarraymultlist(r, ty, st, refs, ints, ints0, i) = (st[r -- _type, typeval(mktype_from_dims(ty, n→i(# ints) + i))][r -- _length, intval(ints0 .first)])
¬ (# ints = 1 ∧ ints .first ≤ 0), i→n(countrefs2(ints)) ≤ # refs, ∀ sk, i, ints0, st, ty, r0, r, refs, ints1. ints#(ints1) < ints#(ints) → (i→n(countrefs2(ints1)) ≤ # refs → r = r0 ∨ (addarraymultlist(r, ty, st, refs, ints1, ints0, i)[r0 -- sk]) = st[r0 -- sk] ∨ r0 ∈ refs) ⊦ (addarraymultlist(r, ty, st, refs, ints, ints0, i)[r0 -- sk]) = st[r0 -- sk], r = r0, r0 ∈ refs
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ r ≠ r0 → (st[r0 -- sk0, val][r -- sk]) = st[r -- sk]])], [EXTRATERMS : (i, ints0, ints, refs, st, ty, r)]]