| datasize(copy(buf0, 0, buf, m, n)) < datasize(buf), m + n ≤ # buf, n ≤ # buf0 ⊦ m < datasize(buf) |
⊦ datasize(buf) = datasize(buf, # buf)
datasize(copy(buf0, 0, buf, m, n), # buf) < datasize(buf, # buf), datasize(copy(buf0, 0, buf, m, n), # buf) < m, n ≤ # buf0, m + n ≤ # buf, datasize(buf, # buf) ≤ m ⊦
Used simplifier rules: datasize: ⊦ datasize(buf) = datasize(buf, # buf);% ⊦ m < n → n ≠ 0; (s)%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ # copy(buf, m, buf0, m0, n) = # buf0; (s)