| 3 = countrefs(2 ' + 2 ') ⊦ addmultiarrays(r ' + r0 ', 1, r1 ', ty, 2 ' + 2 ', addarray(r1, ty, 2, st)) = addarray(r, mkarraytype(ty), refval(r0) ' + refval(r1) ', addarray(r0, ty, 2, addarray(r1, ty, 2, st))) |
⊦ i > 0 ∧ # ints > 1 → addmultiarrays(refs, i, acc, ty, ints, st) = addmultiarrays (firstn(# refs - i→n(countrefs(ints .rest)), refs), i - 1, lastn(i→n(countrefs(ints .rest)), refs) .first + acc, ty, ints, addmultiarrays(lastn(i→n(countrefs(ints .rest)), refs), ints .rest .first, [], ty, ints .rest, st))
1 > 0 ∧ # (2 ' + 2 ') > 1, 3 = countrefs(2 ' + 2 ') ⊦ addmultiarrays (firstn(# (r ' + r0 ') - i→n(countrefs((2 ' + 2 ') .rest)), r ' + r0 '), 1 - 1, lastn(i→n(countrefs((2 ' + 2 ') .rest)), r ' + r0 ') .first + r1 ', ty, 2 ' + 2 ', addmultiarrays(lastn(i→n(countrefs((2 ' + 2 ') .rest)), r ' + r0 '), (2 ' + 2 ') .rest .first, [], ty, (2 ' + 2 ') .rest, addarray(r1, ty, 2, st))) = addarray(r, mkarraytype(ty), refval(r0) ' + refval(r1) ', addarray(r0, ty, 2, addarray(r1, ty, 2, st)))
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ # (ints + ints0) = # ints + # ints0], [CSIMPSEQ : ⊦ # i ' = 0 +1], [CSIMPSEQ : ⊦ (ints + ints0) + ints1 = ints + ints0 + ints1])], [EXTRATERMS : (addarray(r1, ty, 2, st), 2 ' + 2 ', ty, r1 ', 1, r ' + r0 ')]]