| # x1 = # lax1, # st[n].list = # st[n].ladrlist, n ∈ st, m0 ∈ st, @(m1, m2) ∈ st[m0].ladrlist ⊦ st[n, mkblock(st[n].list + x1, st[n].ladrlist + lax1, m)][@(m0, m1, m2)] = st[m0].list[pos(@(m1, m2), st[m0].ladrlist)], dups(st[n].ladrlist + lax1), dups(st[n].ladrlist), dups(lax1) |
# x = # lax, # x1 = # lax1, st[n] = mkblock(x, lax, m3), @(m1, m2) ∈ st[m0].ladrlist, m0 ∈ st, n ∈ st ⊦ st[n, mkblock(x + x1, lax + lax1, m)][@(m0, m1, m2)] = st[m0].list[pos(@(m1, m2), st[m0].ladrlist)], dups(lax1), dups(lax), dups(lax + lax1)
Used simplifier rules: ⊦ (x = ablock.list ∧ lax = ablock.ladrlist) ∧ m = ablock.ref-size ↔ ablock = mkblock(x, lax, m); (elim) Used terms: st[n], x, lax, m5, m6, m7, boolvar0