| refs0 = r0 + refs ∧ refs0 ≠ [], 2 = # refs0 ⊦ addarrays(r ' + refs0, ty, 2 ' + 2 ', 0, st) = addarray(r, mkarraytype(ty), refval(r0) ' + refval(refs0[1]) ', addarray(refs0[0], ty, 2, addarray(refs .first, ty, 2, st))) |
1 = # refs ⊦ addarrays(r ' + r0 ' + refs, ty, 2 ' + 2 ', 0, st) = addarray(r, mkarraytype(ty), refval(r0) ' + refval(refs[0]) ', addarray(r0, ty, 2, addarray(refs .first, ty, 2, st)))
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ r ' + refs ≠ []], [CSIMPSEQ : ⊦ (r ' + refs)[0] = r], [CSIMPSEQ : n ≠ 0 ⊦ (r ' + refs)[(* n)] = refs[n -1]], [CSIMPSEQ : ⊦ m + n = n + m], [CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPSEQ : n0 < n ⊦ ((* n)) = m0 + ((* n0)) ↔ n - n0 = m0], [CSIMPSEQ : ⊦ (refs + refs0) + refs1 = refs + refs0 + refs1], [CSIMPSEQ : ⊦ # r ' = 0 +1], [CSIMPSEQ : ⊦ # (refs + refs0) = # refs + # refs0], [CSIMPSEQ : ⊦ r + refs = r ' + refs])]]