| is-encoded-rec(vtbl0[v, n], buf), ∀ vtbl1, buf. # vtbl1 < # vtbl0[v, n] → is-encoded-rec(vtbl1, buf) → # buf = # vtbl1 * (ENCODED_VOLID_SIZE + ENCODED_NAT_SIZE) ⊦ # buf = (ENCODED_VOLID_SIZE + ENCODED_NAT_SIZE) * # vtbl0 + ENCODED_VOLID_SIZE + ENCODED_NAT_SIZE, v ∈ vtbl0 |
vtbl ≠ ∅ ⊦ is-encoded-rec(vtbl, buf) ↔ (∃ v, buf0, buf1, buf2. v ∈ vtbl ∧ buf = buf0 + buf1 + buf2 ∧ is-encoded(v, buf0) ∧ is-encoded(vtbl[v], buf1) ∧ is-encoded-rec(vtbl -- v, buf2))
∃ v0, buf0, buf1, buf2. v0 ∈ vtbl0[v, n] ∧ buf = buf0 + buf1 + buf2 ∧ is-encoded(v0, buf0) ∧ is-encoded(vtbl0[v, n][v0], buf1) ∧ is-encoded-rec(vtbl0[v, n] -- v0, buf2), ∀ vtbl1, buf. # vtbl1 < # vtbl0[v, n] → is-encoded-rec(vtbl1, buf) → # buf = # vtbl1 * (ENCODED_VOLID_SIZE + ENCODED_NAT_SIZE) ⊦ # buf = (ENCODED_VOLID_SIZE + ENCODED_NAT_SIZE) * # vtbl0 + ENCODED_VOLID_SIZE + ENCODED_NAT_SIZE, vtbl0[v, n] = ∅, v ∈ vtbl0
Used simplifier rules: ⊦ vtbl[v, n] ≠ ∅; (s) Used terms: buf, vtbl0[v, n]