| avol = abs(avols[default-volid]), m < # avols[default-volid], ebm-cons(avols), ebm-vol-inv(abs(avols[default-volid])), default-volid ∈ avols ⊦ ⟪ebm_unmap#(default-volid, m; avols); ebm_map#(default-volid, m; avols; err)⟫ ⟨ebm_avol_remap#(m; avol; err0)⟩ (avol = abs(avols[default-volid]) ∧ err = err0) |
avol = abs(avols[default-volid]), v = default-volid, m < # avols[default-volid], ebm-cons(avols), ebm-vol-inv(abs(avols[default-volid])), default-volid ∈ avols ⊦ ⟪if v ∈ avols ∧ m < # avols[v] then avols[v][m] := unmapped else abort; ebm_map#(default-volid, m; avols; err)⟫ ⟨ebm_avol_remap#(m; avol; err0)⟩ (avol = abs(avols[default-volid]) ∧ err = err0)
Used simplifier rules: ebm_unmap#(VOLID, LNUM; AVOLS) {if VOLID ∈ AVOLS ∧ LNUM < # AVOLS[VOLID] then AVOLS[VOLID][LNUM] := unmapped else abort };