| st[n, ablock][n0] = mkblock(x0, lax0, m0), st0[n0] = mkblock(x, lax, m), n0 ∈ st[n, ablock], n0 ∈ st0, 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 ⊦ n0 = n, n ∈ st, x ⊑ x0 ∧ lax ⊑ lax0 ∧ # x = # lax ∧ # x0 = # lax0 |
st0[n0] = mkblock(x, lax, m), st[n0] = mkblock(x0, lax0, m0), n0 ∈ st0, n0 ∈ 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 ⊦ n ∈ st, x ⊑ x0 ∧ lax ⊑ lax0 ∧ # x = # lax ∧ # x0 = # lax0
Used simplifier rules: ⊦ n ≠ n0 → (n ∈ st[n0, ablock] ↔ n ∈ st); (s)% ⊦ n ≠ n0 → st[n0, ablock][n] = st[n]; (s)