| # buf2 = # vtbl * (ENCODED_VOLID_SIZE + ENCODED_NAT_SIZE), # buf0 = ENCODED_NAT_SIZE, # buf4 = (# buf2 + # buf3) + ENCODED_NAT_SIZE, # buf = # buf4, buf1 = buf0 + buf2 + buf3, subarray(buf4, ENCODED_NAT_SIZE, # buf2 + # buf3) = subarray(buf, ENCODED_NAT_SIZE, # buf2 + # buf3), is-encoded(#(vtbl1 ∪ vtbl), buf0), is-encoded-rec(vtbl, buf2), v ∈ vtbl1, # vtbl1 * (ENCODED_NAT_SIZE + ENCODED_VOLID_SIZE) ≤ # buf3, #(vtbl1 ∪ vtbl) * (ENCODED_NAT_SIZE + ENCODED_VOLID_SIZE) ≤ # buf2 + # buf3, vtbl1 ⊥ vtbl, err0 = ESUCCESS → is-encoded(#(vtbl1 ∪ vtbl), subarray(buf4, 0, ENCODED_NAT_SIZE)) ∧ n1 = ENCODED_NAT_SIZE, err0 = ESUCCESS ∨ ⌊err0⌋ ⊦ vtbl1 = ∅, v ∈ vtbl, (ENCODED_NAT_SIZE + # buf2) + encoding-size(v) ≤ # buf1 ∧ buf1 = buf1 |
# buf = # buf4, # buf4 = (# buf2 + # buf3) + ENCODED_NAT_SIZE, # buf0 = ENCODED_NAT_SIZE, # buf2 = # vtbl * (ENCODED_VOLID_SIZE + ENCODED_NAT_SIZE), subarray(buf4, ENCODED_NAT_SIZE, # buf2 + # buf3) = subarray(buf, ENCODED_NAT_SIZE, # buf2 + # buf3), # vtbl1 * (ENCODED_NAT_SIZE + ENCODED_VOLID_SIZE) < ENCODED_VOLID_SIZE, # buf3 < ENCODED_VOLID_SIZE, is-encoded(#(vtbl1 ∪ vtbl), buf0), is-encoded-rec(vtbl, buf2), v ∈ vtbl1, #(vtbl1 ∪ vtbl) * (ENCODED_NAT_SIZE + ENCODED_VOLID_SIZE) ≤ # buf2 + # buf3, # vtbl1 * (ENCODED_NAT_SIZE + ENCODED_VOLID_SIZE) ≤ # buf3, vtbl1 ⊥ vtbl, err0 = ESUCCESS → is-encoded(#(vtbl1 ∪ vtbl), subarray(buf4, 0, ENCODED_NAT_SIZE)) ∧ n1 = ENCODED_NAT_SIZE, err0 = ESUCCESS ∨ ⌊err0⌋ ⊦ vtbl1 = ∅, v ∈ vtbl
Used simplifier rules: ⊦ ENCODED_VOLID_SIZE ≠ 0; (s)%fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat% ⊦ m + n < m + n0 ↔ n < n0; (s)% ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ m ≤ n ↔ ¬ n < m; (ss)%c: ⊦ m + n = n + m; from specification nat-basic% ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s)%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[encoding-nat-buffer]% ⊦ #(buf + buf0) = # buf + # buf0; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ encoding-size(v) = ENCODED_VOLID_SIZE; (s)