| 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] |
adr = @(m, m0, m1), @(m0, m1) ∈ st0[m].ladrlist, m ∈ st0, 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[m].list[pos(@(m0, m1), st0[m].ladrlist)] = st1[adr]
Used simplifier rules: ⊦ (m = adr.lnum ∧ m0 = adr.pos) ∧ m1 = adr.size ↔ adr = @(m, m0, m1); (elim) Used terms: adr, m, m0, m1