| ∀ n. (n ∈ st0 ↔ n ∈ st1) ∧ st0[n].list = st1[n].list ∧ st0[n].ladrlist = st1[n].ladrlist ⊦ (∀ n0. (n0 ∈ st0[n, ablock] ↔ n0 ∈ st1) ∧ st0[n, ablock][n0].list = st1[n0].list ∧ st0[n, ablock][n0].ladrlist = st1[n0].ladrlist) ↔ n ∈ st0 ∧ ablock.list = st0[n].list ∧ ablock.ladrlist = st0[n].ladrlist |
ablock = mkblock(x, lax, m), ∀ n. (n ∈ st0 ↔ n ∈ st1) ∧ st0[n].list = st1[n].list ∧ st0[n].ladrlist = st1[n].ladrlist ⊦ (∀ n0. (n0 ∈ st0[n, ablock] ↔ n0 ∈ st1) ∧ st0[n, ablock][n0].list = st1[n0].list ∧ st0[n, ablock][n0].ladrlist = st1[n0].ladrlist) ↔ n ∈ st0 ∧ x = st0[n].list ∧ lax = st0[n].ladrlist
Used simplifier rules: ⊦ (x = ablock.list ∧ lax = ablock.ladrlist) ∧ m = ablock.ref-size ↔ ablock = mkblock(x, lax, m); (elim) Used terms: ablock, x, lax, m, m0, m1, boolvar