| n0 ∈ st0, n0 ∈ st, dom st0 \ ns ⊆ dom st \ ns, ∀ n. n ∈ st0 \ ns ∧ n ∈ st \ ns → (st0 \ ns)[n].list ⊑ (st \ ns)[n].list ∧ (st0 \ ns)[n].ladrlist ⊑ (st \ ns)[n].ladrlist ∧ # (st0 \ ns)[n].list = # (st0 \ ns)[n].ladrlist ∧ # (st \ ns)[n].list = # (st \ ns)[n].ladrlist ⊦ n0 = n, n0 ∈ ns, st0[n0].list ⊑ st[n0].list ∧ st0[n0].ladrlist ⊑ st[n0].ladrlist ∧ # st0[n0].list = # st0[n0].ladrlist ∧ # st[n0].list = # st[n0].ladrlist |
st0[n0] = mkblock(x, lax, m), n0 ∈ st, n0 ∈ st0, dom st0 \ ns ⊆ dom st \ ns, ∀ n. n ∈ st0 \ ns ∧ n ∈ st \ ns → (st0 \ ns)[n].list ⊑ (st \ ns)[n].list ∧ (st0 \ ns)[n].ladrlist ⊑ (st \ ns)[n].ladrlist ∧ # (st0 \ ns)[n].list = # (st0 \ ns)[n].ladrlist ∧ # (st \ ns)[n].list = # (st \ ns)[n].ladrlist ⊦ n0 = n, n0 ∈ ns, x ⊑ st[n0].list ∧ lax ⊑ st[n0].ladrlist ∧ # x = # lax ∧ # st[n0].list = # st[n0].ladrlist
Used simplifier rules: ⊦ (x = ablock.list ∧ lax = ablock.ladrlist) ∧ m = ablock.ref-size ↔ ablock = mkblock(x, lax, m); (elim) Used terms: st0[n0], x, m, m0, m1