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