| m < # buf, datasize(buf, n0 +1) < datasize(buf, m), m < n0 +1, n0 +1 ≤ # buf, ∀ m, buf. ¬(m < n0 ∧ datasize(buf, n0) < datasize(buf, m) ∧ m < # buf ∧ n0 ≤ # buf) ⊦ |
⊦ datasize(buf, n + 1) = (buf[n] = empty ⊃ datasize(buf, n);n + 1)
m < # buf, n0 < # buf, (buf[n0] = empty ⊃ datasize(buf, n0);n0 + 1) < datasize(buf, m), m ≤ n0, ∀ m0, buf0. ¬ m0 < n0 ∨ ¬ datasize(buf0, n0) < datasize(buf0, m0) ∨ ¬ m0 < # buf0 ∨ ¬ n0 ≤ # buf0 ⊦
Used simplifier rules: datasize-rec: ⊦ datasize(buf, n + 1) = (buf[n] = empty ⊃ datasize(buf, n);n + 1);% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ m < n + 1 ↔ ¬ n < m; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m + 1 ≤ n ↔ m < n; (s)% ⊦ m +1 = m + 1; (s)