| gndx.nds = ndx0 + ndx1 ⊦ ∃ gndx0, gndx1. gndx = gndx0 + gndx1 ∧ ndx0 = gndx0.nds ∧ ndx1 = gndx1.nds |
(gnd + gndx0).nds = ndx0 + ndx1, ∀ ndx0, ndx1. gndx0.nds = ndx0 + ndx1 → (∃ gndx2, gndx1. gndx0 = gndx2 + gndx1 ∧ ndx0 = gndx2.nds ∧ ndx1 = gndx1.nds) ⊦ ∃ gndx2, gndx1. gnd + gndx0 = gndx2 + gndx1 ∧ ndx0 = gndx2.nds ∧ ndx1 = gndx1.nds
Used simplifier rules: group-node-list freely generated by [], +;;% ⊦ [].nds = []; (s)% ⊦ ndx + ndx0 = [] ↔ ndx = [] ∧ ndx0 = []; (as)%a: ⊦ (ndx + ndx0) + ndx1 = ndx + ndx0 + ndx1; from specification list[node-list]% ⊦ gndx.nds = [] ↔ gndx = []; (s)% ⊦ [] + gndx = gndx; (s)%a: ⊦ (gndx + gndx0) + gndx1 = gndx + gndx0 + gndx1; from specification list[group-store]