| gnd = mkgnode(nd, m, boolvar, boolvar0), (boolvar0 ⊃ # gndx + 1;valid-group-nodes(gndx)) < valid-group-nodes(prefixn(n, gndx + gnd ')), (boolvar0 ⊃ # gndx + 1;valid-group-nodes(gndx)) < # 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 |
(boolvar0 ⊃ # gndx + 1;valid-group-nodes(gndx)) < valid-group-nodes(prefixn(n, gndx + mkgnode(nd, m, boolvar, boolvar0) ')), (boolvar0 ⊃ # gndx + 1;valid-group-nodes(gndx)) < # prefixn(n, gndx + mkgnode(nd, m, boolvar, boolvar0) '), ∀ 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-ls: ⊦ n < valid-group-nodes(gndx) → n < # gndx;%a: ⊦ (gndx + gndx0) + gndx1 = gndx + gndx0 + gndx1; from specification list[group-store]% ⊦ gndx + gnd ' ≠ []; (s)% ⊦ prefixn(n, gndx) = [] ↔ n = 0 ∨ gndx = []; (ss)% ⊦ # gndx = 0 ↔ gndx = []; (s)% ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic