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