| m = m1, m0 = n ⊦ ⟪debug#("persistence: decode_node buffer insufficient"); err := EINVAL⟫ ( (err = ESUCCESS ∨ ⌊err⌋ ) ∧ ( err = ESUCCESS → (∃ buf0, buf1. subarray(buf, n, 2 * NODE_HEADER_SIZE + nd.alignedsize) = buf0 + buf1 + validtrailer ∧ is-encoded(nodeheader(node-size-headerless(nd), false), buf0) ∧ is-encoded(nd, subarray(buf1, 0, node-size-headerless(nd))) ∧ # buf1 = nd.alignedsize) ∧ m1 = 2 * NODE_HEADER_SIZE + nd.alignedsize ∧ n + 2 * NODE_HEADER_SIZE + nd.alignedsize ≤ # buf)), m < 2 * NODE_HEADER_SIZE, m0 + m ≤ # buf |
# buf < n + m1, 2 * NODE_HEADER_SIZE ≤ m1 ⊦ ⟪debug#("persistence: decode_node buffer insufficient"); err := EINVAL⟫ ⌊err⌋
Used simplifier rules: ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ ⌊err⌋ → err ≠ ESUCCESS; (s)%# buf = n ⊦ subarray(buf, 0, n) = buf; (s)% ⊦ m < n → (n ≤ m ↔ false); (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ m ≤ n ↔ ¬ n < m; (ss)