| (gndx + mkgnode(nd, n, boolvar, true) ').head.start, # gndx + 1 < # ndx, ∀ n0. ¬ # gndx < n0 → (gndx + mkgnode(nd, n, boolvar, true) ')[n0].nd = ndx[n0], ∀ n0. (n0 ≠ 0 ∧ ¬ # gndx < n0 → ¬ (gndx + mkgnode(nd, n, boolvar, true) ')[n0].start) ∧ (¬ # gndx < n0 → ¬ (gndx + mkgnode(nd, n, boolvar, true) ')[n0].end) ⊦ ndx = [] |
gndx + mkgnode(nd, n, boolvar, true) ' = gnd + gndx0, gnd.start, # gndx + 1 < # ndx, ∀ n0. (n0 ≠ 0 ∧ ¬ # gndx < n0 → ¬ (gndx + mkgnode(nd, n, boolvar, true) ')[n0].start) ∧ (¬ # gndx < n0 → ¬ (gndx + mkgnode(nd, n, boolvar, true) ')[n0].end), ∀ n0. ¬ # gndx < n0 → (gndx + mkgnode(nd, n, boolvar, true) ')[n0].nd = ndx[n0] ⊦ gndx + mkgnode(nd, n, boolvar, true) ' = [], ndx = []
Used simplifier rules: ⊦ gndx + gndx0 = [] ↔ gndx = [] ∧ gndx0 = []; (as)% ⊦ gnd ' ≠ []; (s)%a: ⊦ (gndx + gndx0) + gndx1 = gndx + gndx0 + gndx1; from specification list[group-store]%gndx ≠ [] ⊦ gnd = gndx.head ∧ gndx0 = gndx.tail ↔ gndx = gnd + gndx0; (elim) Used terms: gndx + mkgnode(nd, n, boolvar, true) ', gnd, gndx0