| n ∈ st0, n ∈ st2, dom st0 ⊆ dom st2, dom st0 ⊆ dom st1, dom st1 ⊆ dom st2, ∀ 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, ∀ n. 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 ⊦ st0[n].list ⊑ st2[n].list ∧ st0[n].ladrlist ⊑ st2[n].ladrlist ∧ # st0[n].list = # st0[n].ladrlist ∧ # st2[n].list = # st2[n].ladrlist |
st0[n] = mkblock(x, lax, m), n ∈ st2, n ∈ st0, dom st1 ⊆ dom st2, dom st0 ⊆ dom st1, dom st0 ⊆ dom st2, ∀ n. 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 ⊑ st2[n].list ∧ lax ⊑ st2[n].ladrlist ∧ # x = # lax ∧ # st2[n].list = # st2[n].ladrlist
Used simplifier rules: ⊦ (x = ablock.list ∧ lax = ablock.ladrlist) ∧ m = ablock.ref-size ↔ ablock = mkblock(x, lax, m); (elim) Used terms: st0[n], x, lax, m, m0, m1, boolvar