| avol[0] = mapped(buf1), buf0 = copy(avol[0].data + mkempbuf(LEB_SIZE - # avol[0].data), 0, mkbuf(LEB_SIZE), 0, LEB_SIZE), n1 = 0, ebm-vol-inv(avol), is-encoded(sb0, buf1), LEB_SIZE ≤ # buf1 + (LEB_SIZE - # buf1), # buf1 ≤ LEB_SIZE ⊦ [decode_superblock#(0, copy(avol[0].data + mkempbuf(LEB_SIZE - # avol[0].data), 0, mkbuf(LEB_SIZE), 0, LEB_SIZE), EB_PAGE_SIZE; sb, m; err)] ( (err = ESUCCESS ∨ ⌊err⌋ ) ∧ ( err = ESUCCESS → is-encoded(sb, subarray(buf0, n1, encoding-size(sb, EB_PAGE_SIZE))) ∧ n1 + encoding-size(sb, EB_PAGE_SIZE) ≤ # buf0 ∧ m = encoding-size(sb, EB_PAGE_SIZE)) → (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → sb = sb0)), # avol = 0 |
avol[0] = mapped(buf1), # avol ≠ 0, ebm-vol-inv(avol), is-encoded(sb0, buf1), # buf1 ≤ LEB_SIZE, LEB_SIZE ≤ # buf1 + (LEB_SIZE - # buf1) ⊦ [decode_superblock#(0, copy(avol[0].data + mkempbuf(LEB_SIZE - # avol[0].data), 0, mkbuf(LEB_SIZE), 0, LEB_SIZE), EB_PAGE_SIZE; sb, m; err)] ( is-encoded(sb, subarray(avol[0].data + mkempbuf(LEB_SIZE - # avol[0].data), 0, encoding-size(sb, EB_PAGE_SIZE))) ∧ encoding-size(sb, EB_PAGE_SIZE) ≤ # avol[0].data + (LEB_SIZE - # avol[0].data) ∧ m = encoding-size(sb, EB_PAGE_SIZE) → err = ESUCCESS → sb = sb0)
Used simplifier rules: ⊦ n + 0 = n; (s)%# buf = m, # buf0 = m ⊦ copy(buf, 0, buf0, 0, m) = buf; (s)% ⊦ # mkbuf(n) = n; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ n ≤ m → ((m - n) + n0 = m ↔ n = n0); (s)%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]% ⊦ # mkempbuf(n) = n; (s)% ⊦ #(buf + buf0) = # buf + # buf0; (s)% ⊦ mapped(buf).data = buf; (s)