| buf0 + buf1 = buf2 + buf3, is-encoded(a, buf0), # buf0 ≤ # buf2, is-encoded(a, subarray(buf2, 0, # buf0)) → a = b ∧ # buf0 = # buf2 ⊦ is-encoded(b, buf2) ↔ # buf0 = # buf2 ∧ a = b |
buf0 + buf1 = buf2 + buf3, is-encoded(a, buf0), # buf0 ≤ # buf2 ⊦ is-encoded(b, buf2) ↔ # buf0 = # buf2 ∧ a = b, is-encoded(a, subarray(buf2, 0, # buf0))
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]