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