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