| # gndx1 = # lax1, # gndx = # lax, # ndx = # lax1, gstore[n] = groupblock(gndx, lax, m0), n ∈ gstore, ∀ n. n < # lax1 → gndx1[n].nd = ndx[n], gndx1 = [] ∨ gndx1.head.start ∧ gndx1.last.end ∧ (∀ n0. (n0 ≠ 0 ∧ n0 < # lax1 → ¬ gndx1[n0].start) ∧ (n0 + 1 < # lax1 → ¬ gndx1[n0].end)) ⊦ dups(lax1), dups(lax), dups(lax + lax1), nodes-cons(lax1.to-adr(n), ndx, gstore[n, groupblock(gndx + gndx1, lax + lax1, m)], ginval), n ∈ ginval |
# ndx = # lax1, # gndx = # lax, # gndx1 = # lax1, gndx1.head = mkgnode(nd, m1, boolvar, boolvar0), gstore[n] = groupblock(gndx, lax, m0), n ∈ gstore, ∀ n. n < # lax1 → gndx1[n].nd = ndx[n], gndx1 = [] ∨ boolvar ∧ gndx1.last.end ∧ (∀ n0. (n0 ≠ 0 ∧ n0 < # lax1 → ¬ gndx1[n0].start) ∧ (n0 + 1 < # lax1 → ¬ gndx1[n0].end)) ⊦ dups(lax + lax1), dups(lax), dups(lax1), nodes-cons(lax1.to-adr(n), ndx, gstore[n, groupblock(gndx + gndx1, lax + lax1, m)], ginval), n ∈ ginval
Used simplifier rules: ⊦ ((nd = gnd.nd ∧ m = gnd.sqnum) ∧ (boolvar ↔ gnd.start)) ∧ (boolvar0 ↔ gnd.end) ↔ gnd = mkgnode(nd, m, boolvar, boolvar0); (elim) Used terms: gndx1.head, nd, m1, boolvar, boolvar0