| a ' + x = tolist(mk(ar, i, i0, n→i(# x) + 1), 1 + # x), 0 ≤ i0, inv(mk(ar, i, (i0 + 1) % i, n→i(# x))), inv(mk(ar, i, i0, n→i(# x) + 1)), i0 < n→i(# ar) ⊦ a = ar[i→n(i0)], # ar = 0 |
⊦ inv(buf) ∧ m < n → (x = tolist(buf, n) ↔ x = tolist(buf, n) ∧ x[m] = (buf .data)[(i→n(buf .first) + m) % i→n(buf .size)])
inv(mk(ar, i, i0, n→i(# x) + 1)) ∧ 0 < 1 + # x, a ' + x = tolist(mk(ar, i, i0, n→i(# x) + 1), 1 + # x) ∧ (a ' + x)[0] = (mk(ar, i, i0, n→i(# x) + 1) .data)[(i→n(mk(ar, i, i0, n→i(# x) + 1) .first) + 0) % i→n(mk(ar, i, i0, n→i(# x) + 1) .size)], 0 ≤ i0, inv(mk(ar, i, (i0 + 1) % i, n→i(# x))), inv(mk(ar, i, i0, n→i(# x) + 1)), i0 < n→i(# ar) ⊦ a = ar[i→n(i0)], # ar = 0
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ 0 < m ↔ m ≠ 0], [CSIMPSEQ : ⊦ m + 1 ≠ 0], [CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPSEQ : ⊦ m + n = n + m])], [EXTRATERMS : (0, 1 + # x, mk(ar, i, i0, n→i(# x) + 1), a ' + x)]]