| dups(butlastn(# x0, (a ' + x0).butlast)), ∀ n0. ¬ dups(butlastn(n0, x0)) ∨ ¬ n0 ≤ # x0 ⊦ dups(x0), a ∈ x0 |
⊦ y ≠ [] → (x + y).butlast = x + y.butlast
dups(butlastn(# x0, a ' + x0.butlast)), ∀ n0. ¬ dups(butlastn(n0, x0)) ∨ ¬ n0 ≤ # x0 ⊦ x0 = [], dups(x0), a ∈ x0
Used simplifier rules: butlast-one: ⊦ a '.butlast = [];%butlastN-base: ⊦ butlastn(0, x) = x;% ⊦ # [] = 0; (s)% ⊦ x + [] = x; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ ¬ dups([]); (s) Used terms: x0, a '