| st1[n0] = mkblock(x, lax, m), n0 ∈ st0, n0 ∈ st1, n ∈ st0, dom st1 ⊆ dom st0, ∀ n0. n0 ∈ st1[n, mkblock([], [], 0)] ∧ n0 ∈ st0 → st1[n, mkblock([], [], 0)][n0].list ⊑ st0[n0].list ∧ st1[n, mkblock([], [], 0)][n0].ladrlist ⊑ st0[n0].ladrlist ∧ # st1[n, mkblock([], [], 0)][n0].list = # st1[n, mkblock([], [], 0)][n0].ladrlist ∧ # st0[n0].list = # st0[n0].ladrlist ⊦ n ∈ st1, x ⊑ st0[n0].list ∧ lax ⊑ st0[n0].ladrlist ∧ # x = # lax ∧ # st0[n0].list = # st0[n0].ladrlist |
st1[n0] = mkblock(x, lax, m), st0[n0] = mkblock(x0, lax0, m0), n ∈ st0, n0 ∈ st1, n0 ∈ st0, dom st1 ⊆ dom st0, ∀ n0. n0 ∈ st1[n, mkblock([], [], 0)] ∧ n0 ∈ st0 → st1[n, mkblock([], [], 0)][n0].list ⊑ st0[n0].list ∧ st1[n, mkblock([], [], 0)][n0].ladrlist ⊑ st0[n0].ladrlist ∧ # st1[n, mkblock([], [], 0)][n0].list = # st1[n, mkblock([], [], 0)][n0].ladrlist ∧ # st0[n0].list = # st0[n0].ladrlist ⊦ n ∈ st1, x ⊑ x0 ∧ lax ⊑ lax0 ∧ # x = # lax ∧ # x0 = # lax0
Used simplifier rules: ⊦ (x = ablock.list ∧ lax = ablock.ladrlist) ∧ m = ablock.ref-size ↔ ablock = mkblock(x, lax, m); (elim) Used terms: st0[n0], x0, lax0, m2, m3, m4, boolvar0