| # buf = m0, avol[m5] = mapped(buf0), buf1 = mkbuf(m0), err0 = ESUCCESS, log1 = [], logoff1 = 0, m = LEB_SIZE, m0 = EB_PAGE_SIZE, sb = mksb(adr, m6, m5, m1, m2, m3, m4), avol[sb.log].mapped?, m5 < # avol, sb.log < # avol, ebm-vol-inv(avol), is-aligned(logoff, m0), is-encoded(log0, buf0), logoff ≤ LEB_SIZE, err = ESUCCESS → logoff ≤ # avol[sb.log].data ∧ is-encoded(log, subarray(avol[sb.log].data, 0, logoff)), err = ENOENT → is-encoded(log, avol[sb.log].data), err = ESUCCESS ∨ err = ENOENT ∨ ⌊err⌋ ⊦ ⟪if err = ENOENT then err := ESUCCESS⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → log = log0)), err = ESUCCESS ∧ logoff < m |
# buf = m0, avol[m5] = mapped(buf0), buf1 = mkbuf(m0), err = ENOENT, err0 = ESUCCESS, log1 = [], logoff1 = 0, m = LEB_SIZE, m0 = EB_PAGE_SIZE, sb = mksb(adr, m6, m5, m1, m2, m3, m4), avol[sb.log].mapped?, sb.log < # avol, m5 < # avol, ebm-vol-inv(avol), is-aligned(logoff, m0), is-encoded(log0, buf0), logoff ≤ LEB_SIZE, err = ENOENT → is-encoded(log, avol[sb.log].data), err = ESUCCESS → logoff ≤ # avol[sb.log].data ∧ is-encoded(log, subarray(avol[sb.log].data, 0, logoff)), err = ESUCCESS ∨ err = ENOENT ∨ ⌊err⌋ ⊦ ⟪err := ESUCCESS⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → log = log0)), err = ESUCCESS ∧ logoff < m
# buf = m0, avol[m5] = mapped(buf0), buf1 = mkbuf(m0), err0 = ESUCCESS, log1 = [], logoff1 = 0, m = LEB_SIZE, m0 = EB_PAGE_SIZE, sb = mksb(adr, m6, m5, m1, m2, m3, m4), avol[sb.log].mapped?, sb.log < # avol, m5 < # avol, ebm-vol-inv(avol), is-aligned(logoff, m0), is-encoded(log0, buf0), logoff ≤ LEB_SIZE, err = ENOENT → is-encoded(log, avol[sb.log].data), err = ESUCCESS → logoff ≤ # avol[sb.log].data ∧ is-encoded(log, subarray(avol[sb.log].data, 0, logoff)), err = ESUCCESS ∨ err = ENOENT ∨ ⌊err⌋ ⊦ ⟪skip⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → log = log0)), err = ENOENT, err = ESUCCESS ∧ logoff < m