| # buf0 = encoding-size(sb, EB_PAGE_SIZE), avol0 = avol, # avol ≠ 0, ebm-vol-inv(avol), is-aligned(encoding-size(sb, EB_PAGE_SIZE), EB_PAGE_SIZE), is-encoded(sb, buf0), encoding-size(sb, EB_PAGE_SIZE) ≤ LEB_SIZE ⊦ [ebm_avol_change#(0, encoding-size(sb, EB_PAGE_SIZE), buf0; avol; err)] ( ebm-vol-inv(avol) → (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → id○(avol, avol0, 0) ∧ (∃ buf. is-encoded(sb, buf) ∧ avol[0] = mapped(buf))) ∧ (err ≠ ESUCCESS → avol = avol0)) |
# buf0 = encoding-size(sb, EB_PAGE_SIZE), avol0 = avol, buf = buf0, m = 0, n = encoding-size(sb, EB_PAGE_SIZE), ebm-vol-inv(avol), is-aligned(encoding-size(sb, EB_PAGE_SIZE), EB_PAGE_SIZE), is-encoded(sb, buf0), encoding-size(sb, EB_PAGE_SIZE) ≤ LEB_SIZE ⊦ [if m < # avol ∧ n ≤ # buf ∧ n ≤ LEB_SIZE ∧ is-aligned(n, EB_PAGE_SIZE) then {fail_or_success#(; ; err); if err = ESUCCESS then avol[m] := mapped(subarray(buf, 0, n))} else abort] ( ebm-vol-inv(avol) → (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → id○(avol, avol0, 0) ∧ (∃ buf. is-encoded(sb, buf) ∧ avol[0] = mapped(buf))) ∧ (err ≠ ESUCCESS → avol = avol0)), # avol = 0
Used simplifier rules: ebm_avol_change#(LNUM, N, BUF; AVOL; ERR) {if LNUM < # AVOL ∧ N ≤ # BUF ∧ N ≤ LEB_SIZE ∧ is-aligned(N, EB_PAGE_SIZE) then {fail_or_success#(; ; ERR); if ERR = ESUCCESS then AVOL[LNUM] := mapped(subarray(BUF, 0, N))} else abort };