| ⊦ ∀ gndx, gnd. (∀ gndx1, n1. gndx = gndx1 ∧ valid-group-nodes(gndx1) < valid-group-nodes(prefixn(n1, gndx1)) ∧ valid-group-nodes(gndx1) < # prefixn(n1, gndx1) → gndx1 = [] ∨ n1 = 0) → (∀ gndx1, n1. gndx + gnd = gndx1 ∧ valid-group-nodes(gndx1) < valid-group-nodes(prefixn(n1, gndx1)) ∧ valid-group-nodes(gndx1) < # prefixn(n1, gndx1) → gndx1 = [] ∨ n1 = 0) |
(gnd.end ⊃ # gndx + 1;valid-group-nodes(gndx)) < # prefixn(n, gndx + gnd '), (gnd.end ⊃ # gndx + 1;valid-group-nodes(gndx)) < valid-group-nodes(prefixn(n, gndx + gnd ')), ∀ n1. valid-group-nodes(gndx) < valid-group-nodes(prefixn(n1, gndx)) ∧ valid-group-nodes(gndx) < # prefixn(n1, gndx) → gndx = [] ∨ n1 = 0 ⊦ n = 0
Used simplifier rules: valid-group-nodes-rec: ⊦ valid-group-nodes(gndx + gnd ') = (gnd.end ⊃ # gndx + 1;valid-group-nodes(gndx));%valid-group-nodes-ls: ⊦ n < valid-group-nodes(gndx) → n < # gndx;% ⊦ m < n → n ≠ 0; (s)% ⊦ prefixn(n, gndx) = [] ↔ n = 0 ∨ gndx = []; (ss)% ⊦ # gndx = 0 ↔ gndx = []; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%a: ⊦ (gndx + gndx0) + gndx1 = gndx + gndx0 + gndx1; from specification list[group-store]% ⊦ gndx + gnd ' ≠ []; (s)% ⊦ gndx + gnd = gndx + gnd '; (s)