| ¬ boolvar0, (boolvar0 ⊃ # gndx + 1;valid-group-nodes(gndx)) < # prefixn(n, gndx + mkgnode(nd, m, boolvar, boolvar0) '), valid-group-nodes(gndx) < valid-group-nodes(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 |
valid-group-nodes(gndx) < valid-group-nodes(prefixn(n, gndx)), valid-group-nodes(gndx) < # prefixn(n, gndx + mkgnode(nd, m, boolvar, false) '), valid-group-nodes(gndx) < # prefixn(n, gndx), ∀ n0. valid-group-nodes(gndx) < valid-group-nodes(prefixn(n0, gndx)) ∧ valid-group-nodes(gndx) < # prefixn(n0, gndx) → n0 = 0 ⊦ gndx = [], n = 0
Used simplifier rules: valid-group-nodes-prefixn-append-nonend: ⊦ valid-group-nodes (prefixn(n, gndx + mkgnode(nd, m, boolvar, false) ')) = valid-group-nodes(prefixn(n, gndx));%valid-group-nodes-ls: ⊦ n < valid-group-nodes(gndx) → n < # gndx;% ⊦ m < n → n ≠ 0; (s)% ⊦ gndx + gnd ' ≠ []; (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]