| n1 + m ≤ # buf1, n0 + m ≤ # buf0 ⊦ ⌜copy(buf0, n0, buf1, n1, m)⌝ = (⌜buf1⌝ to n1) + ((⌜buf0⌝ from n0) to m) + ((⌜buf1⌝ from n1 + m) to (# buf1 - n1 + m)) |
# buf1 = n2 + n1 + m, n0 + m ≤ # buf0, n1 + m ≤ # buf1 ⊦ ⌜copy(buf0, n0, buf1, n1, m)⌝ = (⌜buf1⌝ to n1) + ((⌜buf0⌝ from n0) to m) + ((⌜buf1⌝ from n1 + m) to n2)
Used simplifier rules: n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: # buf1, n1 + m, n