| buf0 + buf1 = buf2 + buf3, # buf2 < # buf0, is-encoded(a, buf0) ⊦ is-encoded(b, buf2) ↔ # buf0 = # buf2 ∧ a = b, is-encoded(b, subarray(buf0, 0, # buf2)) |
buf0 + buf1 = buf2 + buf3, # buf2 < # buf0, is-encoded(a, buf0), is-encoded(b, buf2) ⊦ is-encoded(b, subarray(buf0, 0, # buf2)), # buf0 = # buf2 ∧ a = b
Used simplifier rules: ⊦ # buf = # buf0 → (buf + buf1 = buf0 + buf2 ↔ buf = buf0 ∧ buf1 = buf2); (ws)%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]