| dups(butlastn(# x0, a ' + x0.butlast)), ∀ n0. ¬ dups(butlastn(n0, x0)) ∨ ¬ n0 ≤ # x0 ⊦ x0 = [], dups(x0), a ∈ x0 |
n = # x ⊦ butlastn(n, x) = []
Used simplifier rules: lb: ⊦ x ≠ [] → # x.butlast = # x - 1;%lb: ⊦ x ≠ [] → # x.butlast = # x - 1;% ⊦ #(x + y) = # x + # y; (s)% ⊦ # a ' = 0 +1; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ m ≤ n ↔ ¬ n < m; (ss)% ⊦ m < 1 ↔ m = 0; (s)% ⊦ # x = 0 ↔ x = []; (s)%n ≤ m ⊦ (m - n) + n0 = n1 ↔ m + n0 = n + n1; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ ¬ dups([]); (s) Used terms: a ' + x0.butlast, # x0