| ints .first = 1, 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) ⊦ ints = [], r = r0, (addarraymultlist(r, ty, st, refs, ints, ints0, i)[r0 -- sk]) = st[r0 -- sk], # ints = 1, r0 ∈ refs |
ints = i0 + ints2, i0 = 1, 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) ⊦ ints = [], r = r0, (addarraymultlist(r, ty, st, refs, ints, ints0, i)[r0 -- sk]) = st[r0 -- sk], # ints = 1, r0 ∈ refs
[[CONCRETESIMPRULES : ([CSIMPELIM : ints ≠ [] ⊦ i = ints .first ∧ ints0 = ints .rest ↔ ints = i + ints0])], [EXTRATERMS : (ints, i0, ints2)]]