| valid-group-nodes(prefixn(n0, gndx)) < valid-group-nodes(prefixn(n, gndx + gnd ')), valid-group-nodes(prefixn(n0, gndx)) < # prefixn(n, gndx + gnd '), n ≤ n0, n0 ≤ # gndx, ∀ 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 |
valid-group-nodes(prefixn(n0, gndx)) < n0, valid-group-nodes(prefixn(n0, gndx)) < valid-group-nodes(prefixn(n, gndx)), valid-group-nodes(prefixn(n0, gndx)) < n, valid-group-nodes(prefixn(n0, gndx)) < # gndx, n ≤ # gndx, n ≤ n0, n0 ≤ # gndx, ∀ n1, n2. valid-group-nodes(prefixn(n1, gndx)) < valid-group-nodes(prefixn(n2, gndx)) ∧ valid-group-nodes(prefixn(n1, gndx)) < # prefixn(n2, gndx) ∧ n2 ≤ n1 → n2 = 0 ⊦ gndx = []
Used simplifier rules: valid-group-nodes-ls: ⊦ n < valid-group-nodes(gndx) → n < # gndx;% ⊦ # gndx = 0 ↔ gndx = []; (s)% ⊦ m < n → (n ≤ m ↔ false); (s)%n ≤ # gndx ⊦ # prefixn(n, gndx) = n; (s)%a: ⊦ (gndx + gndx0) + gndx1 = gndx + gndx0 + gndx1; from specification list[group-store]%n ≤ # gndx ⊦ prefixn(n, gndx + gndx0) = prefixn(n, gndx); (s)% ⊦ m ≤ n → (n < m ↔ false); (s)%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat%fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat% ⊦ m < n → n ≠ 0; (s)% ⊦ m ≤ n ↔ ¬ n < m; (ss)