| ⊦ ∀ gndx, gnd. (∀ n0, gndx1, n1. gndx = gndx1 ∧ valid-group-nodes(prefixn(n0, gndx1)) < valid-group-nodes(prefixn(n1, gndx1)) ∧ valid-group-nodes(prefixn(n0, gndx1)) < # prefixn(n1, gndx1) ∧ n1 ≤ n0 → gndx1 = [] ∨ n1 = 0) → (∀ n0, gndx1, n1. gndx + gnd = gndx1 ∧ valid-group-nodes(prefixn(n0, gndx1)) < valid-group-nodes(prefixn(n1, gndx1)) ∧ valid-group-nodes(prefixn(n0, gndx1)) < # prefixn(n1, gndx1) ∧ n1 ≤ n0 → gndx1 = [] ∨ n1 = 0) |
valid-group-nodes(prefixn(n0, gndx + gnd ')) < # prefixn(n, gndx + gnd '), valid-group-nodes(prefixn(n0, gndx + gnd ')) < valid-group-nodes(prefixn(n, gndx + gnd ')), n ≤ n0, ∀ n0, n1. valid-group-nodes(prefixn(n0, gndx)) < valid-group-nodes(prefixn(n1, gndx)) ∧ valid-group-nodes(prefixn(n0, gndx)) < # prefixn(n1, gndx) ∧ n1 ≤ n0 → gndx = [] ∨ n1 = 0 ⊦ n = 0
Used simplifier rules: 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)