| (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) ⊦ |
buf .size = n→i(# buf .data), 0 ≤ buf .len, 0 ≤ buf .first, # buf .data ≤ i→n(buf .size), # buf .data ≤ (i→n(buf .first) + n) % i→n(buf .size), buf .len ≤ buf .size, buf .first < buf .size, 0 < buf .size ⊦ buf .size = 0
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ i ≠ j → (i ≤ j ↔ i < j)], [CSIMPFORWARD : ⊦ i < j ∧ 0 ≤ i → 0 < j], [CSIMPFORWARD : ⊦ i ≤ j ∧ 0 ≤ i → 0 ≤ j], [CSIMPSEQ : n ≠ 0 ⊦ m % n ≤ n], [CSIMPSEQ : ⊦ i→n(i) = 0 ↔ i = 0])]]