| 0 < i0, 0 ≤ i0, posints(ints0), i < 0, r ∈ st ⊦ (addmultiarrays(newref_list(i→n(countrefs(i0 ' + ints0)), st), i0, [], mktype_from_dims(ty, countdims(i0 ' + ints0, i)), i0 ' + getdims(ints0), st) [r -- sk ] ) = st[r -- sk], countrefs(i0 ' + ints0) = countrefs(i0 ' + (i0 ' + getdims(ints0)) .rest) ∧ ¬ 0 ∈ (i0 ' + getdims(ints0)) .butlast ∧ ¬ (i0 ' + getdims(ints0)) .first < i0 |
⊦ 0 < j → countdims(j ' + ints, i) = countdims(ints, i)
0 ≤ i0, posints(ints0), i < 0, r ∈ st, 0 < i0 ⊦ (addmultiarrays(newref_list(i→n(countrefs(i0 ' + ints0)), st), i0, [], mktype_from_dims(ty, countdims(ints0, i)), i0 ' + getdims(ints0), st) [r -- sk ] ) = st[r -- sk], countrefs(i0 ' + ints0) = countrefs(i0 ' + getdims(ints0)) ∧ ¬ 0 ∈ (i0 ' + getdims(ints0)) .butlast
[[CONCRETESIMPRULES : ([CSIMPFORWARD : ⊦ i < j ∧ 0 ≤ i → 0 < j], [CSIMPSEQ : ⊦ ¬ i < i], [CSIMPSEQ : ⊦ (i ' + ints) .first = i], [CSIMPSEQ : ⊦ (i ' + ints) .rest = ints], [CSIMPSEQ : ⊦ (ints + ints0) + ints1 = ints + ints0 + ints1])]]