| st2[n] = mkblock(x0, lax0, m0), st0[n] = mkblock(x, lax, m), n ∈ st2, n ∈ st0, dom st1 ⊆ dom st2, dom st0 ⊆ dom st1, dom st0 ⊆ dom st2, n ∈ st1 ∧ n ∈ st2 → st1[n].list ⊑ st2[n].list ∧ st1[n].ladrlist ⊑ st2[n].ladrlist ∧ # st1[n].list = # st1[n].ladrlist ∧ # st2[n].list = # st2[n].ladrlist, ∀ 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 ⊑ x0 ∧ lax ⊑ lax0 ∧ # x = # lax ∧ # x0 = # lax0 |
st2[n] = mkblock(x0, lax0, m0), st0[n] = mkblock(x, lax, m), n ∈ st2, n ∈ st0, dom st1 ⊆ dom st2, dom st0 ⊆ dom st1, dom st0 ⊆ dom st2, n ∈ st1 → st1[n].list ⊑ x0 ∧ st1[n].ladrlist ⊑ lax0 ∧ # st1[n].list = # st1[n].ladrlist ∧ # x0 = # lax0, ∀ 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 ⊑ x0 ∧ lax ⊑ lax0 ∧ # x = # lax ∧ # x0 = # lax0
Used simplifier rules: ⊦ mkblock(x, lax, m).ladrlist = lax; (s)% ⊦ mkblock(x, lax, m).list = x; (s)