| # refs = 1, posints(ints0), r -- sk ∈ addarray(refs .first, mktype_from_dims(ty, n→i(# ints0)), mkjavavalues(acc), st), 0 < i0, r ∈ addarray(refs .first, mktype_from_dims(ty, n→i(# ints0)), mkjavavalues(acc), st), ∀ st, ty, acc, sk, ints, i, r, refs0. # refs0 < 1 → ( true → ( ¬ r ∈ refs0 ∧ # refs0 = i→n(countrefs(i ' + ints .rest)) ∧ ints ≠ [] ∧ 0 ≤ i ∧ posints(ints) ∧ ¬ 0 ∈ ints .butlast ∧ i ≤ ints .first → (r -- sk ∈ addmultiarrays(refs0, i, acc, ty, ints, st) ↔ r -- sk ∈ st))) ⊦ ints0 = [], 0 = i0, r ∈ refs, 0 ∈ ints0 .butlast, r -- sk ∈ st |
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ # [] = 0], [CSIMPSEQ : ⊦ r + refs = r ' + refs], [CSIMPSEQ : ⊦ # (refs + refs0) = # refs + # refs0], [CSIMPSEQ : ⊦ # r ' = 0 +1], [CSIMPSEQ : ⊦ (refs + refs0) + refs1 = refs + refs0 + refs1], [CSIMPSEQ : ⊦ 1 = m + 1 ↔ m = 0], [CSIMPSEQ : ⊦ # refs = 0 ↔ refs = []], [CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPSEQ : ⊦ m + n = n + m], [CSIMPSEQ : ⊦ r ' + refs ≠ []], [CSIMPSEQ : ⊦ ¬ r ∈ r0 ' + refs ↔ r ≠ r0 ∧ ¬ r ∈ refs], [CSIMPSEQ : ⊦ r ≠ r0 → ( r -- sk ∈ addarray(r0, ty, vals, st) ↔ r -- sk ∈ st)], [CSIMPSEQ : ⊦ r ≠ r0 → ( r ∈ addarray(r0, ty0, vals, st) ↔ r ∈ st)], [CSIMPFORWARD : ⊦ r -- sk ∈ st → r ∈ st], [CSIMPELIM : refs ≠ [] ⊦ r = refs .first ∧ refs0 = refs .rest ↔ refs = r + refs0])], [EXTRATERMS : (refs, r0, refs1)]]