| a ∈ x0, n < # x0, pos(a, x0) < n, pos(a, x0) + 1 < # x0, ∀ a1, n0. a1 ∈ x0 ∧ n0 + 1 < # x0 → (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ⊦ n = 0, (a0 ' + (x0 \ a '))[n] = x0[n], x0 = [], a0 ∈ x0, dups(x0) |
⊦ ¬ n < # x → (x + y)[n] = y[n - # x]
¬ n < # a0 ', a ∈ x0, n < # x0, pos(a, x0) < n, pos(a, x0) + 1 < # x0, ∀ a1, n0. a1 ∈ x0 ∧ n0 + 1 < # x0 → (x0 \ a1 ')[n0] = (n0 < pos(a1, x0) ⊃ x0[n0];x0[n0 + 1]) ⊦ n = 0, (x0 \ a ')[n - # a0 '] = x0[n], x0 = [], a0 ∈ x0, dups(x0)
Used simplifier rules: get-append-less: ⊦ n < # x → (x + y)[n] = x[n]; from specification list-del%a: ⊦ (x + y) + z = x + y + z; from specification list%len-02: ⊦ # a ' = 0 +1; from specification list%one-01: ⊦ m < 1 ↔ m = 0; from specification nat-basic1 Used terms: n, x0 \ a ', a0 '