| (i→n(buf .first) + n) % i→n(buf .size) ≤ i→n(buf .size), inv(buf), # buf .data ≤ (i→n(buf .first) + n) % i→n(buf .size), # buf .data ≤ i→n(buf .size) ⊦ |
⊦ inv(buf) ↔ buf .size = n→i(# buf .data) ∧ buf .size ≠ 0 ∧ 0 ≤ buf .first ∧ buf .first < buf .size ∧ 0 ≤ buf .len ∧ buf .len ≤ buf .size
(i→n(buf .first) + n) % i→n(buf .size) ≤ i→n(buf .size), buf .size = n→i(# buf .data) ∧ buf .size ≠ 0 ∧ 0 ≤ buf .first ∧ buf .first < buf .size ∧ 0 ≤ buf .len ∧ buf .len ≤ buf .size, # buf .data ≤ (i→n(buf .first) + n) % i→n(buf .size), # buf .data ≤ i→n(buf .size) ⊦
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (buf)]]