| n0 + n1 ≤ # buf ⊦ isempty(buf, n0, n1) ↔ (∀ n. n0 ≤ n ∧ n < n0 + n1 → buf[n] = empty) |
⊦ isempty(buf, n, 0)
n0 + n +1 ≤ # buf, ∀ n0, buf. n0 + n ≤ # buf → (isempty(buf, n0, n) ↔ (∀ n2. n0 ≤ n2 ∧ n2 < n0 + n → buf[n2] = empty)) ⊦ isempty(buf, n0, n +1) ↔ (∀ n2. n0 ≤ n2 ∧ n2 < n0 + n +1 → buf[n2] = empty)
Used simplifier rules: isempty-range-base: ⊦ isempty(buf, n, 0);%nat freely generated by 0, +1;;% ⊦ n + 0 = n; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic% ⊦ m ≤ n → (n < m ↔ false); (s)