| 0 < i0, n→i(# refs) = countrefs(i0 ' + ints0), 0 ≤ i0, posints(ints0), 0 ≤ i ⊦ (addmultiarrays(refs, i0, [], mktype_from_dims(ty, countdims(i0 ' + ints0, i)), i0 ' + getdims(ints0), st)[r -- sk]) = st[r -- sk], r ∈ refs, # refs = i→n(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)
n→i(# refs) = countrefs(i0 ' + ints0), 0 ≤ i0, posints(ints0), 0 ≤ i, 0 < i0 ⊦ (addmultiarrays(refs, i0, [], mktype_from_dims(ty, countdims(ints0, i)), i0 ' + getdims(ints0), st)[r -- sk]) = st[r -- sk], r ∈ refs, # refs = i→n(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])]]