| ∀ buf. inv(buf) → # tolist(buf, n0) = n0 ⊦ inv(buf) → # tolist(buf, n0 +1) = n0 +1 |
⊦ inv(buf) → tolist(buf, n + 1) = push(tolist(buf, n), (buf .data)[(i→n(buf .first) + n) % i→n(buf .size)])
inv(buf), ∀ buf. inv(buf) → # tolist(buf, n0) = n0 ⊦ # tolist(buf, n0) = n0
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ m + n = m + n0 ↔ n = n0], [CSIMPSEQ : ⊦ (x0 + x1) + x2 = x0 + x1 + x2], [CSIMPSEQ : ⊦ # a ' = 0 +1], [CSIMPSEQ : ⊦ # (x0 + x1) = # x0 + # x1], [CSIMPSEQ : ⊦ m + n = n + m], [CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPSEQ : ⊦ push(x0, a) = x0 + a '], [CSIMPSEQ : ⊦ m +1 = m + 1])]]