| # gndx0 = # lax0 + # lax2, # ndx = # lax0 + # lax2 + 1, # gndx1 = # lax1, (mkgnode(nd, m1, true, boolvar0) ' + gndx0).last = mkgnode(nd0, m2, boolvar1, true), gstore[m6, groupblock(gndx1 + mkgnode(nd, m1, true, boolvar0) ' + gndx0, lax1 + lax0 + @(m7, m8) ' + lax2, m)][@(m6, m7, m8)] = mkgnode(nd1, m3, boolvar, boolvar2), gstore[m6] = groupblock(gndx1, lax1, m9), m6 ∈ gstore, # lax0 ≤ # gndx0, ∀ n0. ¬ # gndx0 < n0 → (mkgnode(nd, m1, true, boolvar0) ' + gndx0)[n0].nd = ndx[n0], ∀ n0. (n0 ≠ 0 ∧ ¬ # gndx0 < n0 → ¬ (mkgnode(nd, m1, true, boolvar0) ' + gndx0)[n0].start) ∧ (n0 < # gndx0 → ¬ (mkgnode(nd, m1, true, boolvar0) ' + gndx0)[n0].end) ⊦ nd1 = ndx[# lax0], dups((lax1 + lax0) + lax2), dups(lax1), dups(lax0 + lax2), dups(lax1 + lax0), dups(lax2), dups(lax0), @(m7, m8) ∈ lax2, @(m7, m8) ∈ lax0, @(m7, m8) ∈ lax1, m6 ∈ ginval |
⊦ adr ∈ gstore → gstore[adr] = gstore[adr.lnum].gndlist[pos(@(adr.pos, adr.size), gstore[adr.lnum].ladrlist)]
# gndx1 = # lax1, # ndx = # lax0 + # lax2 + 1, # gndx0 = # lax0 + # lax2, (mkgnode(nd, m1, true, boolvar0) ' + gndx0).last = mkgnode(nd0, m2, boolvar1, true), gstore[m6] = groupblock(gndx1, lax1, m9), gstore[m6, groupblock(gndx1 + mkgnode(nd, m1, true, boolvar0) ' + gndx0, lax1 + lax0 + @(m7, m8) ' + lax2, m)][@(m6, m7, m8).lnum].gndlist [pos (@(@(m6, m7, m8).pos, @(m6, m7, m8).size), gstore[m6, groupblock(gndx1 + mkgnode(nd, m1, true, boolvar0) ' + gndx0, lax1 + lax0 + @(m7, m8) ' + lax2, m)][@(m6, m7, m8).lnum].ladrlist) ] = mkgnode(nd1, m3, boolvar, boolvar2), m6 ∈ gstore, @(m6, m7, m8) ∈ gstore[m6, groupblock(gndx1 + mkgnode(nd, m1, true, boolvar0) ' + gndx0, lax1 + lax0 + @(m7, m8) ' + lax2, m)], # lax0 ≤ # gndx0, ∀ n0. (n0 ≠ 0 ∧ ¬ # gndx0 < n0 → ¬ (mkgnode(nd, m1, true, boolvar0) ' + gndx0)[n0].start) ∧ (n0 < # gndx0 → ¬ (mkgnode(nd, m1, true, boolvar0) ' + gndx0)[n0].end), ∀ n0. ¬ # gndx0 < n0 → (mkgnode(nd, m1, true, boolvar0) ' + gndx0)[n0].nd = ndx[n0] ⊦ nd1 = ndx[# lax0], dups(lax0), dups(lax2), dups(lax1 + lax0), dups(lax0 + lax2), dups(lax1), dups((lax1 + lax0) + lax2), m6 ∈ ginval, @(m7, m8) ∈ lax1, @(m7, m8) ∈ lax0, @(m7, m8) ∈ lax2
Used simplifier rules: ⊦ @(n, n0, n1) ∈ gstore[n, gblock] ↔ @(n0, n1) ∈ gblock.ladrlist; (s)% ⊦ groupblock(gndx, lax, m).ladrlist = lax; (s)% ⊦ ladr ∈ lax + lax0 ↔ ladr ∈ lax ∨ ladr ∈ lax0; (s)% ⊦ ¬ ladr ∈ lax → (ladr ∈ ladr0 ' + lax ↔ ladr = ladr0); (s)%a: ⊦ (lax + lax0) + lax1 = lax + lax0 + lax1; from specification list[laddress-list] Used terms: @(m6, m7, m8), gstore [m6, groupblock (gndx1 + mkgnode(nd, m1, true, boolvar0) ' + gndx0, lax1 + lax0 + @(m7, m8) ' + lax2, m) ]