| # ndx = # lax1, # gndx = # lax, # gndx0 + 1 = # lax1, (mkgnode(nd, m1, true, boolvar0) ' + gndx0).last = mkgnode(nd0, m2, boolvar1, true), gstore[n] = groupblock(gndx, lax, m0), n0 < # lax1, n ∈ gstore, n0 ≤ # gndx0, ∀ n1. n1 < # lax1 → (mkgnode(nd, m1, true, boolvar0) ' + gndx0)[n1].nd = ndx[n1], ∀ n1. (n1 ≠ 0 ∧ n1 < # lax1 → ¬ (mkgnode(nd, m1, true, boolvar0) ' + gndx0)[n1].start) ∧ (n1 + 1 < # lax1 → ¬ (mkgnode(nd, m1, true, boolvar0) ' + gndx0)[n1].end) ⊦ lax1 = [], dups(lax1), dups(lax), dups(lax + lax1), n ∈ ginval, (lax1.to-adr(n)[n0] ∈ gstore ∨ lax1.to-adr(n)[n0] ∈ lax1.to-adr(n)) ∧ ¬ lax1.to-adr(n)[n0].lnum ∈ ginval ∧ gstore[n, groupblock(gndx + mkgnode(nd, m1, true, boolvar0) ' + gndx0, lax + lax1, m)][lax1.to-adr(n)[n0]].nd = ndx[n0] |
# gndx = # lax, # ndx = # lax1, # gndx0 + 1 = # lax1, (mkgnode(nd, m1, true, boolvar0) ' + gndx0).last = mkgnode(nd0, m2, boolvar1, true), gstore[n] = groupblock(gndx, lax, m0), lax1.to-adr(n)[n0] = @(m3, m4, m5), n0 < # lax1, n ∈ gstore, n0 ≤ # gndx0, ∀ n1. (n1 ≠ 0 ∧ n1 < # lax1 → ¬ (mkgnode(nd, m1, true, boolvar0) ' + gndx0)[n1].start) ∧ (n1 + 1 < # lax1 → ¬ (mkgnode(nd, m1, true, boolvar0) ' + gndx0)[n1].end), ∀ n1. n1 < # lax1 → (mkgnode(nd, m1, true, boolvar0) ' + gndx0)[n1].nd = ndx[n1] ⊦ lax1 = [], dups(lax + lax1), dups(lax), dups(lax1), n ∈ ginval, (lax1.to-adr(n)[n0] ∈ gstore ∨ lax1.to-adr(n)[n0] ∈ lax1.to-adr(n)) ∧ ¬ m3 ∈ ginval ∧ gstore[n, groupblock(gndx + mkgnode(nd, m1, true, boolvar0) ' + gndx0, lax + lax1, m)][lax1.to-adr(n)[n0]].nd = ndx[n0]
Used simplifier rules: ⊦ (m = adr.lnum ∧ m0 = adr.pos) ∧ m1 = adr.size ↔ adr = @(m, m0, m1); (elim) Used terms: lax1.to-adr(n)[n0], m3, m4, m5