| ar[i→n(i0) % i→n(i)] ' + 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, ar[i→n(i0) % i→n(i)] ∈ tolist(mk(ar, i, i0, n→i(# x) + 1), 1 + # x), abs(i) ≤ i0, abs(i) < n→i(# ar) ⊦ # ar = 0, ar[i→n(i0) % i→n(i)] = ar[i→n(i0)] |
⊦ 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
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ mk(ar, i, i0, i1) .size = i], [CSIMPSEQ : ⊦ mk(ar, i, i0, i1) .data = ar], [CSIMPSEQ : ⊦ mk(ar, i, i0, i1) .first = i0], [CSIMPSEQ : ⊦ mk(ar, i, i0, i1) .len = i1], [CSIMPSEQ : ⊦ 0 ≤ n→i(n)], [CSIMPFORWARD : ⊦ i < j ∧ 0 ≤ i → 0 < j], [CSIMPFORWARD : ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j], [CSIMPSEQ : ⊦ i→n(n→i(n)) = n], [CSIMPSEQ : ⊦ n→i(n) = 0 ↔ n = 0], [CSIMPSEQ : 0 ≤ i ⊦ ((* i)) < n→i(n) ↔ i→n(i) < n], [CSIMPSEQ : ⊦ 0 < m ↔ m ≠ 0], [CSIMPSEQ : ⊦ n→i(m) ≤ n→i(n) ↔ m ≤ n], [CSIMPSEQ : ⊦ abs(n→i(n)) = n→i(n)], [CSIMPSEQ : ⊦ n→i(m) < n→i(n) ↔ m < n], [CSIMPSEQ : ⊦ ¬ n < n])], [EXTRATERMS : (mk(ar, i, (i0 + 1) % i, n→i(# x)))]]