| a ' + x = tolist(mk(ar, i, i0, n→i(# x) + 1), 1 + # x), n < # x, i0 < n→i(# ar), inv(mk(ar, i, i0, n→i(# x) + 1)), inv(mk(ar, i, (i0 + 1) % i, n→i(# x))), 0 ≤ i0 ⊦ x[n] = ar[(i→n((i0 + 1) % i) + n) % i→n(i)], # ar = 0, x = [] |
⊦ 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)) ∧ n + 1 < 1 + # x, a ' + x = tolist(mk(ar, i, i0, n→i(# x) + 1), 1 + # x) ∧ (a ' + x)[n + 1] = (mk(ar, i, i0, n→i(# x) + 1) .data)[(i→n(mk(ar, i, i0, n→i(# x) + 1) .first) + n + 1) % i→n(mk(ar, i, i0, n→i(# x) + 1) .size)], n < # x, i0 < n→i(# ar), inv(mk(ar, i, i0, n→i(# x) + 1)), inv(mk(ar, i, (i0 + 1) % i, n→i(# x))), 0 ≤ i0 ⊦ x[n] = ar[(i→n((i0 + 1) % i) + n) % i→n(i)], # ar = 0, x = []
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ i + j = j + i], [CSIMPSEQ : ⊦ m + n < m + n0 ↔ n < n0], [CSIMPSEQ : ⊦ ¬ m < n ↔ n ≤ m], [CSIMPSEQ : ⊦ m < n → (n ≤ m ↔ false)], [CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPSEQ : ⊦ m + n = n + m])], [EXTRATERMS : (n + 1, 1 + # x, mk(ar, i, i0, n→i(# x) + 1), a ' + x)]]