| 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 = [] |
a ' + x = tolist(mk(ar, n→i(# ar), i0, n→i(# x) + 1), 1 + # x), n < # ar, # x < # ar, n < # x, 0 ≤ i0, inv(mk(ar, n→i(# ar), (i0 + 1) % n→i(# ar), n→i(# x))), inv(mk(ar, n→i(# ar), i0, n→i(# x) + 1)), i0 < n→i(# ar), n + 1 < # ar ⊦ x = [], ar[(1 + i→n(i0) + n) % # ar] = ar[(i→n((i0 + 1) % n→i(# ar)) + n) % # ar]
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ a ∈ b ' ↔ a = b], [CSIMPSEQ : ⊦ a ∈ x0 + x1 ↔ ¬ ¬ (a ∈ x0 ∨ a ∈ x1)], [CSIMPSEQ : ⊦ (x0 + x1) + x2 = x0 + x1 + x2], [CSIMPFORWARD : ⊦ a ' + x0 = x1 → a ∈ x1], [CSIMPSEQ : ⊦ m +1 = m + 1], [CSIMPSEQ : ⊦ i→n(n→i(n)) = n], [CSIMPFORWARD : ⊦ n < n0 ∧ n0 < n1 → n < n1], [CSIMPFORWARD : ⊦ m < n ∧ n < n0 → m +1 < n0], [CSIMPFORWARD : ⊦ m < n → n ≠ 0], [CSIMPSEQ : ⊦ m < n → n ≠ 0], [CSIMPSEQ : ⊦ m + n = n + m], [CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPSEQ : ⊦ m + 1 ≤ n ↔ m < n], [CSIMPSEQ : ⊦ i ≥ 0 → ( ((* i)) + n→i(n) ≤ n→i(m) ↔ i→n(i) + n ≤ m)], [CSIMPSEQ : ⊦ i + j + i0 = (i + j) + i0], [CSIMPSEQ : i < 0 ⊦ ((* i)) ≤ n→i(n)], [CSIMPSEQ : ⊦ ((* j)) ≤ i0 + ((* j0)) ↔ j - j0 ≤ i0], [CSIMPSEQ : ⊦ mk(ar, i, i0, i1) .len = i1], [CSIMPSEQ : ⊦ i ≤ 0 ∧ 0 ≤ j → i ≤ j], [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], [CSIMPSEQ : ⊦ i + j = j + i])]]