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