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