| buf .len = n→i(# x) + 1, a ' + x = tolist(buf, 1 + # x), inv(buf .first:= ((buf .first + 1) % buf .size) .len:= n→i(# x)), 0 ≤ buf .first, buf .first < n→i(# buf .data), inv(buf), ¬ abs(buf .first:= ((buf .first + 1) % buf .size) .len:= n→i(# x), x) ∨ a ≠ (buf .data)[i→n(buf .first)] ⊦ # buf .data = 0 |
buf = mk(ar, i, i0, i1), i1 = n→i(# x) + 1, a ' + x = tolist(buf, 1 + # x), inv(buf .first:= ((i0 + 1) % i) .len:= n→i(# x)), 0 ≤ i0, i0 < n→i(# ar), inv(buf), ¬ abs(buf .first:= ((i0 + 1) % i) .len:= n→i(# x), x) ∨ a ≠ ar[i→n(i0)] ⊦ # ar = 0
[[CONCRETESIMPRULES : ([CSIMPELIM : ⊦ ar = buf .data ∧ i = buf .size ∧ i0 = buf .first ∧ i1 = buf .len ↔ buf = mk(ar, i, i0, i1)])], [EXTRATERMS : (buf, ar, i, i0, i1)]]