| nd ' + gndx0.nds = ndx0 + ndx1, ∀ ndx0, ndx1. gndx0.nds = ndx0 + ndx1 → (∃ gndx2, gndx1. gndx0 = gndx2 + gndx1 ∧ ndx0 = gndx2.nds ∧ ndx1 = gndx1.nds), nd ∈ ndx0 ∨ nd ∈ ndx1 ⊦ ∃ gndx, gndx1. mkgnode(nd, m, boolvar, boolvar0) ' + gndx0 = gndx + gndx1 ∧ ndx0 = gndx.nds ∧ ndx1 = gndx1.nds |
nd ' + gndx0.nds = ndx0 + ndx1, ndx0 = nd0 + ndx, ∀ ndx0, ndx1. gndx0.nds = ndx0 + ndx1 → (∃ gndx2, gndx1. gndx0 = gndx2 + gndx1 ∧ ndx0 = gndx2.nds ∧ ndx1 = gndx1.nds), nd ∈ ndx0 ∨ nd ∈ ndx1 ⊦ ∃ gndx, gndx1. mkgnode(nd, m, boolvar, boolvar0) ' + gndx0 = gndx + gndx1 ∧ ndx0 = gndx.nds ∧ ndx1 = gndx1.nds
Used simplifier rules: node-list freely generated by [], +;;% ⊦ [] + ndx = ndx; (s)%a: ⊦ (ndx + ndx0) + ndx1 = ndx + ndx0 + ndx1; from specification list[node-list]% ⊦ ¬ nd ∈ []; (s)% ⊦ gndx.nds = [] ↔ gndx = []; (s)% ⊦ [] + gndx = gndx; (s)%a: ⊦ (gndx + gndx0) + gndx1 = gndx + gndx0 + gndx1; from specification list[group-store]% ⊦ (gnd ' + gndx).nds = gnd.nd + gndx.nds; (s)% ⊦ mkgnode(nd, m, boolvar, boolvar0).nd = nd; (s)% ⊦ nd + ndx = nd ' + ndx; (s)