| 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)⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → sb = sb0)) |
⊦ ⟪decode_superblock#(n, buf, EB_PAGE_SIZE; sb, n0; err)⟫ ( (err = ESUCCESS ∨ ⌊err⌋ ) ∧ ( err = ESUCCESS → is-encoded(sb, subarray(buf, n, encoding-size(sb, EB_PAGE_SIZE))) ∧ n + encoding-size(sb, EB_PAGE_SIZE) ≤ # buf ∧ n0 = encoding-size(sb, EB_PAGE_SIZE)))
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