| m ∈ st0, @(m0, m1) ∈ st0[m].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[m].list[pos(@(m0, m1), st0[m].ladrlist)] = st1[@(m, m0, m1)] |
st0[m] = mkblock(x, lax, m2), @(m0, m1) ∈ lax, 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 ⊦ x[pos(@(m0, m1), lax)] = st1[@(m, m0, m1)]
Used simplifier rules: ⊦ (x = ablock.list ∧ lax = ablock.ladrlist) ∧ m = ablock.ref-size ↔ ablock = mkblock(x, lax, m); (elim) Used terms: st0[m], x, lax, m2, m3, m4, boolvar