| getdims(ints0) ≠ [], 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], ints0 = [], r ∈ refs, # refs = 1 + i→n(countrefs(ints0)) * i→n(i0) ∧ ¬ 0 ∈ i0 ' + getdims(ints0) .butlast |
⊦ getdims(ints) = [] ↔ ints = []
⊦ ints ≠ [] → ¬ 0 ∈ getdims(ints) .butlast
⊦ countrefs(0 ' + ints) = 1
n→i(# refs) = countrefs(i0 ' + ints0), 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], ints0 = [], # refs = 1 + i→n(countrefs(ints0)) * i→n(i0), 0 = i0, r ∈ refs
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ i ≠ j → (i ≤ j ↔ i < j)], [CSIMPSEQ : 0 ≤ i ⊦ n→i(n) = ((* i)) ↔ n = i→n(i)], [CSIMPSEQ : ⊦ (ints + ints0) + ints1 = ints + ints0 + ints1], [CSIMPSEQ : ⊦ i ∈ i0 ' ↔ i = i0], [CSIMPSEQ : ⊦ i ∈ ints + ints0 ↔ ¬ ¬ (i ∈ ints ∨ i ∈ ints0)])]]