| buf0 = buf, is-aligned(# buf, 2 * NODE_HEADER_SIZE), # buf ≥ 2 * NODE_HEADER_SIZE ⊦ ⟪persistence_encode_padding_node#(; buf; err)⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ # buf = # buf0 ∧ (err = ESUCCESS → abs-padding(buf))) |
buf0 = buf, buf ≠ mkbuf(0), is-aligned(# buf, 2 * NODE_HEADER_SIZE) ⊦ ⟪persistence_encode_padding_node#(; buf; err)⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ # buf = # buf0 ∧ (err = ESUCCESS → abs-padding(buf)))
Used simplifier rules: ⊦ # buf = 0 ↔ buf = mkbuf(0); (s)%m ≠ 0 ⊦ is-aligned(n, m) → (m ≤ n ↔ n ≠ 0); (s)%mult-c: ⊦ m * n = n * m; from specification nat-mult%mult-a: ⊦ m0 * m * n = (m0 * m) * n; from specification nat-mult% ⊦ NODE_HEADER_SIZE ≠ 0; (s)% ⊦ 2 * m = 0 ↔ m = 0; (s)% ⊦ n ≥ m ↔ m ≤ n; (s)