| n + ENCODED_ELEM_SIZE ≤ # buf ⊦ ⟪decode_nonempty#(n, buf; a; err)⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → is-encoded-nonempty(a, subarray(buf, n, ENCODED_ELEM_SIZE)))) |
⊦
n + ENCODED_ELEM_SIZE ≤ # buf ⊦ ⟪if isempty(buf, n, ENCODED_ELEM_SIZE) then err := EINVAL else let m = ? in decode#(n, buf; a, m; err)⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → is-encoded-nonempty(a, subarray(buf, n, ENCODED_ELEM_SIZE))))
Used simplifier rules: decode: ⊦ ;