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