| # buf = n0 + n1, n2 < n0 + n1, range=(buf, n0, emptyleb, 0, n1), n0 ≤ n2, ∀ buf0, n, n3. # buf0 ≠ n + n3 ∨ ¬ n < datasize(buf0, n2) ∨ ¬ range=(buf0, n, emptyleb, 0, n3) ∨ ¬ n2 ≤ n + n3 ⊦ buf[n2] = empty, n1 = 0 |
⊦ range=(buf, n0, buf0, n1, m) ↔ n0 + m ≤ # buf ∧ n1 + m ≤ # buf0 ∧ (∀ n. n < m → buf[n0 + n] = buf0[n1 + n])
# buf = n0 + n1, n2 < n0 + n1, n0 ≤ n2, n0 + n1 ≤ # buf, 0 + n1 ≤ # emptyleb, ∀ buf0, n, n3. # buf0 ≠ n + n3 ∨ ¬ n < datasize(buf0, n2) ∨ ¬ range=(buf0, n, emptyleb, 0, n3) ∨ ¬ n2 ≤ n + n3, ∀ n. n < n1 → buf[n0 + n] = (emptyleb)[0 + n] ⊦ buf[n2] = empty, n1 = 0
Used terms: n1, 0, emptyleb, n0, buf