| datasize(buf, m) < # buf, n < m, datasize(buf, m) < m, n < # buf, m ≤ # buf, datasize(buf, m) ≤ n ⊦ buf[n] = empty |
⊦ datasize(buf, 0) = 0
n < # buf, datasize(buf, m0 +1) < m0 +1, n < m0 +1, datasize(buf, m0 +1) < # buf, datasize(buf, m0 +1) ≤ n, m0 +1 ≤ # buf, ∀ buf, n. datasize(buf, m0) < # buf ∧ n < m0 ∧ datasize(buf, m0) < m0 ∧ n < # buf ∧ m0 ≤ # buf ∧ datasize(buf, m0) ≤ n → buf[n] = empty ⊦ buf[n] = empty
Used simplifier rules: datasize-base: ⊦ datasize(buf, 0) = 0;%nat freely generated by 0, +1;;% ⊦ 0 ≤ m; (s)% ⊦ 0 < m ↔ m ≠ 0; (s)% ⊦ m < n → n ≠ 0; (s)% ⊦ ¬ m < 0; (s)