| ⊦ (∀ gndx, n. [] = gndx ∧ valid-group-nodes(gndx) ≤ n → valid-group-nodes(prefixn(n, gndx)) = valid-group-nodes(gndx)) ∧ (∀ gndx, gnd. (∀ gndx1, n. gndx = gndx1 ∧ valid-group-nodes(gndx1) ≤ n → valid-group-nodes(prefixn(n, gndx1)) = valid-group-nodes(gndx1)) → (∀ gndx1, n. gndx + gnd = gndx1 ∧ valid-group-nodes(gndx1) ≤ n → valid-group-nodes(prefixn(n, gndx1)) = valid-group-nodes(gndx1))) |
(gnd.end ⊃ # gndx + 1;valid-group-nodes(gndx)) ≤ n, ∀ n. valid-group-nodes(gndx) ≤ n → valid-group-nodes(prefixn(n, gndx)) = valid-group-nodes(gndx) ⊦ valid-group-nodes(prefixn(n, gndx + gnd ')) = (gnd.end ⊃ # gndx + 1;valid-group-nodes(gndx))
Used simplifier rules: valid-group-nodes-base: ⊦ valid-group-nodes([]) = 0;%valid-group-nodes-rec: ⊦ valid-group-nodes(gndx + gnd ') = (gnd.end ⊃ # gndx + 1;valid-group-nodes(gndx));% ⊦ gnd ∈ gnd0 ' ↔ gnd = gnd0; (s)% ⊦ gnd ∈ gndx + gndx0 ↔ gnd ∈ gndx ∨ gnd ∈ gndx0; (s)%in-15: ⊦ gndx + gnd ' = gndx0 → gnd ∈ gndx0; (forward) from specification list[group-store]%a: ⊦ (gndx + gndx0) + gndx1 = gndx + gndx0 + gndx1; from specification list[group-store]% ⊦ gndx + gnd = gndx + gnd '; (s)% ⊦ prefixn(n, []) = []; (s)% ⊦ 0 ≤ m; (s)