| adr ∈ st0, st0 ⊑ st1 ⊦ st0[adr] = st1[adr] |
adr.lnum ∈ st0, @(adr.pos, adr.size) ∈ st0[adr.lnum].ladrlist, dom st0 ⊆ dom st1, ∀ n. n ∈ st0 ∧ n ∈ st1 → st0[n].list ⊑ st1[n].list ∧ st0[n].ladrlist ⊑ st1[n].ladrlist ∧ # st0[n].list = # st0[n].ladrlist ∧ # st1[n].list = # st1[n].ladrlist ⊦ st0[adr.lnum].list[pos(@(adr.pos, adr.size), st0[adr.lnum].ladrlist)] = st1[adr]
Used simplifier rules: at: ⊦ adr ∈ st → st[adr] = st[adr.lnum].list [pos(@(adr.pos, adr.size), st[adr.lnum].ladrlist) ];%blockstore-prefix: ⊦ st0 ⊑ st ↔ dom st0 ⊆ dom st ∧ (∀ n. n ∈ st0 ∧ n ∈ st → st0[n].list ⊑ st[n].list ∧ st0[n].ladrlist ⊑ st[n].ladrlist ∧ # st0[n].list = # st0[n].ladrlist ∧ # st[n].list = # st[n].ladrlist);%in: ⊦ adr ∈ st ↔ adr.lnum ∈ st ∧ @(adr.pos, adr.size) ∈ st[adr.lnum].ladrlist;