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