| 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 |
⊦ ints ≠ [] ∧ 1 ≤ i → countrefs2(i ' + ints) = i + i * countrefs2(ints)
⊦ i→n(countrefs2(ints) + 1) = i→n(countrefs2(ints)) + 1
i→n(countrefs2(ints2)) < # refs, ∀ sk, i, ints0, st, ty, r0, r, refs, ints1. ints#(ints1) < ints#(1 + ints2) → (i→n(countrefs2(ints1)) ≤ # refs → r = r0 ∨ (addarraymultlist(r, ty, st, refs, ints1, ints0, i)[r0 -- sk]) = st[r0 -- sk] ∨ r0 ∈ refs) ⊦ ints2 = [], (addarraymultlist(r, ty, st, refs, 1 ' + ints2, ints0, i)[r0 -- sk]) = st[r0 -- sk], r = r0, refs = [], r0 ∈ refs
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ # refs = 0 ↔ refs = []], [CSIMPFORWARD : ⊦ m < n → n ≠ 0], [CSIMPSEQ : ⊦ m + 1 ≤ n ↔ m < n], [CSIMPSEQ : ⊦ i + j = j + i], [CSIMPSEQ : ⊦ i + j + i0 = (i + j) + i0], [CSIMPSEQ : ⊦ i * j = j * i], [CSIMPSEQ : ⊦ i * j * j0 = (i * j) * j0], [CSIMPSEQ : ⊦ 1 * i = i], [CSIMPSEQ : ⊦ m + n = n + m], [CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPSEQ : ⊦ # ints = 0 ↔ ints = []], [CSIMPSEQ : ⊦ m + n = 1 ↔ m = 0 ∧ n = 1 ∨ n = 0 ∧ m = 1], [CSIMPSEQ : ⊦ # i ' = 0 +1], [CSIMPSEQ : ⊦ # (ints + ints0) = # ints + # ints0], [CSIMPSEQ : ⊦ (ints + ints0) + ints1 = ints + ints0 + ints1], [CSIMPSEQ : ⊦ i ' + ints ≠ []], [CSIMPSEQ : ⊦ i + ints = i ' + ints])]]