| # buf0 = # buf1, datasize(buf0, m) < datasize(buf1, m), range=(buf0, 0, buf1, 0, datasize(buf1, # buf1)), m ≤ # buf1 ⊦ |
⊦ datasize(buf, 0) = 0
# buf0 = # buf1, datasize(buf0, m0 +1) < datasize(buf1, m0 +1), range=(buf0, 0, buf1, 0, datasize(buf1, # buf1)), m0 +1 ≤ # buf1, ∀ buf0, buf1. ¬(# buf0 = # buf1 ∧ datasize(buf0, m0) < datasize(buf1, m0) ∧ range=(buf0, 0, buf1, 0, datasize(buf1, # buf1)) ∧ m0 ≤ # buf1) ⊦
Used simplifier rules: datasize-base: ⊦ datasize(buf, 0) = 0;%nat freely generated by 0, +1;;% ⊦ 0 ≤ m; (s)