| ⊦ is-encoded(nx + n ', buf) ↔ (∃ buf0, buf1. buf = buf0 + buf1 ∧ is-encoded(nx, buf0) ∧ is-encoded(rnode(n), buf1)) |
∀ n, buf. is-encoded(nx0 + n ', buf) ↔ (∃ buf0, buf1. buf = buf0 + buf1 ∧ is-encoded(nx0, buf0) ∧ is-encoded(rnode(n), buf1)) ⊦ is-encoded((m + nx0) + n ', buf) ↔ (∃ buf0, buf1. buf = buf0 + buf1 ∧ is-encoded(m + nx0, buf0) ∧ is-encoded(rnode(n), buf1))
Used simplifier rules: is-encoded-one: ⊦ is-encoded(m ', buf) ↔ is-encoded(rnode(m), buf);%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]% ⊦ is-encoded(rnd, buf) → (is-encoded(rnd0, buf) ↔ rnd = rnd0); (s)