| ⊦ is-encoded(nx0 + nx1, buf) ↔ (∃ buf0, buf1. buf = buf0 + buf1 ∧ is-encoded(nx0, buf0) ∧ is-encoded(nx1, buf1)) |
∀ nx1, buf. is-encoded(nx + nx1, buf) ↔ (∃ buf0, buf1. buf = buf0 + buf1 ∧ is-encoded(nx, buf0) ∧ is-encoded(nx1, buf1)) ⊦ is-encoded((m + nx) + nx1, buf) ↔ (∃ buf0, buf1. buf = buf0 + buf1 ∧ is-encoded(m + nx, buf0) ∧ is-encoded(nx1, buf1))
Used simplifier rules: is-encoded-base: ⊦ is-encoded([], buf) ↔ buf = mkbuf(0);%nat-list freely generated by [], +;;% ⊦ [] + nx = nx; (s)%a: ⊦ (nx + nx0) + nx1 = nx + nx0 + nx1; from specification list[nat-list-set]% ⊦ mkbuf(0) + buf = buf; (s)%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]